IP Library Granted Patent US 12,625,968
Granted Patent B2
US 12,625,968 · App. 18/514,220 · Granted May 12, 2026

Microcontroller unit (MCU) secure boot

Inventors: Andrei Goverdovskii (San Mateo, CA); Nick Pelis (San Francisco, CA)
Assignee: Verkada Inc.
G06F21/575G06F21/572H04L9/0825H04L9/3073H04L9/3247G06F2221/033
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 12,625,968
App. No.
18/514,220
Granted
May 12, 2026
Kind
B2
Abstract

A method includes building a firmware image to execute on a bootloader of a system on chip (SoC), the firmware image including first encryption public and private keys, and digitally signing the firmware image with a second encryption private key. The signed firmware image is encrypted with a symmetric encryption key, which in turn is encrypted with a second encryption public key. The encrypted signed firmware image and the encrypted symmetric encryption key are sent to the SoC to cause the SoC to (1) decrypt the encrypted symmetric encryption key to produce the symmetric encryption key using a third encryption private key from a first asymmetric key pair, (2) decrypt the encrypted signed firmware image to produce the signed firmware image using the symmetric encryption key, and (3) verify a digital signature of the signed firmware image using a third encryption public key from a second asymmetric key pair.

Claims (52)

1 . An apparatus, comprising:

a processor; and

a memory coupled to the processor and storing instructions configured to cause the processor to:

generate a firmware image including a first encryption public key and a first encryption private key; and

cause transmission of (1) an encrypted signed version of the firmware image generated using a second encryption private key, and (2) an encrypted symmetric encryption key to a system on chip (SoC), to cause the SoC to (i) decrypt the encrypted symmetric encryption key to produce a symmetric encryption key, (ii) decrypt the encrypted signed version of the firmware image to produce a signed firmware image using the symmetric encryption key, and (iii) verify a digital signature of the signed firmware image using an asymmetric key pair that includes the second encryption private key, the first encryption public key included in an asymmetric key pair that includes a third encryption private key configured for use by a host portion of the SoC to encrypt a first message to a bootloader of the SoC when the bootloader is operating in an application mode.

2 . The apparatus of claim 1 , wherein the asymmetric key pair that includes the second encryption private key is unique to the SoC and not used with another SoC.

3 . The apparatus of claim 1 , wherein the memory further stores instructions configured to cause the processor to:

store a second encryption public key in the memory before the processor executes the instruction to generate the firmware image, the second encryption public key being defined by a manufacturer of the SoC.

4 . The apparatus of claim 1 , wherein:

the first encryption private key is included in an asymmetric key pair that includes a second encryption public key configured for use by the host portion of the SoC to decrypt a second message from the bootloader operating in the application mode.

5 . An apparatus, comprising:

at least one processor of a system on chip (SoC); and

a memory coupled to the at least one processor and storing instructions configured to cause the at least one processor to:

receive an encrypted symmetric encryption key and an encrypted signed firmware image that includes a first encryption public key and a first encryption private key;

encrypt a first message to produce a first encrypted message using a third encryption private key that is included in an asymmetric key pair that includes the first encryption public key;

send the first encrypted message from a host portion of the SoC to a bootloader of the SoC;

the encrypted symmetric encryption key being a symmetric encryption key encrypted with a second encryption public key;

decrypt the encrypted symmetric encryption key to produce the symmetric encryption key;

decrypt the encrypted signed firmware image to produce a signed firmware image using the symmetric encryption key; and

verify a digital signature of the signed firmware image using an asymmetric key pair that includes a second encryption private key.

6 . The apparatus of claim 5 , wherein sending the first encrypted message from the host portion of the SoC to the bootloader of the SoC causes the bootloader to decrypt the first encrypted message to produce the first message using the first encryption public key.

7 . The apparatus of claim 5 , wherein the bootloader of the SoC is configured to operate in a stand-alone mode while the host portion of the SoC is operating, and to receive the encrypted symmetric encryption key and the encrypted signed firmware image while the host portion of the SoC is operating.

