IP Library › Granted Patent US 11,544,372
Granted Patent B2
US 11,544,372 · App. 17/046,039 · Granted Jan 3, 2023

Mutually distrusting enclaves

Inventors: Nicolas Lidzborski (Belmont, CA); Jonathon Giffin (Mountain View, CA)
Assignee: Google LLC
G06F21/53G06F9/547H04L9/0618H04L9/083H04L9/0894H04L63/029H04L63/0442G06F2221/031
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,544,372
App. No.
17/046,039
Granted
Jan 3, 2023
Kind
B2
Abstract

A method ( 400 ) for accessing one or more service processes ( 222 ) of service ( 250 ) includes executing at least one service enclave ( 220 ) and executing an enclave sandbox ( 200 ) that wraps the at least one service enclave. The at least one service enclave provides an interface to the one or more service processes. The enclave sandbox is configured to establish an encrypted communication tunnel ( 210 ) to the at least one service enclave interfacing with the one or more service processes, and communicate program calls ( 302 ) to/from the one or more service processes as encrypted communications through the encrypted communication tunnel.

Claims (94)

1. A method for accessing one or more service processes of a service, the method comprising:

executing, by data processing hardware, at least one service enclave, the at least one service enclave providing a first interface to the one or more service processes; and

executing, by the data processing hardware, an enclave sandbox that wraps the at least one service enclave, the enclave sandbox configured to:

provide a second interface to a client device via a network, the client device and the network external to the enclave sandbox;

communicate program calls to/from the client device via the second interface;

establish an encrypted communication tunnel between the second interface and the first interface of the at least one service enclave interfacing with the one or more service processes; and

communicate the program calls to/from the one or more service processes as encrypted communications through the encrypted communication tunnel.

2. The method of claim 1 , further comprising:

receiving, at the data processing hardware, via the second interface, a program call from the client device to the one or more service processes, the program call comprising cleartext;

encrypting, by the data processing hardware, the cleartext as ciphertext using an encryption key; and

communicating, by the data processing hardware, via the first interface, the ciphertext though the encrypted communication tunnel to the one or more service processes,

wherein the at least one service enclave is configured to obtain a decryption key from a key manager for decrypting the ciphertext back to the cleartext after successful attestation to the key manager.

3. The method of claim 2 , further comprising, after encrypting the cleartext as ciphertext at the enclave sandbox, storing, by the data processing hardware, the encryption key in the key manager, the encryption key associated with the decryption key obtained by the at least one service enclave for decrypting the ciphertext back to the cleartext.

4. The method of claim 2 , wherein receiving the program call from the client device to the one or more service processes comprises receiving one of a get data call or a put data call from a client process interfacing with the enclave sandbox, the client process executing on the client device.

5. The method of claim 1 , further comprising:

receiving, at the data processing hardware, via the first interface, a program call from the one or more service processes interfacing with the at least one service enclave through the encrypted communication tunnel, the program call comprising ciphertext;

obtaining, by the data processing hardware, a decryption key from a key manager for decrypting the ciphertext to cleartext after successful attestation to the key manager; and

communicating, by the data processing hardware, via the second interface, the cleartext to a client process interfacing with the enclave sandbox, the client process executing on the client device.

6. The method of claim 5 , wherein the at least one service enclave is configured to:

receive the program call from the one or more service processes through the first interface, the program call comprising cleartext;

encrypt the cleartext into the ciphertext using an encryption key; and

communicate the ciphertext through the encrypted communication tunnel to the enclave sandbox.

7. The method of claim 5 , wherein receiving the program call from the one or more service processes comprises receiving, via the first interface, a return data call from the one or more service processes, the return data call comprising a data object requested by the client process.

8. The method of claim 1 , wherein the encrypted communication tunnel extends through the enclave sandbox between an input end at the first interface to the one or more service processes, and an output end at the second interface provided by the enclave sandbox interfacing with a client process.

9. The method of claim 1 , wherein the program calls communicated to/from the one or more service processes by the enclave sandbox comprise remote procedure calls.

10. The method of claim 1 , wherein the at least one service enclave is unavailable for remote attestation by a client process interfacing with the enclave sandbox.

11. A method for accessing a service process, the method comprising:

executing, by data processing hardware, an inner enclave that provides a first interface to the service process of a software application;

executing, by the data processing hardware, an outer enclave that wraps the inner enclave and provides a second interface to communicate program calls to/from a client device via a network, the client device and the network external to the outer enclave;

establishing, by the data processing hardware, an encrypted communication tunnel through the outer enclave to the inner enclave interfacing with the service process, the encrypted communication tunnel extending between the first and second interfaces; and

communicating, by the data processing hardware, the program calls to/from the service process as encrypted communications through the encrypted communication tunnel.

12. The method of claim 11 , further comprising:

receiving, at the data processing hardware, via the second interface, a program call to the service process, the program call comprising cleartext issued by a client process interfacing with the outer enclave via the second interface through the network;

encrypting, by the data processing hardware, the cleartext as ciphertext using an encryption key; and

communicating, by the data processing hardware, via the first interface, the ciphertext though the encrypted communication tunnel to the service process,

wherein the inner enclave is configured to obtain a decryption key from a key manager for decrypting the ciphertext back to the cleartext after successful attestation to the key manager.

13. The method of claim 11 , further comprising:

receiving, at the data processing hardware, via the first interface, a program call from the inner enclave through the encrypted communication tunnel, the program call comprising ciphertext;

obtaining, by the data processing hardware, a decryption key from a key manager for decrypting the ciphertext to cleartext after successful attestation to the key manager; and

