# US 11,451,517 B2 · Secure and auditable proxy technology using trusted execution environments

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

- Number: US 11,451,517 B2
- Document ID: US11451517B2
- Status: Granted
- Kind: B2
- Application number: 16/884,071
- Filed: 2020-05-27
- Published: 2021-12-02
- Granted: 2022-09-20
- Earliest claimed: 2020-05-27
- Assignees: NEC Corporation
- Applicants: NEC Laboratories Europe GmbH
- Inventors: Claudio Soriente; Hien Truong
- Web page: https://patentgrep.com/patent/US11451517B2

## CPC

- H04L 63/0281: {Proxies}
- G06F 21/53: by executing in a restricted environment, e.g. sandbox or secure virtual machine
- H04L 9/0877: {using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]}
- H04L 9/0897: {involving additional devices, e.g. trusted platform module [TPM], smartcard or USB}
- H04L 9/3234: {involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token (network architectures or network communication protocols for supporting authentication of entities using an additional device in a packet data network H04L63/0853)}
- H04L 9/3247: {involving digital signatures}
- H04L 63/0442: {wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption (cryptographic mechanisms or cryptographic arrangements for public-key encryption H04L9/30)}
- H04L 63/18: {using different networks or channels, e.g. using out of band channels (cryptographic mechanisms or cryptographic arrangements for key distribution involving distinctive intermediate devices or communication paths H04L9/0827; cryptographic mechanisms or cryptographic arrangements for authentication using a plurality of channels H04L9/3215)}
- H04L 63/126: {the source of the received data}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for secure proxying using trusted execution environment (TEE) technology includes performing, using a TEE running on a proxy, an attestation with a TEE running on a client. The TEE running on the proxy receives from the TEE running on the client a request to fetch data from a remote server. The TEE running on the proxy fetches the data specified in the request from the remote server. The TEE running on the proxy forwards to the TEE running on the client the data fetched from the remote server.

## Claims

### Claim 1

A method for secure proxying using trusted execution environment (TEE) technology, the method comprising:
performing, using a TEE running on a proxy, an attestation with a TEE running on a client;
receiving, at the TEE running on the proxy from the TEE running on the client, a request to fetch data from a remote server;
fetching, by the TEE running on the proxy, the data specified in the request from the remote server; and
forwarding, by the TEE running on the proxy to the TEE running on the client, the data fetched from the remote server, wherein:
the request includes a public key of the client generated through initialization of the TEE on the client, the method further comprising receiving, by the TEE running on the proxy, the public key of the client and logging the public key together with information about the request to fetch data in the TEE running on the proxy, and/or
the request is signed by the TEE running on the client to provide a signature using a private key generated through initialization of the TEE on the client, the method further comprising verifying the signature using a public key generated through initialization of the TEE on the client and included in the request to fetch the data.

### Claim 2 (depends on 1)

The method according to claim 1, wherein the request to fetch the data includes a Uniform Resource Locator (URL) of the data to be fetched, and wherein the TEE running on the proxy does not reveal an Internet Protocol (IP) address of the client to the remote server.

### Claim 3 (depends on 2)

The method according to claim 2, wherein the information logged in the TEE running on the proxy includes the IP address of the client.

### Claim 4 (depends on 3)

The method according to claim 3, wherein the information logged in the TEE running on the proxy includes information about the signature.

### Claim 5 (depends on 3)

The method according to claim 3, wherein the request to fetch the data includes the URL, and wherein the information logged in the TEE running on the proxy further includes the URL.

### Claim 6 (depends on 1)

The method according to claim 1, wherein communications between the TEE running on the proxy and the TEE running on the client take place over a secure channel established by the attestation using a shared secret generated based on successful attestation.

### Claim 7 (depends on 1)

The method according to claim 1, wherein the request includes the public key of the client generated through initialization of the TEE on the client, the method further comprising receiving, by the TEE running on the proxy, the public key of the client and logging the public key together with information about the request to fetch data in the TEE running on the proxy.

### Claim 8 (depends on 1)

The method according to claim 1, wherein the request is signed by the TEE running on the client using the private key generated through initialization of the TEE on the client, the method further comprising verifying the signature using the public key generated through initialization of the TEE on the client and included in the request to fetch the data.

