IP Library Granted Patent US 9,792,439
Granted Patent B2
US 9,792,439 · App. 13/622,534 · Granted Oct 17, 2017

Method and system for securely updating firmware in a computing device

Inventor: Vincent Cedric Colnot (Uccle, BE)
Assignee: NXP B.V.
G06F21/572G06F21/575
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 9,792,439
App. No.
13/622,534
Granted
Oct 17, 2017
Kind
B2
Abstract

Embodiments of a method are disclosed. One embodiment is a method for securely updating firmware in a computing device, in which the computing device includes a host processor and a non-volatile memory. The method involves receiving a double-encrypted firmware image from an external firmware source, wherein the double-encrypted firmware image is generated from firmware that is encrypted a first time using a first crypto-key and then encrypted a second time using a second crypto-key. The method also involves receiving the second crypto-key from an external key source, decrypting the double-encrypted firmware image using the second crypto-key to produce an encrypted firmware image, storing the encrypted firmware image in the non-volatile memory of the computing device, reading the encrypted firmware image from the non-volatile memory of the computing device, decrypting the encrypted firmware image using the first crypto-key, and executing the firmware on the computing device.

Claims (39)

1. A method for updating firmware in a computing device, the computing device including a host processor and a non-volatile memory, the method comprising:

receiving a double-encrypted firmware image from an external firmware source, wherein the double-encrypted firmware image is generated from firmware that is encrypted a first time using a first crypto-key and then encrypted a second time using a second crypto-key;

receiving the second crypto-key from an external key source;

decrypting the double-encrypted firmware image using the second crypto-key to produce an encrypted firmware image;

storing the encrypted firmware image in the non-volatile memory of the computing device;

reading the encrypted firmware image from the non-volatile memory of the computing device;

decrypting the encrypted firmware image using the first crypto-key to produce the firmware; and

executing the firmware on the computing device;

wherein the second crypto-key is received and stored at a secure element located between the host processor and the non-volatile memory; and

wherein the secure element is configured to apply decryption to data addressed to code blocks in the non-volatile memory and to pass without decryption data addressed to data blocks in the non-volatile memory.

2. The method of claim 1 wherein the double-encrypted firmware image is decrypted by the secure element using the second crypto-key.

3. The method of claim 2 wherein the secure element includes a host-side interface connected to a host-side data bus and a memory-side interface connected to a memory-side data bus, and wherein the secure element includes a crypto-engine configured to decrypt the double-encrypted firmware.

4. The method of claim 1 wherein the double-encrypted firmware image is decrypted using the second crypto-key upon receipt of the double-encrypted firmware image from the external firmware source without first being stored in the non-volatile memory.

5. The method of claim 1 wherein the double-encrypted firmware image is first stored in the non-volatile memory and then read from the non-volatile memory and decrypted using the second crypto-key.

6. The method of claim 1 wherein the first crypto-key is a group key (GK1), which is the same for a group of computing devices, and wherein the second crypto-key is a group key (GK2), which is the same for a particular version of the firmware.

7. The method of claim 1 wherein the second crypto-key is received from the external key source via a secure channel.

8. The method of claim 1 further comprising decrypting an encrypted random number at the secure element to confirm the presence of the secure element.

9. A computing device comprising:

a data interface configured to receive a double-encrypted firmware image from an external firmware source, wherein the double-encrypted firmware image is generated from firmware that is encrypted a first time using a first crypto-key and then encrypted a second time using a second crypto-key, and to receive the second crypto-key from an external key source;

a host processor configured to execute program code of the firmware;

a non-volatile memory configured to store an encrypted image of the firmware; and

a secure element located in a data path between the host processor and the non-volatile memory and having a crypto-engine, the crypto-engine being configured to decrypt the double-encrypted firmware image using the second crypto-key to produce an encrypted firmware image and the secure element being configured to provide the encrypted firmware image to the non-volatile memory of the computing device for storage;

the host processor being configured to read the encrypted firmware image from the non-volatile memory, to decrypt the encrypted firmware image using the first crypto-key to produce the firmware, and to execute program code of the firmware on the computing device;

wherein the secure element is configured to apply decryption to data addressed to code blocks in the non-volatile memory and to pass without decryption data addressed to data blocks in the non-volatile memory.

10. The computing system of claim 9 wherein the double-encrypted firmware image is decrypted at the secure element using the second crypto-key upon receipt of the double-encrypted firmware image from the external firmware source without first being stored in the non-volatile memory.

11. The computing system of claim 9 wherein the double-encrypted firmware image is first passed through the secure element and stored in the non-volatile memory without being decrypted and then read from the non-volatile memory upon boot up and decrypted at the secure element using the second crypto-key.

12. The computing system of claim 9 wherein the first crypto-key is a device group key (GK1), which is the same for a group of computing devices, and wherein the second crypto-key is a group key (GK2), which is the same for a particular version of the firmware.

13. A method for confirming the presence of a secure element in a computing device, the computing device including a host processor and a non-volatile memory, the method comprising:

receiving an encrypted random number at the secure element, wherein the random number is encrypted using a crypto-key;

receiving the crypto-key from an external key source;

decrypting the encrypted random number at the secure element using the crypto-key to produce a decrypted random number;

storing the decrypted random number in the non-volatile memory of the computing device;

reading the decrypted random number from the non-volatile memory of the computing device;

comparing the decrypted random number to a stored version of the random number; and

confirming the presence of the element if the decrypted random number matches the stored random number.

14. The method of claim 13 wherein the crypto-key is received and stored at a secure element, and wherein the secure element is located between the host processor and the non-volatile memory.

15. The method of claim 14 wherein the secure element is configured to apply decryption to data addressed to code blocks in the non-volatile memory and to pass without decryption data addressed to data blocks in the non-volatile memory.

16. The method of claim 13 wherein the crypto-key is a group key (GK), which is the same for a group of computing devices.

17. The method of claim 13 wherein the crypto-key is a session key (SK), which is specific to a communications session of the computing device.

Assignments (10)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2012
From: COLNOT, VINCENT CEDRIC
To: NXP B.V.
Reel/Frame 028987/0725 →
Continuity (1)
Related Publication 20140082373A1 · Mar 20, 2014