Encryption engine having randomized round scheduling to prevent side channel attacks
AssigneeFacebook 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 configured to:
- partition a block of input data into a plurality of data segments;
- 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 one 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;
- sequentially process each of the plurality of data segments based on the selected permutation and the selected one of the plurality of cipher key segments to compute an encrypted data segment;
- and
- combine the encrypted data segments computed during each round to form an encrypted block of data.
A method of encrypting input data, the method comprising:
- partitioning, by an encryption engine, a block of input data into a plurality of data segments;
- 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 one 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;
- sequentially processing, by the encryption engine, each of the plurality of data segments based on the selected permutation and the selected one of the plurality of cipher key segments to compute an encrypted data segment;
- and
- combining, by the encryption engine, the encrypted data segments computed during each round to form an encrypted block of data.
A non-transitory computer-readable storage medium comprising instructions that, when executed, configure processing circuitry of a computing system to:
- partition a block of input data into a plurality of data segments;
- for each round of a plurality of rounds for encrypting the block of input data:
- select a permutation of the plurality of data segments from among a plurality of permutations of the plurality of data segments and a selected one 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;
- sequentially process each of the plurality of data segments based on the selected permutation and the selected one of the plurality of cipher key segments to compute an encrypted data segment;
- and
- combine the encrypted data segments computed during each round to form an encrypted block of data.
Dependencies are inferred from the claim text.