# US 11,030,280 B2 · Hardware based identities for software modules

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

- Number: US 11,030,280 B2
- Document ID: US11030280B2
- Status: Granted
- Kind: B2
- Application number: 16/052,463
- Filed: 2018-08-01
- Published: 2020-02-06
- Granted: 2021-06-08
- Earliest claimed: 2018-08-01
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Eustace Ngwa Asanghanwa; Arjmand Samuel
- Web page: https://patentgrep.com/patent/US11030280B2

## CPC

- G06F 21/123: {by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices}
- G06F 21/57: Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F 21/53: by executing in a restricted environment, e.g. sandbox or secure virtual machine
- G06F 21/602: {Providing cryptographic facilities or services}
- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F 21/74: operating in dual or compartmented mode, i.e. at least one secure mode
- H04L 9/0819: {Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) (network architectures or network communication protocols for key distribution in a packet data network H04L63/062)}
- H04L 9/0866: {involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics}
- H04L 9/0877: {using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]}
- H04L 9/3263: {involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements (network architectures or network communication protocols for supporting authentication of entities using certificates in a packet data network H04L63/0823)}
- H04L 63/0823: {using certificates (cryptographic mechanisms or cryptographic arrangements for entity authentication involving certificates H04L9/3263)}
- H04L 63/123: {received data contents, e.g. message integrity}
- 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

Creating a certificate for a software module. A method includes obtaining a public key for a software module. The method includes obtaining a public key for a software module implemented on a hardware device. The method further includes creating a certificate using the public key by signing the public key using a hardware protected key and hardware protected compute elements. The hardware protected key is protected by a protected portion of the hardware device, and not accessible outside of the protected portion of the hardware device.

## Claims

### Claim 1

A computer system comprising:
one or more processors; and
one or more computer-readable media having stored thereon instructions for executing a computer process comprising:
obtaining a public key for a first software module implemented on a hardware device, the first software module comprising a Module Management Agent (MMA) software module; and
providing the public key to a hardware secure module (HSM) of the hardware device;
receiving a signature from the HSM, the signature being based on the public key and further based on a hardware protected key for the MMA software module, wherein the hardware protected key for the MMA software module is stored within the HSM at a location inaccessible to read entities external to the HSM;
creating a certificate for the first software module using the public key, the signature, and the hardware protected key for the MMA software module;
obtaining a different public key for a second software module; and
using the certificate as a verifiable identify for the first software module when the first software module is communicating with the second software module.

### Claim 2 (depends on 1)

The computer system of claim 1, wherein the certificate is an X.509 certificate.

### Claim 3 (depends on 1)

The computer system of claim 1, wherein one or more computer-readable media further have stored thereon instructions that are executable by the one or more processors to configure the computer system to perform at least the following:
creating an integrity digest, the integrity digest comprising a hash of static bits of the first software module and the certificate;
signing the integrity digest using the hardware protected private key for the first software module at the hardware device to create an integrity signature; and
associating the integrity signature with the first software module.

### Claim 4 (depends on 3)

The computer system of claim 3, wherein associating the integrity signature with the first software module comprises associating the integrity signature as a property of the first software module.

### Claim 5 (depends on 3)

The computer system of claim 3, wherein one or more computer-readable media further have stored thereon instructions that are executable by the one or more processors to configure the computer system to use the integrity signature to verify the first software module in conjunction with loading the first software module into memory of the hardware device.

### Claim 6 (depends on 1)

The computer system of claim 1, wherein the instructions are further executable to:
transmit a request to the HSM to generate a public/private key pair for the first software module.

### Claim 7

A method comprising:
obtaining a public key for a first software module implemented on a hardware device, the first software module including a Module Management Agent (MMA) software module;
providing the public key to a hardware secure module (HSM) of the hardware device;
receiving a signature from the HSM, the signature being based on the public key and further based on a hardware protected key for the MMA software module, wherein the hardware protected key for the MMA is stored within the HSM at a location inaccessible to read entities external to the HSM;
creating a certificate for the first software module using the public key, the signature, and the hardware protected key for the MMA software module;
obtaining a different public key for a second software module; and
using the certificate as a verifiable identify for the first software module when the first software module is communicating with the second software module.

### Claim 8 (depends on 7)

The method of claim 7, wherein the certificate is an X.509 certificate.

### Claim 9 (depends on 7)

The method of claim 7, further comprising:
creating an integrity digest, the integrity digest comprising a hash of static bits of the first software module and the certificate;
signing the integrity digest using the hardware protected private key for the first software module at the hardware device to create an integrity signature; and
associating the integrity signature with the first software module.

### Claim 10 (depends on 9)

The method of claim 9, wherein associating the integrity signature with the first software module comprises associating the integrity signature as a property of the first software module.

### Claim 11 (depends on 9)

The method of claim 9, further comprising using the integrity signature to verify the first software module in conjunction with loading the first software module into memory of the hardware device.

### Claim 12

A hardware device comprising:
a hardware secure module (HSM);
a hardware protected secret store, wherein the hardware protected secret store comprises a hardware protected key, and wherein the hardware protected secret store is stored within the hardware secure module (HSM) at a location inaccessible to read entities external to the HSM; and
hardware protected compute elements in the HSM comprising secure storage and secure processors, wherein the hardware protected compute elements are configured to execute a computer processing comprising:
obtaining a public key for a first software module implemented on the hardware device, the first software module comprising a Module Management Agent (MMA) software module, wherein the hardware protected key is a hardware protected key for the MMA;
providing the public key to the hardware secure module (HSM) of the hardware device;
receiving a signature from the HSM, the signature being based on the public key and further based on the hardware protected key for the MMA; and
creating a first certificate for the first software module using the public key, the signature, and the hardware protected key for the MMA software module;
obtaining a different public key for a second software module; and
using the first certificate as a verifiable identify for the first software module when the first software module is communicating with the second software module.

### Claim 13 (depends on 12)

The hardware device of claim 12, wherein the certificate is an X.509 certificate.

### Claim 14 (depends on 12)

The hardware device of claim 12, wherein the hardware protected compute elements are further configured to:
create an integrity digest, the integrity digest comprising a hash of static bits of the first software module and the certificate;
sign the integrity digest using the hardware protected private key for the first software module at the hardware device to create an integrity signature; and
associate the integrity signature with the first software module.

### Claim 15 (depends on 14)

The hardware device of claim 14, wherein associating the integrity signature with the first software module comprises associating the integrity signature as a property of the first software module.
