IP Library Granted Patent US 11,483,150
Granted Patent B2
US 11,483,150 · App. 16/889,285 · Granted Oct 25, 2022

Private key cache in secure enclave

Inventors: Dhanashree Kashid (San Jose, CA); Raghavendran Hanumantharau (Fremont, CA); Terry Chong (Pleasanton, CA); Andrew Stewart Tucker (Redmond, CA); Vadiraj Govardhan Hosur (Santa Clara, CA)
Assignee: salesforce.com, inc.
H04L9/0894G06F21/602G06F21/62H04L9/14G06F2221/2107H04L2209/16
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,483,150
App. No.
16/889,285
Granted
Oct 25, 2022
Kind
B2
Abstract

Disclosed techniques relate to storing a key cache within a secure enclave. In some embodiments, a computing system receives, from an application, a request to access a database, where the request is associated with a particular account. The computing system then accesses, using an identifier associated with the particular account, a key cache stored in a secure enclave of a memory of the computing system to determine at least one private key associated with the request, where the key cache stores private keys of a key management system (KMS) for a plurality of accounts. The computing system performs a cryptographic operation for accessing the database within the secure enclave using the at least one private key. In various embodiments, disclosed techniques may improve the security of cryptographic private keys cached for a plurality of tenants.

Claims (56)

1. A non-transitory computer-readable medium having instructions stored thereon that are capable of causing a computing system to implement operations comprising:

receiving, from an application, a request to access a database, wherein the request is associated with a particular account;

accessing, using an identifier associated with the particular account, a key cache stored in a secure enclave of a memory of the computing system to determine at least one private key associated with the request, wherein the key cache includes a first portion that stores information mapping active private keys of a key management system (KMS) to a plurality of accounts and a second portion that stores both active and inactive private keys of the KMS for the plurality of accounts; and

performing a cryptographic operation for accessing the database within the secure enclave using the at least one private key, including:

accessing, based on a key identifier, the second portion of the key cache, but not the first portion of the key cache, to determine at least one private key; and

decrypting, using the determined private key, an encrypted fragment of data specified in the request.

2. The non-transitory computer-readable medium of claim 1 , wherein performing the cryptographic operation includes accessing the key cache to obtain one or more private keys associated with one or more fragments of data stored in the database.

3. The non-transitory computer-readable medium of claim 2 , wherein the one or more fragments of data are associated with a plurality of tenants.

4. The non-transitory computer-readable medium of claim 3 , wherein the identifier associated with the particular account is an account identifier, and wherein performing the cryptographic operation within the secure enclave includes:

accessing, based on the account identifier, the first portion of the key cache to determine a key identifier of an active private key associated with the particular account;

accessing, based on the determined key identifier, the second portion of the key cache to determine the active private key; and

generating, using the determined active private key, an encrypted fragment of data for storage in the database, wherein the encrypted fragment of data is associated with the particular account.

5. The non-transitory computer-readable medium of claim 1 , wherein the operations further comprise:

encrypting, using an ephemeral key, the key cache.

6. The non-transitory computer-readable medium of claim 1 , wherein the identifier associated with the particular account is determined by:

locating, based on a pointer specified in the request, an encrypted fragment of data associated with the particular account; and

reading, from a header of the encrypted fragment of data, a key identifier of at least one private key.

7. The non-transitory computer-readable medium of claim 1 , wherein the request specifies an account identifier of the particular account, and wherein the accessing the key cache to determine the at least one private key associated with the request is performed based on the account identifier.

8. The non-transitory computer-readable medium of claim 1 , wherein the operations further comprise:

prior to caching a plurality of private keys in the key cache, obfuscating, using one or more binary operations, at least one of the plurality of private keys.

9. The non-transitory computer-readable medium of claim 1 , wherein accessing the key cache includes decrypting the key cache using an ephemeral key.

10. A method, comprising:

receiving, by a computing system from an application, a request to access a database, wherein the request is associated with a particular account;

