Claims
- 1. An authenticated-encryption method that uses a key, a nonce and an n-bit block cipher to encrypt a message into a ciphertext, the method comprising:
partitioning the message into a message body comprising a sequence of n-bit message blocks, and a message fragment of at most n bits; generating a sequence of offsets from the nonce and the key; computing a ciphertext body using the block cipher, the message body, the key, the nonce, and the sequence of offsets; computing a ciphertext fragment using the block cipher, the message fragment, the key, and an offset; computing a tag as a function of the message body, the message fragment, the sequence of offsets, and the key; and defining the ciphertext to include the ciphertext body, the ciphertext fragment, and the tag.
- 2. The method of claim 1, wherein generating the sequence of offsets involves:
determining a first offset as a function of the nonce and the key; and determining each subsequent offset by combining a previous offset and a basis offset, wherein each basis offset is determined as a function of the key.
- 3. The method of claim 1, wherein generating the sequence of offsets involves determining an offset by combining a base offset and a fixed offset, wherein the base offset is a function to the key and the nonce, and the fixed offset is a function of the key and the position of the offset in a sequence of offsets.
- 4. The method of claim 1, wherein generating the sequence of offsets involves:
generating a sequence of fixed offsets from the key; generating a base offset from the key and the nonce; generating a sequence of translated offsets by combining each fixed offset with the base offset to get a corresponding translated offset; and using the sequence of translated offsets as the sequence of offsets.
- 5. The method of claim 4, wherein the key determines a sequence of basis offsets and each fixed offset is determined by xoring some combination of basis offsets.
- 6. The method of claim 5, wherein each basis offset except for the first basis offset is determined by a shift and a conditional xor applied to a previous basis offset.
- 7. The method of claim 5, wherein the order that basis offsets are combined into fixed offsets is determined according to a Gray code.
- 8. The method of claim 1, wherein generating the sequence of offsets involves:
computing a sequence of basis offsets from the key; computing a base offset from the key and the nonce; and computing the first offset in the sequence of offsets as a function of the base offset, the key, and the nonce, and computing each subsequent offset in the sequence of offsets by combining the prior offset with a basis offset.
- 9. The method of claim 1, wherein generating the sequence of offsets involves:
computing a key-variant by enciphering a constant with the block cipher, wherein the block cipher is keyed by the given key; and
computing the sequence of offsets as a function of the key variant and the nonce.
- 10. The method of claim 1, wherein computing the ciphertext body involves:
combining each message block in the message body with a corresponding offset to produce a corresponding input block; applying the block cipher to each input block to produce a corresponding output block; combining each output block with a corresponding offset to produce a corresponding ciphertext block; and concatenating the ciphertext blocks to determine the ciphertext body.
- 11. The method of claim 1, wherein computing the ciphertext fragment involves:
computing a precursor pad as a function of an offset and the length of the message; computing a pad by applying the block cipher to the precursor pad; and computing the ciphertext fragment by combining the message fragment and the pad.
- 12. The method of claim 1, wherein computing the tag involves:
computing a checksum as a function of the message, the ciphertext fragment, and the sequence of offsets; and computing the tag as a function of the checksum, the key, and an offset.
- 13. The method of claim 1, wherein computing the tag involves:
computing a checksum from at least the message; combining the checksum with an offset to produce a precursor full tag; computing a full tag by applying the block cipher to the precursor full tag; and computing a tag as a portion of the full tag.
- 14. An authenticated-encryption method that uses a key, a nonce, and an n-bit block cipher to decrypt a ciphertext into a message or a message-invalid signal, the method comprising:
partitioning the ciphertext into a ciphertext body comprising a sequence of n-bit ciphertext blocks, a ciphertext fragment of at most n bits, and a tag; generating a sequence of offsets from the nonce and the key; computing a message body using the block cipher, the ciphertext body, the key, the nonce, and the sequence of offsets; computing a message fragment using the block cipher, the ciphertext fragment, the key, and an offset; computing a new tag as a function of the message body, the message fragment, the sequence of offsets, the block cipher, and the key; and comparing the new tag with the tag; if the new tag matches the tag, returning the message, wherein the message includes the message body and the message fragment; and if the new tag does not match the tag, returning a message-invalid signal.
- 15. The method of claim 14, wherein generating the sequence of offsets involves:
generating a sequence of fixed offsets from the key; generating a base offset from the key and the nonce; generating a sequence of translated offsets by combining each fixed offset with the base offset to get a corresponding translated offset; and using the sequence of translated offsets as the sequence of offsets.
- 16. The method of claim 14, wherein computing the message body involves:
combining each ciphertext block in the ciphertext body with a corresponding offset to produce a corresponding output block; applying the block-cipher inverse to each output block to produce a corresponding input block; combining each input block with a corresponding offset to produce a corresponding message block; and defining the message body to be the sequence of message blocks.
- 17. The method of claim 14, wherein computing the message fragment involves:
computing a precursor pad as a function of an offset and the length of the ciphertext; computing a pad by applying the block cipher to the precursor pad; and computing the message fragment by combining the ciphertext fragment and the pad.
- 18. The method of claim 14, wherein computing the tag involves:
computing a checksum as a function of at least the message; and computing the tag as a function of the checksum, the key, and an offset.
- 19. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform an authenticated-encryption method that uses a key and a nonce to encrypt a message into a ciphertext, the method comprising:
partitioning the message into a message body including a sequence of n-bit message blocks, and a message fragment of at most n bits; generating a sequence of offsets from the nonce and the key; computing a ciphertext body using a block cipher, the message body, the key, the nonce, and the sequence of offsets; computing a ciphertext fragment using the block cipher, the message fragment, the key, and an offset; computing a tag as a function of the message body, the message fragment, the sequence of offsets, and the key; and defining the ciphertext to include the ciphertext body, the ciphertext fragment, and the tag.
- 20. The computer-readable storage medium of claim 19, wherein generating the sequence of offsets involves:
determining a first offset as a function of the nonce and the key; and determining each subsequent offset by combining a previous offset and a basis offset, wherein each basis offset is determined as a function of the key.
- 21. The computer-readable storage medium of claim 19, wherein generating the sequence of offsets involves determining an offset by combining a base offset and a fixed offset, wherein the base offset is a function to the key and the nonce, and the fixed offset is a function of the k ey and a position of the fixe d offset in a sequence of fixed offsets.
- 22. The computer-readable storage medium of claim 19, wherein generating the sequence of offsets involves:
generating a sequence of fixed offsets from the key; generating a base offset from the key and the nonce; generating a sequence of translated offsets by combining each fixed offset with the base offset to get a corresponding translated offset; and using the sequence of translated offsets as the sequence of offsets.
- 23. The computer-readable storage medium of claim 22, wherein the key determines a sequence of basis offsets and each fixed offset is determined by xoring some combination of basis offsets.
- 24. The computer-readable storage medium of claim 23, wherein each basis offset except for the first basis offset is determined by a shift and a conditional xor applied to a previous basis offset.
- 25. The computer-readable storage medium of claim 24, wherein the order that basis offsets are combined into fixed offsets is determined according to a Gray code.
- 26. The computer-readable storage medium of claim 19, wherein generating the sequence of offsets involves:
computing a sequence of basis offsets from the key; computing a base offset from the key and the nonce; and computing a sequence of translated offsets, wherein the first offset is determined from the base offset, the key, and the nonce, and subsequent offsets are determined by combining the prior translated offset with a basis offset.
- 27. The computer-readable storage medium of claim 19, wherein generating the sequence of offsets involves:
computing a key-variant offset by enciphering a constant with the block cipher, wherein the block cipher is keyed by a given key; and computing the sequence of offsets using the key-variant offset.
- 28. The computer-readable storage medium of claim 19, wherein computing the ciphertext body involves:
combining each message block in the message body with a corresponding offset to produce a corresponding input block; applying the block cipher to each input block to produce a corresponding output block; and combining each output block with a corresponding offset to produce a corresponding ciphertext block.
- 29. The computer-readable storage medium of claim 19, wherein computing the ciphertext fragment involves:
computing a precursor pad as a function of an offset; computing a pad by applying the block cipher to the precursor pad; and computing the ciphertext fragment by combining the message fragment and the pad.
- 30. The computer-readable storage medium of claim 19, wherein computing the tag involves:
computing a checksum as a function of the message and a sequence of offsets; and computing the tag as a function of the checksum, the key, and an offset.
- 31. The computer-readable storage medium of claim 19, wherein computing the tag involves:
computing a checksum from the message blocks, the message fragment, and a pad; combining the checksum with an offset to produce a precursor full tag; computing a full tag by applying the block cipher to the precursor full tag; and computing a tag as a portion of the full tag.
- 32. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform an authenticated-encryption method that uses a key and a nonce to decrypt a ciphertext into a message, the method comprising:
partitioning the ciphertext into a ciphertext body including a sequence of n-bit ciphertext blocks, a ciphertext fragment of at most n bits, and a tag; generating a sequence of offsets from the nonce and the key; computing a message body using a block cipher, the ciphertext body, the key, the nonce, and the sequence of offsets; computing a message fragment using the block cipher, the ciphertext fragment, the key, and an offset; computing a new tag as a function of the message body; and comparing the new tag with the tag; if the new tag matches the tag, returning the message, wherein the message includes the message body and the message fragment; and otherwise, if the new tag does not match the tag, returning a message invalid signal.
- 33. The computer-readable storage medium of claim 32, wherein generating the sequence of offsets involves:
generating a sequence of fixed offsets from the key; generating a base offset from the key and the nonce; generating a sequence of translated offsets by combining each fixed offset with the base offset to get a corresponding translated offset; and using the sequence of translated offsets as the sequence of offsets.
- 34. The computer-readable storage medium of claim 32, wherein computing the message body involves:
combining each ciphertext block in the ciphertext body with a corresponding offset to produce a corresponding input block; applying the block cipher to each input block to produce a corresponding output block; and combining each output block with a corresponding offset to produce a corresponding message block.
- 35. The computer-readable storage medium of claim 32, wherein computing the message fragment involves:
computing a precursor pad as a function of an offset; computing a pad by applying the block cipher to the precursor pad; and computing the message fragment by combining the ciphertext fragment and the pad.
- 36. The computer-readable storage medium of claim 32, wherein computing the tag involves:
computing a checksum as a function of the message body; and computing the tag as a function of the checksum, the key, and an offset.
- 37. An authenticated-encryption apparatus that uses a key and a nonce to encrypt a message into a ciphertext, the apparatus comprising:
a partitioning mechanism that is configured to partition the message into a message body including a sequence of n-bit message blocks, and a message fragment of at most n bits; an offset generating mechanism that is configured to generate a sequence of offsets from the nonce and the key; an enciphering mechanism that is configured to compute a ciphertext body using a block cipher, the message body, the key, the nonce, and the sequence of offsets; wherein the enciphering mechanism is additionally configured to compute a ciphertext fragment using the block cipher, the message fragment, the key, and an offset; a tag computing mechanism that is configured to compute a tag as a function of the message body, the message fragment, the sequence of offsets, and the key; and an assembly mechanism that is configured to define the ciphertext to include the ciphertext body, the ciphertext fragment, and the tag.
- 38. An authenticated-encryption apparatus that uses a key and a nonce to decrypt a ciphertext into a message, the apparatus comprising:
a partitioning mechanism that is configured to partition the ciphertext into a ciphertext body including a sequence of n-bit ciphertext blocks, a ciphertext fragment of at most n bits, and a tag; an offset generating mechanism that is configured to generate a sequence of offsets from the nonce and the key; a deciphering mechanism that is configured to compute a message body using a block cipher, the ciphertext body, the key, the nonce, and the sequence of offsets; wherein the deciphering mechanism is configured to compute a message fragment using the block cipher, the ciphertext fragment, the key, and an offset; a tag computing mechanism that is configured to compute a new tag as a function of the message body; and a comparison mechanism that is configured to compare the new tag with the tag; wherein if the new tag matches the tag, the apparatus is configured to return the message, wherein the message includes the message body and the message fragment; and wherein if the new tag does not match the tag, the apparatus is configured to return a message invalid signal.
- 39. An authenticated-encryption method that uses an n-bit block cipher, a key, and an n-bit nonce to encrypt a message into a ciphertext, the method comprising:
partitioning the message into m message blocks and one final fragment, each message block having n bits and the final fragment having between 0 and n bits; using the block cipher, the key, and the nonce to generate a sequence of m offsets, each offset having n bits; using the block cipher, the key, the nonce, and the length of the message to generate an n-bit final offset; for each number i between 1 and m, xoring the ith message block with the ith offset to determine an ith input block; for each number i between 1 and m, applying the block cipher, keyed by the key, to the ith input block, to determine an ith output block; for each number i between 1 and m, xoring the ith output block with the ith offset to determine an ith ciphertext block; concatenating the m ciphertext blocks to determine a ciphertext body; computing an encoded length by encoding the length of the final fragment as an n-bit string; xoring the encoded length with the final offset to determine a precursor pad; computing a pad by applying the block cipher, keyed by the key, to the precursor pad; xoring the final fragment with a portion of the pad to determine a ciphertext fragment having the same length as the final fragment; computing a padded ciphertext fragment by appending to the ciphertext fragment a sufficient number of zero bits so that the padded ciphertext fragment has n bits; computing a checksum by xoring together the m message blocks, the pad, and the padded ciphertext fragment; computing a precursor full tag by xoring together the checksum and the mth offset; determining a full tag by applying the block cipher, keyed by the key, to the precursor full tag; computing a tag as a portion of the full tag; and defining the ciphertext to be the ciphertext body, the ciphertext fragment, and the tag.
- 40. The method of claim 39, wherein the ith offset from the sequence of offsets is determined by:
computing a 0th basis offset by applying the block cipher, keyed by the key, to a constant; for each positive number i, defining the ith basis offset from the prior basis offset by shifting the prior basis offset left one position, and then xoring the resulting value with a constant that depends on the first bit of the prior basis offset; computing a base offset by applying the block cipher, keyed by the key, to the xor of the 0th basis offset and the nonce; defining the first offset in the sequence of offsets as the xor of the 0th basis offset and the base offset; and for each integer i greater than one, defining the ith offset in the sequence of offsets as the xor of the prior offset and the jth basis offset, where j is the number of zero-bits following the last one-bit when the number i is written in binary.
- 41. The method of claim 39, wherein the final offset is determined by shifting the 0th basis offset one position to the right, xoring a constant that depends on the last bit of the 0th basis offset, and then xoring the mth offset.
- 42. An authenticated-encryption method that encrypts a message using a key, and a nonce, said method involving the computation of a sequence of offsets, wherein this sequence of offsets is determined by:
computing a 0th basis offset as a function of the key; for each positive number i, defining the ith basis offset from the prior basis offset by shifting the prior basis offset by one position and then xoring a constant that depends on a given bit of the prior basis offset; computing a base offset as a function of at least the nonce; defining the 1st offset in the sequence of offsets as a function of a basis offset and the base offset; and for each integer i greater than one, defining the ith offset in the sequence of offsets as the xor of the prior offset and a basis offset associated to the number i.
- 43. The method of claim 42 wherein the basis offset associated to the number i is the jth basis offset, where j is the number of zero-bits following the last one-bit when the number i is written in binary.
- 44. An authenticated-encryption method that encrypts a message into a ciphertext using a key and a nonce, comprising:
computing a sequence of basis offsets from the key; computing a base offset from the key and the nonce; computing a sequence of offsets, where the first offset is determined from the base offset, the key, and the nonce, and each subsequent offset is determined by combining the prior offset and a basis offset; and computing the ciphertext from at least the message, the key, and the sequence of offsets.
- 45. An authenticated-encryption method that encrypts a message using an n-bit block cipher, a key and a nonce, said method involving the computation of a sequence of n-bit offsets, where computing the sequence of offsets involves:
fixing a positive n-bit constant, where 2n minus this constant is prime; computing an n-bit stride using the key and possibly the nonce; computing a first offset using the key and the nonce; and computing each subsequent offset by n-bit computer addition of the prior offset and the stride, and further followed by computer addition of the said constant whenever the first addition resulted in a carry.
- 46. The method of claim 45, wherein the specified constant is the smallest number such that 2n minus this number is prime.
- 47. An authenticated-encryption method that encrypts a message using a nonce and a block cipher keyed by a given key, comprising:
computing a key-variant by enciphering a constant with the keyed block cipher; computing a sequence of offsets using the key variant and the nonce; and computing the ciphertext using at least the keyed block cipher, the message, and the sequence of offsets.
- 48. An authenticated-encryption method that encrypts a message using a nonce and a block cipher keyed by a given key, comprising:
computing a key-variant by enciphering a constant with the keyed block cipher; computing a sequence of basis offsets as a function of the key-variant; computing a base offset using at least the nonce; computing a 1st offset from a basis offset and the base offset; for each number i greater than 1, computing the ith offset in the sequence of offsets by combining the prior offset and a basis offset; and computing the ciphertext using at least the keyed block cipher, the message, and the sequence of offsets.
- 49. The method of claim 48, wherein each basis offset except for the first basis offset is determined by shifting the prior basis offset by one position and then xoring a constant that depends on a given bit of the prior basis offset.
- 50. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform an authenticated-encryption method that uses an n-bit block cipher, a key, and an n-bit nonce to encrypt a message into a ciphertext, the method comprising:
partitioning the message into m message blocks and one final fragment, each message block having n bits and the final fragment having between 0 and n bits; using the block cipher, the key, and the nonce to generate a sequence of m offsets, each offset having n bits; using the block cipher, the key, the nonce, and the length of the message to generate an n-bit final offset; for each number i between 1 and m, xoring the ith message block with the ith offset to determine an ith input block; for each number i between 1 and m, applying the block cipher, keyed by the key, to the ith input block, to determine an ith output block; for each number i between 1 and m, xoring the jth output block with the ith offset to determine an ith ciphertext block; concatenating the m ciphertext blocks to determine a ciphertext body; computing an encoded length by encoding the length of the final fragment as an n-bit string; xoring the encoded length with the final offset to determine a precursor pad; computing a pad by applying the block cipher, keyed by the key, to the precursor pad; xoring the final fragment with a portion of the pad to determine a ciphertext fragment having the same length as the final fragment; computing a padded ciphertext fragment by appending to the ciphertext fragment a sufficient number of zero bits so that the padded ciphertext fragment has n bits; computing a checksum by xoring together the m message blocks, the pad, and the padded ciphertext fragment; computing a precursor full tag by xoring together the checksum and the mth offset; determining a full tag by applying the block cipher, keyed by the key, to the precursor full tag; computing a tag as a portion of the full tag; and defining the ciphertext to be the ciphertext body, the ciphertext fragment, and the tag.
- 51. The computer-readable storage medium of claim 50, wherein the ith offset from the sequence of offsets is determined by:
computing a 0th basis offset by applying the block cipher, keyed by the key, to a constant; for each positive number i, defining the ith basis offset from the prior basis offset by shifting the prior basis offset left one position, and then xoring the resulting value with a constant that depends on the first bit of the prior basis offset; computing a base offset by applying the block cipher, keyed by the key, to the xor of the 0th basis offset and the nonce; defining the first offset in the sequence of offsets as the xor of the 0th basis offset and the base offset; and for each integer i greater than one, defining the ith offset in the sequence of offsets as the xor of the prior offset and the jth basis offset, where j is the number of zero-bits following the last one-bit when the number i is written in binary.
- 52. The computer-readable storage medium of claim 50, wherein the final offset is determined by shifting the 0th basis offset one position to the right, xoring a constant that depends on the last bit of the 0th basis offset, and then xoring the mth offset.
- 53. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform an authenticated-encryption method that encrypts a message using a key, and a nonce, said method involving the computation of a sequence of offsets, wherein this sequence of offsets is determined by:
computing a 0th basis offset as a function of the key; for each positive number i, defining the ith basis offset from the prior basis offset by shifting the prior basis offset by one position and then xoring a constant that depends on a given bit of the prior basis offset; computing a base offset as a function of at least the nonce; defining the 1st offset in the sequence of offsets as a function of a basis offset and the base offset; and for each integer i greater than one, defining the ith offset in the sequence of offsets as the xor of the prior offset and a basis offset associated to the number i.
- 54. The computer-readable storage medium of claim 53, wherein the basis offset associated to the number i is the jth basis offset, where j is the number of zero-bits following the last one-bit when the number i is written in binary.
- 55. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform an authenticated-encryption method that encrypts a message into a ciphertext using a key and a nonce, the method comprising:
computing a sequence of basis offsets from the key; computing a base offset from the key and the nonce; computing a sequence of offsets, where the first offset is determined from the base offset, the key, and the nonce, and each subsequent offset is determined by combining the prior offset and a basis offset; and computing the ciphertext from at least the message, the key, and the sequence of offsets.
- 56. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform an authenticated-encryption method that encrypts a message using an n-bit block cipher, a key and a nonce, said method involving the computation of a sequence of n-bit offsets, where computing the sequence of offsets involves:
fixing a positive n-bit constant such that 2n minus this constant is prime; computing an n-bit stride using the key and possibly the nonce; computing a first offset using the key and the nonce; and computing each subsequent offset by n-bit computer addition of the prior offset and the stride, and further followed by computer addition of the said constant whenever the first addition resulted in a carry.
- 57. The computer-readable storage medium of claim 56, wherein the specified constant is the smallest number such that 2n minus this number is prime.
- 58. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform an authenticated-encryption method that encrypts a message using a nonce and a block cipher keyed by a given key, the method comprising:
computing a key-variant by enciphering a constant with the keyed block cipher; computing a sequence of offsets using the key variant and the nonce; and computing the ciphertext using at least the keyed block cipher, the message, and the sequence of offsets.
- 59. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform an authenticated-encryption method that encrypts a message using a nonce and a block cipher keyed by a given key, the method comprising:
computing a key-variant by enciphering a constant with the keyed block cipher; computing a sequence of basis offsets as a function of the key-variant; computing a base offset using at least the nonce; computing a 1st offset from a basis offset and the base offset; for each number i greater than 1, computing the ith offset in the sequence of offsets by combining the prior offset and a basis offset; and computing the ciphertext using at least the keyed block cipher, the message, and the sequence of offsets.
- 60. The computer-readable storage medium of claim 59, wherein each basis offset except for the first basis offset is determined by shifting the prior basis offset by one position and then xoring a constant that depends on a given bit of the prior basis offset.
- 61. An authenticated-encryption apparatus that is configured to use an n-bit block cipher, a key, and an n-bit nonce to encrypt a message into a ciphertext, comprising:
a partitioning mechanism that is configured to partition the message into m message blocks and one final fragment, each message block having n bits and the final fragment having between 0 and n bits; an offset-generating mechanism that is configured to,
use the block cipher, the key, and the nonce to generate a sequence of m offsets, each offset having n bits, and to use the block cipher, the key, the nonce, and the length of the message to generate an n-bit final offset; an xoring mechanism, wherein for each number i between 1 and m, the xoring mechanism is configured to xor the ith message block with the ith offset to determine an ith input block; an enciphering mechanism, wherein for each number i between 1 and m, the enciphering mechanism is configured to apply the block cipher, keyed by the key, to the ith input block, to determine an ith output block; wherein for each number i between 1 and m, the xoring mechanism is configured to xor the ith output block with the ith offset to determine an ith ciphertext block; a concatenating mechanism that is configured to concatenate the m ciphertext blocks to determine a ciphertext body; a computing mechanism that is configured to compute an encoded length by encoding the length of the final fragment as an n-bit string; wherein the xoring mechanism is configured to xor the encoded length with the final offset to determine a precursor pad; wherein the computing mechanism is configured to compute a pad by applying the block cipher, keyed by the key, to the precursor pad; wherein the xoring mechanism is configured to xor the final fragment with a portion of the pad to determine a ciphertext fragment having the same length as the final fragment; wherein the computing mechanism is configured to compute a padded ciphertext fragment by appending to the ciphertext fragment a sufficient number of zero bits so that the padded ciphertext fragment has n bits; wherein the computing mechanism is configured to compute a checksum by xoring together the m message blocks, the pad, and the padded ciphertext fragment; wherein the computing mechanism is configured to compute a precursor full tag by xoring together the checksum and the mth offset; wherein the computing mechanism is configured to determine a full tag by applying the block cipher, keyed by the key, to the precursor full tag; wherein the computing mechanism is configured to compute a tag as a portion of the full tag; and a defining mechanism that is configured to define the ciphertext to be the ciphertext body, the ciphertext fragment, and the tag.
- 62. An authenticated-encryption apparatus that encrypts a message using a key, and a nonce, said method involving the computation of a sequence of offsets, comprising:
an offset computing mechanism that is configured to compute a 0th basis offset as a function of the key; wherein for each positive number i, the offset computing mechanism is configured to define the ith basis offset from the prior basis offset by shifting the prior basis offset by one position and then xoring a constant that depends on a given bit of the prior basis offset; wherein the offset computing mechanism is configured to compute a base offset as a function of at least the nonce; wherein the offset computing mechanism is configured to define the 1st offset in the sequence of offsets as a function of a basis offset and the base offset; and wherein for each integer i greater than one, the offset computing mechanism is configured to define the ith offset in the sequence of offsets as the xor of the prior offset and a basis offset associated to the number i.
- 63. An authenticated-encryption apparatus that encrypts a message into a ciphertext using a key and a nonce, comprising a computing mechanism that is configured to:
compute a sequence of basis offsets from the key; compute a base offset from the key and the nonce; compute a sequence of offsets, where the first offset is determined from the base offset, the key, and the nonce, and each subsequent offset is determined by combining the prior offset and a basis offset; and to compute the ciphertext from at least the message, the key, and the sequence of offsets.
- 64. An authenticated-encryption apparatus that encrypts a message using an n-bit block cipher, a key and a nonce, comprising:
an offset computing mechanism that is configured to compute a sequence of n-bit offsets, by
fixing a positive n-bit constant, where 2n minus this constant is prime; computing an n-bit stride using the key and possibly the nonce; computing a first offset using the key and the nonce; and computing each subsequent offset by n-bit computer addition of the prior offset and the stride, and further followed by computer addition of the said constant whenever the first addition resulted in a carry.
- 65. An authenticated-encryption apparatus that encrypts a message using a nonce and a block cipher keyed by a given key, comprising a computing mechanism that is configured to:
compute a key-variant by enciphering a constant with the keyed block cipher; compute a sequence of offsets using the key variant and the nonce; and to compute the ciphertext using at least the keyed block cipher, the message, and the sequence of offsets.
- 66. An authenticated-encryption apparatus that encrypts a message using a nonce and a block cipher keyed by a given key, comprising a computing mechanism that is configured to:
compute a key-variant by enciphering a constant with the keyed block cipher; compute a sequence of basis offsets as a function of the key-variant; compute a base offset using at least the nonce; compute a 1st offset from a basis offset and the base offset; for each number i greater than 1, to compute the ith offset in the sequence of offsets by combining the prior offset and a basis offset; and to compute the ciphertext using at least the keyed block cipher, the message, and the sequence of offsets.
RELATED APPLICATION
[0001] This application hereby claims priority under 35 U.S.C. section 119 to U.S. Provisional Patent Application No. 60/240,471, filed Oct. 12, 2000, and U.S. Provisional Application Ser. No. 60/267,640, filed Feb. 9, 2001. The above-referenced Provisional Patent applications are hereby incorporated by reference.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60240471 |
Oct 2000 |
US |
|
60267640 |
Feb 2001 |
US |