IP Library › Granted Patent US 11,216,592
Granted Patent B2
US 11,216,592 · App. 16/053,626 · Granted Jan 4, 2022

Dynamic cryptographic key expansion

Inventors: Roberto Avanzi (Munich, DE); Darren Lasko (Forest, VA)
G06F21/72G06F12/1408H04L9/0618H04L9/0816H04L2209/125
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 11,216,592
App. No.
16/053,626
Granted
Jan 4, 2022
Kind
B2
Abstract

Some embodiments include systems and methods for the management of a plurality of expanded cryptographic keys associated with a plurality of corresponding Protected Software Environments (PSEs) supervised by PSE-management software running on a computer system. In one embodiment, a computer system has a first processor, a first memory controller, and a first RAM. The first memory controller has a first memory cryptography circuit connected between the first processor and the first RAM. The memory cryptography circuit comprises a keystore and a first cryptographic engine. The keystore comprises a seedstore and a key-expansion engine. The seedstore is configured to store a first plurality of cryptographic key seeds accessible by a key identifier, for use by the key-expansion engine to generate expanded keys, where each key seed corresponds to a corresponding client.

Claims (110)

1. A memory cryptography circuit comprising a keystore and a key-expansion engine, wherein:

the memory cryptography circuit is connected to a processor and a random-access memory (RAM);

the keystore is configured to:

receive a key identifier; and

provide to the key-expansion engine a first key-expansion input based on the key identifier;

the key-expansion engine is configured to perform a key-expansion operation on the first key-expansion input to generate an expanded cryptographic key;

the memory cryptography circuit comprises a first cryptographic engine configured to receive the expanded cryptographic key and an input block;

the first cryptographic engine is configured to process the input block using the expanded cryptographic key to output a corresponding output block;

the memory cryptography circuit is configured to perform one of receiving the input block from the RAM and transmitting the output block to the RAM;

the input block is one of a plaintext block and a cyphertext block;

if the input block is a plaintext block, then:

the corresponding output block is a ciphertext block; and

the first cryptographic engine is an encryption engine configured to:

receive the expanded cryptographic key and the input block; and

encrypt the input block using the expanded cryptographic key to output the corresponding output block for transmission to the RAM; and

if the input block is a cyphertext block, then:

the cyphertext block is received from the RAM;

the corresponding output block is a plaintext block; and

the first cryptographic engine is a decryption engine configured to;

receive the expanded cryptographic key and the input block; and

decrypt the input block using the expanded cryptographic key to output the corresponding output block.

2. The circuit of claim 1 , wherein:

the input block is a plaintext block;

the corresponding output block is a ciphertext block; and

the first cryptographic engine is an encryption engine configured to:

receive the expanded cryptographic key and the input block; and

encrypt the input block using the expanded cryptographic key to output the corresponding output block for transmission to the RAM.

3. The circuit of claim 1 , wherein:

the keystore further comprises a local cache configured to:

store a plurality of key identifiers and corresponding expanded cryptographic keys; and

look up the received key identifier;

if the received key identifier is matched by the local cache, then the local cache is configured to then provide a corresponding expanded cryptographic key to the first cryptographic engine in response to matching the received key identifier;

if the received key identifier is not matched by the local cache, then the keystore is configured to then update the local cache with the received key identifier and a corresponding expanded cryptographic key generated by the key-expansion engine, wherein the key-expansion engine is configured to provide the corresponding expanded cryptographic key to both the local cache and the first cryptographic engine.

4. The circuit of claim 1 , wherein:

the keystore further comprises a seedstore configured to:

store a plurality of key seeds indexed by their corresponding key identifiers; and

provide to the key-expansion engine a corresponding key seed as the first key-expansion input in response to receiving the key identifier.

5. The circuit of claim 1 , wherein:

the keystore comprises a counterstore configured to:

store a plurality of counter values indexed by their corresponding key identifiers;

provide a corresponding counter value as the first key-expansion input to the key-expansion engine in response to receiving a key identifier;

the key-expansion engine is configured to perform the key-expansion operation on the first key-expansion input and a global-seed value to generate the expanded cryptographic key.

6. The circuit of claim 1 , wherein:

the first key-expansion input is the received key identifier;

the key-expansion engine is configured to perform the key-expansion operation on the first key-expansion input and a global-seed value to generate the expanded cryptographic key.

7. A method for an integrated circuit system comprising a memory cryptography circuit connected to a processor and a random-access memory (RAM), the memory cryptography circuit comprising a keystore, a key-expansion engine, and a first cryptographic engine, the method comprising:

receiving, by the keystore, a key identifier; and

providing, by the keystore, to the key-expansion engine a first key-expansion input based on the key identifier;

performing, by the key-expansion engine, a key-expansion operation on the first key-expansion input to generate an expanded cryptographic key;

