IP Library › Granted Patent US 8,788,842
Granted Patent B2
US 8,788,842 · App. 12/797,587 · Granted Jul 22, 2014

System and method for content protection based on a combination of a user PIN and a device specific identifier

Inventors: Michael Lambertus Hubertus Brouwer (San Jose, CA); Mitchell David Adler (Cupertino, CA)
Assignee: Apple Inc.
H04L9/0863H04L9/0861H04L9/0866H04L9/0869H04L9/0894
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,788,842
App. No.
12/797,587
Granted
Jul 22, 2014
Kind
B2
Abstract

Disclosed herein are systems, methods, and non-transitory computer-readable storage media for encryption and key management. The method includes encrypting each file on a computing device with a unique file encryption key, encrypting each unique file encryption key with a corresponding class encryption key, and encrypting each class encryption key with an additional encryption key. Further disclosed are systems, methods, and non-transitory computer-readable storage media for encrypting a credential key chain. The method includes encrypting each credential on a computing device with a unique credential encryption key, encrypting each unique credential encryption key with a corresponding credential class encryption key, and encrypting each class encryption key with an additional encryption key. Additionally, a method of generating a cryptographic key based on a user-entered password and a device-specific identifier secret utilizing an encryption algorithm is disclosed.

Claims (75)

1. A method carried out at a device, the method comprising:

receiving a user passcode, a device-specific key that is specific to the device, and a known random salt value;

performing a first sequence of operations, wherein, for each operation in the first sequence:

when the operation is a first operation in the first sequence, a hash-based message authentication code (HMAC) output is based on the user passcode and the known random salt value,

when the operation is not the first operation and is not a last operation in the first sequence, the HMAC output is based on the user passcode and a preceding HMAC output,

a first block output is based on an exclusive-or (XOR) of a first current value of the first block output and the HMAC output,

a first intermediate key output is based on a concatenation of a second current value of the first intermediate key output and the first block output, and

when the operation is the last operation in the first sequence, the first intermediate key output is provided as a plurality of blocks on which a second sequence of operations are performed to produce a derived key; and

encrypting content on the device using the derived key.

2. The method of claim 1 , wherein performing the second sequence of operations on the plurality of blocks comprises:

for each operation included in the second sequence:

a second block output is based on an XOR of a third current value of the second block output and a sequence number of the operation of the second sequence,

an encrypted block output is based on an encryption operation performed on an XOR of the third current value of the third current value of the second block output and the device-specific key,

a second intermediate key output is based on an XOR of a fourth current value of the second intermediate key output and the encrypted block output, and

when the operation is a last operation in the second sequence, the second intermediate key output is produced as the derived key.

3. The method of claim 1 , wherein the user passcode and the device-specific key are derived using an encryption algorithm.

4. The method of claim 1 , wherein a number of operations included in the first sequence of operations corresponds to a number of blocks included in the plurality of blocks.

5. The method of claim 1 , wherein each HMAC output comprises a secure hash algorithm.

6. The method of claim 5 , wherein the secure hash algorithm is based on Secure Hash Algorithm 1 (SHA1).

7. The method of claim 1 , wherein the device is a mobile device or a personal computer.

8. The method of claim 1 , wherein a value of the device-specific key is not accessible to applications executing on the device.

9. A system configured to access content that is protected by a derived key, the system comprising:

a processor; and

a memory configured to store instructions that, when executed by the processor, cause the system to:

receive a user passcode, a device-specific key that is specific to the system, and a known random salt value;

perform a first sequence of operations, wherein, for each operation in the first sequence:

when the operation is a first operation in the first sequence, a hash-based message authentication code (HMAC) output is based on the user passcode and the known random salt value,

when the operation is not the first operation and is not a last operation in the first sequence, the HMAC output is based on the user passcode and a preceding HMAC output,

a first block output is based on an exclusive-or (XOR) of a first current value of the first block output and the HMAC output,

a first intermediate key output is based on a concatenation of a second current value of the first intermediate key output and the first block output, and

when the operation is the last operation in the first sequence, the first intermediate key output is provided as a plurality of blocks on which a second sequence of operations are performed to produce the derived key; and

decrypt at least a part of the content using the derived key.

10. The system of claim 9 , wherein a value of the device-specific key is not accessible to applications executing on the system.

11. The system of claim 9 , wherein the device-specific key is unique with respect to device-specific keys for other systems.

