IP Library Granted Patent US 10,609,006
Granted Patent B2
US 10,609,006 · App. 15/406,605 · Granted Mar 31, 2020

Self-encrypting key management system

Inventors: Ambuj Kumar (Sunnyvale, CA); Anand Kashyap (Los Altos, CA); Jethro Gideon Beekman (San Francisco, CA); Faisal Faruqui (Fremont, CA)
Assignee: Fortanix, Inc.
H04L63/06G06F21/602H04L9/0822H04L9/0897H04L9/3247H04L63/062
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,609,006
App. No.
15/406,605
Granted
Mar 31, 2020
Kind
B2
Abstract

A cryptographic key may be received or generated at a self-encrypting key management service application where the cryptographic key is received from another application provided on a server associated with the self-encrypting key management service application. The cryptographic key may be stored at a secure enclave corresponding to the self-encrypting key management service application. A request for a performance of a cryptographic operation associated with the cryptographic key may be received from the other application provided on the server. The cryptographic key at the secure enclave corresponding to the self-encrypting key management service application may be retrieved. The cryptographic operation may be performed with the cryptographic key to generate an output that is provided to the other application.

Claims (71)

1. A method comprising:

identifying a cryptographic key at a self-encrypting key management application, the cryptographic key being received from another application provided on a server associated with the self-encrypting key management application or generated by the self-encrypting key management application in response to a request from the other application;

storing the cryptographic key at a secure enclave corresponding to the self-encrypting key management application;

receiving a request from the other application provided on the server for a performance of a cryptographic operation associated with the cryptographic key;

retrieving, by a processing device, the cryptographic key at the secure enclave corresponding to the self-encrypting key management application by:

receiving a request from the self-encrypting key management application for the cryptographic key stored at the secure enclave corresponding to the self-encrypting key management application;

generating a secure enclave key based on an internal key that is internal to the processing device;

retrieving data stored at the secure enclave; and

decrypting, within the processing device, the data with the secure enclave key, the decrypted data comprising the cryptographic key received from the other application;

performing the cryptographic operation with the cryptographic key to generate an output; and

providing the output of the cryptographic operation to the other application.

2. The method of claim 1 , wherein generating the secure enclave key is further based on an identification of the self-encrypting key management application.

3. The method of claim 1 , wherein the secure enclave is a region of a memory that is assigned to the self-encrypting key management application, and wherein data of the self-encrypting key management application stored at the secure enclave is encrypted based on a key that is internal to the processing device.

4. The method of claim 1 , wherein the self-encrypting key management application and the other application are provided on a same server.

5. The method of claim 1 , further comprising:

receiving a request from the other application to provide the cryptographic key to the self-encrypting key management application;

in response to receiving the request, generating a hash value associated with the self-encrypting key management application and a digital signature based on the self-encrypting key management application;

providing a message based on the digital signature and the hash value to the other application; and

establishing a connection between the other application and the self-encrypting key management application in response to an indication that the self-encrypting key management application has been authenticated based on the message.

6. The method of claim 1 , further comprising:

receiving executable code from the other application;

assigning an additional secure enclave for the other application; and

storing the executable code from the other application at the additional secure enclave for the other application, wherein the executable code is retrieved in response to a subsequent request to perform an operation with the cryptographic key and the executable code.

7. A system comprising:

a memory; and

a processing device, operatively coupled with the memory, to:

identify a cryptographic key at a self-encrypting key management application, the cryptographic key being received from another application provided on a server associated with the self-encrypting key management application or generated by the self-encrypting key management application in response to a request from the other application;

store the cryptographic key at a secure enclave corresponding to the self-encrypting key management application;

receive a request from the other application provided on the server for a performance of a cryptographic operation associated with the cryptographic key;

retrieve the cryptographic key at the secure enclave corresponding to the self-encrypting key management application by:

receiving a request from the self-encrypting key management application for the cryptographic key stored at the secure enclave corresponding to the self-encrypting key management application;

generating a secure enclave key based on an internal key that is internal to the processing device;

retrieving data stored at the secure enclave; and

