IP Library Granted Patent US 12,200,130
Granted Patent B1
US 12,200,130 · App. 17/248,066 · Granted Jan 14, 2025

ROM instruction authentication and integrity verification for artificial reality security controller

Inventors: Sudhir Satpathy (Redmond, WA); Wojciech Stefan Powiertowski (Kirkland, WA); Nagendra Gupta Modadugu (San Francisco, CA); Neeraj Upasani (Sammamish, WA)
Assignee: Meta Platforms Technologies, LLC
H04L9/3226G06F1/163G06F3/14G06F21/52G06F21/64H04L9/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,200,130
App. No.
17/248,066
Granted
Jan 14, 2025
Kind
B1
Abstract

Systems, methods, and devices authenticate processor instructions stored by a read-only memory (ROM). In one example, a ROM stores a block of register words. The block of register words includes a first register word specifying an authentication tag and one or more register words that each specify an instruction. A security controller identifies the first register word as specifying the authentication tag and performs authentication of the authentication tag. Upon successfully authenticating the authentication tag, the security controller forwards the register words that each specify instructions to a processor for execution. Upon unsuccessfully authenticating the authentication tag, the security controller blocks the register words that each specify instructions from execution by the processor.

Claims (64)

1. A System on a Chip (SoC) integrated circuit comprising:

a read-only memory (ROM) configured to store a block of register words, wherein the block of register words comprises a first register word specifying an encrypted authentication tag and a plurality of register words that each specify a respective instruction;

a processor configured to execute the plurality of register words that each specify the respective instruction; and

a security controller configured to:

identify the first register word as specifying the encrypted authentication tag;

in response to identifying the first register word as specifying the encrypted authentication tag, perform cryptographic authentication of the encrypted authentication tag to verify A) an integrity of the block of register words by verifying that the block of register words as stored in the ROM is unmodified after being initially stored in the ROM, and/or B) that the block of register words as stored in the ROM originates from an authorized source, other than the ROM; and

in response to successfully performing cryptographic authentication of the encrypted authentication tag, forward the plurality of register words that each specify the respective instruction for execution by the processor.

2. The SoC integrated circuit of claim 1 , wherein the security controller is further configured to block, in response to unsuccessfully performing cryptographic authentication of the encrypted authentication tag, the plurality of register words that each specify the respective instruction from execution by the processor.

3. The SoC integrated circuit of claim 1 ,

wherein the block of register words comprises a dynamic number of register words,

wherein each respective register word of the block further comprises a flag indicative of whether the respective register word of the block specifies the instruction or the encrypted authentication tag, and

wherein to identify the first register word as specifying the encrypted authentication tag, the security controller is configured to determine, based on the flag of the first register word, that the first register word specifies the encrypted authentication tag.

4. The SoC integrated circuit of claim 3 ,

wherein the flag of each respective register word of the block comprises 2 bits,

wherein a flag of ‘10’ indicates that a respective register word of the block comprises an instruction and is the beginning of the block of register words,

wherein a flag of ‘01’ indicates that a respective register word of the block comprises an instruction and is the continuation of the block of register words,

wherein a flag of ‘11’ indicates that a respective register word of the block comprises the encrypted authentication flag, and

wherein a flag of ‘00’ indicates that the security controller is to bypass the encrypted authentication tag for the block of register words.

5. The SoC integrated circuit of claim 1 ,

wherein the block of register words comprises a fixed number of register words,

wherein the first register word is stored at a predetermined address of the ROM, and

wherein to identify the first register word as specifying the encrypted authentication tag, the security controller is configured to retrieve, from the predetermined address of the first register word, the first register word.

6. The SoC integrated circuit of claim 1 , wherein to perform cryptographic authentication of the encrypted authentication tag, the security controller comprises a Galois Hash (GHASH) engine configured to perform cryptographic authentication of the encrypted authentication tag.

7. The SoC integrated circuit of claim 1 ,

wherein the encrypted authentication tag comprises a digital signature created with a private cryptographic key, and

wherein to perform cryptographic authentication of the encrypted authentication tag, the security controller is configured to perform cryptographic authentication of the digital signature with a public cryptographic key.

8. The SoC integrated circuit of claim 1 , wherein a head-mounted device (HMD) comprises the SoC integrated circuit.

9. The SoC integrated circuit of claim 1 , wherein the authorized source is external to the SoC integrated circuit.

