IP Library Granted Patent US 11,418,333
Granted Patent B2
US 11,418,333 · App. 16/739,515 · Granted Aug 16, 2022

System and method for trusted control flow enforcement using derived encryption keys

Inventors: Nicholas D. Grobelny (Austin, TX); Richard M. Tonry (Austin, TX); Balasingh P. Samuel (Round Rock, TX)
Assignee: Dell Products L.P.
H04L9/0869H04L9/0643H04L9/0877
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,418,333
App. No.
16/739,515
Granted
Aug 16, 2022
Kind
B2
Abstract

A system includes a communication channel monitor configured to calculate a hash value of a first encrypted code segment based on a measurement. A security module may derive a first encryption key using a key decryption function operation from the hash value of the first encrypted code segment. A processor decrypts the first encrypted code segment with a seed key retrieved from a storage device, and if the decryption is successful then executes the first decrypted code segment. The processor may retrieve a second one of the encrypted code segments, wherein the second encrypted code segment is a next encrypted code segment for execution after the first encrypted code segment according to a sequence of execution, decrypt the second encrypted code segment with the first encryption key, and if the decryption is successful then execute the second decrypted code segment.

Claims (61)

1. A system to enforce control flow integrity, the system comprising:

a communication channel monitor configured to:

detect an encrypted code segment of a bootloader that is divided into a plurality of encrypted code segments; and

calculate a hash value of the encrypted code segment based on a measurement of the encrypted code segment;

a security module configured to:

determine whether to derive an encryption key of a plurality of encryption keys in a memory, wherein the encryption key is based on the encrypted code segment; and

in response to a determination to derive the encryption key from the encrypted code segment, derive the encryption key based on the hash value of the encrypted code segment; and

a hardware processor configured to:

decrypt the encrypted code segment with a seed key retrieved from a storage device resulting in the decrypted code segment;

determine whether the decrypted code segment is a last code segment of the encrypted code segments;

while being determined that the decrypted code segment is not the last code segment:

retrieve a next encrypted code segment for execution after the encrypted code segment according to a sequence of execution;

decrypt the next encrypted code segment with the encryption key generating a next decrypted code segment;

if the decryption of the encrypted code segment is successful then execute the next decrypted code segment; and

deriving the encryption key based on a next hash value of the next encrypted code segment; and

in response a determination that the next decrypted code segment is the last code segment, remove the encryption keys from the memory.

2. The system of claim 1 , wherein a key extension register holds the seed key and the encryption key.

3. The system of claim 1 , wherein the storage device is a trusted platform module.

4. The system of claim 3 , wherein the retrieve of the next encrypted code segment includes to unseal the seed key using platform configuration register of the trusted platform module.

5. The system of claim 1 , wherein the encryption key is derived from the hash value of the encrypted code segment.

6. The system of claim 1 , wherein the hardware processor is further configured to invalidate the encryption key subsequent to the execution of the decrypted code segment.

7. The system of claim 1 , wherein the encrypted code segments are stored in a serial peripheral interface flash memory device.

8. The system of claim 1 , wherein the hardware processor is further configured to determine whether decryption of the next encrypted code segment is unsuccessful, if decryption is unsuccessful then terminate execution of the decrypted code segment.

9. A method comprising:

detecting, by a hardware processor, an encrypted code segment of a bootloader that is divided into a plurality of encrypted code segments;

calculating a hash value of the encrypted code segment based on a measurement of the encrypted code segment;

determining whether to derive an encryption key of a plurality of encryption keys in a memory, wherein the encryption key is based on the encrypted code segment;

in response to a determination to derive the encryption key from the encrypted code segment, deriving the encryption key based on the hash value of the encrypted code segment;

decrypting the encrypted code segment with a seed key retrieved from a storage device resulting in a decrypted code segment;

if the decrypting of the encrypted code segment is successful, then executing the decrypted code segment;

determining whether the decrypted code segment is a last code segment of the encrypted code segments;

while determining that the decrypted code segment is not the last code segment:

retrieving a next encrypted code segment for execution according to a sequence of execution;

decrypting the next encrypted code segment with the encryption key generating a next decrypted code segment;

deriving the encryption key based on a next hash value of the next encrypted code segment; and

if the decrypting of the next encrypted code segment is successful then executing the next decrypted code segment; and

in response to determining that the next decrypted code segment is the last code segment, removing the encryption keys from the memory.

10. The method of claim 9 , wherein a key extension register holds the seed key and the encryption key.

11. The method of claim 9 , wherein the storage device is a trusted platform module.

12. The method of claim 11 , wherein the retrieving includes the hardware processor further configured to unseal the seed key using platform configuration register of the trusted platform module.

13. The method of claim 9 , wherein the encryption key is derived from the hash value of the encrypted code segment.

14. The method of claim 9 , wherein the hardware processor is further configured to invalidate the encryption key subsequent to execution of the next decrypted code segment.

15. The method of claim 9 , wherein the encrypted code segments are stored in a serial peripheral interface flash memory device.

16. The method of claim 9 , wherein the hardware processor is further configured to determine if decryption of the next encrypted code segment is unsuccessful, when decryption is unsuccessful then to terminate execution of the next decrypted code segment.

17. A non-transitory computer-readable medium including code that when executed causes a processor to perform a method, the method comprising:

detecting an encrypted code segment of a plurality of encrypted code segments;

calculating a hash value of the encrypted code segment based on a measurement of the encrypted code segment, wherein the encrypted code segment is a bootloader;

determining whether to derive an encryption key of a plurality of encryption keys in a memory, wherein the encryption key is based on the encrypted code segment;

in response to a determination to derive the encryption key from the encrypted code segment, deriving the encryption key based on the hash value of the encrypted code segment;

decrypting the encrypted code segment with a seed key retrieved from a storage device resulting in the first a decrypted code segment;

if the decrypting is successful, then executing the decrypted code segment;

determining whether the first decrypted code segment is a last code segment of the encrypted code segments;

while determining that the decrypted code segment is not the last code segment:

retrieving a next encrypted code segment for execution according to a sequence of execution;

decrypting the next encrypted code segment with the encryption key generating a next decrypted code segment;

if the decrypting of the next encrypted code segment is successful then executing the next decrypted code segment; and

deriving the encryption key based on a next hash value of the next encrypted code segment; and

in response determining that the decrypted code segment is the last code segment, remove the encryption keys from the memory.

18. The non-transitory computer-readable medium of claim 17 , wherein a key extension register holds the seed key and the encryption key.

19. The non-transitory computer-readable medium of claim 17 , wherein the storage device is a trusted platform module.

20. The non-transitory computer-readable medium of claim 17 , wherein the encryption key is derived from the hash value of the encrypted code segment.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052216/0758) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2020
From: GROBELNY, NICHOLAS D.; TONRY, RICHARD M.; SAMUEL, BALASINGH P.
To: DELL PRODUCTS, LP
Reel/Frame 051477/0673 →
Continuity (1)
Related Publication 20210218562A1 · Jul 15, 2021
Cited By (1)
US 12,705,359