decrypting, within the processing device, the data with the secure enclave key, the decrypted data comprising the cryptographic key received from the other application;

perform the cryptographic operation with the cryptographic key to generate an output; and

provide the output of the cryptographic operation to the other application.

8. The system of claim 7 , wherein generating the secure enclave key is further based on an identification of the self-encrypting key management application.

9. The system of claim 7 , wherein the secure enclave is a region of the memory that is assigned to the self-encrypting key management application, and wherein data of the self-encrypting key management application stored at the secure enclave is encrypted based on a key that is internal to the processing device.

10. The system of claim 7 , wherein the self-encrypting key management application and the other application are provided on a same server.

11. The system of claim 7 , wherein the processing device is further to:

receive a request from the other application to provide the cryptographic key to the self-encrypting key management application;

in response to receiving the request, generate a hash value associated with the self-encrypting key management application and a digital signature based on the self-encrypting key management application;

provide a message based on the digital signature and the hash value to the other application; and

establish a connection between the other application and the self-encrypting key management application in response to an indication that the self-encrypting key management application has been authenticated based on the message.

12. The system of claim 7 , wherein the processing device is further to:

receive a second request to perform a cryptographic operation based on the cryptographic key;

identify a second self-encrypting key management application;

identify a usage of the self-encrypting key management application and a usage of the second self-encrypting key management application; and

transmit the second request to the self-encrypting key management application or the second self-encrypting key management application based on the usages of the self-encrypting key management application and the second self-encrypting key management application.

13. A non-transitory computer readable medium comprising data that, when accessed by a processing device, cause the processing device to perform operations comprising:

identifying a cryptographic key at a self-encrypting key management application, the cryptographic key being received from another application provided on a server associated with the self-encrypting key management application or generated by the self-encrypting key management application in response to a request from the other application;

storing the cryptographic key at a secure enclave corresponding to the self-encrypting key management application;

receiving a request from the other application provided on the server for a performance of a cryptographic operation associated with the cryptographic key;

retrieving, by the processing device, the cryptographic key at the secure enclave corresponding to the self-encrypting key management application by:

receiving a request from the self-encrypting key management application for the cryptographic key stored at the secure enclave corresponding to the self-encrypting key management application;

generating a secure enclave key based on an internal key that is internal to the processing device;

retrieving data stored at the secure enclave; and

decrypting, within the processing device, the data with the secure enclave key, the decrypted data comprising the cryptographic key received from the other application;

performing the cryptographic operation with the cryptographic key to generate an output; and

providing the output of the cryptographic operation to the other application.

14. The non-transitory computer readable medium of claim 13 , wherein generating the secure enclave key is further based on an identification of the self-encrypting key management application.

15. The non-transitory computer readable medium of claim 13 , wherein the secure enclave is a region of a memory that is assigned to the self-encrypting key management application, and wherein data of the self-encrypting key management application stored at the secure enclave is encrypted based on a private key that is internal to the processing device, and wherein the self-encrypting key management application and the other application are provided on a same server.

16. The non-transitory computer readable medium of claim 13 , the operations further comprising:

receiving a request from the other application to provide the cryptographic key to the self-encrypting key management application;

in response to receiving the request, generating a hash value associated with the self-encrypting key management application and a digital signature based on the self-encrypting key management application;

providing a message based on the digital signature and the hash value to the other application; and

establishing a connection between the other application and the self-encrypting key management application in response to an indication that the self-encrypting key management application has been authenticated based on the message.

17. The non-transitory computer readable medium of claim 13 , the operations further comprising:

receiving executable code from the other application;

assigning an additional secure enclave for the other application; and

storing the executable code from the other application at the additional secure enclave for the other application, wherein the executable code is retrieved in response to a subsequent request to perform an operation with the cryptographic key and the executable code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 13, 2017
From: KUMAR, AMBUJ; KASHYAP, ANAND; BEEKMAN, JETHRO GIDEON; FARUQUI, FAISAL
To: FORTANIX, INC.
Reel/Frame 041002/0158 →
Continuity (1)
Related Publication 20180205711A1 · Jul 19, 2018