10. The SoC integrated circuit of claim 1 , wherein the security controller is configured to authenticate the encrypted authentication tag by verifying both A) the integrity of the block of register words by verifying that the block of register words as stored in the ROM is unmodified after being initially stored in the ROM, and B) that the block of register words as stored in the ROM originates from the authorized source.

11. A method comprising:

storing, in a read-only memory (ROM) of a System on a Chip (SoC) integrated circuit, a block of register words, wherein the block of register words comprises a first register word specifying an encrypted authentication tag and a plurality of register words that each specify a respective instruction for execution by a processor;

identifying, by a security controller of the SoC integrated circuit, the first register word as specifying the encrypted authentication tag;

in response to identifying the first register word as specifying the encrypted authentication tag, performing, by the security controller, cryptographic authentication of the encrypted authentication tag to verify A) an integrity of the block of register words by verifying that the block of register words as stored in the ROM is unmodified after being initially stored in the ROM, and/or B) that the block of register words as stored in the ROM originates from an authorized source, other than the ROM;

in response to successfully performing cryptographic authentication of the encrypted authentication tag, forwarding, by the security controller, the plurality of register words that each specify the respective instruction for execution by the processor; and

executing, by the processor, the plurality of register words received from the security controller.

12. The method of claim 11 , further comprising blocking, by the security controller and in response to unsuccessfully performing cryptographic authentication of the encrypted authentication tag, the plurality of register words that each specify the respective instruction from execution by the processor.

13. The method of claim 11 ,

wherein the block of register words comprises a dynamic number of register words,

wherein each respective register word of the block further comprises a flag indicative of whether the respective register word of the block specifies the instruction or the encrypted authentication tag, and

wherein identifying the first register word as specifying the encrypted authentication tag comprises determining, based on the flag of the first register word, that the first register word specifies the encrypted authentication tag.

14. The method of claim 13 ,

wherein the flag of each respective register word of the block comprises 2 bits,

wherein a flag of ‘10’ indicates that a respective register word of the block comprises an instruction and is the beginning of the block of register words,

wherein a flag of ‘01’ indicates that a respective register word of the block comprises an instruction and is the continuation of the block of register words,

wherein a flag of ‘11’ indicates that a respective register word of the block comprises the encrypted authentication flag, and

wherein a flag of ‘00’ indicates that the security controller is to bypass the encrypted authentication tag for the block of register words.

15. The method of claim 11 ,

wherein the block of register words comprises a fixed number of register words,

wherein the first register word is stored at a predetermined address of the ROM, and

wherein identifying the first register word as specifying the encrypted authentication tag comprises retrieving, from the predetermined address of the first register word, the first register word.

16. The method of claim 11 , wherein performing cryptographic authentication of the encrypted authentication tag comprises performing, by a Galois Hash (GHASH) engine of the security controller, cryptographic authentication of the encrypted authentication tag.

17. The method of claim 10 ,

wherein the encrypted authentication tag comprises a digital signature created with a private cryptographic key, and

wherein performing cryptographic authentication of the encrypted authentication tag comprises performing cryptographic authentication of the digital signature with a public cryptographic key.

18. The method of claim 10 , wherein storing, in the ROM, the block of register words comprises storing the block of register words in a ROM of a head-mounted device (HMD).

19. A head-mounted display (HMD) system comprising:

a read-only memory (ROM) configured to store a block of register words, wherein the block of register words comprises a first register word specifying an encrypted authentication tag and one or more register words that each specify a respective instruction; and

a System on a Chip (SoC) integrated circuit comprising:

a processor configured to execute the one or more register words that each specify the respective instruction; and

a security controller configured to:

identify the first register word as specifying the encrypted authentication tag;

in response to identifying the first register word as specifying the encrypted authentication tag, perform cryptographic authentication of the encrypted authentication tag to verify A) an integrity of the block of register words by verifying that the block of register words as stored in the ROM is unmodified after being initially stored in the ROM, and/or B) that the block of register words as stored in the ROM originates from an authorized source, other than the ROM; and

in response to successfully performing cryptographic authentication of the encrypted authentication tag, forward the one or more register words that each specify the respective instruction for execution by the processor.

20. The HMD system of claim 19 , wherein the Security controller is further configured to block, in response to unsuccessfully performing cryptographic authentication of the encrypted authentication tag, the one or more register words that each specify the respective instruction from execution by the processor.

