IP Library Granted Patent US 9,209,967
Granted Patent B2
US 9,209,967 · App. 11/716,916 · Granted Dec 8, 2015

Precalculated encryption key

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,209,967
App. No.
11/716,916
Granted
Dec 8, 2015
Kind
B2
Abstract

An authenticated encryption method includes receiving, by an Advanced Encryption Standard (AES) engine, a cipher key and computing a hash key using the received cipher key. The computed hash key is stored in a storage memory. The AES engine then receives a packet of data and encrypts the packet of data using the received cipher key. The hash key from the storage memory is sent to a GHASH engine which is used to authenticate the packet of data. Encrypting the packet of data is performed after the hash key is stored in the storage memory. Input flow of the packet of data is enabled after the hash key is stored in the storage memory.

Claims (71)

1. An authenticated encryption method comprising the steps of:

(a) receiving, by an Advanced Encryption Standard (AES) engine, a cipher key;

(b) computing, by the AES engine, a hash key using the received cipher key prior to receiving a packet of data;

(c) storing the computed hash key in a storage memory prior to receiving the packet of data;

(d) receiving, by the AES engine, the packet of data;

(e) encrypting, by the AES engine, the packet of data using the received cipher key;

(f) receiving the hash key, by a GHASH engine, from the storage memory;

(g) authenticating the packet of data, by the GHASH engine, using the hash key;

(h) receiving one or more other packets of data; and

(i) authenticating the one or more other packets of data, by the GHASH engine, using the stored hash key.

2. The method of claim 1 wherein

the encrypting step includes using a counter mode in the AES engine to encrypt the packet of data.

3. The method of claim 2 wherein

using the counter mode includes iteratively XOR-ing (a) a plaintext portion of the packet of data with (b) an encrypted value of counter data using the cipher key, and thereby obtaining a ciphertext of data.

4. The method of claim 1 wherein

the authenticating step includes

transmitting the ciphertext to the GHASH engine, and

iteratively multiplying the ciphertext, by the GHASH engine, using the hash key.

5. The method of claim 1 wherein

encrypting the packet of data is performed after the hash key is stored in the storage memory.

6. The method of claim 1 further including the step of:

enabling flow of the packet of data, after the hash key is stored in the storage memory.

7. The method of claim 6 wherein

after enabling the flow of the packet of data, encrypting the packet of data using the encryption key, by the AES engine, and

after enabling the flow of the packet of data, authenticating the packet of data, using the hash key stored in the storage memory, by the GHASH engine.

8. The method of claim 1 wherein

computing the hash key includes performing 10 rounds of key expansion on the received cipher key, if the received cipher key is a 128 bit block of data, and

computing the hash key includes performing 12 rounds of key expansion on the received cipher key, if the received cipher key is a 192 bit block of data, and

computing the hash key includes performing 14 rounds of key expansion on the received cipher key, if the received cipher key is a 256 bit block of data.

9. The method of claim 1 wherein

receiving the cipher key includes receiving at least two separate cipher keys from respective data channels, and

computing the hash key includes computing at least two separate hash keys corresponding to the at least two separately received cipher keys.

10. The method of claim 1 wherein

receiving the packet of data includes receiving during an interval of time a predetermined number of packets of data,

calculating the hash key includes calculating the hash key once per the interval of time, and

storing the computed hash key includes storing the computed hash key once per the interval of time.

11. An authenticated decryption method comprising the steps of:

(a) receiving, by an Advanced Encryption Standard (AES) engine, a cipher key;

(b) computing, by the AES engine, a hash key using the received cipher key prior to receiving a packet of data;

(c) storing the computed hash key in a storage memory prior to receiving the packet of data;

(d) receiving, by the AES engine, the packet of data;

(e) decrypting, by the AES engine, the packet of data using the received cipher key;

(f) receiving the hash key, by a GHASH engine, from the storage memory;

(g) authenticating the packet of data, by the GHASH engine, using the hash key;

(h) receiving one or more other packets of data; and

(i) authenticating the one or more other packets of data, by the GHASH engine, using the stored hash key.

12. The method of claim 11 wherein

the decrypting step includes using a counter mode in the AES engine to decrypt the packet of data.

13. The method of claim 11 wherein

decrypting the packet of data is performed after the hash key is stored in the storage memory.

14. The method of claim 11 further including the step of:

enabling flow of the packet of data, after the hash key is stored in the storage memory.

15. The method of claim 14 wherein

after enabling the flow of the packet of data, decrypting the packet of data using the encryption key, by the AES engine, and

after enabling the flow of the packet of data, authenticating the packet of data, using the hash key stored in the storage memory, by the GHASH engine.

16. An authenticated encryption module comprising:

an Advanced Encryption Standard (AES) engine for using a cipher key to compute a hash key prior to receiving a packet of data,

a storage memory configured to store the computed hash key, and

a GHASH engine configured to receive the computed hash key stored in the storage memory for authenticating the packet of data and one or more other subsequent packets of data,

wherein (a) the AES engine encrypts the packet of data to form ciphertext, (b) the GHASH engine receives the ciphertext from the AES engine to multiply the received ciphertext with the computed hash key, and (c) an authentication tag is computed using the multiplied ciphertext with the computed hash key.

17. The module of claim 16 including

a controller for enabling input flow of the packet of data, after the computed hash key is stored in the storage memory.

18. The module of claim 16 wherein

the packet of data includes additional authenticated data (AAD), and

the GHASH engine is configured to receive the AAD to multiply the AAD with the computed hash key.

19. The module of claim 16 wherein

the AES engine is configured to receive at least two different encryption keys from respective data channels, and

the AES engine includes two encryption modules for encrypting at least two different packets of data received from the respective data channels using the at least two different encryption keys.

20. The module of claim 16 wherein

the hash key is computed by the AES engine once for multiple packets of data received, and

the hash key is stored in the storage memory once for all the received multiple packets of data.

Assignments (3)
MERGER Recorded Jul 1, 2016
From: EXELIS INC.
To: HARRIS CORPORATION
Reel/Frame 039362/0534 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2012
From: ITT MANUFACTURING ENTERPRISES LLC (FORMERLY KNOWN AS ITT MANUFACTURING ENTERPRISES, INC.)
To: EXELIS INC.
Reel/Frame 027574/0040 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 12, 2007
From: YUP, NHU-HA
To: ITT MANUFACTURING ENTERPRISES, INC.
Reel/Frame 019088/0713 →