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. |
Citations|
| US4157454 | Dec 19, 1977 | Jun 5, 1979 | International Business Machines Corporation | Method and system for machine enciphering and deciphering | | US4255811 | Mar 25, 1975 | Mar 10, 1981 | International Business Machines Corporation | Key controlled block cipher cryptographic system | | US4605820 | Nov 10, 1983 | Aug 12, 1986 | VISA U.S.A. Inc. | Key management system for on-line communication | | US4724541 | Jul 24, 1985 | Feb 9, 1988 | | Data-dependent binary encoder/decoder | | US4776011 | Oct 24, 1983 | Oct 4, 1988 | Sony Corporation | Recursive key schedule cryptographic system | | US5003596 | Aug 17, 1989 | Mar 26, 1991 | Cryptech, Inc. | Method of cryptographically transforming electronic digital data from one form to another | | US5003597 | Dec 21, 1989 | Mar 26, 1991 | Xerox Corporation | Method and apparatus for data encryption | | US5054067 | Feb 21, 1990 | Oct 1, 1991 | General Instrument Corporation | Block-cipher cryptographic device based upon a pseudorandom nonlinear sequence generator | | US5351299 | Jun 4, 1993 | Sep 27, 1994 | Matsushita Electric Industrial Co., Ltd. | Apparatus and method for data encryption with block selection keys and data encryption keys | | US5454039 | Dec 6, 1993 | Sep 26, 1995 | International Business Machines Corporation | Software-efficient pseudorandom function and the use thereof for encryption | | US5675653 | Nov 6, 1995 | Oct 7, 1997 | | Method and apparatus for digital encryption |
Referenced by|
| US6078663 | Jun 26, 1996 | Jun 20, 2000 | Canon Kabushiki Kaisha | Communication apparatus and a communication system | | US6091821 | Feb 12, 1998 | Jul 18, 2000 | VLSI Technology, Inc. | Pipelined hardware implementation of a hashing algorithm | | US6122375 | Jun 4, 1998 | Sep 19, 2000 | Hitachi, Ltd. | Hash value generating method and device, data encryption method and device, data decryption method and device | | US6182216 | Sep 16, 1998 | Jan 30, 2001 | | Block cipher method | | US6219421 | Oct 24, 1997 | Apr 17, 2001 | Shaul O. Backal | Virtual matrix encryption (VME) and virtual key cryptographic method and apparatus | | US6233337 | Apr 13, 1998 | May 15, 2001 | Lucent Technologies Inc. | Methods and apparatus for enhanced security expansion of a secret key into a lookup table for improved security for wireless telephone messages | | US6330678 | Nov 29, 2000 | Dec 11, 2001 | | Block cipher method | | US6370247 | Sep 5, 2000 | Apr 9, 2002 | Hitachi, Ltd. | Hash value generating method and device, data encryption method and device, data decryption method and device | | US6490353 | Nov 23, 1998 | Dec 3, 2002 | | Data encrypting and decrypting apparatus and method | | US6570988 | Jun 9, 1999 | May 27, 2003 | Microsoft Corporation | Simple technique for implementing a cryptographic primitive using elementary register operations | | US6578150 | Nov 29, 2000 | Jun 10, 2003 | | Block cipher method | | US6597790 | Dec 27, 1999 | Jul 22, 2003 | Canon Kabushiki Kaisha | Communication apparatus and a communication system | | US6751319 | Oct 23, 2001 | Jun 15, 2004 | | Block cipher method | | US6804355 | Jan 6, 2000 | Oct 12, 2004 | Intel Corporation | Block cipher for small selectable block sizes | | US6842860 | Jul 21, 2000 | Jan 11, 2005 | Networks Associates Technology, Inc. | System and method for selectively authenticating data | | US6845449 | Jul 21, 2000 | Jan 18, 2005 | Networks Associates Technology, Inc. | System and method for fast nested message authentication codes and error correction codes | | US6915426 | Jul 21, 2000 | Jul 5, 2005 | Networks Associates Technology, Inc. | System and method for enabling authentication at different authentication strength-performance levels | | US6957330 | Mar 1, 1999 | Oct 18, 2005 | Storage Technology Corporation | Method and system for secure information handling | | US6976168 | Jul 21, 2000 | Dec 13, 2005 | McAfee, Inc. | System and method for adaptive cryptographically synchronized authentication | | US7103180 | Oct 25, 2001 | Sep 5, 2006 | Hewlett-Packard Development Company, L.P. | Method of implementing the data encryption standard with reduced computation | | US7120799 | Dec 15, 2000 | Oct 10, 2006 | International Business Machines Corporation | Method and apparatus for dual hardware and software cryptography | | US7215769 | Oct 25, 2003 | May 8, 2007 | Fiske Software LLC | Non-autonomous dynamical orbit cryptography | | US7227951 | Oct 8, 2002 | Jun 5, 2007 | NTT DoCoMo, Inc. | Enhanced ANSI X9.17 pseudorandom number generators with forward security | | US7292693 | Aug 13, 1999 | Nov 6, 2007 | Teledyne Technologies Incorporated | Deterministically generating block substitution tables which meet a given standard of nonlinearity | | US7499541 | May 11, 2004 | Mar 3, 2009 | National Institute of Information and Communications Technology | Cipher strength evaluation apparatus | | US7522723 | Jul 10, 2008 | Apr 21, 2009 | | Password self encryption method and system and encryption by keys generated from personal secret information | | US7620187 | Mar 30, 2005 | Nov 17, 2009 | Rockwell Collins, Inc. | Method and apparatus for ad hoc cryptographic key transfer | | US7657033 | Dec 8, 2005 | Feb 2, 2010 | Fiske Software LLC | Cryptography related to keys | | US7681245 | Aug 30, 2002 | Mar 16, 2010 | Avaya Inc. | Remote feature activator feature extraction | | US7698225 | Aug 30, 2002 | Apr 13, 2010 | Avaya Inc. | License modes in call processing | | US7698557 | Dec 7, 2004 | Apr 13, 2010 | Guardtime AS | System and method for generating a digital certificate | | US7707116 | Aug 30, 2002 | Apr 27, 2010 | Avaya Inc. | Flexible license file feature controls | | US7707405 | Sep 21, 2004 | Apr 27, 2010 | Avaya Inc. | Secure installation activation | | US7747851 | Sep 30, 2004 | Jun 29, 2010 | Avaya Inc. | Certificate distribution via license files | | US7814023 | Sep 8, 2005 | Oct 12, 2010 | Avaya Inc. | Secure download manager | | US7844572 | Oct 30, 2007 | Nov 30, 2010 | Avaya Inc. | Remote feature activator feature extraction | | US7885896 | Jul 9, 2002 | Feb 8, 2011 | Avaya Inc. | Method for authorizing a substitute software license server | | US7890997 | Jan 20, 2003 | Feb 15, 2011 | Avaya Inc. | Remote feature activation authentication file system | | US7913301 | Oct 30, 2006 | Mar 22, 2011 | Avaya Inc. | Remote feature activation authentication file system | | US7958354 | Feb 14, 2008 | Jun 7, 2011 | Rockwell Collins, Inc. | High-order knowledge sharing system to distribute secret data | | US7966520 | Aug 30, 2002 | Jun 21, 2011 | Avaya Inc. | Software licensing for spare processors | | US8023647 | Mar 12, 2009 | Sep 20, 2011 | | Password self encryption method and system and encryption by keys generated from personal secret information | | US8041642 | Jul 10, 2002 | Oct 18, 2011 | Avaya Inc. | Predictive software license balancing | | US8045707 | Oct 28, 2003 | Oct 25, 2011 | Broadcom Corporation | System and method for securing data | | US8059814 | Sep 28, 2007 | Nov 15, 2011 | EMC Corporation | Techniques for carrying out seed or key derivation | | US8060750 | Jun 29, 2007 | Nov 15, 2011 | EMC Corporation | Secure seed provisioning | | US8204945 | Oct 9, 2008 | Jun 19, 2012 | Stragent, LLC | Hash-based systems and methods for detecting and preventing transmission of unwanted e-mail | | US8229858 | Feb 4, 2005 | Jul 24, 2012 | Avaya Inc. | Generation of enterprise-wide licenses in a customer environment |
Claims1. 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.
|