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/44; 380/28; 380/37; 708/250
International Classification: H04L 906

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US4157454Dec 19, 1977Jun 5, 1979International Business Machines CorporationMethod and system for machine enciphering and deciphering
US4255811Mar 25, 1975Mar 10, 1981International Business Machines CorporationKey controlled block cipher cryptographic system
US4605820Nov 10, 1983Aug 12, 1986VISA U.S.A. Inc.Key management system for on-line communication
US4724541Jul 24, 1985Feb 9, 1988Data-dependent binary encoder/decoder
US4776011Oct 24, 1983Oct 4, 1988Sony CorporationRecursive key schedule cryptographic system
US5003596Aug 17, 1989Mar 26, 1991Cryptech, Inc.Method of cryptographically transforming electronic digital data from one form to another
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
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
US5675653Nov 6, 1995Oct 7, 1997Method and apparatus for digital encryption

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US6078663Jun 26, 1996Jun 20, 2000Canon Kabushiki KaishaCommunication apparatus and a communication system
US6091821Feb 12, 1998Jul 18, 2000VLSI Technology, Inc.Pipelined hardware implementation of a hashing algorithm
US6122375Jun 4, 1998Sep 19, 2000Hitachi, Ltd.Hash value generating method and device, data encryption method and device, data decryption method and device
US6182216Sep 16, 1998Jan 30, 2001Block cipher method
US6219421Oct 24, 1997Apr 17, 2001Shaul O. BackalVirtual matrix encryption (VME) and virtual key cryptographic method and apparatus
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
US6330678Nov 29, 2000Dec 11, 2001Block cipher method
US6370247Sep 5, 2000Apr 9, 2002Hitachi, Ltd.Hash value generating method and device, data encryption method and device, data decryption method and device
US6490353Nov 23, 1998Dec 3, 2002Data encrypting and decrypting apparatus and method
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
US6751319Oct 23, 2001Jun 15, 2004Block cipher method
US6804355Jan 6, 2000Oct 12, 2004Intel CorporationBlock cipher for small selectable block sizes
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
US6957330Mar 1, 1999Oct 18, 2005Storage Technology CorporationMethod and system for secure information handling
US6976168Jul 21, 2000Dec 13, 2005McAfee, Inc.System and method for adaptive cryptographically synchronized authentication
US7103180Oct 25, 2001Sep 5, 2006Hewlett-Packard Development Company, L.P.Method of implementing the data encryption standard with reduced computation
US7120799Dec 15, 2000Oct 10, 2006International Business Machines CorporationMethod and apparatus for dual hardware and software cryptography
US7215769Oct 25, 2003May 8, 2007Fiske Software LLCNon-autonomous dynamical orbit cryptography
US7227951Oct 8, 2002Jun 5, 2007NTT DoCoMo, Inc.Enhanced ANSI X9.17 pseudorandom number generators with forward security
US7292693Aug 13, 1999Nov 6, 2007Teledyne Technologies IncorporatedDeterministically generating block substitution tables which meet a given standard of nonlinearity
US7499541May 11, 2004Mar 3, 2009National Institute of Information and Communications TechnologyCipher strength evaluation apparatus
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
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
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
US8045707Oct 28, 2003Oct 25, 2011Broadcom CorporationSystem and method for securing data
US8059814Sep 28, 2007Nov 15, 2011EMC CorporationTechniques for carrying out seed or key derivation
US8060750Jun 29, 2007Nov 15, 2011EMC CorporationSecure seed provisioning
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 forming a key table, the method comprising the steps of:

(a) storing in one of a first table and a second table a sequence of elements corresponding to a secret key;
(b) initializing the other of the first table and the second table to comprise a pseudorandom sequence of elements;
(c) updating at least one element of the first table, using information in the second table, to produce an updated first table;
(d) updating at least one element of the second table, using information in the updated first table, to produce an updated second table; and
(e) repeating the updating steps (c) and (d) for at least one additional element of each of the updated first table and the updated second table, such that a final version of one of the updated first table and the updated second table corresponds to the key table.

2. The method of claim 1 wherein the storing step (a) includes storing in the first table a sequence of elements corresponding to a secret key, and the initializing step (b) includes initializing the second table to comprise a pseudorandom sequence of elements.

3. The method of claim 2 further including the steps of:

initializing a memory register A and a memory register B;
initializing an accumulator i and an accumulators j, wherein S designates an element of the second table and L designates an element of the first table; and
rotating an element S by a predetermined amount and storing the result in memory register A before performing the updating steps (c) and (d).

4. The method of claim 3 wherein the updating step (c) further includes rotating an element L by an amount determined at least in part by the contents of memory register A, and storing the result in memory register B.

5. The method of claim 3 wherein the updating step (d) further includes computing the sum of an element S and an amount determined at least in part by the contents of memory register B, rotating the sum by a predetermined amount, and storing the result in memory register A.

6. The method of claim 3 wherein the repeating step (e) includes incrementing the accumulators i and j and repeating the updating steps (c) and (d) for different elements S and L of the updated tables.

7. The method of claim 1 wherein the repeating step (e) further includes repeating the updating steps (c) and (d) such that the updating steps (c) and (d) are each performed a constant times the maximum of the number of elements in the first and second tables.

8. The method of claim 1 wherein the secret key corresponds to an initial value of a pseudorandom number generator, and the method further includes the step of outputting a sequence of elements from the final version of at least one of the updated first table and the updated second table as a pseudorandom number.

9. The method of claim 8 wherein the length of the pseudorandom number is greater than the length of the initial value.

10. The method of claim 1 wherein the secret key corresponds to an input of a compression function for a hash routine, and the method further includes the step of outputting a sequence of elements from the final version of at least one of the updated first table and the updated second table as an output of the compression function.

11. An apparatus for forming a key table, comprising:

a memory for storing in one of a first table and a second table a sequence of elements corresponding to a secret key, and for storing in the other of the first table and the second table a pseudorandom sequence of elements; and
a processor associated with the memory and operative: (i) to update at least one element of the first table, using information in the second table, to produce an updated first table; (ii) to update at least one element of the second table, using information in the updated first table, to produce an updated second table; and (iii) to repeat the updating operations for at least one additional element of each of the updated first table and the updated second table, such that a final version of one of the updated first table and the updated second table corresponds to the key table.

12. The apparatus of claim 11 wherein the first table includes the sequence of elements corresponding to a secret key, and the second table includes the pseudorandom sequence of elements.

13. A computer-readable medium containing one or more programs which when executed by a computer and applied to first and second tables of information, with one of the first table and the second table storing a sequence of elements corresponding to a secret key, and the other of the first table and the second table storing a pseudorandom sequence of elements, implement the following steps:

updating at least one element of the first table, using information in the second table, to produce an updated first table;
updating at least one element of the second table, using information in the updated first table, to produce an updated second table;
repeating the updating steps for at least one additional element of each of the updated first table and the updated second table, such that a final version of one of the updated first table and the updated second table corresponds to a key table.