IP Library Granted Patent US 10,216,576
Granted Patent B2
US 10,216,576 · App. 14/217,662 · Granted Feb 26, 2019

Encoding data utilizing a zero information gain function

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,216,576
App. No.
14/217,662
Granted
Feb 26, 2019
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module encoding data using a dispersed storage error coding function to produce a set of encoded data slices. The method continues with the DS processing module encoding a first encoded data slice of the set of encoded data slices using a zero information gain (ZIG) function based on a second encoded data slice of the set of encoded data slices to produce a ZIG encoded data slice. The method continues with the DS processing module outputting the ZIG encoded data slice and a subset of encoded data slices of the set of encoded data slices, wherein the subset of encoded data slices includes less than a decode threshold number of encoded data slices and does not include the first or the second encoded data slice.

Claims (42)

1. A method for execution by a processing module of a computing device of a dispersed storage network (DSN), the method comprises:

dispersed storage error encoding, by the processing module and in accordance with distributed data storage parameters, a data segment to produce a set of encoded data slices and a set of zero information gain (ZIG) encoded data slices, wherein the set of encoded data slices is encoded in accordance with a dispersed storage error encoding scheme and wherein the set of ZIG encoded data slices is encoded using a ZIG function and further wherein a first ZIG encoded data slice of the set of ZIG encoded data slices is generated by matrix multiplying a first decoding matrix and a first encoded data slice of the set of encoded data slices, wherein generating the first ZIG encoded data slice includes generating a first partial encoded data slice based on the first decoding matrix, the first encoded data slice and a row of the encoding matrix corresponding to the first encoded data slice, generating a second partial encoded data slice based on a second decoding matrix, a second encoded data slice and a row of the encoding matrix corresponding to the second encoded data slice, wherein the second encoded data slice is an encoded data slice of the set of encoded data slices and not included in the subset of encoded data slices, and combining the first and second partial encoded data slices to produce the first ZIG encoded data slice;

selecting, by the processing module, a first subset of encoded data slices from the set of encoded data slices, wherein the first subset of encoded data slices includes less than a threshold number of encoded data slices, and further wherein the threshold number of encoded data slices is required to recreate the data segment;

sending, by the processing module via an interface of the computing device, the subset of encoded data slices to a first memory within the DSN for storage therein; and

sending, by the processing module via the interface, the set of ZIG encoded data slices to a second memory within the DSN for storage therein.

2. The method of claim 1 , wherein generating the first ZIG encoded data slice further comprises:

matrix multiplying the first decoding matrix and the first encoded data slice to produce a vector; and

matrix multiplying the vector by a row of the encoding matrix corresponding to the first encoded data slice to produce the first ZIG encoded data slice.

3. The method of claim 1 further comprises:

generating the first decoding matrix by:

reducing an encoding matrix to produce a square matrix that exclusively includes rows associated with the subset of encoded data slices and an encoded data slice being represented by the first ZIG encoded data slice; and

inverting the square matrix to produce the decoding matrix.

4. The method of claim 1 , wherein the sending the set of ZIG encoded data slices comprises:

prior to sending, obfuscating the first ZIG encoded data slice using an obfuscating function.

5. The method of claim 4 , wherein the obfuscating function comprises one of:

exclusive ORing the first ZIG encoded data slice with an obfuscating value;

masking the first ZIG encoded data slice;

encrypting the first ZIG encoded data slice; and

performing a deterministic function on the first ZIG encoded data slice.

6. A dispersed storage (DS) module of a dispersed storage network (DSN) comprises:

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

dispersed storage error encode in accordance with distributed data storage parameters, a data segment of data to produce a set of encoded data slices and a set of zero information gain (ZIG) encoded data slices, wherein the set of encoded data slices is encoded in accordance with a dispersed storage error encoding scheme and wherein the set of ZIG encoded data slices is encoded using a ZIG function, wherein a first ZIG encoded data slice of the set of ZIG encoded data slices is generated by matrix multiplying a first decoding matrix and a first encoded data slice of the set of encoded data slices and wherein the generating the first ZIG encoded data slice includes:

generating a first partial encoded data slice based on the first decoding matrix, the first encoded data slice and a row of the encoding matrix corresponding to the first encoded data slice;

generating a second partial encoded data slice based on a second decoding matrix, a second encoded data slice and a row of the encoding matrix corresponding to the second encoded data slice, wherein the second encoded data slice is an encoded data slice of the set of encoded data slices and not included in the subset of encoded data slices; and

combining the first and second partial encoded data slices to produce the first ZIG encoded data slice;

select a first subset of encoded data slices from the set of encoded data slices, wherein the first subset of encoded data slices includes less than a threshold number of encoded data slices, and further wherein the threshold number of encoded data slices is required to recreate the data segment; and

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

send, via an interface of the computing device, the subset of encoded data slices to a first memory within the DSN for storage therein; and

send, via the interface, the set of ZIG encoded data slices to a second memory within the DSN for storage therein.

7. The DS module of claim 6 , wherein the first module, when operable within the computing device, further causes the computing device to generate the first ZIG encoded data slice by:

matrix multiplying the first decoding matrix and the first encoded data slice to produce a vector; and

matrix multiplying the vector by a row of the encoding matrix corresponding to the first encoded data slice to produce the first ZIG encoded data slice.

8. The DS module of claim 6 , wherein the first module, when operable within the computing device, causes the computing device to generate the first decoding matrix by:

reducing an encoding matrix to produce a square matrix that exclusively includes rows associated with the subset of encoded data slices and an encoded data slice being represented by the first ZIG encoded data slice; and

inverting the square matrix to produce the decoding matrix.

9. The DS module of claim 6 , wherein the second module, when operable within the computing device, further causes the computing device to send the set of ZIG encoded data slices by:

prior to sending, obfuscating the first ZIG encoded data slice using an obfuscating function.

10. The DS module of claim 9 , wherein the obfuscating function comprises one of:

exclusive ORing the first ZIG encoded data slice with an obfuscating value;

masking the first ZIG encoded data slice;

encrypting the first ZIG encoded data slice; and

performing a deterministic function on the first ZIG encoded data slice.

Assignments (5)
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 →