# US 10,372,628 B2 · Cross-domain security in cryptographically partitioned cloud

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,628 B2
- Document ID: US10372628B2
- Status: Granted
- Kind: B2
- Application number: 15/720,521
- Filed: 2017-09-29
- Published: 2019-04-04
- Granted: 2019-08-06
- Earliest claimed: 2017-09-29
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Siddhartha Chhabra; David M. Durham
- Web page: https://patentgrep.com/patent/US10372628B2

## CPC

- G06F 12/1408: {by using cryptography (for digital transmission H04L9/00)}
- G06F 12/0811: with multilevel cache hierarchies
- G06F 12/1441: {for a range}
- G06F 12/1466: {Key-lock mechanism}
- H04L 9/0894: {Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage}
- H04L 9/14: using a plurality of keys or algorithms
- G06F 2212/1052: Security improvement
- G06F 2212/60: Details of cache memory
- G06F 2212/62: Details of cache specific to multiprocessor cache arrangements
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Solutions for secure memory access in a computing platform, include a multi-key encryption (MKE) engine as part of the memory interface between processor core(s) and memory of a computing platform. The processor core(s) perform workloads, each utilizing allocated portions of memory. The MKE engine performs key-based cryptography operations on data to isolate portions of the memory from workloads to which those portions of the memory are not allocated. A key-mapping data store is accessible to the MKE engine and contains associations between identifiers of portions of the memory, and corresponding key identification data from which cryptographic keys are obtained. A key tracking log is maintained by the MKE engine, and the MKE engine temporarily stores entries in the key tracking log containing the identifiers of the portions of the memory and key identification data for those portions of memory during memory-access operations of those portions of memory.

## Claims

### Claim 1

Apparatus for secure memory access in a computing platform, the apparatus comprising:
computing hardware, including at least one processor core, memory, and a memory interface communicatively coupling the at least one processor core, wherein the at least one processor core is to perform a plurality of workloads, each workload utilizing allocated portions of memory, and wherein the memory interface includes a multi-key encryption (MKE) engine;
a storage medium containing a key-mapping data store accessible to the MKE engine, containing associations between identifiers of portions of the memory and corresponding key identification data; and
a storage medium containing a key tracking log accessible to the MKE engine;
wherein the MKE engine is to:
perform key-based cryptography operations on data to be read from, or written to, the memory to isolate certain ones of the portions of the memory from workloads to which those portions of the memory are not allocated;
determine cryptographic keys for the cryptography operations based on the key-mapping data store; and
temporarily store entries in the key tracking log containing the identifiers of the portions of the memory and the corresponding key identification data for those portions of memory during memory-access operations of those portions of memory.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the MKE engine is to:
store, in the key tracking log, a first entry representing a first memory portion identifier and a corresponding first key identifier in response to a read operation calling for reading of a first portion of memory corresponding to the first memory portion identifier; and
in response to a subsequent write operation calling for writing to the first portion of memory, read the first entry from the key tracking log to retrieve the first key identifier, and apply a first cryptographic key corresponding to the first key identifier to encrypt data to be written to the first portion of memory prior to writing of that data.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the MKE engine and the key tracking log are each communicatively isolated from access by the at least one processor core.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the MKE engine includes a data store, and wherein the key tracking log is contained in the data store of the MKE engine.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the key-mapping data store is contained in the memory.

### Claim 6 (depends on 1)

The apparatus of claim 1, further comprising:
a key lookup data store containing a set of cryptographic keys, each of the cryptographic keys associated with a key identifier of the key identification data contained in the key-mapping data store.

### Claim 7 (depends on 6)

The apparatus of claim 6, wherein the key lookup data store is contained in the memory, and wherein each of the cryptographic keys in the key lookup data store is encrypted such that only the MKE engine is able to recover the cryptographic keys.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein the MKE engine is to receive a command from the at least one processor core to remove an entry from the key tracking log.

### Claim 9 (depends on 1)

The apparatus of claim 1, wherein the MKE engine is to store a copy of a last level cache (LLC) of the at least one processor core.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein a unique salt value is associated with each workload and stored in a processor-core-managed data store, and wherein a copy of each unique salt value associated with each workload is stored in a MKE engine-managed data store, and wherein each unique salt value is associated with allocated portions of memory corresponding to each respective workload; and
wherein in response to a read operation by a first workload to retrieve a first set of data from the memory, the MKE engine is to combine the first set of data with an associated first salt value from the MKE engine-managed data store to produce a first salted value prior to passing the first salted data to the at least one processor on which the first workload is executed.

### Claim 11 (depends on 10)

The apparatus of claim 10, wherein the MKE engine-managed data store and the processor-core-managed data store are each contained within the memory.

### Claim 12 (depends on 10)

The apparatus of claim 10, wherein the at least one processor core, in response to receiving first salted data in response to a read operation, is to combine the first salted data with an associated salt value from the processor-core-managed data store to recover the first set of data.

### Claim 13