8 . The apparatus of claim 5 , wherein:

the SoC includes a volatile random access memory (RAM), and

the memory further stores instructions to cause the at least one processor to store the encrypted symmetric encryption key and the encrypted signed firmware image in the volatile RAM in response to the encrypted symmetric encryption key and the encrypted signed firmware image being received.

9 . The apparatus of claim 5 , wherein:

the SoC includes a volatile random access memory (RAM), and

the at least one processor is configured to execute code in the bootloader of the SoC and not execute code in any remaining portion of the SoC.

10 . The apparatus of claim 5 , wherein the memory is a read only memory (ROM), and the bootloader of the SoC is stored in the ROM.

11 . The apparatus of claim 5 , wherein a debug port of the SoC is locked to prevent modification of the bootloader of the SoC.

12 . A non-transitory processor-readable medium storing code representing processor-executable instructions to cause one or more processors to:

receive, at a system on chip (SoC), an encrypted symmetric encryption key and an encrypted signed firmware image;

decrypt the encrypted symmetric encryption key to produce a symmetric encryption key using an encryption private key that is included in a first asymmetric key pair;

decrypt the encrypted signed firmware image to produce a signed firmware image using the symmetric encryption key;

verify a digital signature of the signed firmware image using an encryption public key that is included in a second asymmetric key pair different from the first asymmetric key pair;

execute, after verifying the signed firmware image, a firmware image; and

execute an application including receiving a first encrypted message at a bootloader of the SoC and from a host portion of the SoC and sending a second encrypted message from the bootloader to the host portion of the SoC.

13 . The non-transitory processor-readable medium of claim 12 , wherein executing the application occurs after verifying the signed firmware image.

14 . The non-transitory processor-readable medium of claim 12 , wherein the encryption public key is a first encryption public key and the encryption private key is a first encryption private key, the instructions further comprising code to cause the one or more processors to:

decrypt the first encrypted message using a second encryption public key to form a first message; and

encrypt a second message using a second encryption private key to form the second encrypted message.

15 . The non-transitory processor-readable medium of claim 12 , wherein the encryption public key is a first encryption public key, the encryption private key is a first encryption private key, and the first encrypted message is encrypted by the host portion of the SoC using a second encryption private key, the instructions further comprising code to cause the one or more processors to:

decrypt the first encrypted message using a second encryption public key to form a first message;

encrypt a second message using a third encryption private key to form the second encrypted message; and

the host portion of the SoC to decrypt the second encrypted message using a third encryption public key.

16 . The non-transitory processor-readable medium of claim 12 , wherein the bootloader of the SoC is configured to operate in a stand-alone mode while the host portion of the SoC is operating, and to receive the encrypted symmetric encryption key and the encrypted signed firmware image while the host portion of the SoC is operating.

17 . The non-transitory processor-readable medium of claim 12 , wherein the encrypted symmetric encryption key and the encrypted signed firmware image are received from the host portion of the SoC after the bootloader of the SoC has been activated by the host portion of the SoC.

18 . The non-transitory processor-readable medium of claim 12 , wherein the SoC includes a volatile random access memory (RAM), the instructions further comprising code to cause the one or more processors to:

store the encrypted symmetric encryption key and the encrypted signed firmware image in the volatile RAM in response to the encrypted symmetric encryption key and the encrypted signed firmware image being received at the bootloader of the SoC.

19 . The non-transitory processor-readable medium of claim 12 , wherein at least one of:

the bootloader of the SoC is stored in a read only memory (ROM), or

a debug port of the SoC is locked to prevent modification of the bootloader.

