Block encryption algorithm with data-dependent rotations
First Claim
Patent Images
1. A method of communicating information comprising:
- (a) communicating a secret key from the source to the receiver in a manner intended to maintain the secrecy of the key;
(b) selecting plaintext data at the source to be communicated over the unsecured channel to the receiver;
(c) encrypting the plaintext data using the key and a block cipher that includes at least two data-dependent rotations to generate encrypted data, wherein the amount of a second of the two data-dependent rotations depends on an encryption result derived from a first of the two data-dependent rotations, wherein the block cipher includes steps of(c.1) segmenting the plaintext data into first and second words,(c.2) rotating the first word by a value derived from the second word, and rotating the second word by a value derived from the first word, and(c.3) repeating step c.2 by a number of rounds;
(d) transmitting the encrypted data over the unsecured channel to the receiver;
(e) decrypting at the receiver the encrypted data using the key and an inverse of the block cipher to generate the plaintext data.
7 Assignments
0 Petitions
Accused Products
Abstract
A simple encryption and decryption device has been developed. The underlying algorithm is a fast block cipher that may be implemented efficiently in hardware or software. The algorithm makes heavy use of data-dependent rotations. The amount of each rotation depends on the data being encrypted and intermediate encryption results. The variables for the algorithm include word size, rounds, and the length of a secret key.
150 Citations
16 Claims
-
1. A method of communicating information comprising:
-
(a) communicating a secret key from the source to the receiver in a manner intended to maintain the secrecy of the key; (b) selecting plaintext data at the source to be communicated over the unsecured channel to the receiver; (c) encrypting the plaintext data using the key and a block cipher that includes at least two data-dependent rotations to generate encrypted data, wherein the amount of a second of the two data-dependent rotations depends on an encryption result derived from a first of the two data-dependent rotations, wherein the block cipher includes steps of (c.1) segmenting the plaintext data into first and second words, (c.2) rotating the first word by a value derived from the second word, and rotating the second word by a value derived from the first word, and (c.3) repeating step c.2 by a number of rounds; (d) transmitting the encrypted data over the unsecured channel to the receiver; (e) decrypting at the receiver the encrypted data using the key and an inverse of the block cipher to generate the plaintext data. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method of encrypting information comprising the steps of:
-
(a) selecting a secret key having a predetermined number of bytes, and (b) encrypting the information using the key and a block cipher that includes data-dependent rotations to generate encrypted data, and wherein the amount of rotation in at least one of the rotations depends on an intermediate result, wherein the block cipher includes steps; (b.1) segmenting the information, and storing a first part of the information in a first memory register and a second part of the information in a second memory register, (b.2) rotating a first value stored in the first memory register by a value derived from the contents of the second register, and rotating a second value stored in the second register by a value derived from the contents of the first register, (b.3) repeating step b.2 by a number of rounds. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A method of encrypting information comprising:
-
a. inputting a first block of plaintext information into a first memory register that temporarily stores a first value and a second block of plaintext information into a second memory register that temporarily stores a second value; b. deriving a key table from a secret key where said key table has a sequence of elements; c. executing a first invertible operation on the first block of plaintext information stored in the first memory register with a first element of the key table and storing a result of the first invertible operation in the first memory register as the first value, and executing a second invertible operation on the second block of plaintext information stored in the second memory register with a second element of the key table and storing a result of the second invertible operation in the second memory register as the second value; d. executing a third invertible operation on the first value with the second value from step (c); and
storing a result of the third invertible operation in the first memory register as the first value;e. rotating the bits of the first value from step (d) in the first memory register by a number corresponding to at least a portion of the second value from step (c), and storing a result of the rotation in the first memory register as the first value; f. executing a fourth invertible operation on the second value from step (c) with the first value from step (e), and storing a result of the fourth invertible operation in the second memory register as the second value; g. rotating the bits of the second value from step (f) in the second memory register by a number corresponding to at least a portion of the first value from step (e) and storing a result of the rotation in the second memory register as the second value; h. repeating steps d to g for a predetermined number of rounds, and i. outputting the values in the first and second memory registers as encrypted information. - View Dependent Claims (14, 15, 16)
-
Specification