IP Library Granted Patent US 12,413,392
Granted Patent B2
US 12,413,392 · App. 18/357,390 · Granted Sep 9, 2025

Generating independent encryption keys for storage objects

Inventors: Abhay Kumar Jain (Santa Clara, CA); Long Yang (Fremont, CA); Wenguang Wang (Santa Clara, CA); Chandrakanth Gadhiraju (Fremont, CA)
Assignee: VMware LLC
H04L9/0822G06F9/45558G06F2009/45587
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,413,392
App. No.
18/357,390
Granted
Sep 9, 2025
Kind
B2
Abstract

Aspects of the disclosure generate independent encryption keys for objects (e.g., virtual machine disks (VMDKs)) without requiring the management of multiple keys. An encryption manager obtains a primary encryption key, an object identifier (ID) comprising a globally unique ID (GUID) for an object, a data salt comprising the object ID and a data salt string, and a metadata salt comprising the object ID and a metadata salt string. A data encryption key is generated using the primary encryption key, the data salt, and a one-way function. A metadata encryption key is generated using the primary encryption key, the metadata salt, and the one-way function. Because the data salt string and metadata salt string differ, the data encryption and metadata encryption keys differ. Object IDs for different objects differ, so each object and its metadata have globally unique keys. Key generation (other than the primary key) is deterministic, simplifying key management.

Claims (133)

1. A computerized method comprising:

obtaining a primary encryption key;

obtaining a first object identifier (ID), the first object ID comprising a globally unique ID (GUID) for a first object;

obtaining a first data salt comprising the first object ID and a first data salt string;

obtaining a first metadata salt comprising the first object ID and a first metadata salt string, the first metadata salt string differing from first data salt string;

generating a first data encryption key using the primary encryption key, the first data salt, and a one-way function;

generating a first metadata encryption key using the primary encryption key, the first metadata salt, and the one-way function;

encrypting the first object using the first data encryption key;

encrypting metadata of the first object using the first metadata encryption key; and

persisting the encrypted first object and the encrypted metadata of the first object.

2. The computerized method of claim 1 , further comprising:

obtaining a second object ID, the second object ID comprising a GUID for a second object;

obtaining a second data salt comprising the second object ID and a second data salt string;

obtaining a second metadata salt comprising the second object ID and a second metadata salt string, the second metadata salt string differing from second data salt string;

generating a second data encryption key using the primary encryption key, the second data salt, and the one-way function;

generating a second metadata encryption key using the primary encryption key, the second metadata salt, and the one-way function;

encrypting the second object using the second data encryption key; and

encrypting metadata of the second object using the second metadata encryption key.

3. The computerized method of claim 2 , wherein the first object comprises a virtual machine (VM) disk (VMDK) and wherein the second object comprises a VMDK.

4. The computerized method of claim 2 , further comprising:

receiving a first read request for the first object;

based on at least receiving the first read request:

regenerating the first data encryption key using the primary encryption key, the first data salt, and the one-way function;

decrypting the first object using the first data encryption key; and

returning the first object:

receiving a second read request for the metadata of the first object;

based on at least receiving the second read request:

regenerating the first metadata encryption key using the primary encryption key, the first metadata salt, and the one-way function;

decrypting the metadata of the first object using the first metadata encryption key; and

returning the metadata of the first object:

receiving a third read request for the second object;

based on at least receiving the third read request:

regenerating the second data encryption key using the primary encryption key, the second data salt, and the one-way function;

decrypting the second object using the second data encryption key; and

returning the second object; and

receiving a fourth read request for the metadata of the second object;

based on at least receiving the fourth read request:

regenerating the second metadata encryption key using the primary encryption key, the second metadata salt, and the one-way function;

decrypting the metadata of the second object using the second metadata encryption key; and

returning the metadata of the second object.

5. The computerized method of claim 1 , wherein the first metadata salt string further comprises a generation number.

6. The computerized method of claim 5 , further comprising:

