# US 11,308,203 B2 · Side-channel protection

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

- Number: US 11,308,203 B2
- Document ID: US11308203B2
- Status: Granted
- Kind: B2
- Application number: 16/246,434
- Filed: 2019-01-11
- Published: 2020-07-16
- Granted: 2022-04-19
- Earliest claimed: 2019-01-11
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Alexander Shamis; Sylvan Wesley Clebsch; Felix Schuster
- Web page: https://patentgrep.com/patent/US11308203B2

## CPC

- G06F 21/53: by executing in a restricted environment, e.g. sandbox or secure virtual machine
- G06F 21/74: operating in dual or compartmented mode, i.e. at least one secure mode
- G06F 9/5061: {Partitioning or combining of resources}
- G06F 9/544: {Buffers; Shared memory; Pipes}
- G06F 12/10: Address translation
- G06F 21/556: {involving covert channels, i.e. data leakage between processes (inhibiting the analysis of circuitry or operation with measures against power attack G06F21/755)}
- G06F 21/57: Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F 21/75: by inhibiting the analysis of circuitry or operation
- G06F 2212/1052: Security improvement
- G06F 2212/657: Virtual address space management
- G06F 2221/034: Test or assess a computer or a system
- G06F 2221/2149: Restricted operating environment
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In various examples there is a computing device in communication with at least one other computing device via a communications network. The computing device has a memory and a central processing unit having a trusted execution environment comprising trusted regions of the memory. The computing device has an operating system configured to create a memory mapping between a virtual address space of the memory and a memory of the at least one other computing device and to provide details of the memory mapping to the trusted execution environment. The trusted execution environment is configured to execute an application which is able to communicate with the other computing device directly using the memory mapping provided by the operating system.

## Claims

### Claim 1

A computing device in communication with at least one other computing device via a communications network, the computing device comprising:
a memory;
a central processing unit having a trusted execution environment comprising trusted regions of the memory;
an operating system configured to create a memory mapping between a virtual address space of the memory and a memory of the at least one other computing device and to provide details of the memory mapping to the trusted execution environment;
the trusted execution environment configured to execute an application which is able to communicate with the other computing device directly using the memory mapping provided by the operating system; and
wherein the application is configured to flush sensitive data from micro architectural components of the computing device when the application stops executing sensitive code.

### Claim 2 (depends on 1)

The computing device of claim 1 wherein the operating system is configured to create the memory mapping between a virtual address space of untrusted regions of the memory and the memory of the at least one other computing device.

### Claim 3 (depends on 1)

The computing device of claim 1 wherein the operating system is configured to create the memory mapping via any one or more of: a network interface card, a graphics card.

### Claim 4 (depends on 1)

The computing device of claim 1 wherein the application is configured to use the memory mapping in a kernel bypass process or a user-space device driver process.

### Claim 5 (depends on 1)

The computing device of claim 1 wherein the operating system is configured to create the memory mapping when it receives a request to do so from an application in the trusted execution environment.

### Claim 6 (depends on 1)

The computing device of claim 1 wherein the computing device has a plurality of processing cores, and wherein an application executing in the trusted execution environment is configured to only proceed to execute sensitive code when it has evidence that it controls of all of the processing cores which are active.

### Claim 7 (depends on 6)

The computing device of claim 6 wherein the trusted execution environment comprises a hardware enclave configured to send a message to the application when all the processing cores are within the trusted execution environment.

### Claim 8 (depends on 6)

The computing device of claim 6 wherein the trusted execution environment comprises a hardware enclave configured to send a message to the application when one of the processing cores is about to leave the trusted execution environment.

### Claim 9 (depends on 6)

The computing device of claim 6 wherein the application executing in the trusted execution environment has knowledge of an expected number of the processing cores expected to be within the trusted execution environment during execution of the sensitive code.

### Claim 10 (depends on 9)

The computing device of claim 9 wherein the application is configured to compare the expected number of the processing cores with information received from the trusted execution environment and to execute the sensitive code when the expected number of processing cores matches the information received from the trusted execution environment.

### Claim 11 (depends on 6)

The computing device of claim 6 wherein the application executing in the trusted execution environment is configured to stop executing the sensitive code when it receives a message from the trusted execution environment indicating that one of the cores is about to leave the trusted execution environment.

### Claim 12 (depends on 6)

The computing device of claim 6 wherein the application executing in the trusted execution environment is configured to terminate any process executing on a core outside the trusted execution environment.

### Claim 13 (depends on 6)

The computing device of claim 6 wherein the application executing in the trusted execution environment is configured to flush sensitive data from micro architectural components of the computing device before beginning execution of the sensitive code.

### Claim 14 (depends on 6)

The computing device of claim 6 wherein the sensitive data is flushed when the sensitive code has decided that it is safe to execute.

### Claim 15

A method performed by a computing device in communication with at least one other computing device via a communications network, the method comprising:
using an operating system to create a memory mapping between a virtual address space of a memory of the computing device and a memory of the at least one other computing device; and to
providing details of the memory mapping to a trusted execution environment at a central processing unit of the computing device, the trusted execution environment comprising trusted regions of the memory;
executing an application in the trusted execution environment, the application communicating with the other computing device directly using the memory mapping provided by the operating system; and
wherein the application is configured to flush sensitive data from micro architectural components of the computing device when the application stops executing the sensitive code.

### Claim 16 (depends on 15)

The method of claim 15 comprising only proceeding to execute sensitive code of the application when the trusted execution environment or the application controls of all of the processing cores which are active.

### Claim 17 (depends on 15)

The method of claim 15 comprising using a hardware enclave of the trusted execution environment to send a message to the application when all the processing cores are within the trusted execution environment, or when one of the processing cores is about to leave the trusted execution environment.

### Claim 18 (depends on 15)

The method of claim 15 comprising using knowledge of an expected number of the processing cores expected to be within the trusted execution environment during execution of sensitive code of the application.

### Claim 19

An operating system of a computing device in communication with at least one other computing device via a communications network, the operating system causing one or more processors to perform the following operations:
create a memory mapping between a virtual address space of a memory of the computing device and a memory of the at least one other computing device;
provide details of the memory mapping to a trusted execution environment of the computing device such that an application executing in the trusted execution environment is able to communicate with the other computing device directly using the memory mapping; and
wherein the application is configured to flush sensitive data from micro architectural components of the computing device when the application stops executing the sensitive code.

### Claim 20 (depends on 19)

The operating of claim 19, wherein the operating system further causes the one or more processors to create the memory mapping between a virtual address space of untrusted regions of the memory and the memory of the at least one other computing device.
