Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

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.

InventorRonald L. Rivest
Original AssigneeRSA Data Security, Inc.
Primary Examiner: Pinchus M. Laufer
Current U.S. Classification380/37; 380/28; 380/43
International Classification: H04L 906

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US4078152Apr 26, 1976Mar 7, 1978International Business Machines CorporationBlock-cipher cryptographic system with chaining
US4157454Dec 19, 1977Jun 5, 1979International Business Machines CorporationMethod and system for machine enciphering and deciphering
US4249180Sep 20, 1978Feb 3, 1981Northern Telecom LimitedPast dependent microcomputer cipher apparatus
US4255811Mar 25, 1975Mar 10, 1981International Business Machines CorporationKey controlled block cipher cryptographic system
US4724541Jul 24, 1985Feb 9, 1988Data-dependent binary encoder/decoder
US5003597Dec 21, 1989Mar 26, 1991Xerox CorporationMethod and apparatus for data encryption
US5054067Feb 21, 1990Oct 1, 1991General Instrument CorporationBlock-cipher cryptographic device based upon a pseudorandom nonlinear sequence generator
US5214704Aug 5, 1991May 25, 1993Teledyne Industries, Inc.Nonlinear dynamic substitution devices and methods for block substitutions
US5351299Jun 4, 1993Sep 27, 1994Matsushita Electric Industrial Co., Ltd.Apparatus and method for data encryption with block selection keys and data encryption keys
US5454039Dec 6, 1993Sep 26, 1995International Business Machines CorporationSoftware-efficient pseudorandom function and the use thereof for encryption

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US5983252Jan 16, 1998Nov 9, 1999PictureTel CorporationPseudo-random number generator capable of efficiently exploiting processors having instruction-level parallelism and the use thereof for encryption
US6078663Jun 26, 1996Jun 20, 2000Canon Kabushiki KaishaCommunication apparatus and a communication system
US6185304Feb 23, 1998Feb 6, 2001International Business Machines CorporationMethod and apparatus for a symmetric block cipher using multiple stages
US6185679Feb 23, 1998Feb 6, 2001International Business Machines CorporationMethod and apparatus for a symmetric block cipher using multiple stages with type-1 and type-3 feistel networks
US6199162Feb 17, 2000Mar 6, 2001Block cipher method
US6233337Apr 13, 1998May 15, 2001Lucent Technologies Inc.Methods and apparatus for enhanced security expansion of a secret key into a lookup table for improved security for wireless telephone messages
US6249582Dec 31, 1997Jun 19, 2001Transcrypt International, Inc.Apparatus for and method of overhead reduction in a block cipher
US6259789Dec 12, 1997Jul 10, 2001Safecourier Software, Inc.Computer implemented secret object key block cipher encryption and digital signature device and method
US6269163Jun 15, 1998Jul 31, 2001RSA Security Inc.Enhanced block ciphers with data-dependent rotations
US6330678Nov 29, 2000Dec 11, 2001Block cipher method
US6483918Jun 9, 1999Nov 19, 2002Microsoft CorporationTechnique for producing a parameter, such as a checksum, through a primitive that uses elementary register operations
US6487294Mar 9, 1999Nov 26, 2002Secure satellite communications system
US6490357Aug 28, 1998Dec 3, 2002Qualcomm IncorporatedMethod and apparatus for generating encryption stream ciphers
US6570988Jun 9, 1999May 27, 2003Microsoft CorporationSimple technique for implementing a cryptographic primitive using elementary register operations
US6578150Nov 29, 2000Jun 10, 2003Block cipher method
US6597790Dec 27, 1999Jul 22, 2003Canon Kabushiki KaishaCommunication apparatus and a communication system
US6606385Aug 4, 1998Aug 12, 2003Hitachi, Ltd.Data encrypting/decrypting conversion methods and apparatuses and data communication system adopting the same
US6615354Mar 20, 2000Sep 2, 2003Hitachi, Ltd.Information processing equipment
US6631471Dec 10, 1999Oct 7, 2003Hitachi, Ltd.Information processing equipment
US6751319Oct 23, 2001Jun 15, 2004Block cipher method
US6842860Jul 21, 2000Jan 11, 2005Networks Associates Technology, Inc.System and method for selectively authenticating data
US6845449Jul 21, 2000Jan 18, 2005Networks Associates Technology, Inc.System and method for fast nested message authentication codes and error correction codes
US6915426Jul 21, 2000Jul 5, 2005Networks Associates Technology, Inc.System and method for enabling authentication at different authentication strength-performance levels
US6947560Dec 15, 1999Sep 20, 2005Telefonaktiebolaget L M Ericsson (publ)Method and device for effective key length control
US6957330Mar 1, 1999Oct 18, 2005Storage Technology CorporationMethod and system for secure information handling
US6960981Feb 6, 2002Nov 1, 2005ATMEL Germany GmbHDetecting redirection during data transmission
US6976168Jul 21, 2000Dec 13, 2005McAfee, Inc.System and method for adaptive cryptographically synchronized authentication
US7007050May 17, 2001Feb 28, 2006Nokia CorporationMethod and apparatus for improved pseudo-random number generation
US7043017Sep 13, 2001May 9, 2006Freescale Semiconductor, Inc.Key stream cipher device
US7103180Oct 25, 2001Sep 5, 2006Hewlett-Packard Development Company, L.P.Method of implementing the data encryption standard with reduced computation
US7162031Dec 16, 1999Jan 9, 2007Nokia CorporationMethod and device for cryptographically processing data
US7215769Oct 25, 2003May 8, 2007Fiske Software LLCNon-autonomous dynamical orbit cryptography
US7292693Aug 13, 1999Nov 6, 2007Teledyne Technologies IncorporatedDeterministically generating block substitution tables which meet a given standard of nonlinearity
US7346160Apr 22, 2004Mar 18, 2008Randomization-based encryption apparatus and method
US7376235Jul 29, 2002May 20, 2008Microsoft CorporationMethods and systems for frustrating statistical attacks by injecting pseudo data into a data system
US7478748Aug 30, 2004Jan 20, 2009Access control system and method
US7499567Oct 18, 2005Mar 3, 2009Canon Kabushiki KaishaElectronic device and information processing apparatus and control method thereof, and computer program and computer-readable storage medium
US7508945Oct 27, 1999Mar 24, 2009Self-corrector randomisation-encryption and method
US7522723Jul 10, 2008Apr 21, 2009Password self encryption method and system and encryption by keys generated from personal secret information
US7620187Mar 30, 2005Nov 17, 2009Rockwell Collins, Inc.Method and apparatus for ad hoc cryptographic key transfer
US7657033Dec 8, 2005Feb 2, 2010Fiske Software LLCCryptography related to keys
US7681245Aug 30, 2002Mar 16, 2010Avaya Inc.Remote feature activator feature extraction
US7698225Aug 30, 2002Apr 13, 2010Avaya Inc.License modes in call processing
US7698557Dec 7, 2004Apr 13, 2010Guardtime ASSystem and method for generating a digital certificate
US7707116Aug 30, 2002Apr 27, 2010Avaya Inc.Flexible license file feature controls
US7707405Sep 21, 2004Apr 27, 2010Avaya Inc.Secure installation activation
US7747851Sep 30, 2004Jun 29, 2010Avaya Inc.Certificate distribution via license files
US7814023Sep 8, 2005Oct 12, 2010Avaya Inc.Secure download manager
US7844572Oct 30, 2007Nov 30, 2010Avaya Inc.Remote feature activator feature extraction
US7885896Jul 9, 2002Feb 8, 2011Avaya Inc.Method for authorizing a substitute software license server
US7890997Jan 20, 2003Feb 15, 2011Avaya Inc.Remote feature activation authentication file system
US7913301Oct 30, 2006Mar 22, 2011Avaya Inc.Remote feature activation authentication file system
US7914107Apr 12, 2010Mar 29, 2011Silverbrook Research Pty LtdPrinter incorporating multiple synchronizing printer controllers
US7945049Feb 28, 2008May 17, 2011Red Hat, Inc.Stream cipher using multiplication over a finite field of even characteristic
US7958354Feb 14, 2008Jun 7, 2011Rockwell Collins, Inc.High-order knowledge sharing system to distribute secret data
US7966520Aug 30, 2002Jun 21, 2011Avaya Inc.Software licensing for spare processors
US8007063Jul 15, 2010Aug 30, 2011Silverbrook Research Pty LtdPrinter having printhead with multiple controllers
US8023647Mar 12, 2009Sep 20, 2011Password self encryption method and system and encryption by keys generated from personal secret information
US8041642Jul 10, 2002Oct 18, 2011Avaya Inc.Predictive software license balancing
US8059814Sep 28, 2007Nov 15, 2011EMC CorporationTechniques for carrying out seed or key derivation
US8060750Jun 29, 2007Nov 15, 2011EMC CorporationSecure seed provisioning
US8123318May 25, 2010Feb 28, 2012Silverbrook Research Pty LtdPrinthead having controlled nozzle firing grouping
US8135130Jun 19, 2007Mar 13, 2012Panasonic CorporationData encryption apparatus, data converting method, data converting program, recording medium and integrated circuit
US8204945Oct 9, 2008Jun 19, 2012Stragent, LLCHash-based systems and methods for detecting and preventing transmission of unwanted e-mail
US8229858Feb 4, 2005Jul 24, 2012Avaya Inc.Generation of enterprise-wide licenses in a customer environment

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.

