IP Library Granted Patent US 12,052,359
Granted Patent B2
US 12,052,359 · App. 17/390,670 · Granted Jul 30, 2024

Encryption key rotation

Inventors: Daniel P. Craggs (Montreal, CA); Jonathan David Fok kan (Montreal, CA)
Assignee: AppDirect, Inc.
H04L9/0891G06F18/214G06N20/00H04L9/3236H04L9/3297
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 12,052,359
App. No.
17/390,670
Granted
Jul 30, 2024
Kind
B2
Abstract

Various aspects of the subject technology relate to systems, methods, and machine-readable media for encrypting data. The method includes adding a new encryption key for encrypting and/or decrypting data of a database, the data previously encrypted by an old encryption key. The method also includes hashing the new encryption key to generate a new hash. The method also includes comparing the new hash and an old hash with values in an encryption log, the old hash generated by hashing an old encryption key. The method also includes in response to the comparing, decrypting the data with the old encryption key when the new hash and old hash match the values in the encryption log. The method also includes encrypting the data with the new encryption key. The method also includes adding a new entry into the encryption log, the new entry comprising the new hash.

Claims (64)

1. A computer-implemented method for encrypting data, comprising:

adding a new encryption key for encrypting and/or decrypting data of a database, the data previously encrypted by an old encryption key;

hashing the new encryption key to generate a new hash;

comparing the new hash and an old hash with values in an encryption log, the old hash generated by hashing the old encryption key;

in response to the comparing, decrypting the data with the old encryption key when the new hash and the old hash match the values in the encryption log;

encrypting the data with the new encryption key; and

adding a new entry into the encryption log, the new entry comprising the new hash and a state of encryption for the data,

wherein the encryption log is stored in a database table separate from the data.

2. The computer-implemented method of claim 1 , further comprising: verifying the new hash and the old hash match the values in the encryption log.

3. The computer-implemented method of claim 1 , wherein the encryption log comprises at least one of a table value in the database, a row number of the database, a column number of the database, a timestamp, and/or a state of the database.

4. The computer-implemented method of claim 1 , wherein the data, the new encryption key, and the old encryption key are stored in the database.

5. The computer-implemented method of claim 1 , further comprising: rotating data of the database with new encryption keys.

6. The computer-implemented method of claim 1 , further comprising:

training a machine learning (ML) algorithm to identify abnormal activity of the database;

monitoring an activity level of the database;

determining, through the ML algorithm, whether the activity level of the database is abnormal; and

in response to determining that the activity level of the database is abnormal, rotating the data to be encrypted by the new encryption key.

7. The computer-implemented method of claim 6 , wherein the rotating pauses if the activity level rises above a predefined threshold.

8. The computer-implemented method of claim 1 , further comprising:

burning the new encryption key after encrypting the data.

9. The computer-implemented method of claim 1 , further comprising:

receiving a read request for encrypted data;

retrieving a timestamp from the encryption log of when the encrypted data was last modified;

querying the encryption log with the timestamp to determine an active encryption key during that time; and

decrypting the encrypted data with the active encryption key.

10. The computer-implemented method of claim 1 , further comprising:

receiving a write request for encrypting data;

retrieving a timestamp from the encryption log of when the data was last modified;

querying the encryption log with the timestamp to determine an active encryption key during that time;

decrypting the data with the active encryption key;

encrypting the data with the new encryption key; and

in response to the encrypting, adding a new entry into the encryption log regarding the encrypting.

11. A system for encrypting data, comprising:

a processor; and

a memory comprising instructions stored thereon, which when executed by the processor, causes the processor to perform:

adding a new encryption key for encrypting and/or decrypting data of a database, the data previously encrypted by an old encryption key;

hashing the new encryption key to generate a new hash;

comparing the new hash and an old hash with values in an encryption log, the old hash generated by hashing the old encryption key;

in response to the comparing, decrypting the data with the old encryption key when the new hash and the old hash match the values in the encryption log; encrypting the data with the new encryption key; and

adding a new entry into the encryption log, the new entry comprising the new hash and a state of encryption for the data,

wherein the encryption log is stored in a database table separate from the data.