accessing, by the computing system using an identifier associated with the particular account, a key cache stored in a secure enclave of a memory of the computing system to determine at least one private key associated with the request, wherein the key cache includes a first portion that stores information mapping active private keys of a key management system (KMS) to a plurality of accounts of the database and a second portion that stores both active and inactive private keys of the KMS for the plurality of accounts; and

causing, by the computing system, performance of a cryptographic operation for accessing the database within the secure enclave using the at least one private key, including:

accessing, based on a key identifier, the second portion of the key cache, but not the first portion of the key cache, to determine at least one private key; and

decrypting, using the determined private key, an encrypted fragment of data specified in the request.

11. The method of claim 10 , wherein private keys stored by the key cache are usable to access fragments of data stored in the database for a plurality of tenants.

12. The method of claim 10 , wherein the identifier associated with the particular account is an account identifier, and wherein performing the cryptographic operation within the secure enclave includes:

accessing, based on the account identifier, the first portion of the key cache to determine a key identifier of an active private key associated with the particular account;

accessing, based on the determined key identifier, the second portion of the key cache to determine the active private key; and

generating, using the determined active private key, an encrypted fragment of data for storage in the database, wherein the encrypted fragment of data is associated with the particular account.

13. The method of claim 10 , wherein performing the cryptographic operation within the secure enclave further includes, prior to accessing the second portion of the key cache:

locating, based on a pointer specified in the request, an encrypted fragment of data associated with the particular account; and

reading, from a header of the encrypted fragment of data, the key identifier of at least one private key.

14. The method of claim 10 , further comprising:

encrypting, by the computing system using an ephemeral key, the key cache.

15. The method of claim 10 , further comprising:

requesting, by a portion of the computing system that is stored externally to the secure enclave, to access at least one of the first and second portions of the key cache within the secure enclave; and

receiving, by the portion of the computing system, a notification indicating that the request is blocked.

16. A system, comprising:

at least one processor; and

a memory having instructions stored thereon that are executable by the at least one processor to cause the system to:

receive, from an application, a request to access a database, wherein the request is associated with a particular account;

access, using an identifier associated with the particular account, a key cache stored in a secure enclave of the memory of the system to determine at least one private key associated with the request, wherein the key cache includes a first portion that stores information mapping active private keys of a key management system (KMS) to a plurality of accounts and a second portion that stores both active and inactive private keys of the KMS for the plurality of accounts; and

perform a cryptographic operation for accessing the database within the secure enclave using the at least one private key, including:

accessing, based on a key identifier, the second portion of the key cache, but not the first portion of the key cache, to determine at least one private key; and

decrypting, using the determined private key, an encrypted fragment of data specified in the request.

17. The system of claim 16 , wherein performing the cryptographic operation includes accessing the key cache to obtain one or more private keys associated with one or more fragments of data stored in the database.

18. The system of claim 17 , wherein the one or more fragments of data are associated with a plurality of tenants.

19. The system of claim 18 , wherein the identifier associated with the particular account is an account identifier, and wherein performing the cryptographic operation within the secure enclave includes:

accessing, based on the account identifier, the first portion of the key cache to determine a key identifier of an active private key associated with the particular account;

accessing, based on the determined key identifier, the second portion of the key cache to determine the active private key; and

generating, using the determined active private key, an encrypted fragment of data for storage in the database, wherein the encrypted fragment of data is associated with the particular account.

20. The system of claim 16 , wherein the instructions are further executable to cause the system to:

encrypt, using an ephemeral key, the key cache.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0499 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2020
From: KASHID, DHANASHREE; HANUMANTHARAU, RAGHAVENDRAN; CHONG, TERRY; TUCKER, ANDREW STEWART; HOSUR, VADIRAJ GOVARDHAN
To: SALESFORCE.COM, INC.
Reel/Frame 052802/0991 →
Continuity (1)
Related Publication 20210377020A1 · Dec 2, 2021