# US 10,769,280 B2 · Side channel attack countermeasures for secure bootloading

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

- Number: US 10,769,280 B2
- Document ID: US10769280B2
- Status: Granted
- Kind: B2
- Application number: 16/218,727
- Filed: 2018-12-13
- Published: 2020-06-18
- Granted: 2020-09-08
- Earliest claimed: 2018-12-13
- Assignees: Silicon Laboratories Inc.
- Applicants: Silicon Laboratories Inc.
- Inventors: Joshua Jay Norem; Daniel Riedler; Chad Steven O'Neill
- Web page: https://patentgrep.com/patent/US10769280B2

## CPC

- G06F 21/575: {Secure boot}
- G06F 21/51: at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
- G06F 21/572: {Secure firmware programming, e.g. of basic input output system [BIOS]}
- H04L 9/004: {for fault attacks}
- H04L 9/3247: {involving digital signatures}
- H04L 2209/26: Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
- 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

A system and method for minimizing the likelihood that the secret key used by a bootloader is compromised is disclosed. A bootloader is installed on the device. The bootloader is a software program that performs many functions. These functions may include checking the checksum of the incoming software image for integrity, decrypting the incoming software image using a secret key, deleting data in the FLASH memory, installing the new software image in the FLASH memory and other functions. The bootloader utilizes various techniques to track the versions of the software image being installed. The method counts the number of incomplete attempts that are made when trying to update the software image. By monitoring these parameters, the bootloader can determine when a malicious actor is attempting a side channel attack. In response, the bootloader may not allow a new software image to be loaded or the secret key to be accessed.

## Claims

### Claim 1

A method of securely loading a new software image onto a device, comprising:
receiving, at the device, a bundle, the bundle containing a header and an encrypted payload, from a sender;
verifying the integrity of the header and the identity of the sender, wherein the header includes a version number;
performing a version check;
comparing a value of an attempts counter to install a new software image to a predetermined threshold, wherein the attempts counter tracks a number of times that an installation of a software image has been attempted;
decrypting the encrypted payload, wherein the new software image is contained in the encrypted payload, only if:
the version check is successful and the attempts counter is less than the predetermined threshold; and
after the decrypting, installing the new software image in a memory device in the device;
wherein the attempts counter is incremented prior to the decrypting.

### Claim 2 (depends on 1)

The method of claim 1, wherein the version check comprises determining that the version number in the header is greater than a version of the software image currently installed in the device.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
receiving an update graph from the sender, wherein the update graph specifies allowed versions as a function of a version of the software image currently installed in the device, wherein the version check determines whether the version in the header is an allowed version based on the update graph.

### Claim 4 (depends on 1)

The method of claim 1, wherein the version check comprises:
determining a number of times that a software image having the version number in the header has previously been installed in the device; and
determining whether the number of times is less than a predetermined threshold.

### Claim 5 (depends on 1)

The method of claim 1, wherein the attempts counter is reset after the software image has been successfully installed in the memory device.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
detecting that an error condition has occurred if the attempts counter is not less than the predetermined threshold.

### Claim 7 (depends on 6)

The method of claim 6, wherein the device will not decrypt any encrypted payloads once the error condition is detected.

### Claim 8 (depends on 1)

The method of claim 1, wherein the bundle is signed by the sender, and further comprising:
verifying the integrity of the bundle and the identity of the sender prior to the decrypting.

### Claim 9 (depends on 8)

The method of claim 8, wherein the header is signed by the sender using a header signature and the encrypted payload is also signed by the sender using a payload signature, further comprising:
verifying the integrity of the header and the identity of the sender prior to the decrypting; and
verifying the integrity of the software image and the identity of the sender prior to the decrypting.

### Claim 10

A non-transitory storage medium, comprising a software program wherein the software program comprises instructions, which when executed by a processing unit of a device, enable the device to:
receive a bundle, the bundle containing a header and an encrypted payload, from a sender;
verify the integrity of the header and the identity of the sender, wherein the header includes a version number;
perform a version check;
compare a value of an attempts counter to install a new software image to a predetermined threshold, wherein the attempts counter tracks a number of times that an installation of a software image has been attempted;
decrypt the encrypted payload, wherein the new software image is contained in the encrypted payload, only if:
the version check is successful and the attempts counter is less than the predetermined threshold; and
after the decrypting, install the new software image in a memory device in the device;
wherein the attempts counter is incremented prior to the decrypting.

### Claim 11 (depends on 10)

The non-transitory storage medium of claim 10, wherein the version check comprises determining that the version number in the header is greater than a version of the software image currently installed in the device.

### Claim 12 (depends on 10)

The non-transitory storage medium of claim 10, wherein the software program further comprises instructions, which when executed by the processing unit, enable the device to:
receive an update graph from the sender, wherein the update graph specifies allowed versions as a function of a version of the software image currently installed in the device, wherein the version check determines whether the version in the header is an allowed version based on the update graph.

### Claim 13 (depends on 10)

The non-transitory storage medium of claim 10, wherein the attempts counter is reset after the software image has been successfully installed in the memory device.

### Claim 14 (depends on 10)

The non-transitory storage medium of claim 10, wherein the software program further comprises instructions, which when executed by the processing unit, enable the device to:
detect that an error condition has occurred if the attempts counter is not less than the predetermined threshold.

### Claim 15 (depends on 14)

The non-transitory storage medium of claim 14, wherein the device will not decrypt any encrypted payloads once the error condition is detected.

### Claim 16 (depends on 10)

The non-transitory storage medium of claim 10, wherein the bundle is signed by the sender, and wherein the software program further comprises instructions, which when executed by the processing unit, enable the device to:
verify the integrity of the bundle and the identity of the sender prior to the decrypting.

### Claim 17 (depends on 16)

The non-transitory storage medium of claim 16, wherein the header is signed by the sender using a header signature and the encrypted payload is also signed by the sender using a payload signature, wherein the software program further comprises instructions, which when executed by the processing unit, enable the device to:
verify the integrity of the header and the identity of the sender prior to the decrypting; and
verify the integrity of the software image and the identity of the sender prior to the decrypting.
