Fast encryption and authentication for data processing systems
AssigneeQUALCOMM Incorporated
InventorsPhilip Michael Hawkes, Gregory G. Rose
Life of this patent
Estimating the term…
Abstract
Methods and apparatus are presented for partially encrypting a data transmission, yet providing authentication for all of the data transmission. Plaintext blocks are combined with noise blocks and then either encrypted or decrypted to form ciphertext blocks and authentication blocks. The authentication blocks are used to determine a checksum that is then used to determine an authentication tag.
Claims17
A method for encrypting and authenticating data as a single entity, comprising:
- forming a plurality of plaintext blocks from the data;
- specifying at least one cleartext position;
- determining a plurality of noise blocks using a nonce value;
- determining a first plurality of ciphertext blocks and a first plurality of authentication blocks associated with the at least one cleartext position, wherein each of the first plurality of ciphertext blocks is formed by setting a corresponding ciphertext block equal to a corresponding one of the first plurality of plaintext blocks, and each of the first plurality of authentication blocks is formed by:
- combining a plaintext block with a corresponding noise block to form a corresponding intermediate ciphertext block;
- decrypting the corresponding intermediate ciphertext block into a corresponding intermediate plaintext block;
- and
- combining the corresponding intermediate plaintext block with the corresponding noise block to form an authentication block;
- determining a second plurality of ciphertext blocks and a second plurality of authentication blocks not associated with the at least one cleartext position, wherein each of the second plurality of authentication blocks is equal to a corresponding plaintext block, and each of the second plurality of ciphertext blocks is formed by:
- combining a plaintext block with a corresponding noise block to form a corresponding intermediate plaintext block;
- encrypting the corresponding intermediate plaintext block into a corresponding intermediate ciphertext block;
- combining the corresponding intermediate ciphertext block with the corresponding noise block to form a ciphertext block;
- computing a checksum value based on the first plurality of authentication blocks and second plurality of authentication blocks;
- computing an authentication tag by combining the checksum value with a noise block, encrypting the combined checksum value and combining the encrypted checksum value with another noise block;
- and
- appending the authentication tag to a plurality of transmission blocks, wherein the transmission blocks comprise the first plurality of ciphertext blocks and the second plurality of ciphertext blocks.
A method for decrypting and verifying a plurality of transmission blocks accompanied by an authentication tag, comprising:
- determining a plurality of noise blocks using a nonce value and a first key;
- determining a plurality of authentication blocks by:
- combining a corresponding transmission block with a corresponding noise block to form a corresponding intermediate ciphertext block;
- decrypting the corresponding intermediate ciphertext block into a corresponding intermediate plaintext block using a second key;
- and
- combining a corresponding intermediate plaintext block with the corresponding noise block to form a corresponding authentication block;
- determining a first plurality of plaintext blocks corresponding to at least one cleartext position, wherein each of the first plurality of plaintext blocks is set equal to a corresponding transmission block;
- determining a second plurality of plaintext blocks, wherein each of the second plurality of plaintext blocks do not correspond to the at least one cleartext position and is set equal to a corresponding authentication block;
- computing a checksum value based on the plurality of authentication blocks;
- and
- verifying the authentication tag.
Apparatus for encrypting and authenticating data as a single entity, comprising:
- at least one memory element;
- and
- at least one processing element configured to execute a set of instructions stored on the at least one memory element, the set of instructions for:
- forming a plurality of plaintext blocks from the data;
- specifying at least one cleartext position;
- determining a plurality of noise blocks using a nonce value;
- determining a first plurality of ciphertext blocks and a first plurality of authentication blocks associated with the at least one cleartext position, wherein each of the first plurality of ciphertext blocks is formed by setting a corresponding ciphertext block equal to a corresponding one of the first plurality of plaintext blocks, and each of the first plurality of authentication blocks is formed by:
- combining a plaintext block with a corresponding noise block to form a corresponding intermediate ciphertext block;
- decrypting the corresponding intermediate ciphertext block into a corresponding intermediate plaintext block;
- and
- combining the corresponding intermediate plaintext block with the corresponding noise block to form an authentication block;
- determining a second plurality of ciphertext blocks and a second plurality of authentication blocks not associated with the at least one cleartext position, wherein each of the second plurality of authentication blocks is equal to a corresponding plaintext block, and each of the second plurality of ciphertext blocks is formed by:
- combining a plaintext block with a corresponding noise block to form a corresponding intermediate plaintext block;
- encrypting the corresponding intermediate plaintext block into a corresponding intermediate ciphertext block;
- combining the corresponding intermediate ciphertext block with the corresponding noise block to form a ciphertext block;
- computing a checksum value based on the first plurality of authentication blocks and second plurality of authentication blocks;
- computing an authentication tag by combining the checksum value with a noise block, encrypting the combined checksum value and combining the encrypted checksum value with another noise block;
- and
- appending the authentication tag to a plurality of transmission blocks, wherein the transmission blocks comprise the first plurality of ciphertext blocks and the second plurality of ciphertext blocks.
Apparatus for decrypting and verifying a plurality of transmission blocks accompanied by an authentication tag, comprising:
- at least one memory element;
- and
- at least one processing element configured to execute a set of instructions stored on the at least one memory element, the set of instructions for:
- determining a plurality of noise blocks using a nonce value and a first key;
- determining a plurality of authentication blocks by:
- combining a corresponding transmission block with a corresponding noise block to form a corresponding intermediate ciphertext block;
- decrypting the corresponding intermediate ciphertext block into a corresponding intermediate plaintext block using a second key, and
- combining a corresponding intermediate plaintext block with the corresponding noise block to form a corresponding authentication block;
- determining a first plurality of plaintext blocks corresponding to at least one cleartext position, wherein each of the first plurality of plaintext blocks is set equal to a corresponding transmission block;
- determining a second plurality of plaintext blocks, wherein each of the second plurality of plaintext blocks do not correspond to the at least one cleartext position and is set equal to a corresponding authentication block;
- computing a checksum value based on the plurality of authentication blocks;
- and
- verifying the authentication tag.
Apparatus for encrypting and authenticating data as a single entity, comprising:
- means for forming a plurality of plaintext blocks from the data;
- means for specifying at least one cleartext position;
- means for determining a plurality of noise blocks using a nonce value;
- means for determining a first plurality of ciphertext blocks and a first plurality of authentication blocks associated with the at least one cleartext position, wherein each of the first plurality of ciphertext blocks is formed by setting a corresponding ciphertext block equal to a corresponding one of the first plurality of plaintext blocks, and each of the first plurality of authentication blocks is formed by:
- combining a plaintext block with a corresponding noise block to form a corresponding intermediate ciphertext block;
- decrypting the corresponding intermediate ciphertext block into a corresponding intermediate plaintext block;
- and
- combining the corresponding intermediate plaintext block with the corresponding noise block to form an authentication block;
- means for determining a second plurality of ciphertext blocks and a second plurality of authentication blocks not associated with the at least one cleartext position, wherein each of the second plurality of authentication blocks is equal to a corresponding plaintext block, and each of the second plurality of ciphertext blocks is formed by:
- combining a plaintext block with a corresponding noise block to form a corresponding intermediate plaintext block;
- encrypting the corresponding intermediate plaintext block into a corresponding intermediate ciphertext block;
- combining the corresponding intermediate ciphertext block with the corresponding noise block to form a ciphertext block;
- means for computing a checksum value based on the first plurality of authentication blocks and second plurality of authentication blocks;
- means for computing an authentication tag by combining the checksum value with a noise block, encrypting the combined checksum value and combining the encrypted checksum value with another noise block;
- and
- means for appending the authentication tag to a plurality of transmission blocks, wherein the transmission blocks comprise the first plurality of ciphertext blocks and the second plurality of ciphertext blocks.
Apparatus for decrypting and verifying a plurality of transmission blocks accompanied by an authentication tag, comprising:
- means for determining a plurality of noise blocks using a nonce value and a first key;
- means for determining a plurality of authentication blocks by:
- combining a corresponding transmission block with a corresponding noise block to form a corresponding intermediate ciphertext block;
- decrypting the corresponding intermediate ciphertext block into a corresponding intermediate plaintext block using a second key;
- and
- combining a corresponding intermediate plaintext block with the corresponding noise block to form a corresponding authentication block;
- means for determining a first plurality of plaintext blocks corresponding to at least one cleartext position, wherein each of the first plurality of plaintext blocks is set equal to a corresponding transmission block;
- means for determining a second plurality of plaintext blocks, wherein each of the second plurality of plaintext blocks do not correspond to the at least one cleartext position and is set equal to a corresponding authentication block;
- means for computing a checksum value based on the plurality of authentication blocks;
- and
- means for verifying the authentication tag.
Dependencies are inferred from the claim text.