# US 12,003,635 B2 · Centrally rotating private/public encryption keys in a large scale system

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

- Number: US 12,003,635 B2
- Document ID: US12003635B2
- Status: Granted
- Kind: B2
- Application number: 17/457,386
- Filed: 2021-12-02
- Published: 2023-06-08
- Granted: 2024-06-04
- Earliest claimed: 2021-12-02
- Assignees: Salesforce, Inc.
- Applicants: Salesforce, Inc.
- Inventors: Jayanth Parayil Kumarji; Mugdha Choudhari; Percy Mehta; Rajkumar Pellakuru; Kevin Terusaki
- Web page: https://patentgrep.com/patent/US12003635B2

## CPC

- H04L 9/0891: {Revocation or update of secret information, e.g. encryption key update or rekeying}
- H04L 9/088: {Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms (network architectures or network communication protocols for using time-dependent keys in a packet data network H04L63/068)}
- H04L 9/0894: {Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage}
- H04L 9/14: using a plurality of keys or algorithms
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system and method for rotating private encryption keys for tenants of a database system has been developed. First, three separate public-private encryption keys are generated for a tenant of the database system. The three separate private encryption keys for the tenant are then stored in cloud-based storage. A defined cadence is created to rotate the private encryption keys for the tenant. The three separate private encryption keys for the tenant are defined as a a past private key, a present private key and a future private key. Next, the public encryption key is stored for the tenant in a global tenant directory. The present private key and the public encryption key are retrieved to encrypt and decrypt data from the tenant. The three separate private encryption keys are rotated at the defined cadence, where the past private key is discarded, the present private key becomes a new past private key, the future private key becomes a new present private key, and a new future private key is generated. The new past private key, the new present private key and the new future private key for the tenant are then stored in cloud-based storage.

## Claims

### Claim 1

A method for rotating private encryption keys for tenants of a database system, comprising:
generating three separate public-private encryption key pairs for a tenant of the database system, where each of the three separate private encryption keys has a timestamp for indicating when each private encryption key is active;
storing the three separate private encryption keys for the tenant in cloud-based storage;
creating a defined cadence to rotate the private encryption keys for the tenant, where the defined cadence is a specified time span that is determined from the timestamp of the private encryption key;
defining the three separate private encryption keys for the tenant as a past private key, a present private key and a future private key;
storing the public encryption key for the tenant in a global tenant directory;
retrieving the present private key and the public encryption key to encrypt and decrypt data from the tenant;
rotating the three separate private encryption keys if the future private key timestamp is within the specified time span of the defined cadence to rotate the private encryption keys, where
the past private key is discarded,
the present private key becomes a new past private key,
the future private key becomes a new present private key, and
a new future private key is generated; and
storing the new past private key, the new present private key and the new future private key for the tenant in cloud-based storage.

### Claim 2 (depends on 1)

The method of claim 1, where the specified time span is 30 days.

### Claim 3 (depends on 1)

The method of claim 1, where the private encryption keys are rotated only once during a 30 day specified time span.

### Claim 4 (depends on 1)

The method of claim 1, where each private encryption key is rotated at a predetermined defined cadence when a timestamp for the private encryption key is not present.

### Claim 5 (depends on 1)

The method of claim 1, where a table is created that stores the times of the rotation of the private encryption keys.

### Claim 6 (depends on 5)

The method of claim 5, where the rotation of the private encryption keys is performed as a batch job.

### Claim 7 (depends on 6)

The method of claim 6, where the table is updated with data about the rotation of the private encryption keys after the completion of every batch job.

### Claim 8

An apparatus comprising:
a processor;
a non-transitory machine-readable storage medium that provides instructions that, if executed by the processor, are configurable to cause the apparatus to perform operations comprising,
generating three separate public-private encryption key pairs for a tenant of the database system, where each of the three separate private encryption keys has a timestamp for indicating when each private encryption key is active;
storing the three separate private encryption keys for the tenant in cloud-based storage;
creating a defined cadence to rotate the private encryption keys for the tenant, where the defined cadence is a specified time span that is determined from the timestamp of the private encryption key;
defining the three separate private encryption keys for the tenant as a past private key, a present private key and a future private key;
storing the public encryption key for the tenant in a global tenant directory;
retrieving the present private key and the public encryption key to encrypt and decrypt data from the tenant;
rotating the three separate private encryption keys if the future private key timestamp is within the specified time span of the defined cadence to rotate the private encryption keys, where
the past private key is discarded,
the present private key becomes a new past private key,
the future private key becomes a new present private key, and
a new future private key is generated; and
storing the new past private key, the new present private key and the new future private key for the tenant in cloud-based storage.

### Claim 9 (depends on 8)

The apparatus of claim 8, where the specified time span is 30 days.

### Claim 10 (depends on 8)

The apparatus of claim 8, where the private encryption keys are rotated only once during a 30 day specified time span.

### Claim 11 (depends on 8)

The apparatus of claim 8, where each private encryption key is rotated at a predetermined defined cadence when a timestamp for the private encryption key is not present.

### Claim 12 (depends on 8)

The apparatus of claim 8, where a table is created that stores the times of the rotation of the private encryption keys.

### Claim 13 (depends on 12)

The apparatus of claim 12, where the rotation of the private encryption keys is performed as a batch job.

### Claim 14 (depends on 13)

The apparatus of claim 13, where the table is updated with data about the rotation of the private encryption keys after the completion of every batch job.
