IP Library Granted Patent US 11,765,149
Granted Patent B2
US 11,765,149 · App. 16/593,377 · Granted Sep 19, 2023

Secure data provisioning

Inventors: Ambuj Kumar (Sunnyvale, CA); Daniel Beitel (San Francisco, CA); Benjamin Che-Ming Jun (Burlingame, CA)
Assignee: Cryptography Research, Inc.
H04L63/061G06F12/1408G06F21/575H04L9/0894H04L9/3236H04L9/3242H04L63/0435H04L63/0442H04W12/04H04W12/35G06F2212/1052
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 11,765,149
App. No.
16/593,377
Granted
Sep 19, 2023
Kind
B2
Abstract

A first instruction to store an entity identification (ID) in a memory of a device may be received. The entity ID may be stored in the memory in response to receiving the first instruction. Furthermore, a second instruction to store a value based on a key in the memory of the device may be received. A determination may be made as to whether the value based on the key that is to be stored in the memory corresponds to the entity ID that is stored in the memory. The value based on the key may be stored in the memory of the device when the value based on the key corresponds to the entity ID.

Claims (62)

1. A device comprising:

a first memory to store software;

a second memory; and

secure data provisioning component operatively coupled to the second memory, wherein the secure data provisioning component to:

receive a first instruction to store an entity identification (ID) in the second memory, wherein the entity ID is unique to a particular manufacturer;

store the entity ID in the second memory in response to receiving the first instruction;

receive a second instruction to store a hash value of a public key in the second memory, wherein the second instruction comprises the hash value and an ID check value, wherein the ID check value is used by the secure data provisioning component to detect an error with the entity ID prior to storing the hash value in the second memory, wherein the public key corresponds to a private key used by the particular manufacturer to sign the software that is stored in the first memory;

prior to storing the hash value in the second memory, determine whether the hash value corresponds to the entity ID using the ID check value, wherein the hash value corresponds to the entity ID when the ID check value corresponds to the entity ID; and

store the hash value in the second memory when the hash value is determined to correspond to the entity ID.

2. The device of claim 1 , wherein the second memory is non-volatile memory.

3. The device of claim 2 , wherein the non-volatile memory is at least one of a One Time Programmable (OTP) memory, eFuse, or Multi-time Programmable (MTP) memory.

4. The device of claim 1 , wherein the second memory is volatile memory.

5. The device of claim 1 , wherein the secure data provisioning component is further to:

receive a third instruction to store a symmetric key in the second memory, wherein the third instruction comprises the symmetric key and an expected value, wherein the expected value is used by the secure data provisioning component to detect an error with the hash value prior to storing the symmetric key in the second memory, wherein the symmetric key is specified by the particular manufacturer to authenticate the device during a later operation of the device;

prior to storing the symmetric key in the second memory, determine whether the symmetric key to be stored in the second memory corresponds to the hash value that is stored in the second memory using the expected value, wherein the symmetric key corresponds to the hash value when the expected value matches the hash value stored in the second memory; and

store the symmetric key in the second memory when the symmetric key is determined to correspond to the hash value.

6. The device of claim 5 , wherein the first instruction, the second instruction, and the third instruction are associated with a sequence of instructions received by an original device manufacturer (ODM) from an original equipment manufacturer (OEM) via a network.

7. The device of claim 6 , wherein the sequence of instructions is associated with a signature corresponding to the private key, the secure data provisioning component is further to:

retrieve, from circuitry of the device, the public key corresponding to the private key; and

authenticate the signature of the sequence of instructions based on the public key.

8. The device of claim 5 , wherein the symmetric key is encrypted based on a wrapping key.

9. The device of claim 8 , wherein the wrapping key is stored in the secure data provisioning component.

10. The device of claim 5 , wherein the entity ID is an original equipment manufacturer (OEM) ID, wherein the symmetric key is an OEM key associated with the OEM ID.

11. The device of claim 1 , further comprising secure boot logic coupled to the first memory and the second memory, wherein the software, stored in the first memory, is an operating system (OS), wherein the secure boot logic is to execute the OS from the first memory based on the hash value stored in the second memory.

12. The device of claim 11 , wherein the first memory is further to store an OS signature, wherein the secure boot logic is to determine whether to execute the OS based on the OS signature.