receiving, by the first cryptographic engine, the expanded cryptographic key and an input block;

processing, by the first cryptographic engine, the input block using the expanded cryptographic key; and

outputting, by the first cryptographic engine, a corresponding output block, wherein the memory cryptography circuit is configured to perform one of receiving the input block from the RAM and transmitting the output block to the RAM;

the input block is one of a plaintext block and a cyphertext block;

if the input block is a plaintext block, then:

the corresponding output block is a ciphertext block; and

the first cryptographic engine is an encryption engine configured to:

receive the expanded cryptographic key and the input block; and

encrypt the input block using the expanded cryptographic key to output the corresponding output block for transmission to the RAM; and

if the input block is a cyphertext block, then:

the cyphertext block is received from the RAM;

the corresponding output block is a plaintext block; and

the first cryptographic engine is a decryption engine configured to;

receive the expanded cryptographic key and the input block; and

decrypt the input block using the expanded cryptographic key to output the corresponding output block.

8. The method of claim 7 , wherein:

the keystore further comprises a local cache configured to store a plurality of key identifiers and corresponding expanded cryptographic keys; and

the method further comprises:

looking up the received key identifier in the local cache;

if the received key identifier is found in the local cache, then providing, by the local cache, a corresponding expanded cryptographic key to the first cryptographic engine in response to matching the received key identifier; and

if the received key identifier is not found in the local cache, then updating the local cache with the received key identifier and a corresponding expanded cryptographic key generated by the key-expansion engine, wherein the key-expansion engine provides the corresponding expanded cryptographic key to both the local cache and the first cryptographic engine.

9. The method of claim 7 , wherein:

the keystore further comprises a seedstore; and

the method further comprises:

storing, in the seedstore, a plurality of key seeds indexed by their corresponding key identifiers; and

providing, by the seedstore, to the key-expansion engine a corresponding key seed as the first key-expansion input in response to receiving the key identifier.

10. The method of claim 7 , wherein:

the keystore comprises a counterstore; and

the method further comprises:

storing, in the counterstore, a plurality of counter values indexed by their corresponding key identifiers;

providing, by the counterstore, a corresponding counter value as the first key-expansion input to the key-expansion engine in response to receiving a key identifier;

performing, by the key-expansion engine, the key-expansion operation on the first key-expansion input and a global-seed value to generate the expanded cryptographic key.

11. The method of claim 7 , wherein:

the first key-expansion input is the received key identifier; and

the method further comprises performing, by the key-expansion engine, the key-expansion operation on the first key-expansion input and a global-seed value to generate the expanded cryptographic key.

12. An integrated circuit (IC) system comprising a first processor, a first random-access memory (RAM), and a memory cryptography circuit, wherein:

the memory cryptography circuit is connected to the first processor and the first RAM;

the memory cryptography circuit comprises a keystore;

the keystore comprises a key-expansion engine;

the keystore is configured to:

receive a key identifier; and

provide to the key-expansion engine a first key-expansion input based on the key identifier;

the key-expansion engine is configured to perform a key-expansion operation on the first key-expansion input to generate an expanded cryptographic key;

the memory cryptography circuit comprises a first cryptographic engine configured to receive the expanded cryptographic key and an input block;

the first cryptographic engine is configured to process the input block using the expanded cryptographic key to output a corresponding output block; and

the memory cryptography circuit is configured to perform one of receiving the input block from the RAM and transmitting the output block to the RAM;

the input block is one of a plaintext block and a cyphertext block;

if the input block is a plaintext block, then:

the corresponding output block is a ciphertext block; and

the first cryptographic engine is an encryption engine configured to:

receive the expanded cryptographic key and the input block; and

encrypt the input block using the expanded cryptographic key to output the corresponding output block for transmission to the RAM; and

if the input block is a cyphertext block, then:

the cyphertext block is received from the RAM;

the corresponding output block is a plaintext block; and

the first cryptographic engine is a decryption engine configured to;

receive the expanded cryptographic key and the input block; and

decrypt the input block using the expanded cryptographic key to output the corresponding output block.

13. The circuit of claim 1 , wherein each of the plurality of key identifiers and corresponding expanded cryptographic keys corresponds to a distinct protected software environment comprising at least one of a virtual machine, driver, application, sub-process, and thread.

14. The circuit of claim 1 , wherein the local cache comprises static random-access memory (SRAM).

15. The IC system of claim 12 , further comprising a data cache configured to provide to the memory cryptography circuit a data packet comprising the received key identifier, a memory address, and a data payload.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2018
From: AVANZI, ROBERTO; LASKO, DARREN
To: QUALCOMM INCORPORATED
Reel/Frame 047840/0319 →
Continuity (1)
Related Publication 20200042746A1 · Feb 6, 2020