IP Library Granted Patent US 9,495,240
Granted Patent B2
US 9,495,240 · App. 14/499,570 · Granted Nov 15, 2016

Encrypting data for storage in a dispersed storage network

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 9,495,240
App. No.
14/499,570
Granted
Nov 15, 2016
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module encrypting a plurality of data segments of the data using a plurality of encryption keys to produce a plurality of encrypted data segments and generating a plurality of deterministic values from the plurality of encrypted data segments. The method continues with the DS processing module establishing a data intermingling pattern and generating a plurality of masked keys by selecting one or more of the plurality of deterministic values in accordance with the data intermingling pattern and performing a masking function on the plurality of encryption keys and the selected one or more of the plurality of deterministic values. The method continues with the DS processing module appending the plurality of masked keys to the plurality of encrypted data segments to produce a plurality of secure data packages and outputting the plurality of secure data packages.

Claims (70)

1. A method for storing data, the method comprises:

partitioning, via processing system including processing hardware, a first portion of the data into a plurality of data units, wherein the first portion of the data is recoverable from a threshold number of data units, wherein the plurality of data units includes a total number of data units, and wherein the threshold number is at least two less than the total number;

generating, via the processing system, a plurality of encryption keys;

encrypting, via the processing system, the plurality of data units using the plurality of encryption keys to produce a plurality of encrypted data units;

generating, via the processing system, a plurality of masked keys based on the plurality of encrypted data units and the plurality of encryption keys;

determining, via the processing system, a data intermingling pattern for associating the plurality of masked keys with the plurality of encrypted data units, wherein the data intermingling pattern insures that, when the threshold number of encrypted data units are available, the plurality of masked keys are retrievable regardless of which encrypted data units of the plurality of encrypted data units are included in the threshold number of encrypted data units;

appending, via the processing system, the plurality of masked keys to the plurality of encrypted data units in accordance with the data intermingling pattern to produce a plurality of secure data packages; and

outputting, via the processing system, the plurality of secure data packages for storage.

2. The method of claim 1 , wherein the outputting the plurality of secure data packages comprises:

performing a dispersed storage error encoding function on the plurality of secure data packages to produce a plurality of sets of encoded data slices; and

outputting the plurality of sets of encoded data slices.

3. The method of claim 1 , wherein the generating the plurality of masked keys comprises:

generating a plurality of deterministic values from the plurality of encrypted data units using one or more deterministic functions;

selecting one or more of the plurality of deterministic values in accordance with the data intermingling pattern; and

performing a masking function on the plurality of encryption keys and the selected one or more of the plurality of deterministic values to produce the plurality of masked keys.

4. The method of claim 1 , wherein the appending the plurality of masked keys to the plurality of encrypted data units comprises:

determining a value “k” as the difference between the total number and the threshold number;

combining masked keys of the plurality of masked keys to produce a plurality of combined masked keys, wherein a number of combined masked keys equals the total number and wherein each masked key of the plurality of masked keys appears in at least “k+1” of the plurality of combined masked keys; and

appending the combined masked keys to the plurality of encrypted data units in accordance with the data intermingling pattern to produce the plurality of secure data packages.

5. The method of claim 4 , wherein the combining comprises one or more of:

adding;

subtracting; and

exclusive ORing.

6. The method of claim 1 further comprises:

partitioning a second portion of the data into a second plurality of data units;

generating a second plurality of encryption keys;

encrypting the second plurality of data units using the second plurality of encryption keys to produce a second plurality of encrypted data units;

generating a second plurality of masked keys based on the second plurality of encrypted data units and the second plurality of encryption keys;

appending the second plurality of masked keys to the second plurality of encrypted data units in accordance with the data intermingling pattern to produce a second plurality of secure data packages; and

outputting the second plurality of secure data packages for storage.

7. A dispersed storage (DS) module comprises:

a first module, configured to operate within a computing device that includes processing hardware, causing the computing device to:

partition a first portion of data into a plurality of data units, wherein the first portion of the data is recoverable from a threshold number of data units, wherein the plurality of data units includes a total number of data units, and wherein the threshold number is at least two less than the total number;

a second module, configured to operate within the computing device, causing the computing device to:

generate a plurality of encryption keys; and

encrypt the plurality of data units using the plurality of encryption keys to produce a plurality of encrypted data units;

a third module, configured to operate within the computing device, causing the computing device to:

generate a plurality of masked keys based on the plurality of encrypted data units and the plurality of encryption keys;

a fourth module, configured to operate within the computing device, causing the computing device to:

determine a data intermingling pattern for associating the plurality of masked keys with the plurality of encrypted data units, wherein the data intermingling pattern insures that, when the threshold number of encrypted data units are available, the plurality of masked keys are retrievable regardless of which encrypted data units of the plurality of encrypted data units are included in the threshold number of encrypted data units;

append the plurality of masked keys to the plurality of encrypted data units in accordance with the data intermingling pattern to produce a plurality of secure data packages; and

a fifth module, configured to operate within the computing device, causing the computing device to:

output the plurality of secure data packages for storage.

8. The DS module of claim 7 , wherein the fifth module, when operable within the computing device, further causes the computing device to:

perform a dispersed storage error encoding function on the plurality of secure data packages to produce a plurality of sets of encoded data slices; and

output the plurality of sets of encoded data slices.

9. The DS module of claim 7 , wherein the third module, when operable within the computing device, further causes the computing device to:

generating a plurality of deterministic values from the plurality of encrypted data units using one or more deterministic functions;

selecting one or more of the plurality of deterministic values in accordance with the data intermingling pattern; and

performing a masking function on the plurality of encryption keys and the selected one or more of the plurality of deterministic values to produce the plurality of masked keys.

10. The DS module of claim 7 , wherein the fourth module, when operable within the computing device, further causes the computing device to append the plurality of masked keys to the plurality of encrypted data units by:

determining a value “k” as the difference between the total number and the threshold number;

combining masked keys of the plurality of masked keys to produce a plurality of combined masked keys, wherein a number of combined masked keys equals the total number and wherein each masked key of the plurality of masked keys appears in at least “k+1” of the plurality of combined masked keys; and

appending the combined masked keys to the plurality of encrypted data units in accordance with the data intermingling pattern to produce the plurality of secure data packages.

11. The DS module of claim 10 , wherein the combining comprises one or more of:

adding;

subtracting; and

exclusive ORing.

12. The DS module of claim 7 further comprises:

the first module, when operable within the computing device, further causes the computing device to:

partition a second portion of the data into a second plurality of data units;

the second module, when operable within the computing device, further causes the computing device to:

generate a second plurality of encryption keys; and

encrypt the second plurality of data units using the second plurality of encryption keys to produce a second plurality of encrypted data units;

the third module, when operable within the computing device, further causes the computing device to:

generate a second plurality of masked keys based on the second plurality of encrypted data units and the second plurality of encryption keys;

the fourth module, when operable within the computing device, further causes the computing device to:

append the second plurality of masked keys to the second plurality of encrypted data units in accordance with the data intermingling pattern to produce a second plurality of secure data packages; and

the fifth module, when operable within the computing device, further causes the computing device to:

output the second plurality of secure data packages for storage.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2016
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 038311/0988 →