System and method for stream/block cipher with internal random states
AssigneeApple Inc.
InventorsMathieu Ciet, Augustin J. Farrugia, Filip Toma Paun
Life of this patent
Estimating the term…
Abstract
Disclosed herein are systems, methods, and computer readable-media for performing data encryption and decryption using a stream or block cipher with internal random states. The method includes splitting the input data into a predetermined number of blocks and processing each block. The processing includes creating sub-blocks, permuting the sub-blocks, replacing bytes using a lookup table, rotating bits, performing expansion and combining sets of bits. The element of randomness employed in this process allows for the same input to yield the same output, with differing internal states.
Claims22
A non-transitory computer-readable storage medium storing instructions which, when executed by a computing device, cause the computing device to perform steps comprising:
- constructing blocks from a set of bits to be decrypted;
- generating an iteration key from an encryption key associated with the blocks;
- performing, for a number of iterations, steps comprising:
- permuting the blocks based on block position;
- modifying at least part of the blocks using a lookup table;
- rotating bits in the blocks;
- expanding the bits in the blocks;
- adding the iteration key to the bits;
- and
- reducing the bits to yield output blocks which can be used as input for a next iteration;
- and
- performing an exclusive-or operation on the set of bits using last output blocks generated from the number of iterations.
A non-transitory computer-readable storage medium storing instructions which, when executed by a computing device, cause the computing device to perform steps comprising:
- constructing blocks from a set of bits to be decrypted;
- generating an iteration key from an encryption key associated with the set of bits;
- performing, for a number of iterations, steps comprising:
- permuting positions of the blocks;
- replacing at least a portion of the blocks using a lookup table;
- rotating at least part of the blocks;
- decomposing and expanding the blocks;
- generating a new iteration key from a previous iteration key;
- adding the new iteration key to the blocks;
- and
- reducing the blocks to yield output blocks which can be used as input for a next iteration;
- and
- performing an XOR of the output blocks with the set of bits to produce a set of decrypted bits.
A system comprising:
- a processor;
- and
- a non-transitory computer-readable memory storing instructions which, when executed by the processor, cause the processor to perform steps comprising:
- constructing blocks from a set of bits to be encrypted;
- generating an iteration key from an encryption key;
- performing, for a number of iterations, steps comprising:
- permuting the blocks based on block position;
- modifying at least part of the blocks based on a lookup table;
- rotating bits in the blocks according to a Rubik operation;
- expanding the bits in the blocks;
- adding the iteration key to the bits in the blocks;
- and
- reducing the bits in the blocks to yield output blocks which can be used as input for a next iteration;
- and
- performing an exclusive-or operation on last output blocks generated from the number of iterations and the set of input bits to produce a set of encrypted bits.
A system comprising:
- a processor;
- and
- a non-transitory computer-readable memory storing instructions which, when executed by the processor, cause the processor to perform steps comprising:
- constructing blocks from a set of bits to be decrypted;
- generating an iteration key from an encryption key associated with the blocks;
- performing, for a number of iterations, steps comprising:
- permuting the blocks based on block position;
- modifying at least part of the blocks based on a lookup table;
- rotating bits in the blocks according to a Rubik operation;
- expanding the bits in the blocks;
- adding the iteration key to the bits in the blocks;
- and
- reducing the bits in the blocks to yield output blocks which can be used as input for a next iteration;
- and
- processing the set of bits via an exclusive-or operation using last output blocks generated from the number of iterations to produce a set of decrypted bits.
Dependencies are inferred from the claim text.