2. A method of communicating information as in claim 1 wherein each word has a predetermined uniform bit length, and the bit length is a selectable variable.

3. A method of communicating information as in claim 2 wherein the bit length of each word is 64 bits.

4. A method of communicating information as in claim 2 wherein the bit length of each word is 32-bits.

5. A method of communicating information as in claim 1 wherein the number of rounds performed in step c.3 is a selectable variable.

6. A method of communicating information as in claim 1 wherein the number of rounds performed in step c.3 is at least four.

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.

8. A method of encrypting information as in claim 7 wherein the first and second parts of information each have a predetermined uniform bit length, and the bit length is a selectable variable.

9. A method of encrypting information as in claim 8 wherein the bit length of each first and second parts of information is 64 bits.

10. A method of encrypting information as in claim 8 wherein the bit length of each of the first and second parts of information is 32-bits.

11. A method of encrypting information as in claim 7 wherein the number of rounds performed in step c.3 is a selectable variable.

12. A method of encrypting information as in claim 7 wherein the number of rounds performed in step c.3 is at least four.

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.

14. A method as in claim 13 further comprising step:

j. executing a fifth invertible operation on the first value from step (e) stored in the first memory register with a next in the sequence element of the key table and storing a result of the fifth invertible operation in the first memory register as the first value after step e, and executing a sixth invertible operation on the second value from step (g) stored in the second memory register with a next in the sequence element of the key table and storing a result of the sixth invertible operation in the second memory register as the second value after step g.

15. A method as in claim 14 wherein the fifth and sixth invertible operations are two's complement addition operations.

16. A method of encrypting information as in claim 13 wherein the first invertible operation in step c is a two's complement addition operation, the third invertible operation in step d is a bitwise exclusive OR operation, and the fourth invertible operation in step f is another bitwise exclusive OR operation.