### Claim 9 (depends on 1)

The method according to claim 1, wherein the request includes the public key of the client generated through initialization of the TEE on the client, and wherein the request is signed by the TEE running on the client using the private key generated through initialization of the TEE on the client, the method further comprising:
receiving, by the TEE running on the proxy, the public key of the client and logging the public key together with information about the request to fetch data in the TEE running on the proxy, and
verifying the signature using the public key generated through initialization of the TEE on the client and included in the request to fetch the data.

### Claim 10

A proxy comprising memory and one or more processors which, alone or in combination, are configured to provide for execution of a method using a trusted execution environment (TEE) running on the proxy, the method comprising:
performing an attestation with a TEE running on a client;
receiving, from the TEE running on the client, a request to fetch data from a remote server;
fetching the data specified in the request from the remote server; and
forwarding, to the TEE running on the client, the data fetched from the remote server, wherein:
the request includes a public key of the client generated through initialization of the TEE on the client, the method further comprising receiving, by the TEE running on the proxy, the public key of the client and logging the public key together with information about the request to fetch data in the TEE running on the proxy, and/or
the request is signed by the TEE running on the client to provide a signature using a private key generated through initialization of the TEE on the client, the method further comprising verifying the signature using a public key generated through initialization of the TEE on the client and included in the request to fetch the data.

### Claim 11 (depends on 10)

The proxy according to claim 10, wherein the request to fetch the data includes a Uniform Resource Locator (URL) of the data to be fetched, and wherein the TEE running on the proxy is further configured to fetch the data without revealing an Internet Protocol (IP) address of the client to the remote server.

### Claim 12 (depends on 11)

The proxy according to claim 11, wherein the information logged in the TEE running on the proxy includes the IP address of the client.

### Claim 13 (depends on 10)

The proxy according to claim 10, wherein the proxy is further configured using the TEE to check a policy to determine whether the request to fetch the data is restricted.

### Claim 14 (depends on 10)

The proxy according to claim 10, wherein the request includes the public key of the client generated through initialization of the TEE on the client, the method further comprising receiving, by the TEE running on the proxy, the public key of the client and logging the public key together with information about the request to fetch data in the TEE running on the proxy.

### Claim 15 (depends on 10)

The proxy according to claim 10, wherein the request is signed by the TEE running on the client using the private key generated through initialization of the TEE on the client, the method further comprising verifying the signature using the public key generated through initialization of the TEE on the client and included in the request to fetch the data.

### Claim 16 (depends on 10)

The proxy according to claim 10, wherein the request includes the public key of the client generated through initialization of the TEE on the client, and wherein the request is signed by the TEE running on the client using the private key generated through initialization of the TEE on the client, the method further comprising:
receiving, by the TEE running on the proxy, the public key of the client and logging the public key together with information about the request to fetch data in the TEE running on the proxy, and
verifying the signature using the public key generated through initialization of the TEE on the client and included in the request to fetch the data.

### Claim 17 (depends on 10)

The proxy according to claim 10, wherein the information logged in the TEE running on the proxy includes the URL.

### Claim 18 (depends on 10)

The proxy according to claim 10, wherein the information logged in the TEE running on the proxy includes information about the signature.

### Claim 19

A client comprising memory and one or more processors which, alone or in combination, are configured to provide for execution of the following steps using a trusted execution environment (TEE) running on the client:
performing an attestation with a TEE running on a proxy;
creating and signing a request to fetch data from a remote server;
sending the request to fetch data to the TEE running on the proxy; and
receiving the data specified in the request from the remote server via the TEE running on the proxy,
wherein the request to fetch the data is signed using a private key generated through initialization of the TEE on the client, wherein a public key which serves as an identity of the client is generated through initialization of the TEE on the client and is sent to the TEE running on the proxy with the request to fetch the data, the private key and the public key each being stored in the TEE running on the client, and wherein the request to fetch the data is sent to the TEE running on the proxy over a secure channel established based on successful attestation using a shared secret.

### Claim 20 (depends on 1)

A tangible, non-transitory computer-readable medium having instructions thereon which, upon being executed by one or more processors, alone or in combination, provide for execution of the method of claim 1.
