IP Library Granted Patent US 9,842,222
Granted Patent B2
US 9,842,222 · App. 13/463,991 · Granted Dec 12, 2017

Securely rebuilding an encoded data slice

Inventors: Greg Dhuse (Chicago, IL); Jason K. Resch (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F21/6227G06F3/0604G06F3/067G06F3/0644G06F11/10G06F11/1076G06F11/2089G06F12/1408G06F21/602G06F21/6218G06F21/64H04L9/085H04L9/0861G06F15/17331G06F17/30283G06F2212/263G06F2221/2107H04L2209/24H04L2209/34
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,842,222
App. No.
13/463,991
Granted
Dec 12, 2017
Kind
B2
Abstract

A method begins by a requesting entity issuing a rebuild request regarding an encoded data slice to at least some of a set of distributed storage (DS) units. In response to the rebuild request, the method continues with each of at least some of the DS units of the set of DS units generating a partial slice corresponding to the encoded data slice to be rebuilt based on one of a set of encoded data slices stored by the respective DS unit to produce an array of partial slices. The method continues with the at least some of the DS units encrypting the array of partial slices using a set of encryption keys to produce an array of encrypted partial slices. The method continues with the requesting entity rebuilding the encoded data slice from the array of encrypted partial slices.

Claims (44)

1. A method comprises:

issuing, by a requesting entity, a rebuild request regarding an encoded data slice to a set of distributed storage (DS) units, wherein a data segment of data is dispersed storage error encoded to produce a set of encoded data slices, wherein the set of encoded data slices includes the encoded data slice, wherein the data segment is reconstructable from a decode threshold number of encoded data slices of the set of encoded data slices, and wherein the encoded data slice is corrupted or lost;

in response to the rebuild request, generating, by each of at least some of the DS units of the set of DS units, a partial slice corresponding to the encoded data slice based on another encoded data slice of the set of encoded data slices stored by the respective DS unit to produce an array of partial slices;

encrypting, by the at least some of the DS units, the array of partial slices using a set of encryption keys, wherein each encryption key of the set of encryption keys is used 2*n times to produce an array of encrypted partial slices, where n is an integer greater than or equal to 1; and

rebuilding, by the requesting entity, the encoded data slice from the array of encrypted partial slices.

2. The method of claim 1 , wherein the encrypting comprises:

arranging, when n equals 1, the at least some of DS units into DS unit pairings, wherein each DS unit of a DS unit pairing uses a same encryption key of the set of encryption keys.

3. The method of claim 2 further comprises:

for the DS unit pairing:

generating, by the DS units of the DS unit pairing, a shared secret; and

generating, by each of the DS units of the DS unit pairing, the same encryption key based on the shared secret.

4. The method of claim 1 , wherein the encrypting comprises:

pairing, when n equals 1 and the at least some of the DS units includes an odd number of DS units, one of the at least some of DS units with two other DS units of the at least some of DS units to use a first encryption key of the set of encryption keys; and

arranging remaining DS units of the at least some of DS units into DS unit pairings, wherein each DS unit of a DS unit pairing uses a same encryption key of the set of encryption keys, wherein the remaining DS units includes the two other DS units.

5. The method of claim 1 , wherein the encrypting comprises:

exclusive ORing, by a DS unit of the at least some of the DS units, a partial slice of the array of partial slices with an encryption key of the set of encryption keys to produce an encrypted partial slice of the array of encrypted partial slices.

6. The method of claim 5 , wherein the rebuilding comprises:

exclusive ORing the array of encrypted partial slices to produce the encoded data slice.

7. The method of claim 1 , wherein the rebuilding comprises:

decrypting the array of encrypted partial slices based on the set of encryption keys to produce the array of partial slices; and

decoding the array of partial slices to rebuild the encode data slice.

8. The method of claim 1 , wherein the requesting entity comprises:

a DS unit of the set of DS units, wherein the DS unit is to store the encoded data slice to be rebuilt.

9. The method of claim 1 , wherein the encrypting comprises:

assigning multiple encryption keys of the set of encryption keys to a DS unit of the at least some of DS units; and

assigning each of the multiple encryption keys to another DS unit of the at least some of DS units.

10. The method of claim 1 , wherein the encrypting comprises:

encrypting, by a first DS unit of the at least some of the DS units, a first partial slice of the array of partial slices using a first encryption key of the set of encryption keys to produce a first encrypted partial slice;

encrypting, by a second DS unit of the at least some of the DS units, a second partial slice of the array of partial slices using a second encryption key of the set of encryption keys to produce a second encrypted partial slice; and

exclusive ORing, by the first or the second DS unit, the first encrypted partial slice and the second encrypted partial slice to produce a combined encrypted partial slice.

11. A dispersed storage (DS) module comprises:

a first module, when operable within a computing device, causes the computing device to receive a rebuild request regarding an encoded data slice, wherein a data segment of data is dispersed storage error encoded to produce a set of encoded data slices, wherein the set of encoded data slices includes the encoded data slice, wherein the data segment is reconstructable from a decode threshold number of encoded data slices of the set of encoded data slices, and wherein the encoded data slice is corrupted or lost;

a second module, when operable within the computing device, causes the computing device to generate a partial slice corresponding to the encoded data slice based on another encoded data slice of the set of encoded data slices stored by a DS unit that includes the DS module; and

a third module, when operable within the computing device, causes the computing device to encrypt the partial slice using an encryption key of a set of encryption keys to produce an encrypted partial slice, wherein the encryption key is used by another DS module of another DS unit to produce another encrypted partial slice.

12. The DS module claim 11 , wherein the third module is further operable to:

generate, in conjunction with the other DS module, a shared secret; and

generate the encryption key based on the shared secret.

13. The DS module claim 11 , wherein the third module is further operable to:

exclusive OR the partial slice with the encryption key of the set of encryption keys to produce the encrypted partial slice.

14. The DS module claim 11 , wherein the third module is further operable to:

assign multiple encryption keys of the set of encryption keys to the DS module, wherein each of the multiple encryption keys is used by another DS unit of a plurality of DS units.

15. The DS module claim 11 , wherein the third module is further operable to:

encrypt a first partial slice of an array of partial slices using a first encryption key of the set of encryption keys to produce a first encrypted partial slice; and

exclusive OR the first encrypted partial slice and a second encrypted partial slice to produce a combined encrypted partial slice, wherein another DS module encrypts a second partial slice of the array of partial slices using a second encryption key of the set of encryption keys to produce the second encrypted partial slice.

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 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 May 8, 2012
From: DHUSE, GREG; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 028170/0799 →
Continuity (4)
Continuation In Part 12862887 · Aug 25, 2010
Provisional Application 61493820 · Jun 6, 2011
Related Publication 20120311345A1 · Dec 6, 2012
Related Publication 20140108815A9 · Apr 17, 2014