13. The device of claim 11 , wherein the first memory is further to store an OS signature signed by a private key, wherein the secure boot logic is to:

retrieve the hash value from the second memory;

determine a public key associated with the hash value;

verify the OS signature using the public key; and

determine whether to execute the OS responsive to the OS signature being verified.

14. The device of claim 11 , wherein the first memory is further to store an OS signature and a copy of the public key associated with the OS signature, wherein the secure boot logic is to:

retrieve the public key stored in the first memory;

calculate a second hash value of the copy of the public key;

retrieve the hash value from the second memory;

verify the OS signature by comparing the second hash value with the hash value; and

determine whether to execute the OS responsive to the OS signature being verified.

15. An apparatus comprising:

a first memory to store software;

a second memory;

means for receiving a first instruction to store an entity identification (ID) in the second memory and a second instruction to store a hash value of a public key in the second memory, wherein the entity ID is unique to a particular manufacturer, wherein the second instruction comprises the hash value and an ID check value, wherein the public key corresponds to a private key used by the particular manufacturer to sign the software that is stored in the first memory;

means for storing the entity ID in the second memory in response to the first instruction;

means for determining whether the hash value corresponds to the entity ID using the ID check value prior to storing the hash value in the second memory, wherein the hash value corresponds to the entity ID when the ID check value matches the entity ID; and

means for storing the hash value in the second memory in response to the second instruction and the hash value being determined to correspond to the entity ID.

16. The apparatus of claim 15 , further comprising:

means for receiving a third instruction to store a symmetric key in the second memory, wherein the third instruction comprises the symmetric key and an expected value, wherein the symmetric key is specified by the particular manufacturer to authenticate the apparatus during a later operation of the apparatus;

means for determining whether the symmetric key to be stored in the second memory corresponds to the hash value that is stored in the second memory using the expected value prior to storing the symmetric key in the second memory, wherein the symmetric key corresponds to the hash value when the expected value matches the hash value stored in the second memory; and

means for storing the symmetric key in the second memory when the symmetric key is determined to correspond to the hash value.

17. The apparatus of claim 15 , wherein the second memory is non-volatile memory.

18. The apparatus of claim 17 , wherein the non-volatile memory is at least one of a One Time Programmable (OTP) memory, eFuse, or Multi-time Programmable (MTP) memory.

19. An integrated circuit comprising:

a first memory to store software;

a second memory; and

secure data provisioning component operatively coupled to the second memory, wherein the secure data provisioning component to:

receive a first instruction to store an entity identification (ID) in the second memory, wherein the entity ID is unique to a particular manufacturer;

store the entity ID in the second memory in response to receiving the first instruction;

receive a second instruction to store a hash value of a public key in the second memory, wherein the second instruction comprises the hash value and an ID check value, wherein the ID check value is used by the secure data provisioning component to detect an error with the entity ID prior to storing the hash value in the second memory, wherein the public key corresponds to a private key used by the particular manufacturer to sign the software that is stored in the first memory;

prior to storing the hash value in the second memory, determine whether the hash value corresponds to the entity ID using the ID check value, wherein the hash value corresponds to the entity ID when the ID check value corresponds to the entity ID; and

store the hash value in the second memory when the hash value is determined to correspond to the entity ID.

20. The integrated circuit of claim 19 , wherein the secure data provisioning component is further to:

receive a third instruction to store a symmetric key in the second memory, wherein the third instruction comprises the symmetric key and an expected value, wherein the expected value is used by the secure data provisioning component to detect an error with the hash value prior to storing the symmetric key in the second memory, wherein the symmetric key is specified by the particular manufacturer to authenticate the integrated circuit during a later operation of the integrated circuit;

prior to storing the symmetric key in the second memory, determine whether the symmetric key to be stored in the second memory corresponds to the hash value that is stored in the second memory using the expected value, wherein the symmetric key corresponds to the hash value when the expected value matches the hash value stored in the second memory; and

store the symmetric key in the second memory when the symmetric key is determined to correspond to the hash value.

Continuity (3)
Continuation 15322707
Provisional Application 62023815 · Jul 11, 2014
Related Publication 20200120077A1 · Apr 16, 2020