Encryption engine having randomized round scheduling to prevent side channel attacks
AssigneeMeta Platforms Technologies, LLC
InventorSudhir Satpathy
Life of this patent
Estimating the term…
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.
Claims19
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.
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.
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.
Dependencies are inferred from the claim text.