IP Library Granted Patent US 12,010,205
Granted Patent B2
US 12,010,205 · App. 17/498,560 · Granted Jun 11, 2024

Encryption engine having randomized round scheduling to prevent side channel attacks

Inventor: Sudhir Satpathy (Redmond, WA)
Assignee: Meta Platforms Technologies, LLC
H04L9/003G06F3/14G06F21/76H04L9/0631G06F21/755
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,010,205
App. No.
17/498,560
Granted
Jun 11, 2024
Kind
B2
Abstract

Encryption engines shuffle data segments during encryption and/or decryption, thereby obtaining a random permutation of the data segments to be used during encryption and/or decryption. By shuffling the data during encryption/decryption and using the resulting random permutation for encryption/decryption, the encryption engines obfuscate the power consumption information that attackers might access as part of an SCA. In some examples, the encryption engines perform intra-round shuffling of the input data within a reduced-sized encryption datapath configured to iteratively compute a portion of an encrypted block of data.

Claims (42)

1. A head-mounted display comprising:

an encryption engine comprising a reduced-size hardware configuration for preventing side channel attacks, the encryption engine being configured to:

partition a block of input data containing content for artificial reality display into a plurality of data segments; and

for each round of a plurality of rounds for encrypting the block of input data:

select, as inputs to the encryption engine, a permutation of the plurality of data segments from among a plurality of permutations of the plurality of data segments and a selected cipher key segment of a plurality of cipher key segments, wherein the selected permutation of the plurality of data segments is different for at least two rounds of the plurality of rounds;

for each data segment of the plurality of data segments, sequentially process the data segment of the plurality of data segments using the selected permutation and the selected cipher key segment of the plurality of cipher key segments to compute an encrypted data segment for the data segment; and

combine encrypted data segments computed for the plurality of data segments during the plurality of rounds to form an encrypted block of data for the block of input data.

2. The head-mounted display of claim 1 , wherein to select the permutation of the plurality of data segments for a respective round of the plurality of rounds, the encryption engine is configured to:

generate a random number for the respective round; and

select the permutation of the plurality of data segments based on the random number being associated with the selected permutation of the plurality of data segments.

3. The head-mounted display of claim 2 , wherein the encryption engine is further configured to, for each round of the plurality of rounds, randomly select the cipher key segment based on the random number being associated with the randomly-selected cipher key segment.

4. The head-mounted display of claim 1 , wherein to sequentially process each data segment of the plurality of data segments using the selected permutation and the selected cipher key segment of the plurality of cipher key segments to compute an encrypted data segment, the encryption engine is configured to, for each respective round of the plurality of rounds, add the data segments to the cipher key segment.

5. The head-mounted display of claim 1 , wherein a number of the data segments included in each permutation of the plurality of data segments selected from the plurality of permutations of the inputs is four.

6. The head-mounted display of claim 1 , wherein the plurality of rounds for encrypting the block of input data comprises ten rounds, and wherein the block of input data has a length of sixteen bytes.

7. The head-mounted display of claim 6 , wherein each respective data segment included in each respective permutation of data segments has a length of four bytes.

8. The head-mounted display of claim 1 , further including a system on a chip (SoC), and where the SoC includes the encryption engine.

9. The head-mounted display of claim 8 , wherein the SoC is configured to support an artificial reality application.

10. The head-mounted display of claim 8 , wherein the SoC is further configured to output artificial reality content that includes the encrypted block of data.

11. The head-mounted display of claim 1 , wherein the encryption engine comprises:

a datapath configured to sequentially process the plurality of data segments in an order determined by the selected permutation for each round of the plurality of rounds.

12. A method of encrypting data, the method comprising:

partitioning, by an encryption engine comprising a reduced-size hardware configuration for preventing side channel attacks, a block of input data containing content for artificial reality display into a plurality of data segments; and

for each round of a plurality of rounds for encrypting the block of input data:

selecting, as inputs to the encryption engine, a permutation of the plurality of data segments from among a plurality of permutations of the plurality of data segments and a selected cipher key segment of a plurality of cipher key segments, wherein the selected permutation of the plurality of data segments is different for at least two rounds of the plurality of rounds;

for each data segment of the plurality of data segments, sequentially processing the data segment of the plurality of data segments using the selected permutation and the selected cipher key segment of the plurality of cipher key segments to compute an encrypted data segment for the data segment; and

combining, by the encryption engine, encrypted data segments computed for the plurality of data segments during the plurality of rounds to form an encrypted block of data for the block of input data.

13. The method of claim 12 , wherein selecting the permutation of the plurality of data segments for a respective round of the plurality of rounds comprises:

generating, by the encryption engine, a random number for the respective round; and

selecting, by the encryption engine, the permutation of the plurality of data segments based on the random number being associated with the selected permutation of the plurality of data segments.

14. The method of claim 12 , further comprising randomly selecting, by the encryption engine, for each round of the plurality of rounds, the cipher key segment based on the random number being associated with the randomly-selected cipher key segment.

15. The method of claim 12 , wherein sequentially processing each data segment of the plurality of data segments further comprises, for each respective round of the plurality of rounds, adding the data segments to the cipher key segment.

16. The method of claim 12 , further including outputting artificial reality content that includes the encrypted block of data.

17. The method of claim 12 , further including outputting artificial reality content that includes the encrypted block of data for display to a user.

18. A non-transitory computer-readable storage medium comprising instructions that, when executed, configure processing circuitry of a computing system, comprising a reduced-size processing configuration for preventing side channel attacks, to:

partition a block of input data containing content for artificial reality display into a plurality of data segments; and

for each round of a plurality of rounds for encrypting the block of input data:

select, as inputs to an encryption engine, a permutation of the plurality of data segments from among a plurality of permutations of the plurality of data segments and a selected cipher key segment of a plurality of cipher key segments, wherein the selected permutation of the plurality of data segments is different for at least two rounds of the plurality of rounds;

for each data segment of the plurality of data segments, sequentially process the data segment of the plurality of data segments using the selected permutation and the selected cipher key segment of the plurality of cipher key segments to compute an encrypted data segment for the data segment; and

combine encrypted data segments computed for the plurality of data segments during the plurality of rounds to form an encrypted block of data for the block of input data.

19. The non-transitory computer-readable storage medium of claim 18 ,

wherein the plurality of rounds for encrypting the block of input data produce an encrypted block of data; and

wherein the non-transitory computer-readable storage medium further comprises instructions that, when executed, further configure the processing circuitry of the computing system to output artificial reality content that includes the encrypted block of data.

Assignments (1)
CHANGE OF NAME Recorded Jul 21, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060802/0799 →
Continuity (2)
Continuation 16446187 · Jun 19, 2019
Related Publication 20220029784A1 · Jan 27, 2022