# US 12,216,765 B2 · Identity-based verification of software code layers

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,216,765 B2
- Document ID: US12216765B2
- Status: Granted
- Kind: B2
- Application number: 17/973,793
- Filed: 2022-10-26
- Published: 2024-05-02
- Granted: 2025-02-04
- Earliest claimed: 2022-10-26
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Mukund P. Khatri; Eugene David Cho; Milton Olavo Decarvalho Taveira
- Web page: https://patentgrep.com/patent/US12216765B2

## CPC

- G06F 21/575: {Secure boot}
- G06F 21/602: {Providing cryptographic facilities or services}
- H04L 9/3247: {involving digital signatures}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Techniques are provided for identity-based verification of software code layers. One method comprises obtaining, by a current layer of software code executing on a security processor of a security sub-system, in connection with a boot of the security sub-system, an identity key of the current layer, wherein the identity key of the current layer is based on a value generated during a provisioning of the security sub-system, wherein the value is based on a firmware image of at least one layer of the software code; obtaining an encrypted secure boot public key of a next layer; decrypting the encrypted secure boot public key of the next layer using the obtained identity key of the current layer; verifying the next layer using the decrypted secure boot public key of the next layer; and executing the next layer based at least in part on a result of the verifying.

## Claims

### Claim 1

A method, comprising:
obtaining, by a current layer of a plurality of layers of software code executing on a security processor of a security sub-system, in connection with a boot of the security sub-system, an identity key of the current layer of software code, wherein the identity key of the current layer of software code is based at least in part on at least one value generated during a provisioning of the security sub-system, wherein the at least one value is based at least in part on a firmware image of at least one layer of the plurality of layers of software code;
obtaining an encrypted secure boot public key of a next layer of software code;
decrypting the encrypted secure boot public key of the next layer of software code using the obtained identity key of the current layer of software code;
verifying the next layer of software code using the decrypted secure boot public key of the next layer of software code; and
initiating execution of the next layer of software code based at least in part on a result of the verifying;
wherein the method is performed by at least one processing device comprising a processor coupled to a memory.

### Claim 2 (depends on 1)

The method of claim 1, wherein the identity key of the current layer of software code is based at least in part on one or more of (i) a first value generated by applying at least one function to one or more values stored in a secure memory of the security sub-system, and (ii) a second value generated by applying at least one function to the firmware image of the at least one layer of the plurality of layers of software code.

### Claim 3 (depends on 2)

The method of claim 2, wherein the identity key of the current layer of software code is generated by applying a key derivation function to the first value and the second value.

### Claim 4 (depends on 1)

The method of claim 1, wherein the at least one value generated during the provisioning of the security sub-system comprises a substantially unique identifier of the security sub-system.

### Claim 5 (depends on 1)

The method of claim 1, further comprising preventing an execution of the next layer of software code responsive to the next layer of software code failing to verify.

### Claim 6 (depends on 1)

The method of claim 1, wherein the identity key of the current layer of software code is obtained from a vault, in a protected storage of the security sub-system, associated with the current layer of software code.

### Claim 7 (depends on 1)

The method of claim 1, wherein the verifying the next layer of software code comprises verifying a signature associated with the next layer of software code.

### Claim 8 (depends on 1)

The method of claim 1, wherein the decrypting the encrypted secure boot public key of the next layer of software code using the obtained identity key of the current layer of software code requires the identity key of the current layer of software code that is based at least in part on the at least one value generated during the provisioning of the security sub-system.

### Claim 9

An apparatus comprising:
at least one processing device comprising a processor coupled to a memory;
the at least one processing device being configured to implement the following steps:
obtaining, by a current layer of a plurality of layers of software code executing on a security processor of a security sub-system, in connection with a boot of the security sub-system, an identity key of the current layer of software code, wherein the identity key of the current layer of software code is based at least in part on at least one value generated during a provisioning of the security sub-system, wherein the at least one value is based at least in part on a firmware image of at least one layer of the plurality of layers of software code;
obtaining an encrypted secure boot public key of a next layer of software code;
decrypting the encrypted secure boot public key of the next layer of software code using the obtained identity key of the current layer of software code;
verifying the next layer of software code using the decrypted secure boot public key of the next layer of software code; and
initiating execution of the next layer of software code based at least in part on a result of the verifying.

### Claim 10 (depends on 9)

The apparatus of claim 9, wherein the identity key of the current layer of software code is based at least in part on one or more of (i) a first value generated by applying at least one function to one or more values stored in a secure memory of the security sub-system, and (ii) a second value generated by applying at least one function to the firmware image of the at least one layer of the plurality of layers of software code.

### Claim 11 (depends on 10)

The apparatus of claim 10, wherein the identity key of the current layer of software code is generated by applying a key derivation function to the first value and the second value.

### Claim 12 (depends on 9)

The apparatus of claim 9, further comprising preventing an execution of the next layer of software code responsive to the next layer of software code failing to verify.

### Claim 13 (depends on 9)

The apparatus of claim 9, wherein the verifying the next layer of software code comprises verifying a signature associated with the next layer of software code.

### Claim 14 (depends on 9)

The apparatus of claim 9, wherein the decrypting the encrypted secure boot public key of the next layer of software code using the obtained identity key of the current layer of software code requires the identity key of the current layer of software code that is based at least in part on the at least one value generated during the provisioning of the security sub-system.

### Claim 15

A non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code when executed by at least one processing device causes the at least one processing device to perform the following steps:
obtaining, by a current layer of a plurality of layers of software code executing on a security processor of a security sub-system, in connection with a boot of the security sub-system, an identity key of the current layer of software code, wherein the identity key of the current layer of software code is based at least in part on at least one value generated during a provisioning of the security sub-system, wherein the at least one value is based at least in part on a firmware image of at least one layer of the plurality of layers of software code;
obtaining an encrypted secure boot public key of a next layer of software code;
decrypting the encrypted secure boot public key of the next layer of software code using the obtained identity key of the current layer of software code;
verifying the next layer of software code using the decrypted secure boot public key of the next layer of software code; and
initiating execution of the next layer of software code based at least in part on a result of the verifying.

### Claim 16 (depends on 15)

The non-transitory processor-readable storage medium of claim 15, wherein the identity key of the current layer of software code is based at least in part on one or more of (i) a first value generated by applying at least one function to one or more values stored in a secure memory of the security sub-system, and (ii) a second value generated by applying at least one function to the firmware image of the at least one layer of the plurality of layers of software code.

### Claim 17 (depends on 16)

The non-transitory processor-readable storage medium of claim 16, wherein the identity key of the current layer of software code is generated by applying a key derivation function to the first value and the second value.

### Claim 18 (depends on 15)

The non-transitory processor-readable storage medium of claim 15, further comprising preventing an execution of the next layer of software code responsive to the next layer of software code failing to verify.

### Claim 19 (depends on 15)

The non-transitory processor-readable storage medium of claim 15, wherein the verifying the next layer of software code comprises verifying a signature associated with the next layer of software code.

### Claim 20 (depends on 15)

The non-transitory processor-readable storage medium of claim 15, wherein the decrypting the encrypted secure boot public key of the next layer of software code using the obtained identity key of the current layer of software code requires the identity key of the current layer of software code that is based at least in part on the at least one value generated during the provisioning of the security sub-system.