communicating, by the data processing hardware, via the second interface, the cleartext to a client process interfacing with an enclave sandbox through the network.

14. The method of claim 13 , wherein the inner enclave is configured to:

receive the program call issued by the service process, the program call comprising cleartext;

encrypt the cleartext into the ciphertext using an encryption key; and

communicate the ciphertext though the encrypted communication tunnel to the outer enclave.

15. The method of claim 11 , wherein the program calls communicated to/from the service process comprise remote procedure calls.

16. A system for accessing one or more service processes of a service, the system comprising:

data processing hardware; and

memory hardware in communication with the data processing hardware, the memory hardware storing instructions that, when executed by the data processing hardware, cause the data processing hardware to perform operations comprising:

executing at least one service enclave, the at least one service enclave providing a first interface to the one or more service processes; and

executing an enclave sandbox that wraps the at least one service enclave, the enclave sandbox configured to:

provide a second interface to a client device via a network, the client device and the network external to the enclave sandbox;

communicate program calls to/from the client device via the second interface;

establish an encrypted communication tunnel between the second interface and the first interface of the at least one service enclave interfacing with the one or more service processes; and

communicate the program calls to/from the one or more service processes as encrypted communications through the encrypted communication tunnel.

17. The system of claim 16 , wherein the operations further comprise:

receiving, via the second interface, a program call from the client device to the one or more service processes, the program call comprising cleartext;

encrypting the cleartext as ciphertext using an encryption key; and

communicating, via the first interface, the ciphertext though the encrypted communication tunnel to the one or more service processes,

wherein the at least one service enclave is configured to obtain a decryption key from a key manager for decrypting the ciphertext back to the cleartext after successful attestation to the key manager.

18. The system of claim 17 , wherein the operations further comprise, after encrypting the cleartext as the ciphertext at the enclave sandbox, storing the encryption key in the key manager, the encryption key associated with the decryption key obtained by the at least one service enclave for decrypting the ciphertext back to the cleartext.

19. The system of claim 17 , wherein receiving the program call to the one or more service processes comprises receiving one of a get data call or a put data call from a client process interfacing with the enclave sandbox, the client process executing on the client device.

20. The system of claim 16 , wherein the operations further comprise:

receiving, via the first interface, a program call from the one or more service processes interfacing with the at least one service enclave through the encrypted communication tunnel, the program call comprising ciphertext;

obtaining a decryption key from a key manager for decrypting the ciphertext to cleartext after successful attestation to the key manager; and

communicating, via the second interface, the cleartext to a client process interfacing with the enclave sandbox, the client process executing on the client device.

21. The system of claim 20 , wherein the at least one service enclave is configured to:

receive the program call from the one or more service processes through the first interface, the program call comprising cleartext;

encrypt the cleartext into the ciphertext using an encryption key; and

communicate the ciphertext though the encrypted communication tunnel to the enclave sandbox.

22. The system of claim 20 , wherein receiving the program call from the one or more service processes comprises receiving, via the first interface, a return data call from the one or more service processes, the return data call comprising a data object requested by the client process.

23. The system of claim 16 , wherein the encrypted communication tunnel extends through the enclave sandbox between an input end at the first interface to the one or more service processes and an output end at the second interface provided by the enclave sandbox interfacing with a client process.

24. The system of claim 16 , wherein the program calls communicated to/from the one or more service processes by the enclave sandbox comprise remote procedure calls.

25. The system of claim 16 , wherein the at least one service enclave is unavailable for remote attestation by a client process interfacing with the enclave sandbox.

26. A system for accessing a service process, the system comprising:

data processing hardware; and

memory hardware in communication with the data processing hardware, the memory hardware storing instructions that, when executed by the data processing hardware, cause the data processing hardware to perform operations comprising:

executing an inner enclave that provides a first interface to the service process of a software application;

executing an outer enclave that wraps the inner enclave and provides a second interface to communicate program calls to/from a client device via a network, the client device and the network external to the outer enclave;

establishing an encrypted communication tunnel through the outer enclave to the inner enclave interfacing with the service process, the encrypted communication tunnel extending between the first and second interfaces; and

communicating the program calls to/from the service process as encrypted communications through the encrypted communication tunnel.

27. The system of claim 26 , wherein the operations further comprise:

receiving, via the second interface, a program call to the service process, the program call comprising cleartext issued by a client process interfacing with the outer enclave via the second interface through the network;

encrypting the cleartext as ciphertext using an encryption key; and

communicating, via the first interface, the ciphertext though the encrypted communication tunnel to the service process,

wherein the inner enclave is configured to obtain a decryption key from a key manager for decrypting the ciphertext back to the cleartext after successful attestation to the key manager.

28. The system of claim 26 , wherein the operations further comprise:

receiving, via the first interface, a program call from the inner enclave through the encrypted communication tunnel, the program call comprising ciphertext;

obtaining a decryption key from a key manager for decrypting the ciphertext to cleartext after successful attestation to the key manager; and

communicating, via the second interface, the cleartext to a client process interfacing with an enclave sandbox through the network.

29. The system of claim 28 , wherein the inner enclave is configured to:

receive the program call issued by the service process, the program call comprising cleartext;

encrypt the cleartext into the ciphertext using an encryption key; and

communicate the ciphertext though the encrypted communication tunnel to the outer enclave.

30. The system of claim 26 , wherein the program calls communicated to/from the service process comprise remote procedure calls.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 8, 2020
From: LIDZBORSKI, NICOLAS; GIFFIN, JONATHON
To: GOOGLE LLC
Reel/Frame 054024/0076 →
Continuity (1)
Related Publication 20210124823A1 · Apr 29, 2021