Assignments (2)
SECURITY INTEREST Recorded Oct 1, 2024
From: VERKADA INC.
To: FIRST-CITIZENS BANK & TRUST COMPANY, AS AGENT
Reel/Frame 068758/0910 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2023
From: GOVERDOVSKII, ANDREI; PELIS, NICK
To: VERKADA INC.
Reel/Frame 065622/0970 →
Continuity (2)
Continuation 18191748 · Mar 28, 2023
Related Publication 20240330469A1 · Oct 3, 2024
References Cited (38)
US 10997297B1 · Lin · 2021 [cited by applicant]
US 11836255B1 · Goverdovskii et al. · 2023 [cited by applicant]
US 20020191797A1 · Perlman · 2002 [cited by applicant]
US 20080072068A1 · Wang et al. · 2008 [cited by applicant]
US 20080195871A1 · Peinado et al. · 2008 [cited by applicant]
US 20090288160A1 · Esliger · 2009 [cited by examiner]
US 20120131345A1 · Dadu et al. · 2012 [cited by applicant]
US 20150180840A1 · Jung · 2015 [cited by examiner]
US 20160359620A1 · Pebay-Peyroula · 2016 [cited by applicant]
US 20170180386A1 · Dewan · 2017 [cited by examiner]
US 20170249155A1 · Sundrani · 2017 [cited by examiner]
US 20170372073A1 · Gunti et al. · 2017 [cited by applicant]
US 20180101388A1 · Hummel · 2018 [cited by examiner]
US 20180330095A1 · Packer Ali · 2018 [cited by examiner]
US 20190042229A1 · Kotary et al. · 2019 [cited by applicant]
US 20190073478A1 · Khessib et al. · 2019 [cited by applicant]
US 20190095627A1 · Oh · 2019 [cited by examiner]
US 20190356529A1 · Gulati · 2019 [cited by applicant]
US 20200195061A1 · Montero · 2020 [cited by applicant]
US 20200401676A1 · Lai et al. · 2020 [cited by applicant]
US 20210200874A1 · Markey · 2021 [cited by examiner]
US 20210236921A1 · Seibert et al. · 2021 [cited by applicant]
US 20220113960A1 · Moran et al. · 2022 [cited by applicant]
US 20220272552A1 · Chan et al. · 2022 [cited by applicant]
US 20220292206A1 · Bieger · 2022 [cited by examiner]
US 20230107953A1 · Guan · 2023 [cited by applicant]
US 20230125134A1 · Raleigh et al. · 2023 [cited by applicant]
US 20230161881A1 · Perez et al. · 2023 [cited by applicant]
CN 115509587A · 2022 [cited by applicant]
WO WO2020002441A1 · 2020 [cited by examiner]
Silicon Labs. “UG266: Silicon Labs Gecko Bootloader Useras Guide for GSDK 3.2 and Lower”, Dec. 2021. (Year: 2021). [cited by examiner]
Silicon Labs. “UG103.6: Bootloader Fundamentals”, Jun. 2020. (Year: 2020). [cited by examiner]
Silicon Labs. “UG103.05: IoT Endpoint Security Fundamentals”, Dec. 2020. (Year: 2020). [cited by examiner]
Gwata, Ngonidzashe. “Bootloaders in embedded systems”, Mar. 2023. Retrieved from <https://medium.com/@ngonidzashegwt/bootloaders-in-embedded-systems-9f9513132177>. (Year: 2023). [cited by examiner]
Gao et al., “Microcontroller Based IoT System Firmware Security: Case Studies,” IEEE International Conference on Industrial Internet (ICII), Orlando, FL, USA, 2019, pp. 200-209. [cited by applicant]
Holz et al., “Trust and Trustworthy Computing,” 7th International Conference, Trust 2014 Heraklion, Crete, Greece, Jun. 30-Jul. 2, 2014 Proceedings, 236 pages. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 18/191,748 dated Jul. 25, 2023, 10 pages. [cited by applicant]
Notice of Allowance for U.S. Appl. No. 18/191,748 dated Sep. 18, 2023, 7 pages. [cited by applicant]