based upon at least a rekey trigger event:

regenerating the first metadata encryption key using the primary encryption key, the first metadata salt, and the one-way function;

decrypting the metadata of the first object using the first metadata encryption key;

changing the generation number;

generating a third metadata encryption key using the primary encryption key, the first metadata salt with the changed generation number, and the one-way function; and

encrypting the metadata of the first object using the third metadata encryption key.

7. The computerized method of claim 6 , wherein regenerating the first metadata encryption key comprises:

until determining that a trial metadata encryption key matches the first metadata encryption key:

generating a trial metadata salt comprising the first object ID, the metadata salt string, and a trial generation number;

generating the trial metadata encryption key using the primary encryption key, the trial metadata salt, and the one-way function; and

if the trial metadata encryption key does not match the first metadata encryption key, changing the trial generation number.

8. The computerized method of claim 7 , wherein determining that the trial metadata encryption key matches the first metadata encryption key comprises:

decrypting at least a portion of the metadata of the first object using the trial metadata encryption key; and

comparing the portion of the metadata of the first object with a known value.

9. A computer system comprising:

a processor; and

a non-transitory computer readable medium having stored thereon program code executable by the processor, the program code causing the processor to:

obtain a primary encryption key;

obtain a first object identifier (ID), the first object ID comprising a globally unique ID (GUID) for a first object;

obtain a first data salt comprising the first object ID and a first data salt string;

obtain a first metadata salt comprising the first object ID and a first metadata salt string, the first metadata salt string differing from first data salt string;

generate a first data encryption key using the primary encryption key, the first data salt, and a one-way function;

generate a first metadata encryption key using the primary encryption key, the first metadata salt, and the one-way function;

encrypt the first object using the first data encryption key; and

encrypt metadata of the first object using the first metadata encryption key.

10. The computer system of claim 9 , wherein the program code is further operative to:

obtain a second object ID, the second object ID comprising a GUID for a second object;

obtain a second data salt comprising the second object ID and a second data salt string;

obtain a second metadata salt comprising the second object ID and a second metadata salt string, the second metadata salt string differing from second data salt string;

generate a second data encryption key using the primary encryption key, the second data salt, and the one-way function;

generate a second metadata encryption key using the primary encryption key, the second metadata salt, and the one-way function;

encrypt the second object using the second data encryption key; and

encrypt metadata of the second object using the second metadata encryption key.

11. The computer system of claim 10 , wherein the first object comprises a virtual machine (VM) disk (VMDK) and wherein the second object comprises a VMDK.

12. The computer system of claim 10 , wherein the program code is further operative to:

receive a first read request for the first object;

based on at least receiving the first read request:

regenerate the first data encryption key using the primary encryption key, the first data salt, and the one-way function;

decrypt the first object using the first data encryption key; and

return the first object:

receive a second read request for the metadata of the first object;

based on at least receiving the second read request:

regenerate the first metadata encryption key using the primary encryption key, the first metadata salt, and the one-way function;

decrypt the metadata of the first object using the first metadata encryption key; and

return the metadata of the first object:

receive a third read request for the second object;

based on at least receiving the third read request:

regenerate the second data encryption key using the primary encryption key, the second data salt, and the one-way function;

decrypt the second object using the second data encryption key; and

return the second object; and

receive a fourth read request for the metadata of the second object;

based on at least receiving the fourth read request:

regenerate the second metadata encryption key using the primary encryption key, the second metadata salt, and the one-way function;

decrypt the metadata of the second object using the second metadata encryption key; and

return the metadata of the second object.

13. The computer system of claim 9 , wherein the first metadata salt string further comprises a generation number.

14. The computer system of claim 13 , wherein the program code is further operative to:

based upon at least a rekey trigger event:

regenerate the first metadata encryption key using the primary encryption key, the first metadata salt, and the one-way function;

decrypt the metadata of the first object using the first metadata encryption key;

change the generation number;