12. The system of claim 11 , further comprising stored sequences of instructions, which when executed by the processor, cause the processor to perform:

verifying the new hash and the old hash match the values in the encryption log.

13. The system of claim 11 , wherein the encryption log comprises at least one of a table value in the database, a row number of the database, a column number of the database, a timestamp, and/or a state of the database.

14. The system of claim 11 , wherein the data, the new encryption key, and the old encryption key are stored in the database.

15. The system of claim 11 , further comprising stored sequences of instructions, which when executed by the processor, cause the processor to perform:

rotating data of the database with new encryption keys.

16. The system of claim 11 , further comprising stored sequences of instructions, which when executed by the processor, cause the processor to perform:

training a machine learning (ML) algorithm to identify abnormal activity of the database;

monitoring an activity level of the database;

determining, through the ML algorithm, whether the activity level of the database is abnormal; and

in response to determining that the activity level of the database is abnormal, rotating the data to be encrypted by the new encryption key.

17. The system of claim 16 , wherein the rotating pauses if the activity level rises above a predefined threshold.

18. The system of claim 11 , further comprising stored sequences of instructions, which when executed by the processor, cause the processor to perform:

burning the new encryption key after encrypting the data.

19. A non-transitory computer-readable storage medium having instructions stored thereon that, when executed by one or more processors, cause the one or more processors to perform operations for encrypting data, the operations comprising:

adding a new encryption key for encrypting and/or decrypting data of a database, the data previously encrypted by an old encryption key;

hashing the new encryption key to generate a new hash;

comparing the new hash and an old hash with values in an encryption log, the old hash generated by hashing the old encryption key;

in response to the comparing, decrypting the data with the old encryption key when the new hash and the old hash match the values in the encryption log;

encrypting the data with the new encryption key; and

adding a new entry into the encryption log, the new entry comprising the new hash and a state of encryption for the data,

wherein the encryption log is stored in a database table separate from the data.

20. The non-transitory computer-readable storage medium of claim 19 , wherein the encryption log comprises at least one of a table value in the database, a row number of the database, a column number of the database, a timestamp, and/or a state of the database.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Oct 29, 2025
From: BANK OF MONTREAL, AS ADMINISTRATIVE AGENT
To: APPDIRECT, INC.
Reel/Frame 072723/0104 →
SECURITY INTEREST Recorded Sep 22, 2025
From: APPDIRECT, INC.; LEFTRONICDIRECT INC.; APPDIRECT CSP, INC.; APPSMART, INC.; APPDIRECT AGENT SERVICES, INC.; APPSMART CCC, INC.; APPSMART ENERGY SERVICES, INC.; ATLANTA DATACOM, INC.; BUILTFIRST TECHNOLOGIES, INC.; CONVERGED NETWORK SERVICES GROUP, LLC; CNSG VG SOLUTIONS, LLC; MICROCORP LLC; TBI, INC.; APPDIRECT CANADA INC.; NEOSYSTEMS INC.
To: HERCULES CAPITAL, INC., AS AGENT
Reel/Frame 072334/0967 →
RELEASE OF SECURITY INTEREST Recorded Jun 25, 2024
From: HERCULES CAPITAL, INC., AS AGENT
To: APPDDIRECT, INC.; STANDING CLOUD DIRECT, INC.; CLOUD SERVICE PARTNERS, INC.
Reel/Frame 067835/0236 →
SECURITY INTEREST Recorded May 1, 2024
From: APPDIRECT, INC.
To: BANK OF MONTREAL, AS AGENT
Reel/Frame 067280/0815 →
SECURITY INTEREST Recorded Dec 20, 2021
From: APPDIRECT, INC.; STANDING CLOUD DIRECT, INC.; CLOUD SERVICE PARTNERS, INC.
To: HERCULES CAPITAL, INC., AS AGENT
Reel/Frame 058437/0829 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 9, 2021
From: CRAGGS, DANIEL P.; FOK KAN, JONATHAN DAVID
To: APPDIRECT, INC.
Reel/Frame 057126/0228 →
Continuity (1)
Related Publication 20230031380A1 · Feb 2, 2023