12. The system of claim 9 , wherein a number of operations included in the first sequence of operations corresponds to a number of blocks included in the plurality of blocks.

13. The system of claim 9 , wherein performing the second sequence of operations on the plurality of blocks comprises:

for each operation included in the second sequence:

a second block output is based on an XOR of a third current value of the second block output and a sequence number of the operation of the second sequence,

an encrypted block output is based on an encryption operation performed on an XOR of the third current value of the third current value of the second block output and the device-specific key,

a second intermediate key output is based on an XOR of a fourth current value of the second intermediate key output and the encrypted block output, and

when the operation is a last operation in the second sequence, the second intermediate key output is produced as the derived key.

14. A non-transitory computer-readable storage medium configured to store instructions that, when executed by a processor included in a computing device, cause the computing device to carry out steps that include:

receiving a user passcode, a device-specific key that is specific to the computing device, and a known random salt value;

performing a first sequence of operations, wherein, for each operation in the first sequence:

when the operation is a first operation in the first sequence, a hash-based message authentication code (HMAC) output is based on the user passcode and the known random salt value,

when the operation is not the first operation and is not a last operation in the first sequence, the HMAC output is based on the user passcode and a preceding HMAC output,

a first block output is based on an exclusive-or (XOR) of a first current value of the first block output and the HMAC output,

a first intermediate key output is based on a concatenation of a second current value of the first intermediate key output and the first block output, and

when the operation is the last operation in the first sequence, the first intermediate key output is provided as a plurality of blocks on which a second sequence of operations are performed to produce a derived key; and

encrypting content on the computing device using the derived key.

15. The non-transitory computer-readable storage medium of claim 14 , wherein encrypting the content on the computing device comprises encrypting at least one of a file, a folder, a keychain, a file system, a partition, and a block.

16. The non-transitory computer-readable storage medium of claim 14 , wherein the device-specific key is unique relative to device-specific keys for other computing devices.

17. The non-transitory computer-readable storage medium of claim 14 , wherein performing the second sequence of operations on the plurality of blocks comprises:

for each operation included in the second sequence:

a second block output is based on an XOR of a third current value of the second block output and a sequence number of the operation of the second sequence,

an encrypted block output is based on an encryption operation performed on an XOR of the third current value of the third current value of the second block output and the device-specific key,

a second intermediate key output is based on an XOR of a fourth current value of the second intermediate key output and the encrypted block output, and

when the operation is a last operation in the second sequence, the second intermediate key output is produced as the derived key.

18. A method for accessing content that is protected by a derived key, wherein the method is carried out at a computing device, and the method comprises:

receiving a user passcode, a device-specific key that is specific to the computing device, and a known random salt value;

performing a first sequence of operations, wherein, for each operation in the first sequence:

when the operation is a first operation in the first sequence, a hash-based message authentication code (HMAC) output is based on the user passcode and the known random salt value,

when the operation is not the first operation and is not a last operation in the first sequence, the HMAC output is based on the user passcode and a preceding HMAC output,

a first block output is based on an exclusive-or (XOR) of a first current value of the first block output and the HMAC output,

a first intermediate key output is based on a concatenation of a second current value of the first intermediate key output and the first block output, and

when the operation is the last operation in the first sequence, the first intermediate key output is provided as a plurality of blocks on which a second sequence of operations are performed to produce the derived key; and

decrypting at least a part of the content using the derived key.

19. The method of claim 18 , wherein performing the second sequence of operations on the plurality of blocks comprises:

for each operation included in the second sequence:

a second block output is based on an XOR of a third current value of the second block output and a sequence number of the operation of the second sequence,

an encrypted block output is based on an encryption operation performed on an XOR of the third current value of the third current value of the second block output and the device-specific key,

a second intermediate key output is based on an XOR of a fourth current value of the second intermediate key output and the encrypted block output, and

when the operation is a last operation in the second sequence, the second intermediate key output is produced as the derived key.

20. The method of claim 18 , wherein a number of operations included in the first sequence of operations corresponds to a number of blocks included in the plurality of blocks.

21. The method of claim 18 , wherein a value of the device-specific key is not accessible to applications executing on the computing device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2010
From: BROUWER, MICHAEL LAMBERTUS HUBERTUS; ADLER, MITCHELL DAVID
To: APPLE INC.
Reel/Frame 024601/0830 →
Continuity (2)
Continuation In Part 12756153 · Apr 7, 2010
Related Publication 20110252243A1 · Oct 13, 2011