IP Library Granted Patent US 11,403,019
Granted Patent B2
US 11,403,019 · App. 16/171,907 · Granted Aug 2, 2022

Deduplication-aware per-tenant encryption

Inventors: Swapnil Chandrashekhar Nagle (Sunnyvale, CA); Virendra Prakashaiah (Sunnyvale, CA); Ronald Karr (Palo Alto, CA)
Assignee: Pure Storage, Inc.
G06F3/0641G06F3/067G06F3/0608G06F3/0623G06F3/0683G06F16/137G06F21/6218H04L9/08H04L9/0894H04L9/3239H04L9/3297H04L2209/38
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,403,019
App. No.
16/171,907
Granted
Aug 2, 2022
Kind
B2
Abstract

A method includes receiving a request to write a data block to a volume resident on a multi-tenant storage array, wherein the request is associated with a first tenant of the multi-tenant storage array, and determining whether the data block matches an existing data block on the multi-tenant storage array, wherein the existing block corresponds to a second tenant. In response to determining that the decrypted data block matches the existing data block: encrypting the existing data block with a shared volume encryption key; encrypting the shared volume encryption key with a first tenant encryption key and providing the shared volume encryption key encrypted with the first tenant encryption key to the first tenant; and encrypting the shared volume encryption key with a second tenant encryption key and providing the shared volume encryption key encrypted with the second tenant encryption key to the second tenant.

Claims (44)

1. A system comprising:

a multi-tenant storage array comprising one or more storage devices; and

a storage controller operatively coupled to the multi-tenant storage array, the storage controller comprising a processing device, the processing device configured to:

receive a request to write a data block to a volume resident on the multi-tenant storage array, wherein the request is associated with a first tenant of the multi-tenant storage array; and

based on a determination that the data block is deduplicatable, decrypt the data block to generate a decrypted data block;

determine that the decrypted data block matches an existing data block associated with a second tenant of the multi-tenant storage array;

based on the determination that the decrypted data block matches the existing data block, generate a shared volume encryption key;

encrypt the existing data block with the generated shared volume encryption key;

encrypt the shared volume encryption key with a first tenant encryption key associated with the first tenant;

encrypt the shared volume encryption key with a second tenant encryption key associated with the second tenant; and

store, in a tenant key data structure, the shared volume encryption key encrypted with the first tenant encryption key and the shared volume encryption key encrypted with the second tenant encryption key mapped to an identifier of the volume.

2. The system of claim 1 , wherein to decrypt the data block to generate the decrypted data block, the processing device is further configured to:

retrieve the first tenant encryption key based on a determination that the first tenant owns the data block.

3. The system of claim 2 , wherein to determine that the first tenant owns the data block, the processing device is further configured to retrieve an identifier of the first tenant from the tenant key data structure.

4. The system of claim 2 , wherein to retrieve the first tenant encryption key, the processing device is further configured to retrieve the first tenant encryption key from a key management server.

5. The system of claim 1 , wherein the processing device is further configured to:

generate the shared volume encryption key based on a determination that the shared volume encryption key does not already exist.

6. The system of claim 1 , wherein the data block is encrypted with a first volume encryption key, and wherein the processing device is further configured to:

generate the shared volume encryption key to be distinct from the first volume encryption key.

7. A method comprising:

receive a request to write a data block to a volume resident on the multi-tenant storage array, wherein the request is associated with a first tenant of the multi-tenant storage array; and

based on a determination that the data block is deduplicatable, decrypt the data block to generate a decrypted data block;

determine that the decrypted data block matches an existing data block associated with a second tenant of the multi-tenant storage array;

based on the determination that the decrypted data block matches the existing data block, generate a shared volume encryption key;

encrypt the existing data block with the generated shared volume encryption key;

encrypt the shared volume encryption key with a first tenant encryption key associated with the first tenant;

encrypt the shared volume encryption key with a second tenant encryption key associated with the second tenant; and

store, in a tenant key data structure, the shared volume encryption key encrypted with the first tenant encryption key and the shared volume encryption key encrypted with the second tenant encryption key mapped to an identifier of the volume.

8. The method of claim 7 , wherein to decrypt the data block to generate the decrypted data block, the method further comprises:

retrieving the first tenant encryption key based on a determination determining that the first tenant owns the data block; and

retrieving the first tenant encryption key.

9. The method of claim 8 , wherein to determine that the first tenant owns the data block, the method further comprises retrieving an identifier of the first tenant from the tenant key data structure.

10. The method of claim 8 , wherein to retrieve the first tenant encryption key, the method further comprises retrieving the first tenant encryption key from a key management server.

11. The method of claim 7 , further comprising:

generating the shared volume encryption key based on a determination that the shared volume encryption key does not already exist.

12. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device to:

receive a request to write a data block to a volume resident on the multi-tenant storage array, wherein the request is associated with a first tenant of the multi-tenant storage array; and

based on a determination that the data block is deduplicatable, decrypt the data block to generate a decrypted data block;

determine that the decrypted data block matches an existing data block associated with a second tenant of the multi-tenant storage array;

based on the determination that the decrypted data block matches the existing data block, generate a shared volume encryption key;

encrypt the existing data block with the generated shared volume encryption key;

encrypt the shared volume encryption key with a first tenant encryption key associated with the first tenant;

encrypt the shared volume encryption key with a second tenant encryption key associated with the second tenant; and

store, in a tenant key data structure, the shared volume encryption key encrypted with the first tenant encryption key and the shared volume encryption key encrypted with the second tenant encryption key mapped to an identifier of the volume.

Assignments (3)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2018
From: NAGLE, SWAPNIL CHANDRASHEKHAR; PRAKASHAIAH, VIRENDRA; KARR, RONALD
To: PURE STORAGE, INC.
Reel/Frame 047337/0500 →
Continuity (4)
Continuation In Part 15494360 · Apr 21, 2017
Provisional Application 62639009 · Mar 6, 2018
Provisional Application 62750764 · Oct 25, 2018
Related Publication 20190073152A1 · Mar 7, 2019
Cited By (2)
US 12,561,256 US 12,578,900