A method for secure memory access in a computing platform, the method comprising:
executing, by at least one processor core of the computing platform, a plurality of workloads, each workload utilizing allocated portions of memory; and
performing key-based cryptography by a multi-key encryption (MKE) engine, including performing operations on data to be read from, or written to, portions of the memory to isolate certain ones of the portions of the memory from workloads to which those portions of the memory are not allocated;
maintaining a key-mapping data store accessible to the MKE engine and containing associations between identifiers of portions of the memory, and corresponding key identification data from which the MKE engine determines cryptographic keys with which to perform the cryptographic isolation; and
maintaining, by the MKE engine, a key tracking log, wherein the MKE engine is to temporarily store entries in the key tracking log containing the identifiers of the portions of the memory and the corresponding key identification data for those portions of memory during memory-access operations of those portions of memory.

### Claim 14 (depends on 13)

The method of claim 13, wherein the MKE engine performs:
storing, in the key tracking log, a first entry representing a first memory portion identifier and a corresponding first key identifier in response to a read operation calling for reading of a first portion of memory corresponding to the first memory portion identifier; and
in response to a subsequent write operation calling for writing to the first portion of memory, reading the first entry from the key tracking log to retrieve the first key identifier, and applying a first cryptographic key corresponding to the first key identifier to encrypt data to be written to the first portion of memory prior to writing of that data.

### Claim 15 (depends on 13)

The method of claim 13, wherein a unique salt value is associated with each workload and stored in a processor-core-managed data store, and wherein a copy of each unique salt value associated with each workload is stored in a MKE engine-managed data store, and wherein each unique salt value is associated with allocated portions of memory corresponding to each respective workload; and
wherein in response to a read operation by a first workload to retrieve a first set of data from the memory, the MKE engine combines the first set of data with an associated first salt value from the MKE engine-managed data store to produce a first salted value prior to passing the first salted data to the at least one processor on which the first workload is executed.

### Claim 16 (depends on 15)

The method of claim 15, wherein the at least one processor core, in response to receiving first salted data in response to a read operation, combines the first salted data with an associated salt value from the processor-core-managed data store to recover the first set of data.

### Claim 17

At least one non-transitory machine-readable medium containing instructions that, when executed by a computing platform, cause the computing platform to:
perform, by at least one processor core of the computing platform, a plurality of workloads, each workload utilizing allocated portions of memory; and
perform key-based cryptography, by a multi-key encryption (MKE) engine, including operations on data to be read from, or written to, portions of the memory to isolate certain ones of the portions of the memory from workloads to which those portions of the memory are not allocated;
maintain a key-mapping data store that is accessible to the MKE engine and contains associations between identifiers of portions of the memory, and corresponding key identification data from which cryptographic keys are determined by the MKE engine to perform the cryptographic isolation; and
maintain, by the MKE engine, a key tracking log, and cause the MKE engine to temporarily store entries in the key tracking log containing the identifiers of the portions of the memory and the corresponding key identification data for those portions of memory during memory-access operations of those portions of memory.

### Claim 18 (depends on 17)

The at least one machine-readable medium of claim 17, wherein the instructions are to cause the MKE engine of the computing platform to:
store, in the key tracking log, a first entry representing a first memory portion identifier and a corresponding first key identifier in response to a read operation calling for reading of a first portion of memory corresponding to the first memory portion identifier; and
in response to a subsequent write operation calling for writing to the first portion of memory, read the first entry from the key tracking log to retrieve the first key identifier, and apply a first cryptographic key corresponding to the first key identifier to encrypt data to be written to the first portion of memory prior to writing of that data.

### Claim 19 (depends on 17)

The at least one machine-readable medium of claim 17, wherein the key-mapping data store is contained in the memory.

### Claim 20 (depends on 17)

The at least one machine-readable medium of claim 17, wherein the instructions are to cause the MKE engine to:
maintain a key lookup data store containing a set of cryptographic keys, each of the cryptographic keys associated with a key identifier of the key identification data contained in the key-mapping data store.

### Claim 21 (depends on 20)

The at least one machine-readable medium of claim 20, wherein the key lookup data store is to be contained in the memory, and wherein each of the cryptographic keys in the key lookup data store is to be encrypted such that only the MKE engine is able to recover the cryptographic keys.

### Claim 22 (depends on 17)

The at least one machine-readable medium of claim 17, wherein according to the instructions, the MKE engine receives and processes a command from the at least one processor core to remove an entry from the key tracking log.

### Claim 23 (depends on 17)

The at least one machine-readable medium of claim 17, wherein according to the instructions, the MKE engine stores a copy of a last level cache (LLC) of the at least one processor core.

### Claim 24 (depends on 17)

The at least one machine-readable medium of claim 17, wherein the instructions are to cause the computing platform to associate a unique salt value with each workload and stored in a processor-core-managed data store, wherein a copy of each unique salt value associated with each workload is stored in a MKE engine-managed data store, and wherein each unique salt value is associated with allocated portions of memory corresponding to each respective workload; and
in response to a read operation by a first workload to retrieve a first set of data from the memory, the MKE engine is to combine the first set of data with an associated first salt value from the MKE engine-managed data store to produce a first salted value prior to passing the first salted data to the at least one processor on which the first workload is executed.

### Claim 25 (depends on 24)

The at least one machine-readable medium of claim 24, wherein the instructions are to cause the at least one processor core of the computing platform, in response to receiving first salted data in response to a read operation, to combine the first salted data with an associated salt value from the processor-core-managed data store to recover the first set of data.
