IP Library Granted Patent US 8,452,984
Granted Patent B2
US 8,452,984 · App. 12/229,987 · Granted May 28, 2013

Message authentication code pre-computation with applications to secure memory

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 8,452,984
App. No.
12/229,987
Granted
May 28, 2013
Kind
B2
Abstract

A method comprising the steps of creating a random permutation of data from a data input by executing at least one of a Pseudo-Random Permutation (PRP) and a Pseudo-Random Function (PRF), creating a first data block by combining the random permutation of data with a received second data block and executing an ε-differentially uniform function on the result of the combination, XORing the result of the ε-DU function evaluation with a secret key, and reducing the first data block to a first message authentication code.

Claims (79)

1. A method comprising the steps of:

creating, via a message authentication code (MAC) computer, a random permutation of data from a data input by executing at least one of a Pseudo-Random Function and a Pseudo-Random Permutation;

creating, via the MAC computer, a first data block by combining the random permutation of data with a received second data block and executing an ε-differentially uniform function on the result of the combination;

XORing, via the MAC computer, the result of the ε-differentially uniform function evaluation with a secret key; and

reducing, via the MAC computer, the first data block to a first message authentication code;

wherein the data input comprises a memory address, and the random permutation of data is created independent of the received second data block.

2. The method of claim 1 wherein

the data input also comprises a zero pad and a nonce, the first data block comprises a Rijndael XORed block and the received second data block comprises an encrypted data block; and

wherein the step of creating the random permutation of data further comprises a step of creating a Rijndael block; and

wherein the step of creating the first data block further comprises a step of creating a Rijndael XORed block by XORing the Rijndael block with the encrypted data block; and

wherein a G block is created by executing the ε-differentially uniform function on the Rijndael XORed block; and

wherein the step of XORing of the result of the ε-differentially uniform function evaluation with the secret key results in an M block; and

wherein the step of reducing the first data block to the first message authentication code further comprises a step of reducing the M block to the first message authentication code via an XOR tree.

3. The method of claim 2 wherein the step of creating the random permutation of data from the data input further comprises a step of creating the random permutation of data from the data input before write data arrives.

4. The method of claim 3 wherein the step of creating the Rijndael block further comprises executing at least one of:

fourteen rounds of a Rijndael function on the address, the nonce, and the zero pad; and

two instances of ten rounds of an advanced encryption standard function on the address, the nonce, and the zero pad.

5. The method of claim 4 wherein the step of creating a Rijndael block further comprises a step of choosing a first random key that is used in creating the Rijndael block.

6. The method of claim 5 wherein creating the G block further comprises executing at least one of:

two rounds of a Rijndael function on the XORed Rijndael block; and

four rounds of a Rijndael function on the XORed Rijndael block.

7. The method of claim 6 wherein creating the G block further comprises choosing a second random key that is used in creating the G block.

8. The method of claim 7 wherein the encrypted data is written to off-chip memory, the nonce is written to off-chip memory and the first message authentication code is written to off-chip memory.

9. The method of claim 8 wherein the secret key is a third random key, and the first random key, second random key and the third random key are stored on-chip.

10. The method of claim 7 wherein the secret key is a third random key, and wherein the encrypted data is associated with the nonce, the MAC, the first random key, the second random key and the third random key.

11. The method of claim 7 further comprising authenticating a read data block by retrieving the secret key, the first random key and the second random key, the first message authentication code, and the nonce; and

creating a second message authentication code from the secret key, the first random key and the second random key, the first message authentication code, and the nonce.

12. The method of claim 11 wherein creating the second message authentication code further comprises:

creating a Rijndael read block by executing the Rijndael function on a read address, the nonce, and a zero pad;

creating a Rijndael XORed read block by XORing the Rijndael read block and an encrypted read data block;

creating a G read block by executing at least one of four rounds and two rounds of the Rijndael function on the XORed Rijndael block;

creating an M read block by XORing the G block with the secret key; and

reducing the M read block to the second message authentication code via an XOR tree.

13. The method of claim 12 wherein creating the Rijndael read block further comprises executing at least one of:

fourteen rounds of Rijndael function on the address, the nonce and the zero pad; and

two instances of ten rounds of an advanced encryption standard function on the address the nonce, and the zero pad.

14. The method of claim 12 wherein authenticating the read data block further comprises a step of comparing the first message authentication code with the second message authentication code and performing memory corruption procedures if the first message authentication code is not equal to the second message authentication code.

15. A system comprising:

a message authentication code (MAC) computer configured to:

create a random permutation of data from a data input by executing at least one of a Pseudo-Random Permutation and a Pseudo-Random Function;

create a first data block by combining the random permutation of data with a received second data block and executing an ε-differentially uniform function on the result of the combination;

XOR the result of the evaluation of the ε-differentially uniform function with a secret key; and

reduce the first data block to a first message authentication code;

wherein the data input comprises a memory address, and the random permutation of data is created independent of the received second data block.

16. The system of claim 15 wherein

the data input comprises a zero pad and a nonce;

the MAC computer comprises a PRP F calculator and an ε-DU calculator, a data handler and a data encryptor;

the MAC computer is communicatively coupled to the PRP F calculator, the ε-DU calculator, the data handler and the data encryptor;

the PRP-F calculator is communicatively coupled to the data handler and the ε-DU calculator;

the ε-DU calculator is communicatively coupled to the data handler and the data encryptor;

the data handler is configured to send a memory address to the PRP F calculator and the data encryptor; and

the PRP F calculator is configured to create the random permutation of data by creating a Rijndael block by executing fourteen rounds of a Rijndael function on the memory address, a nonce, and the zero pad.

17. The system of claim 16 wherein the creation of the random permutation of data further comprises the creation of the random permutation of data before write data is received.

