IP Library Granted Patent US 10,230,529
Granted Patent B2
US 10,230,529 · App. 14/865,570 · Granted Mar 12, 2019

Techniques to secure computation data in a computing environment

Inventors: Manuel Costa (Cambridge, GB); Orion Tamlin Hodson (Cambridge, GB); Sriram Kottarakurichi Rajamani (Bangalore, IN); Marcus Peinado (Bellevue, WA); Mark Eugene Russinovich (Hunts Point, WA); Kapil Vaswani (London, GB)
Assignee: MICROSFT TECHNOLOGY LICENSING, LLC
H04L9/3247G06F9/5072G06F21/606G06F21/62G06F21/6236H04L63/06H04L63/08H04L63/12
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 10,230,529
App. No.
14/865,570
Granted
Mar 12, 2019
Kind
B2
Abstract

Techniques to secure computation data in a computing environment from untrusted code. These techniques involve an isolated environment within the computing environment and an application programming interface (API) component to execute a key exchange protocol that ensures data integrity and data confidentiality for data communicated out of the isolated environment. The isolated environment includes an isolated memory region to store a code package. The key exchange protocol further involves a verification process for the code package stored in the isolated environment to determine whether the one or more exchanged encryption keys have been compromised. If the signature successfully authenticates the one or more keys, a secure communication channel is established to the isolated environment and access to the code package's functionality is enabled. Other embodiments are described and claimed.

Claims (30)

1. An apparatus, comprising:

a logic circuit; and

logic operative on the logic circuit to generate computation data corresponding to execution of a set of computations within an isolated memory region of a computing environment, to secure the computation data using an encryption key to generate secured computation data, to secure the encryption key using a public key associated with code running outside of the isolated memory region, and to invoke a primitive of a primitive programming model to communicate the secured computation data and the secured encryption key to the code running outside of the isolated memory region, wherein the code running outside of the isolated memory distributes parallel processing jobs on the secured computation data, and the primitive programming model configures the isolated memory region with a secure communication channel to the code running outside of the isolated memory region.

2. The apparatus of claim 1 , wherein the logic is further operative to process a signature of the secured computation data generated using a private key that is associated with the computing environment and invoke a primitive to communicate the secured computation data and the signature to a remote trusted component.

3. The apparatus of claim 1 , wherein the logic is further operative to invoke a primitive function to generate the encryption key and another primitive function to generate a signature using the encryption key.

4. The apparatus of claim 1 , wherein the logic is further operative to secure the encryption key with a public key that corresponds to a remote trusted component running on a remote machine.

5. The apparatus of claim 1 , wherein the logic is further configured to generate a cryptographic digest of a code package on a distributed file system and use the cryptographic digest to verify a signature of the secured encryption key.

6. The apparatus of claim 1 , wherein the logic is further operative to decrypt secured user keys using the encryption key to extract user keys and use the user keys to decrypt secret code in the isolated memory region.

7. The apparatus of claim 1 , wherein the logic is further operative to process a communication primitive operative to invoke a function on untrusted code running outside of the isolated memory region or trusted code running inside the isolated memory region.

8. The apparatus of claim 1 , the logic further operative to verify a signature of the secured computation data using a public attestation key and decrypt the secured encryption key to extract the encryption key.

9. An article comprising computer-readable storage hardware comprising instructions that, when executed, cause a system to:

generate computation data corresponding to execution of a set of computations within an isolated memory region of a computing environment;

secure the computation data using an encryption key to generate secured computation data;

secure the encryption key using a public key associated with code running outside of the isolated memory region; and

invoke a primitive of a primitive programming model to communicate the secured computation data and the secured encryption key to the code running outside of the isolated memory region, wherein the code running outside of the isolated memory distributes parallel processing jobs on the secured computation data, and the primitive programming model configures the isolated memory region with a secure communication channel to the code running outside of the isolated memory region.

10. The article of claim 9 further comprising instructions that, when executed, cause the system to process a signature of the secured computation data generated using a private key that is associated with the computing environment and invoke a primitive to communicate the secured computation data and the signature to a remote trusted component.

11. The article of claim 9 further comprising instructions that, when executed, cause the system to invoke a primitive function to generate the encryption key and another primitive function to generate a signature using the encryption key.

12. The article of claim 9 further comprising instructions that, when executed, cause the system to secure the encryption key with a public key that corresponds to a remote trusted component running on a remote machine.

13. The article of claim 12 , wherein the public key is communicated with the article.

14. The article of claim 13 , further comprising instructions that, when executed, cause the system to decrypt secured user keys using the encryption key to extract user keys and use the user keys to decrypt secret code in the isolated memory region.

15. A method, comprising:

generating computation data corresponding to execution of a set of computations within an isolated memory region of a computing environment;

securing the computation data using an encryption key to generate secured computation data,

securing the encryption key using a public key associated with code running outside of the isolated memory region; and

invoking a primitive of a primitive programming model to communicate the secured computation data and the secured encryption key to the code running outside of the isolated memory region, wherein the code running outside of the isolated memory distributes parallel processing jobs on the secured computation data, and the primitive programming model configures the isolated memory region with a secure communication channel to the code running outside of the isolated memory region.

16. The method of claim 15 further comprising processing a signature of the secured computation data generated using a private key that is associated with the computing environment and invoke a primitive to communicate the secured computation data and the signature to a remote trusted component.

17. The method of claim 15 further comprising invoking a primitive function to generate the encryption key and another primitive function to generate a signature using the encryption key.

18. The method of claim 15 further comprising securing the encryption key with a public key that corresponds to a remote trusted component running on a remote machine.

19. The method of claim 18 further comprising loading an encrypted code package into the isolated memory region.

20. The method of claim 15 further comprising decrypting secured user keys using the encryption key to extract user keys and using the user keys to decrypt secret code in the isolated memory region.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2015
From: COSTA, MANUEL; HODSON, ORION TAMLIN; PEINADO, MARCUS; RAJAMANI, SRIRAM KOTTARAKURICHI; RUSSINOVICH, MARK EUGENE; VASWANI, KAPIL
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036658/0376 →
Priority Claims (1)
IN 3995/CHE/2015 · Jul 31, 2015 · national
Continuity (1)
Related Publication 20170033930A1 · Feb 2, 2017
Cited By (6)
US 12,375,291 US 12,572,679 US 12,574,216 US 12,621,289 US 12,701,112 US 12,712,709