# US 12,010,205 B2 · Encryption engine having randomized round scheduling to prevent side channel attacks

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

- Number: US 12,010,205 B2
- Document ID: US12010205B2
- Status: Granted
- Kind: B2
- Application number: 17/498,560
- Filed: 2021-10-11
- Published: 2022-01-27
- Granted: 2024-06-11
- Earliest claimed: 2019-06-19
- Assignees: Meta Platforms Technologies, LLC
- Applicants: Meta Platforms Technologies, LLC
- Inventors: Sudhir Satpathy
- Web page: https://patentgrep.com/patent/US12010205B2

## CPC

- H04L 9/003: {for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]}
- G06F 3/14: Digital output to display device {; Cooperation and interconnection of the display device with other functional units}
- G06F 21/76: in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
- H04L 9/0631: {Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms}
- G06F 21/755: {with measures against power attack}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 2)

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.

### Claim 4 (depends on 1)

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.

### Claim 5 (depends on 1)

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.

### Claim 6 (depends on 1)

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.

### Claim 7 (depends on 6)

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.

### Claim 8 (depends on 1)

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

### Claim 9 (depends on 8)

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

### Claim 10 (depends on 8)

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.

### Claim 11 (depends on 1)

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.

### Claim 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.

### Claim 13 (depends on 12)

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.

### Claim 14 (depends on 12)

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.

### Claim 15 (depends on 12)

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.

### Claim 16 (depends on 12)

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

### Claim 17 (depends on 12)

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

### Claim 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.

### Claim 19 (depends on 18)

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.
