US20010046292A1

Authentication method and schemes for data integrity protection

Claim Score by NHIP

Read claim 1, the broadest

Abstract

An authentication method and schemes using a block cipher to protect data integrity (authenticity) during communication over insecure channels and during data storage on insecure media. The authentication method and schemes of this invention allow, in a further aspect, message and data signing and verification in parallel or pipelined manners, in addition to sequential operation, without requiring twice as many block enciphering operations as the number of input plaintext blocks. The present invention allows, in a yet further aspect, software and hardware implementations used in high-performance systems and networks where multiple processing units are available for block enciphering operations. In a yet further aspect, the authentication method and schemes of this invention allow incremental updates and out-of-order processing of authentication tags. In a yet further aspect, the authentication method and schemes of this invention are suitable for real-time applications where message length remains unknown until the entire message is received, and commencing message authentication cannot be deferred until the end of the message.

Term

Term ended

Projected expiry passed 20 October 2023, 2.9 years ago.

  1. Priority
  2. Filed
  3. Published
  4. Projected expiry
  5. Today

80 claims: 18 independent, 62 dependent

  1. 1
    Broadest claimClaim Score 57, broad(NHIP)An authentication method providing a data signing function that determines an authentication tag for use in conjunction with transfer of data using a communication channel or with data storage on storage media, comprising the steps of:partitioning said data into a plurality of data blocks;for each of said data blocks, performing a randomization function over said data block to create an input block of the same size as that of said data block, said input block not including a block identifier;applying a pseudo-random function to each said input block to create a plurality of enciphered blocks;and combining said plurality of enciphered blocks to create an authentication tag.
  2. 6
    An authentication method providing a data signing function that determines an authentication tag, comprising the steps of:receiving an input plaintext string comprising the data to be signed and padding it as necessary such that its length is a multiple of l bits;partitioning the padded input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;creating a random vector of l bits in length;performing a randomization function over said plurality of plaintext blocks and the random vector block to create a plurality of input blocks each of l bits in length;applying a block cipher using a secret key over each of said input blocks to create a plurality of enciphered blocks each of L bits in length;and performing a combination operation over said plurality of enciphered blocks to create an authentication tag.
  3. 36
    An authentication method providing a data signing function that determines an authentication tag, comprising the steps of:receiving an input plaintext string comprising the data to be signed and padding it as necessary such that its length is a multiple of I bits;partitioning the padded input plaintext string into a plurality of n equal-size plaintext blocks of l bits in length;performing a randomization function over said plurality of n plaintext blocks to create a plurality of input blocks each of l bits in length;applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;and performing a combination operation over said plurality of enciphered blocks to create an authentication tag.
  4. 52
    A verification method for the authentication method, which provides data integrity, comprising the steps of:presenting a string including a plaintext string and an input authentication tag for verification;partitioning said plaintext string into a plurality of n plaintext blocks comprising l bits each;performing the same randomization function as that used at a signing method for determining an authentication tag over said plurality of plaintext blocks to create a plurality of input blocks each of l bits in length;applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;performing the same combination operation as that used at a signing method for determining an authentication tag over said plurality of enciphered blocks to compute an authentication tag;verifying integrity of the plaintext blocks by comparing the input authentication tag and the computed authentication tag.
  5. 58
    An authentication method providing a data signing function that updates an authentication tag incrementally, comprising the steps of:receiving an input plaintext string comprising the data to be signed and padding it as necessary such that its length is a multiple of l bits;partitioning the padded input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;performing a randomization function over said plurality of plaintext blocks to create a plurality of input blocks each of l bits in length;applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;performing a combination operation over said plurality of enciphered blocks to create an authentication tag, said combination operation having an inverse;and further comprising the steps of: receiving an input plaintext string including a plaintext string and an input authentication tag;partitioning said plaintext string into a plurality of n plaintext blocks comprising l bits each;receiving a new l-bit input plaintext block to replace an l-bit plaintext block of said input plaintext string at index i;performing the same randomization function as that used at a signing method, using index i, on said new input plaintext block to create a first input block and performing the same randomization function as that used at a signing method, using index i, on said plaintext block at index i to create a second input block, each of the said created input blocks having l bits in length;applying a block cipher using a secret key to the first input block and the second input block to create a first enciphered block and a second enciphered block, each of L bits in length;performing the inverse of said combination operation used at a signing method for determining an authentication tag to the input authentication tag and said second enciphered block;performing the said combination operation used at a signing method for determining an authentication tag to first enciphered block and the result of performing the inverse of said combination operation;and outputting the result of performing said combination operation to the first enciphered block and the result of performing the inverse of said combination operation as the authentication tag.
  6. 60
    An authentication method providing a data signing function that determines an authentication tag, comprising the steps of:receiving an input plaintext string comprising the data to be signed and padding it as necessary such that its length is a multiple of l bits;partitioning the padded input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;performing a randomization function over each of said plurality of plaintext blocks using a different index for each plaintext block to create a plurality of input blocks each of l bits in length;applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;performing a combination operation over said plurality of enciphered blocks to create an authentication tag;and further providing an out-of-order verification function for the authentication method comprising the steps of: receiving an input authentication tag for verification and a plurality of n plaintext blocks comprising l bits each, each plaintext block being accompanied by a different index;performing a randomization function over each of said plurality of plaintext blocks using said index for each plaintext block to create a plurality of input blocks each of l bits in length;applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;performing the same combination operation as that used at a signing method for determining an authentication tag over said plurality of enciphered blocks to compute an authentication tag;verifying integrity of the plaintext blocks by comparing the input authentication tag and the computed authentication tag.
  7. 61
    An authentication system for providing a data signing function that determines an authentication tag for use in conjunction with transfer of data using a communication channel or with data storage on storage media, comprising:a partitioner for partitioning said data into a plurality of data blocks;a randomization component which, for each of said data blocks, performs a randomization function over said data block to create an input block of the same size as that of said data block, said input block not including a block identifier;a pseudo-random encipher component for applying a pseudo-random function to each said input block to create a plurality of enciphered blocks;and a combining component for combining said plurality of enciphered blocks to create an authentication tag.
  8. 63
    An authentication system for providing a data signing function that determines an authentication tag, comprising:a partitioner for partitioning an input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;a first component for creating a random vector of l bits in length;a second component for performing a randomization function over said plurality of plaintext blocks and the random vector block to create a plurality of input blocks each of l bits in length;a block cipher component for applying a block cipher using a secret key over each of said input blocks to create a plurality of enciphered blocks each of L bits in length;and a combining component for performing a combination operation over said plurality of enciphered blocks to create an authentication tag.
  9. 64
    An authentication system for providing a data signing function that determines an authentication tag, comprising:a partitioning component for partitioning a padded input plaintext string into a plurality of n equal-size plaintext blocks of l bits in length;a first component for performing a randomization function over said plurality of n plaintext blocks to create a plurality of input blocks each of l bits in length;a second component for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;and a combining component for performing a combination operation over said plurality of enciphered blocks to create an authentication tag.
  10. 65
    A verification system for an authentication method, which provides data integrity, comprising:a receiver for receiving a string including a plaintext string and an input authentication tag for verification;a partitioner component for partitioning said plaintext string into a plurality of n plaintext blocks comprising l bits each;a first component for performing the same randomization function as that used at a signing method for determining an authentication tag over said plurality of plaintext blocks to create a plurality of input blocks each of l bits in length;a second component for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;a combining component for performing the same combination operation as that used at a signing method for determining an authentication tag over said plurality of enciphered blocks to compute an authentication tag;and a comparator for verifying integrity of the plaintext blocks by comparing the input authentication tag and the computed authentication tag.
  11. 68
    An authentication system for providing a data signing function that updates an authentication tag incrementally, comprising:a partitioner for partitioning an input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;a first component for performing a randomization function over said plurality of plaintext blocks to create a plurality of input blocks each of l bits in length;a block cipher component for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;a combining component for performing a combination operation over said plurality of enciphered blocks to create an authentication tag, said combination operation having an inverse;and further comprising: a receiver for receiving an input plaintext string including a plaintext string and an input authentication tag;a partitioner component for partitioning said plaintext string into a plurality of n plaintext blocks comprising l bits each;a second receiver for receiving a new l-bit input plaintext block to replace an l-bit plaintext block of said input plaintext string at index i;a component for performing the same randomization function as that used at a signing method, using index i, on said new input plaintext block to create a first input block and performing the same randomization function as that used at a signing method, using index i, on said plaintext block at index i to create a second input block, each of the said created input blocks having l bits in length;a third component for applying a block cipher using a secret key to the first input block and the second input block to create a first enciphered block and a second enciphered block, each of L bits in length;a fourth component for performing the inverse of said combination operation used at a signing method for determining an authentication tag to the input authentication tag and said second enciphered block;a fifth component for performing the said combination operation used at a signing method for determining an authentication tag to first enciphered block and the result of performing the inverse of said combination operation;and a sixth component for outputting the result of performing said combination operation to the first enciphered block and the result of performing the inverse of said combination operation as the authentication tag.
  12. 70
    An authentication system for providing a data signing function that determines an authentication tag, comprising:a partitioner for partitioning the padded input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;a randomization component for performing a randomization function over each of said plurality of plaintext blocks using a different index for each plaintext block to create a plurality of input blocks each of l bits in length;a pseudo-random encipher component for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;a combining component for combining said plurality of enciphered blocks to create an authentication tag;and further providing an out-of-order verification function for the authentication method comprising: a receiver for receiving an input authentication tag for verification and a plurality of n plaintext blocks comprising l bits each, each plaintext block being accompanied by a different index;a randomization component for performing a randomization function over each of said plurality of plaintext blocks using said index for each plaintext block to create a plurality of input blocks each of l bits in length;a pseudo-random encipher component for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;a combining component for performing the same combination operation as that used at a signing method for determining an authentication tag over said plurality of enciphered blocks to compute an authentication tag;a comparator for verifying integrity of the plaintext blocks by comparing the input authentication tag and the computed authentication tag.
  13. 71
    A program product for providing a data signing function that determines an authentication tag for use in conjunction with transfer of data using a communication channel or with data storage on storage media, comprising computer readable program code, including:first code for partitioning said data into a plurality of data blocks;second code which, for each of said data blocks, performs a randomization function over said data block to create an input block of the same size as that of said data block, said input block not including a block identifier;third code for applying a pseudo-random function to each said input block to create a plurality of enciphered blocks;and fourth code for combining said plurality of enciphered blocks to create an authentication tag.
  14. 73
    A program product for providing a data signing function that determines an authentication tag, comprising computer readable program code including:code for partitioning an input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;code for creating a random vector of l bits in length;code for performing a randomization function over said plurality of plaintext blocks and the random vector block to create a plurality of input blocks each of l bits in length;code for applying a block cipher using a secret key over each of said input blocks to create a plurality of enciphered blocks each of L bits in length;and code for performing a combination operation over said plurality of enciphered blocks to create an authentication tag.
  15. 74
    A program product for providing a data signing function that determines an authentication tag, comprising computer readable program code including:first code for partitioning a padded input plaintext string into a plurality of n equal-size plaintext blocks of l bits in length;second code for performing a randomization function over said plurality of n plaintext blocks to create a plurality of input blocks each of l bits in length;third code for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;and code for performing a combination operation over said plurality of enciphered blocks to create an authentication tag.
  16. 75
    A program product for an authentication method, which provides data integrity, comprising:first code for receiving a string including a plaintext string and an input authentication tag for verification;second code for partitioning said plaintext string into a plurality of n plaintext blocks comprising l bits each;third code for performing the same randomization function as that used at a signing method for determining an authentication tag over said plurality of plaintext blocks to create a plurality of input blocks each of l bits in length;fourth code for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;fifth code for performing the same combination operation as that used at a signing method for determining an authentication tag over said plurality of enciphered blocks to compute an authentication tag;and sixth code for verifying integrity of the plaintext blocks by comparing the input authentication tag and the computed authentication tag.
  17. 78
    A program product for providing a data signing function that updates an authentication tag incrementally, comprising:first code for partitioning an input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;second code for performing a randomization function over said plurality of plaintext blocks to create a plurality of input blocks each of l bits in length;third code for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;fourth code for performing a combination operation over said plurality of enciphered blocks to create an authentication tag, said combination operation having an inverse;and further comprising: fifth code for receiving an input plaintext string including a plaintext string and an input authentication tag;sixth code for partitioning said plaintext string into a plurality of n plaintext blocks comprising l bits each;seventh code for receiving a new l-bit input plaintext block to replace an l-bit plaintext block of said input plaintext string at index i;eighth code for performing the same randomization function as that used at a signing method, using index i, on said new input plaintext block to create a first input block and performing the same randomization function as that used at a signing method, using index i, on said plaintext block at index i to create a second input block, each of the said created input blocks having l bits in length;ninth code for applying a block cipher using a secret key to the first input block and the second input block to create a first enciphered block and a second enciphered block, each of L bits in length;tenth code for performing the inverse of said combination operation used at a signing method for determining an authentication tag to the input authentication tag and said second enciphered block;eleventh code for performing the said combination operation used at a signing method for determining an authentication tag to first enciphered block and the result of performing the inverse of said combination operation;and twelfth code for outputting the result of performing said combination operation to the first enciphered block and the result of performing the inverse of said combination operation as the authentication tag.
  18. 80
    An program product for providing a data signing function that determines an authentication tag, comprising:first code for partitioning the padded input plaintext string into a plurality of equal-size plaintext blocks of l bits in length;second code for performing a randomization function over each of said plurality of plaintext blocks using a different index for each plaintext block to create a plurality of input blocks each of l bits in length;third code for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;fourth code for combining said plurality of enciphered blocks to create an authentication tag;and further providing an out-of-order verification function for the authentication method comprising: fifth code for receiving an input authentication tag for verification and a plurality of n plaintext blocks comprising l bits each, each plaintext block being accompanied by a different index;sixth code for performing a randomization function over each of said plurality of plaintext blocks using said index for each plaintext block to create a plurality of input blocks each of l bits in length;seventh code for applying a block cipher using a secret key over each of the said input blocks to create a plurality of enciphered blocks each of L bits in length;eighth code for performing the same combination operation as that used at a signing method for determining an authentication tag over said plurality of enciphered blocks to compute an authentication tag;ninth code for verifying integrity of the plaintext blocks by comparing the input authentication tag and the computed authentication tag.
Independent claims18