generate a third metadata encryption key using the primary encryption key, the first metadata salt with the changed generation number, and the one-way function; and

encrypt the metadata of the first object using the third metadata encryption key.

15. The computer system of claim 14 , wherein regenerating the first metadata encryption key comprises:

until determining that a trial metadata encryption key matches the first metadata encryption key:

generating a trial metadata salt comprising the first object ID, the metadata salt string, and a trial generation number;

generating the trial metadata encryption key using the primary encryption key, the trial metadata salt, and the one-way function; and

if the trial metadata encryption key does not match the first metadata encryption key, changing the trial generation number.

16. The computer system of claim 15 , wherein determining that the trial metadata encryption key matches the first metadata encryption key comprises:

decrypting at least a portion of the metadata of the first object using the trial metadata encryption key; and

comparing the portion of the metadata of the first object with a known value.

17. An encryption manager comprising:

a key generator for

obtaining a primary encryption key, a first object identifier (ID) comprising a globally unique ID (GUID) for a first object, a first data salt comprising the first object ID and a first data salt string, and a first metadata salt comprising the first object ID and a first metadata salt string and which differs from first data salt string; and

generating a first data encryption key using the primary encryption key, the first data salt, and a one-way function, and generating a first metadata encryption key using the primary encryption key, the first metadata salt, and the one-way function; and

an encrypter for encrypting the first object using the first data encryption key and encrypting metadata of the first object using the first metadata encryption key.

18. The encryption manager of claim 17 , wherein

the key generator further

obtains a second object ID, the second object ID comprising a GUID for a second object, a second data salt comprising the second object ID and a second data salt string, and a second metadata salt comprising the second object ID and a second metadata salt string and which differs from second data salt string; and

generates a second data encryption key using the primary encryption key, the second data salt, and the one-way function, and generates a second metadata encryption key using the primary encryption key, the second metadata salt, and the one-way function; and

the encrypter further encrypts the second object using the second data encryption key and encrypts metadata of the second object using the second metadata encryption key.

19. The encryption manager of claim 18 , wherein the first object comprises a virtual machine (VM) disk (VMDK) and wherein the second object comprises a VMDK.

20. The encryption manager of claim 18 , wherein the encryption manager further:

regenerates the first data encryption key using the primary encryption key, the first data salt, and the one-way function;

decrypts the first object using the first data encryption key;

regenerates the first metadata encryption key using the primary encryption key, the first metadata salt, and the one-way function;

decrypts the metadata of the first object using the first metadata encryption key;

regenerates the second data encryption key using the primary encryption key, the second data salt, and the one-way function;

decrypts the second object using the second data encryption key;

regenerates the second metadata encryption key using the primary encryption key, the second metadata salt, and the one-way function; and

decrypts the metadata of the second object using the second metadata encryption key.

Assignments (2)
CHANGE OF NAME Recorded May 8, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067355/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2023
From: JAIN, ABHAY KUMAR; YANG, LONG; WANG, WENGUANG; GADHIRAJU, CHANDRAKANTH
To: VMWARE, INC.
Reel/Frame 064429/0319 →
Continuity (1)
Related Publication 20250038958A1 · Jan 30, 2025
References Cited (11)
US 8930698B2 · Hunter · 2015 [cited by examiner]
US 10587406B1 · Levin · 2020 [cited by examiner]
US 11314440B1 · Wang · 2022 [cited by examiner]
US 20090252330A1 · Patnala · 2009 [cited by examiner]
US 20210367770A1 · Patel · 2021 [cited by examiner]
US 20220069981A1 · Jog · 2022 [cited by examiner]
US 20220179674A1 · Goel · 2022 [cited by examiner]
US 20220209945A1 · Li · 2022 [cited by examiner]
US 20240056290A1 · Wilson · 2024 [cited by examiner]
US 20240259210A1 · Ruan · 2024 [cited by examiner]
US 20250137211A1 · Patki · 2025 [cited by examiner]
Cited By (1)
US 12,634,267