Assignments (2)
CHANGE OF NAME Recorded Jul 21, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060802/0799 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2021
From: SATPATHY, SUDHIR; POWIERTOWSKI, WOJCIECH STEFAN; MODADUGU, NAGENDRA GUPTA; UPASANI, NEERAJ
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 055135/0221 →
Continuity (1)
Provisional Application 63199464 · Dec 30, 2020
References Cited (46)
US 3277447A · Newman · 1966 [cited by examiner]
US 3454932A · Bahrs · 1969 [cited by examiner]
US 4425615A · Swenson · 1984 [cited by examiner]
US 5249231A · Covey · 1993 [cited by examiner]
US 5828896A · Caudel · 1998 [cited by examiner]
US 5941980A · Shang · 1999 [cited by examiner]
US 6549903B1 · Babaian · 2003 [cited by examiner]
US 7012717B1 · Easwar · 2006 [cited by examiner]
US 7191335B1 · Maillard · 2007 [cited by examiner]
US 7272704B1 · Nguyen · 2007 [cited by examiner]
US 7379548B2 · Revital · 2008 [cited by examiner]
US 8677147B2 · Robyr · 2014 [cited by examiner]
US 9058297B2 · Ducharme · 2015 [cited by examiner]
US 20020004897A1 · Kao · 2002 [cited by examiner]
US 20030191897A1 · Kao · 2003 [cited by examiner]
US 20040168063A1 · Revital · 2004 [cited by examiner]
US 20050149521A1 · Wang · 2005 [cited by examiner]
US 20050177741A1 · Chen · 2005 [cited by examiner]
US 20060182135A1 · Pisek · 2006 [cited by examiner]
US 20090080646A1 · Yen · 2009 [cited by examiner]
US 20100027783A1 · Yup · 2010 [cited by examiner]
US 20100260476A1 · Cloutman · 2010 [cited by examiner]
US 20130279691A1 · Chen · 2013 [cited by examiner]
US 20150058997A1 · Lee · 2015 [cited by examiner]
US 20150149723A1 · Lin · 2015 [cited by examiner]
US 20160164802A1 · Liu · 2016 [cited by examiner]
US 20170177368A1 · DeHon · 2017 [cited by examiner]
US 20170243319A1 · Wittenbrink · 2017 [cited by examiner]
US 20170345019A1 · Radocchia · 2017 [cited by examiner]
US 20180019877A1 · Koo · 2018 [cited by examiner]
US 20190213322A1 · Dehon · 2019 [cited by examiner]
US 20210011556A1 · Atlas et al. · 2021 [cited by applicant]
US 20220121738A1 · DeHon · 2022 [cited by examiner]
CN 103329500A · 2013 [cited by examiner]
JP H05151087A · 1993 [cited by examiner]
JP H0642228B2 · 1994 [cited by examiner]
JP 2002229776A · 2002 [cited by examiner]
TW 538374B · 2003 [cited by examiner]
Kirk H.M. Wong, Patrick C.L. Hui, Allan C.K. Chan; (Cryptography and authentication on RFID passive tags for apparel products); pp. 8; Nov. 21, 2005. [cited by examiner]
Boyeon Song and Chris J Mitchell; (RFID Authentication Protocol for Low-cost Tags); pp. 8; Mar. 31-Apr. 2, 2008. [cited by examiner]
“Announcing the Advanced Encryption Standard (AES),” Federal Information Processing Standards Publication 197, Nov. 26, 2001, 51 pp. [cited by applicant]
“SMS4 Encryption Algorithm for Wireless Networks,” Version 1.03, May 15, 2008, 6 pp. (translated by Diffie et al.). [cited by applicant]
Aoki et al., “Specification of Camellia—a 128-bit Block Cipher,” NTT and Mitsubishi Electric Corporation, Sep. 26, 2001, 35 pp. [cited by applicant]
U.S. Appl. No. 16/795,254, filed Feb. 19, 2020, naming inventors Clark-Lindh et al. [cited by applicant]
U.S. Appl. No. 16/749,283, filed Jan. 22, 2020, naming inventors Satpathy et al. [cited by applicant]
U.S. Appl. No. 17/009,512, filed Sep. 1, 2020, naming inventors Yardi et al. [cited by applicant]
Cited By (1)
US 12,506,709