Claims
- 1. A method of securely transmitting data, comprising:
continually applying data slices of the data to an encryptor having a cascade of encryptor stages, each encryptor stage including a respective mapping function and a respective delay function collectively operative in a predetermined order to generate encryptor stage output data slices from encryptor stage input data slices, the mapping function of each encryptor stage performing a stage-specific direct mapping of data slice values to corresponding generally different data slice values, and the delay function of each encryptor stage applying stage-specific and generally different delays to individual symbols of data slices, the output data slices of the last encryptor stage being referred to as encrypted data slices; transmitting the encrypted data slices through a transmission channel; and applying the encrypted data slices received from the transmission channel to a decryptor having a cascade of stages, each decryptor stage including a respective inverse mapping function and a respective equalizing delay function collectively operative in the reverse of the predetermined order to generate decryptor stage output data slices from decryptor stage input data slices, the inverse mapping function of each decryptor stage performing the inverse of the mapping function and the equalizing delay function compensating the delay function of a corresponding one of the encryptor stages.
- 2. A method according to claim 1, wherein the data comprises a serial data stream, and further comprising:
demultiplexing the serial data stream to form the data slices applied to the encryptor; and multiplexing together individual symbols of each of the data slices generated by the last stage of the decryptor to recover the serial data stream.
- 3. A method according to claim 1, wherein:
in each encryptor stage, the mapping function is performed on the encryptor stage input data slices to generate mapped data slices, and the delay function is performed on the mapped data slices to generate the encryptor stage output data slices; and in each decryptor stage, the equalizing delay function is performed on the decryptor stage input data slices to generate delayed data slices, and the inverse mapping function is performed on the delayed data slices to generate the decryptor stage output data slices.
- 4. A method according to claim 1, wherein:
in each encryptor stage, the delay function is performed on the encryptor stage input data slices to generate delayed data slices, and the mapping function is performed on the delayed data slices to generate the encryptor stage output data slices; and in each decryptor stage, the inverse mapping function is performed on the decryptor stage input data slices to generate inverse-mapped data slices, and the equalizing delay function is performed on the inverse-mapped data slices to generate the decryptor stage output data slices.
- 5. A method according to claim 1, wherein the mapping function, the delay function, the inverse mapping function, and the equalizing delay function are specified by parameters loaded into the encryption and decryption functions.
- 6. A method according to claim 5, further comprising calculating the parameters from a session key.
- 7. A method according to claim 6, wherein calculating the parameters from the session key comprises:
seeding each of a plurality of pseudo-random generators with respective corresponding portions of the session key, each pseudo-random generator generating a corresponding sequence of values; drawing values from each of the respective sequences of values from the pseudo-random generators in a predetermined order to yield a composite sequence of values; and applying a predetermined function to each of the composite sequence of values to yield corresponding ones of the parameters.
- 8. A method according to claim 7, wherein the period of the sequence generated by each pseudo-random generator is a maximum period equal to 2N(p), where N(p) is the number of bits in the numbers generated by pseudo-random generator p.
- 9. A method according to claim 8, wherein each pseudo-random generator generates a sequence {Ri} by performing a calculation of the form:
Ti=[C·Ri−1+A]mod S, where S=2N, and Ri=Right circular shift of Ti by L places, wherein the parameters C, A and L are chosen to ensure the maximum period of the sequence {Ri}.
- 10. A method according to claim 7, wherein the predetermined order is round-robin order.
- 11. A method according to claim 7, wherein the predetermined function comprises treating each value from the composite sequence as a corresponding fraction, and calculating each parameter as the integer portion of the product of the corresponding fraction from the composite sequence and a predetermined maximum integer value of the parameter.
- 12. A method according to claim 7, further comprising:
after each of the pseudo-random generators is seeded with a different portion of the session key, cycling each generator at least a predetermined number of times to produce a new set of values; selecting subsets of bits from the new set of values and arranging the selected subsets to compose new seed values for the pseudo-random generators, the subsets being arranged such that new seed values are generally functions of subsets of bits from all the pseudo-random generators; and seeding the pseudo-random generators with the new seed values.
- 13. A method according to claim 6, further comprising receiving the session key from a key distribution system.
- 14. A method according to claim 5, wherein the mapping function, the delay function, the inverse mapping function, and the equalizing delay function are constant throughout a data transfer session.
- 15. A method according to claim 5, wherein the mapping function and the delay function of the encryptor are selected independently in each clock cycle using fed-back intermediate data in the encryptor, and the inverse mapping function and the equalizing delay function of the decryptor are selected independently in each clock cycle using fed-forward intermediate data in the decryptor.
- 16. A method according to claim 15, wherein the mapping function used in each given stage of the encryptor is selected based on fed-back intermediate data of the given encryptor stage and intermediate data of some or all subsequent encryptor stages, and the inverse mapping function used in each given stage of the decryptor is selected based on fed-forward intermediate data of the given decryptor stage and intermediate data of some or all preceding decryptor stages.
- 17. A method according to claim 15, wherein the mapping function used in each given stage of the encryptor is selected based only on fed-back intermediate data of the given encryptor stage, and the inverse mapping function used in each given stage of the decryptor is selected based only on fed-forward intermediate data of the given decryptor stage.
- 18. A method according to claim 1, wherein:
the data applied to the encryptor, transmitted on the transmission channel, and passed among the stages of the encryptor and decryptor comprises respective data blocks each having an integer number of slices; each stage of the encryptor is operative to create an encryptor stage output block by applying the stage mapping function and the stage delay function in a predetermined order to an encryptor stage input block, the stage mapping function operating on individual slices of data blocks, and the stage delay function operating on sets of symbols, the symbols of each set occupying the same position in all data slices, the output block of the last encryptor stage constituting an encrypted data block transmitted on the transmission channel; and each stage of the decryptor is operative to create a decryptor stage output block by applying the stage inverse mapping function and the stage equalizing delay function in the reverse of the predetermined order to a decryptor stage input block, the stage inverse mapping function operating on individual slices of data blocks, and the stage equalizing delay function operating on sets of symbols, the symbols of each set occupying the same position in all data slices.
- 19. A method according to claim 1, wherein the encryptor has at least one extra input more than the width of the data slices applied to the encryptor, and further comprising inserting a random bit stream into the extra input of the encryptor to randomize the encryption of the data stream such that multiple instances of identical data streams generally result in different streams of encrypted data slices.
- 20. A system for securely transmitting a data stream, comprising:
an encryptor continually receiving data slices of the data stream, the encryptor having a cascade of encryptor stages, each encryptor stage including a respective mapping function and a respective delay function collectively operative to generate encryptor stage output data slices from encryptor stage input data slices, the mapping function of each encryptor stage performing a stage-specific direct mapping of data slice values to corresponding generally different data slice values, and the delay function of each encryptor stage applying stage-specific and generally different delays to individual symbols of data slices, the output data slices of the last encryptor stage being referred to as encrypted data slices; a transmission channel operative to transmit the encrypted data; and a decryptor continually receiving the encrypted data slices received from the transmission channel, the decryptor having a cascade of stages, each decryptor stage including a respective inverse mapping function and a respective equalizing delay function collectively operative to generate decryptor stage output data slices from decryptor stage input data slices, the inverse mapping function of each decryptor stage performing the inverse of the mapping function and the equalizing delay function compensating the delay function of a corresponding one of the encryptor stages.
- 21. A system according to claim 20, wherein the data stream is a serial data stream, and further comprising:
a demultiplexer operative to demultiplex the serial data stream to form the data slices applied to the encryptor; and a multiplexer operative to multiplex together individual symbols of each of the data slices generated by the last stage of the decryptor to recover the serial data stream.
- 22. A system according to claim 20, wherein:
in each encryptor stage, the mapping function is performed on the encryptor stage input data slices to generate mapped data slices, and the delay function is performed on the mapped data slices to generate the encryptor stage output data slices; and in each decryptor stage, the equalizing delay function is performed on the decryptor stage input data slices to generate delayed data slices, and the inverse mapping function is performed on the delayed data slices to generate the decryptor stage output data slices.
- 23. A system according to claim 20, wherein:
in each encryptor stage, the delay function is performed on the encryptor stage input data slices to generate delayed data slices, and the mapping function is performed on the delayed data slices to generate the encryptor stage output data slices; and in each decryptor stage, the inverse mapping function is performed on the decryptor stage input data slices to generate inverse-mapped data slices, and the equalizing delay function is performed on the inverse-mapped data slices to generate the decryptor stage output data slices.
- 24. A system according to claim 20, wherein the mapping function, the delay function, the inverse mapping function, and the equalizing delay function are specified by parameters loaded into the encryption and decryption functions.
- 25. A system according to claim 24, wherein the encryptor and decryptor each include a respective processor operative to calculate the respective parameters from a session key.
- 26. A system according to claim 25, wherein calculating the parameters from the session key comprises:
seeding each of a plurality of pseudo-random generators with respective corresponding portions of the session key, each pseudo-random generator generating a corresponding sequence of values; drawing values from each of the respective sequences of values from the pseudo-random generators in a predetermined order to yield a composite sequence of values; and applying a predetermined function to each of the composite sequence of values to yield corresponding ones of the parameters.
- 27. A system according to claim 26, wherein the period of the sequence generated by each pseudo-random generator is a maximum period equal to 2N(p), where N(p) is the number of bits in the numbers generated by pseudo-random generator p.
- 28. A system according to claim 27, wherein each pseudo-random generator generates a sequence {Ri} by performing a calculation of the form:
Ti=[C·Ri -1+A]mod S, where S=2N, and Ri=Right circular shift of Ti by L places, wherein the parameters C, A and L are chosen to ensure the maximum period of the sequence {Ri}.
- 29. A system according to claim 26, wherein the predetermined order is round-robin order.
- 30. A system according to claim 26, wherein the predetermined function comprises treating each value from the composite sequence as a corresponding fraction, and calculating each parameter as the integer portion of the product of the corresponding fraction from the composite sequence and a predetermined maximum integer value of the parameter.
- 31. A system according to claim 26, wherein the respective processors of the encryptor and decryptor are further operative:
after each of the pseudo-random generators is seeded with a different portion of the session key, to cycle each generator at least a predetermined number of times to produce a new set of values; to select subsets of bits from the new set of values and arrange the selected subsets to compose new seed values for the pseudo-random generators, the subsets being arranged such that new seed values are generally functions of subsets of bits from all the pseudo-random generators; and to seed the pseudo-random generators with the new seed values.
- 32. A system according to claim 25, wherein the encryptor and decryptor each receive the session key from a key distribution system.
- 33. A system according to claim 24, wherein the mapping function, the delay function, the inverse mapping function, and the equalizing delay function are constant throughout a data transfer session.
- 34. A system according to claim 24, wherein the mapping function and the delay function of the encryptor are selected independently in each clock cycle using fed-back intermediate data in the encryptor, and the inverse mapping function and the equalizing delay function of the decryptor are selected independently in each clock cycle using fed-forward intermediate data in the decryptor.
- 35. A system according to claim 34, wherein the mapping function used in each given stage of the encryptor is selected based on fed-back intermediate data of the given encryptor stage and intermediate data of some or all subsequent encryptor stages, and the inverse mapping function used in each given stage of the decryptor is selected based on fed-forward intermediate data of the given decryptor stage and intermediate data of some or all preceding decryptor stages.
- 36. A system according to claim 34, wherein the mapping function used in each given stage of the encryptor is selected based only on fed-back intermediate data of the given encryptor stage, and the inverse mapping function used in each given stage of the decryptor is selected based only on fed-forward intermediate data of the given decryptor stage.
- 37. A system according to claim 20, wherein:
the data applied to the encryptor, transmitted on the transmission channel, and passed among the stages of the encryptor and decryptor comprises respective data blocks each having an integer number of slices; each stage of the encryptor is operative to create an encryptor stage output block by applying the stage mapping function and the stage delay function in a predetermined order to an encryptor stage input block, the stage mapping function operating on individual slices of data blocks, and the stage delay function operating on sets of symbols, the symbols of each set occupying the same position in all data slices, the output block of the last encryptor stage constituting an encrypted data block transmitted on the transmission channel; and each stage of the decryptor is operative to create a decryptor stage output block by applying the stage inverse mapping function and the stage equalizing delay function in the reverse of the predetermined order to a decryptor stage input block, the stage inverse mapping function operating on individual slices of data blocks, and the stage equalizing delay function operating on sets of symbols, the symbols of each set occupying the same position in all data slices.
- 38. A system according to claim 20, wherein the encryptor has at least one extra input more than the width of the data slices applied to the encryptor, and wherein a random bit stream is inserted into the extra input of the encryptor to randomize the encryption of the data stream such that multiple instances of identical data streams generally result in different streams of encrypted data slices.
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims priority under 35 U.S.C. §119(e) of U.S. Provisional Patent Application No. 60/318,448 filed Sept. 10, 2001, the disclosure of which is hereby incorporated by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60318448 |
Sep 2001 |
US |