IP Library Granted Patent US 10,467,096
Granted Patent B2
US 10,467,096 · App. 15/144,080 · Granted Nov 5, 2019

Securely storing data in a dispersed storage network

Inventor: Jason K. Resch (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/108G06F3/061G06F3/0604G06F3/0605G06F3/065G06F3/067G06F3/0619G06F3/0622G06F3/0643G06F3/0644G06F3/0647G06F3/0653G06F3/0668G06F3/0689G06F11/1076G06F11/1662G06F11/3034G06F13/4282G06F16/122G06F16/1824G06F16/24578G06F21/6218G06F21/645H03M13/2906H03M13/3761H04L9/0861H04L63/061H04L63/0853H04L63/108H04L67/1097H04L67/327G06F3/064G06F2201/805H03M13/1515H04L63/0428
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 10,467,096
App. No.
15/144,080
Granted
Nov 5, 2019
Kind
B2
Abstract

A first encoded data slice is received for storage by a DST execution unit from a first vault. A first encryption key corresponding to the first encoded data slice is generated, and a first encrypted data slice is generated by utilizing the first encryption key. A second encoded data slice for second storage by the DST execution unit from a second vault, a second encryption key corresponding the second encoded data slice is generated, and a second encrypted data slice is generated by utilizing the second encryption key. The first encrypted data slice and the second encrypted data slice are stored in a file of a memory of the DST execution unit, where the file and the memory are common to the first encrypted data slice and the second encrypted data slice.

Claims (81)

1. A method for execution by a dispersed storage and task (DST) execution unit that includes a processor, the method comprises:

receiving a first encoded data slice for storage by the DST execution unit, wherein a slice identifier associated with the first encoded data slice indicates a first vault;

generating a first encryption key corresponding to the first encoded data slice by performing a deterministic function on a first vault identifier associated with the first vault and a memory identifier associated with one of a plurality of memory devices of the DST execution unit;

generating a first encrypted data slice by utilizing the first encryption key;

receiving a second encoded data slice for storage by the DST execution unit, wherein a slice identifier associated with the second encoded data slice indicates a second vault;

generating a second encryption key corresponding the second encoded data slice by performing the deterministic function on a second vault identifier associated with the second vault and the memory identifier;

generating a second encrypted data slice by utilizing the second encryption key;

storing the first encrypted data slice and the second encrypted data slice in a file of the one of the plurality of memory devices of the DST execution unit, wherein the file and the one of the plurality of memory devices are common to the first encrypted data slice and the second encrypted data slice;

receiving a request to retrieve the first encoded data slice;

retrieving the first encrypted data slice corresponding to the first encoded data slice from the one of the plurality of memory devices;

generating a first decryption key corresponding to the first encoded data slice by performing a second deterministic function on the first vault identifier and the memory identifier, wherein the first decryption key is different from the first encryption key; and

regenerating the first encoded data slice by utilizing the first decryption key.

2. The method of claim 1 , further comprising:

receiving a third encoded data slice for storage by the DST execution unit, wherein a slice identifier associated with the first encoded data slice indicates the first vault;

generating the first encryption key to corresponding to the third encoded data slice by performing the deterministic function on the first vault identifier and the memory identifier associated with the one of the plurality of memory devices of the DST execution unit;

generating a third encrypted data slice by utilizing the first encryption key; and

storing the third encrypted data slice and the file of the one of the plurality of memory devices of the DST execution unit, wherein the file and the one of the plurality of memory devices are common to the first encrypted data slice, the second encrypted data slice, and the third encrypted data slice.

3. The method of claim 1 , wherein the first encryption key is generated by performing the deterministic function on the first vault identifier, the slice identifier of the first encoded data slice, and the memory identifier, and wherein the second encryption key is generated by performing the deterministic function on the second vault identifier, the slice identifier associated with the second encoded data slice, and the memory identifier.

4. The method of claim 1 , further comprising:

receiving a request to retrieve the first encoded data slice;

retrieving the first encrypted data slice corresponding to the first encoded data slice from the one of the plurality of memory devices;

regenerating the first encryption key corresponding to the first encoded data slice; and

regenerating the first encoded data slice by utilizing the first encryption key.

5. The method of claim 4 , wherein the first encryption key is regenerated by performing the deterministic function on the first vault identifier and the memory identifier associated with the one of the plurality of memory devices.

6. The method of claim 1 further comprising:

re-encrypting the first encoded data slice with a new encryption key in response a transfer of the first encoded data slice from the one of the plurality of memory devices to another one of the plurality of memory devices.

7. A processing system of a dispersed storage and task (DST) execution unit comprises:

at least one processor;

a memory that stores operational instructions, that when executed by the at least one processor cause the processing system to:

receive a first encoded data slice for storage by the DST execution unit, wherein a slice identifier associated with the first encoded data slice indicates a first vault;

generate a first encryption key corresponding to the first encoded data slice by performing a deterministic function on a first vault identifier associated with the first vault and a memory identifier associated with one of a plurality of memory devices of the DST execution unit;

generate a first encrypted data slice by utilizing the first encryption key;

receive a second encoded data slice for storage by the DST execution unit, wherein a slice identifier associated with the second encoded data slice indicates a second vault;

generate a second encryption key corresponding the second encoded data slice by performing the deterministic function on a second vault identifier associated with the second vault and the memory identifier;

generate a second encrypted data slice by utilizing the second encryption key;

store the first encrypted data slice and the second encrypted data slice in a file of the one of the plurality of memory devices of the DST execution unit, wherein the file and the one of the plurality of memory devices are common to the first encrypted data slice and the second encrypted data slice;

receive a request to retrieve the first encoded data slice;

retrieve the first encrypted data slice corresponding to the first encoded data slice from the one of the plurality of memory devices;

generate a first decryption key corresponding to the first encoded data slice by performing a second deterministic function on the first vault identifier and the memory identifier, wherein the first decryption key is different from the first encryption key; and

regenerate the first encoded data slice by utilizing the first decryption key.

8. The processing system of claim 7 , wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:

receive a third encoded data slice for storage by the DST execution unit, wherein a slice identifier associated with the first encoded data slice indicates the first vault;

generate the first encryption key to corresponding to the third encoded data slice by performing the deterministic function on the first vault identifier and the memory identifier associated with the one of the plurality of memory devices of the DST execution unit;

generate a third encrypted data slice by utilizing the first encryption key; and

store the third encrypted data slice and the file of the one of the plurality of memory devices of the DST execution unit, wherein the file and the one of the plurality of memory devices are common to the first encrypted data slice, the second encrypted data slice, and the third encrypted data slice.

9. The processing system of claim 7 , wherein the first encryption key is generated by performing the deterministic function on the first vault identifier, the slice identifier of the first encoded data slice, and the memory identifier, and wherein the second encryption key is generated by performing the deterministic function on the second vault identifier, the slice identifier associated with the second encoded data slice, and the memory identifier.

10. The processing system of claim 7 , wherein the operational instructions, when executed by the at least one processor further causes the processing system to:

receive a request to retrieve the first encoded data slice;

retrieve the first encrypted data slice corresponding to the first encoded data slice from the one of the plurality of memory devices;

regenerate the first encryption key corresponding to the first encoded data slice; and

regenerate the first encoded data slice by utilizing the first encryption key.

11. The processing system of claim 10 , wherein the first encryption key is regenerated by performing the deterministic function on the first vault identifier and the memory identifier associated with the one of the plurality of memory devices.

12. The processing system of claim 7 wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:

re-encrypt the first encoded data slice with a new encryption key in response a transfer of the first encoded data slice from the one of the plurality of memory devices to another one of the plurality of memory devices.

13. A non-transitory computer readable storage medium comprising:

at least one memory section that stores operational instructions that, when executed by a processing system of a dispersed storage network (DSN) that includes a processor and a memory, causes the processing system to:

receive a first encoded data slice for storage, wherein a slice identifier associated with the first encoded data slice indicates a first vault;

generate a first encryption key corresponding to the first encoded data slice by performing a deterministic function on a first vault identifier associated with the first vault and a memory identifier associated with one of a plurality of memory devices;

generate a first encrypted data slice by utilizing the first encryption key;

receive a second encoded data slice for storage, wherein a slice identifier associated with the second encoded data slice indicates a second vault;

generate a second encryption key corresponding the second encoded data slice by performing the deterministic function on a second vault identifier associated with the second vault and the memory identifier;

generate a second encrypted data slice by utilizing the second encryption key;

store the first encrypted data slice and the second encrypted data slice in a file of the one of the plurality of memory devices, wherein the file and the one of the plurality of memory devices are common to the first encrypted data slice and the second encrypted data slice;

receive a request to retrieve the first encoded data slice;

retrieve the first encrypted data slice corresponding to the first encoded data slice from the one of the plurality of memory devices;

generate a first decryption key corresponding to the first encoded data slice by performing a second deterministic function on the first vault identifier and the memory identifier, wherein the first decryption key is different from the first encryption key; and

regenerate the first encoded data slice by utilizing the first decryption key.

14. The non-transitory computer readable storage medium of claim 13 ,

wherein the operational instructions, when executed by the processing system, further cause the processing system to:

receive a third encoded data slice for storage, wherein a slice identifier associated with the first encoded data slice indicates the first vault;

generate the first encryption key to corresponding to the third encoded data slice by performing the deterministic function on the first vault identifier and the memory identifier associated with the one of the plurality of memory devices;

generate a third encrypted data slice by utilizing the first encryption key; and

store the third encrypted data slice and the file of the one of the plurality of memory devices, wherein the file and the one of the plurality of memory devices are common to the first encrypted data slice, the second encrypted data slice, and the third encrypted data slice.

15. The non-transitory computer readable storage medium of claim 13 , wherein the first encryption key is generated by performing the deterministic function on the first vault identifier, the slice identifier of the first encoded data slice, and the memory identifier, and wherein the second encryption key is generated by performing the deterministic function on the second vault identifier, the slice identifier associated with the second encoded data slice, and the memory identifier.

16. The non-transitory computer readable storage medium of claim 13 , wherein the operational instructions, when executed by the processing system further causes the processing system to:

receive a request to retrieve the first encoded data slice;

retrieve the first encrypted data slice corresponding to the first encoded data slice from the one of the plurality of memory devices;

regenerate the first encryption key corresponding to the first encoded data slice; and

regenerate the first encoded data slice by utilizing the first encryption key.

17. The non-transitory computer readable storage medium of claim 13 wherein the operational instructions, when executed by the processing system, further cause the processing system to:

re-encrypt the first encoded data slice with a new encryption key in response a transfer of the first encoded data slice from the one of the plurality of memory devices to another one of the plurality of memory devices.

Assignments (6)
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 →
CORRECTIVE ASSIGNMENT TO CORRECT THE DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY CITY PREVIOUSLY RECORDED AT REEL: 38436 FRAME: 639. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 6, 2019
From: RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 050301/0218 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2016
From: RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038436/0639 →
Continuity (2)
Provisional Application 62199816 · Jul 31, 2015
Related Publication 20170032139A1 · Feb 2, 2017