18. The system of claim 17 wherein

the data handler is configured to send a second data block to the data encryptor; and

wherein the data encryptor is configured to encrypt the second data block and to send the encrypted data block to the ε-DU calculator; and

wherein the ε-DU calculator is configured to create a Rijndael XORed block by XORing the Rijndael block and the encrypted data block; and

wherein the ε-DU calculator is configured to create a G block by executing at least one of four rounds and two rounds of a Rijndael function on the Rijndael XORed block; and

wherein the MAC computer is configured to create an M block by XORing the G block with a secret key; and

wherein the MAC computer is configured to reduce the M block to the first message authentication code via an XOR tree.

19. The system of claim 18 wherein the creation of the Rijndael block further comprises a selection of a first random key that is used in the creation of the Rijndael block.

20. The system of claim 19 wherein the creation of the G block further comprises a selection of a second random key that is used in creating the G block.

21. The system of claim 20 wherein the encrypted data is written to off-chip memory, the nonce is written to the off-chip memory and the first message authentication code is written to the off-chip memory.

22. The system of claim 21 wherein the secret key is a third random key, and wherein the first random key, the second random key and the third random key are stored on-chip.

23. The system of claim 20 wherein the secret key is a third random key, and the encrypted data is associated with the nonce, the MAC, the first random key, the second random key and the third random key.

24. The system of claim 20 wherein the MAC computer is configured to authenticate a read data block via:

a retrieval of the secret key, the first random key and the second random key, the first message authentication code, and the nonce; and

a delivery of the secret key, the first random key and the second random key, the first message authentication code, and the nonce to the PRP F calculator of the MAC computer.

25. The system of claim 24 wherein the generation of the second message authentication code further comprises:

the PRP F being configured to create a Rijndael read block by executing the Rijndael function on a read address, the nonce, and the zero pad;

the PRP F being configured to pass the Rijndael read block to the ε-DU calculator;

the ε-DU calculator being configured to create a Rijndael XORed read block by XORing the Rijndael read block and an encrypted read data block;

the ε-DU calculator being configured to create a G read block by executing at least one of four rounds and two rounds of a Rijndael function on the XORed Rijndael block;

the MAC computer being configured to create an M read block by XORing the G block with the secret key; and

the MAC computer being configured to reduce the M block to a second message authentication code via an XOR tree.

26. The system of claim 25 wherein the execution of the Rijndael function further comprises the execution of at least one of:

fourteen rounds of the Rijndael function on the read address, the nonce, and the zero pad; and

two parallel executions of ten rounds of the Rijndael function on the read address, the nonce, and the zero pad.

27. The system of claim 26 wherein the authentication of the read data block further comprises the MAC computer being configured to compare the first message authentication code with the second message authentication code and to perform memory corruption procedures in the event that the first message authentication code is not equal to the second message authentication code.

Assignments (15)
PATENT SECURITY AGREEMENT Recorded Aug 6, 2024
From: RPX CORPORATION; RPX CLEARINGHOUSE LLC
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 068328/0674 →
RELEASE OF LIEN ON PATENTS Recorded Aug 5, 2024
From: BARINGS FINANCE LLC
To: RPX CORPORATION
Reel/Frame 068328/0278 →
PATENT SECURITY AGREEMENT Recorded Apr 22, 2023
From: RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 063429/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2021
From: PROVENANCE ASSET GROUP LLC
To: RPX CORPORATION
Reel/Frame 059352/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 30, 2021
From: NOKIA US HOLDINGS INC.
To: PROVENANCE ASSET GROUP HOLDINGS LLC; PROVENANCE ASSET GROUP LLC
Reel/Frame 058363/0723 →
RELEASE OF SECURITY INTEREST Recorded Nov 30, 2021
From: CORTLAND CAPITAL MARKETS SERVICES LLC
To: PROVENANCE ASSET GROUP HOLDINGS LLC; PROVENANCE ASSET GROUP LLC
Reel/Frame 058983/0104 →
ASSIGNMENT AND ASSUMPTION AGREEMENT Recorded Feb 14, 2019
From: NOKIA USA INC.
To: NOKIA US HOLDINGS INC.
Reel/Frame 048370/0682 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2017
From: NOKIA TECHNOLOGIES OY; NOKIA SOLUTIONS AND NETWORKS BV; ALCATEL LUCENT SAS
To: PROVENANCE ASSET GROUP LLC
Reel/Frame 043877/0001 →
SECURITY INTEREST Recorded Sep 13, 2017
From: PROVENANCE ASSET GROUP HOLDINGS, LLC; PROVENANCE ASSET GROUP LLC
To: NOKIA USA INC.
Reel/Frame 043879/0001 →
SECURITY INTEREST Recorded Sep 13, 2017
From: PROVENANCE ASSET GROUP HOLDINGS, LLC; PROVENANCE ASSET GROUP, LLC
To: CORTLAND CAPITAL MARKET SERVICES, LLC
Reel/Frame 043967/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 30, 2014
From: CREDIT SUISSE AG
To: ALCATEL LUCENT
Reel/Frame 033868/0555 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2013
From: ALCATEL-LUCENT USA INC.
To: ALCATEL LUCENT
Reel/Frame 029980/0677 →
MERGER Recorded Mar 11, 2013
From: LUCENT TECHNOLOGIES INC.
To: ALCATEL-LUCENT USA INC.
Reel/Frame 029958/0337 →
SECURITY AGREEMENT Recorded Jan 30, 2013
From: ALCATEL LUCENT
To: CREDIT SUISSE AG
Reel/Frame 029821/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2008
From: GARAY, JUAN A.; KOLESNIKOV, VLADIMIR; MCLELLAN, HUBERT RAE
To: LUCENT TECHNOLOGIES INC.
Reel/Frame 021517/0481 →