← Back to Patent Explorer
US5673319A Expired / Lapsed US ⏱️ 0.0 years remaining

Block cipher mode of operation for secure, length-preserving encryption

Assignee: International Business Machines Corp
•
Filing: 1995-02-06
•
Granted: 1997-09-30
•
Expires: 2015-02-06
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method for encrypting a plaintext string into ciphertext begins by cipher block chaining (CBC) the plaintext using a first key and a null initialization vector to generate a CBC message authentication code (MAC) whose length is equal to the block length. The plaintext string is then cipher block chained again, now using a second key and the CBC-MAC as the initialization vector, to generate an enciphered string. The CBC-MAC and a prefix of the enciphered string comprising all of the enciphered string except the last block are then combined to create the ciphertext. The described mode of operation is length-preserving, yet has the property that related plaintexts give rise to unrelated ciphertexts.

Inventors

  • 👤 Mihir Bellare
  • 👤 Phillip W. Rogaway

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 08:49
CPC Classifications
H; H04; H04L; H04L9/00; H04L9/06; H04L9/0643; H04L9/0618; H04L9/0637; H04L9/50

Claims Analysis

Total Claims: 26
Claim 1
Independent Claim 92 words
A computer-implemented method, using first and second keys, to encrypt a plaintext string x to a ciphertext string F, comprising the steps of: using the string x and the first key a 0 to compute a message authentication code t; using the string x, the second key a 1 , and the message authentication code t to produce an enciphered string y' that depends substantively on the message authentication code; and taking the ciphertext y to comprise the message authentication code t together with a predetermined piece of the enciphered string y'.
Claim 2
Dependent Claim 92 words
A computer-implemented method, using first and second keys, to encrypt a plaintext string x to a ciphertext string F, comprising the steps of: using the string x and the first key a 0 to compute a message authentication code t; using the string x, the second key a 1 , and the message authentication code t to produce an enciphered string y' that depends substantively on the message authentication code; and taking the ciphertext y to comprise the message authentication code t together with a predetermined piece of the enciphered string y'.
Claim 3
Dependent Claim 27 words
The computer-implemented method as described in claim 1 wherein said predetermined piece is shorter than y' yet the plaintext string is still uniquely recoverable given the ciphertext.
Claim 4
Dependent Claim 22 words
The computer-implemented method as described in claim 1 wherein the message authentication code is computed by cipher block chaining a block cipher.
Claim 5
Dependent Claim 14 words
The computer-implemented method as described in claim 2 wherein the block cipher is DES.
Claim 6
Dependent Claim 26 words
The computer-implemented method as described in claim 2 wherein the predetermined piece of the enciphered string includes all but a last block of the enciphered string.
Claim 7
Dependent Claim 21 words
The computer-implemented method as described in claim 2 wherein the message authentication code has a length equal to a block length.
Claim 8
Independent Claim 101 words
A method, using first and second keys, to encrypt a plaintext string to a ciphertext string, comprising the steps of: (a) cipher block chaining (CBC) the plaintext string using the first key and a first initialization vector (IV) to generate a CBC message authentication code whose length is equal to a block length; (b) cipher block chaining the plaintext string using the second key and the CBC message authentication code as a second initialization vector to generate an enciphered string; and (c) combining the CBC message authentication code and a predetermined portion of the enciphered string to form the ciphertext string.
Claim 9
Independent Claim 101 words
A method, using first and second keys, to encrypt a plaintext string to a ciphertext string, comprising the steps of: (a) cipher block chaining (CBC) the plaintext string using the first key and a first initialization vector (IV) to generate a CBC message authentication code whose length is equal to a block length; (b) cipher block chaining the plaintext string using the second key and the CBC message authentication code as a second initialization vector to generate an enciphered string; and (c) combining the CBC message authentication code and a predetermined portion of the enciphered string to form the ciphertext string.
Claim 10
Dependent Claim 25 words
The method as described in claim 7 wherein the predetermined portion of the enciphered string includes all but a last block of the enciphered string.
Claim 11
Dependent Claim 16 words
The method as described in claim 7 wherein the first initialization vector is the null vector.
Claim 12
Dependent Claim 24 words
The method as described in claim 7 wherein the plaintext string has a length that is a multiple of a length of a block.
Claim 13
Dependent Claim 27 words
The method as described in claim 7 wherein the plaintext string has a length that is not equal to a multiple of a length of a block.
Claim 14
Dependent Claim 29 words
The method as described in claim 7 wherein step (c) concatenates the CBC message authentication code and the predetermined portion of the enciphered string to form the ciphertext string.
Claim 15
Dependent Claim 19 words
The method as described in claim 7 wherein the ciphertext string has a length equal to the plaintext string.
Claim 16
Dependent Claim 20 words
The method as described in claim 7 wherein the first and second keys are derived from an underlying secret key.
Claim 17
Independent Claim 133 words
A method, using first and second keys and a block cipher, to decrypt a ciphertext string into a plaintext string, the ciphertext string comprising a CBC message authentication code and an enciphered string, comprising the steps of: (a) decrypting by cipher block chaining the enciphered string using the second key and the CBC message authentication code as an initialization vector to generate a deciphered string; (b) cipher block chaining the deciphered string using the first key and a null initialization vector to generate a string having a last block; (c) calculating a predetermined function of the last block and an inverse of the block cipher under the first key at the CBC message authentication code; and (d) combining the deciphered string and a result of the predetermined function to generate the plaintext string.
Claim 18
Independent Claim 133 words
A method, using first and second keys and a block cipher, to decrypt a ciphertext string into a plaintext string, the ciphertext string comprising a CBC message authentication code and an enciphered string, comprising the steps of: (a) decrypting by cipher block chaining the enciphered string using the second key and the CBC message authentication code as an initialization vector to generate a deciphered string; (b) cipher block chaining the deciphered string using the first key and a null initialization vector to generate a string having a last block; (c) calculating a predetermined function of the last block and an inverse of the block cipher under the first key at the CBC message authentication code; and (d) combining the deciphered string and a result of the predetermined function to generate the plaintext string.
Claim 19
Dependent Claim 13 words
The method as described in claim 15 wherein the block cipher is DES.
Claim 20
Dependent Claim 18 words
The method as described in claim 15 wherein the predetermined function in step (c) is an exclusive OR.
Claim 21
Dependent Claim 104 words
A computer apparatus, comprising: a storage device; program means supported in the storage device for encrypting a plaintext string x to a ciphertext string y, the program means comprising: means for using the string x and a first key a 0 to compute a message authentication code t; means for using the string x, a second key a l , and the message authentication code t to produce an enciphered string y'; and means for taking the ciphertext y to comprise the message authentication code t together with a predetermined piece of the enciphered string y', where said predetermined piece is shorter than y'.
Claim 22
Dependent Claim 104 words
A computer apparatus, comprising: a storage device; program means supported in the storage device for encrypting a plaintext string x to a ciphertext string y, the program means comprising: means for using the string x and a first key a 0 to compute a message authentication code t; means for using the string x, a second key a l , and the message authentication code t to produce an enciphered string y'; and means for taking the ciphertext y to comprise the message authentication code t together with a predetermined piece of the enciphered string y', where said predetermined piece is shorter than y'.
Claim 23
Dependent Claim 136 words
A computer, comprising: a storage device; program means supported in the storage device for decrypting a ciphertext string into a plaintext string, the ciphertext string comprising a CBC message authentication code and an enciphered string, the program means comprising: means for decrypting the enciphered string by cipher block chaining the enciphered string using a secret key and the CBC message authentication code as an initialization vector to generate a deciphered string; means for cipher block chaining the deciphered string using a second secret key and a null initialization vector to generate a string having a last block; means for calculating a predetermined function of the last block and an inverse of a block cipher evaluated using the second secret key; and means for combining the deciphered string and the predetermined function to generate the plaintext string.
Claim 24
Dependent Claim 136 words
A computer, comprising: a storage device; program means supported in the storage device for decrypting a ciphertext string into a plaintext string, the ciphertext string comprising a CBC message authentication code and an enciphered string, the program means comprising: means for decrypting the enciphered string by cipher block chaining the enciphered string using a secret key and the CBC message authentication code as an initialization vector to generate a deciphered string; means for cipher block chaining the deciphered string using a second secret key and a null initialization vector to generate a string having a last block; means for calculating a predetermined function of the last block and an inverse of a block cipher evaluated using the second secret key; and means for combining the deciphered string and the predetermined function to generate the plaintext string.
Claim 25
Dependent Claim 212 words
A program storage device readable by a processor and tangibly embodying a program of instructions executable by the processor to perform encryption and decryption methods, using first and second keys and a block cipher, wherein the encryption method comprises the steps of: (a) cipher block chaining (CBC) a plaintext string using the first key and an initialization vector (IV) to generate a CBC message authentication code; (b) cipher block chaining the plaintext string using the second key and the CBC message authentication code as the initialization vector to generate an enciphered string; and (c) combining the CBC message authentication code and a portion of the enciphered string to form a ciphertext string; and wherein the decryption method comprises the steps of: (a) cipher block chaining the enciphered string using the second key and the CBC message authentication code as the initialization vector to generate a deciphered string; (b) cipher block chaining the deciphered string using the first key and a null initialization vector to generate a string having a last block; (c) calculating a predetermined function of the last block and an inverse of the block cipher under the first key at the CBC message authentication code; and (d) combining the deciphered string and the predetermined function to generate the plaintext string.
Claim 26
Dependent Claim 212 words
A program storage device readable by a processor and tangibly embodying a program of instructions executable by the processor to perform encryption and decryption methods, using first and second keys and a block cipher, wherein the encryption method comprises the steps of: (a) cipher block chaining (CBC) a plaintext string using the first key and an initialization vector (IV) to generate a CBC message authentication code; (b) cipher block chaining the plaintext string using the second key and the CBC message authentication code as the initialization vector to generate an enciphered string; and (c) combining the CBC message authentication code and a portion of the enciphered string to form a ciphertext string; and wherein the decryption method comprises the steps of: (a) cipher block chaining the enciphered string using the second key and the CBC message authentication code as the initialization vector to generate a deciphered string; (b) cipher block chaining the deciphered string using the first key and a null initialization vector to generate a string having a last block; (c) calculating a predetermined function of the last block and an inverse of the block cipher under the first key at the CBC message authentication code; and (d) combining the deciphered string and the predetermined function to generate the plaintext string.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-09-29 2001-03-31 2001-09-30 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-09-29 2005-03-31 2005-09-30 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-09-29 2009-03-31 2009-09-30 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag