IP Library Granted Patent US 8,677,214
Granted Patent B2
US 8,677,214 · App. 13/611,962 · Granted Mar 18, 2014

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 8,677,214
App. No.
13/611,962
Granted
Mar 18, 2014
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 (68)

1. A method comprises:

encoding data using a dispersed storage error coding function to produce a set of encoded data slices, wherein the data is re-creatable from a decode threshold number of encoded data slices of the set of encoded data slices;

generating a zero information gain (ZIG) encoded data slice that represents a component of recovery information of a first encoded data slice of the set of encoded data slices using a ZIG function and a second encoded data slice of the set of encoded data slices; and

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 the decode threshold number of encoded data slices and does not include the first or the second encoded data slice.

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

dividing the data into data blocks;

encoding the data blocks using an encoding matrix of the dispersed storage error coding function to produce encoded data blocks; and

generating the set of encoded data slices from the encoded data blocks.

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

generating a decoding matrix for the first encoded data slice based on an encoding matrix of the dispersed storage error coding function; and

generating the ZIG encoded data slice based on the decoding matrix and on the second encoded data slice.

4. The method of claim 3 , wherein the generating the decoding matrix comprises:

reducing the encoding matrix to produce a square matrix based on the first encoded data slice and the subset of encoded data slices; and

inverting the square matrix to produce the decoding matrix.

5. The method of claim 3 , wherein the generating the ZIG encoded data slice based on the decoding matrix and on the second encoded data slice comprises:

encoding the second encoded data slice using the decoding matrix to produce a vector; and

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

6. The method of claim 1 , wherein the outputting the ZIG encoded data slice and the subset of encoded data slices comprises at least one of:

outputting to a receiving entity in support of a communication with the receiving entity;

outputting to a dispersed storage network (DSN) memory for storage therein; and

outputting to at least one intermediary device.

7. The method of claim 1 further comprises:

generating a second ZIG encoded data slice that represents a component of recovery information of a third encoded data slice of the set of encoded data slices using the ZIG function and the second encoded data slice or a fourth encoded data slice of the set of encoded data slices; and

outputting the ZIG encoded data slice, the second ZIG encoded data slice, and the subset of encoded data slices of the set of encoded data slices, wherein the subset of encoded data slices includes less than the decode threshold number of encoded data slices and does not include the first, second, or third encoded data slice and, when the third encoded data slice is encoded based on the fourth encoded data slice, the subset of encoded data slices further does not include the fourth encoded data slice.

8. The method of claim 1 further comprises:

generating a second ZIG encoded data slice that represents a second component of the recovery information of the first encoded data slice of the set of encoded data slices using the ZIG function and a third encoded data slice of the set of encoded data slices;

combining the second ZIG encoded data slice with the ZIG encode data slice to produce the ZIG encoded data slice; and

outputting the ZIG encoded data slice and the subset of encoded data slices of the set of encoded data slices, wherein the subset of encoded data slices includes less than the decode threshold number of encoded data slices and does not include the first, second, or third encoded data slice.

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

obfuscating the ZIG encoded data slice utilizing an obfuscation function prior to outputting the ZIG encoded data slice.

10. The method of claim 1 further comprises:

outputting ZIG function information regarding the encoding of the first encoded data slice.

11. A dispersed storage (DS) module comprises:

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

encode data using a dispersed storage error coding function to produce a set of encoded data slices, wherein the data is re-creatable from a decode threshold number of encoded data slices of the set of encoded data slices;

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

generate a zero information gain (ZIG) encoded data slice that represents a component of recovery information of a first encoded data slice of the set of encoded data slices using a ZIG function and a second encoded data slice of the set of encoded data slices; and

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

output 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 the decode threshold number of encoded data slices and does not include the first or the second encoded data slice.

12. The DS module of claim 11 , wherein the first module functions to encode the data by:

dividing the data into data blocks;

encoding the data blocks using an encoding matrix of the dispersed storage error coding function to produce encoded data blocks; and

generating the set of encoded data slices from the encoded data blocks.

13. The DS module of claim 11 , wherein the second module functions to generate the ZIG encoded data slice by:

generating a decoding matrix for the first encoded data slice based on an encoding matrix of the dispersed storage error coding function; and

generating the ZIG encoded data slice based on the decoding matrix and on the second encoded data slice.

14. The DS module of claim 13 , wherein the second module functions to generate the decoding matrix by:

reducing the encoding matrix to produce a square matrix based on the first encoded data slice and the subset of encoded data slices; and

inverting the square matrix to produce the decoding matrix.

15. The DS module of claim 13 , wherein the second module functions to generate the ZIG encoded data slice based on the decoding matrix and on the second encoded data slice by:

encoding the second encoded data slice using the decoding matrix to produce a vector; and

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

16. The DS module of claim 11 , wherein the third module functions to output the ZIG encoded data slice and the subset of encoded data slices by at least one of:

outputting to a receiving entity in support of a communication with the receiving entity;

outputting to a dispersed storage network (DSN) memory for storage therein; and

outputting to at least one intermediary device.

17. The DS module of claim 11 further comprises:

the second module further functions to generate a second ZIG encoded data slice that represents a component of recovery information of a third encoded data slice of the set of encoded data slices using the ZIG function and the second encoded data slice or a fourth encoded data slice of the set of encoded data slices; and

the third module further functions to output the ZIG encoded data slice, the second ZIG encoded data slice, and the subset of encoded data slices of the set of encoded data slices, wherein the subset of encoded data slices includes less than the decode threshold number of encoded data slices and does not include the first, second, or third encoded data slice and, when the third encoded data slice is encoded based on the fourth encoded data slice, the subset of encoded data slices further does not include the fourth encoded data slice.

18. The DS module of claim 11 further comprises:

the second module further functions to:

generate a second ZIG encoded data slice that represents a second component of the recovery information of the first encoded data slice of the set of encoded data slices using the ZIG function and a third encoded data slice of the set of encoded data slices; and

combine the second ZIG encoded data slice with the ZIG encode data slice to produce the ZIG encoded data slice; and

the third module further functions to output the ZIG encoded data slice and the subset of encoded data slices of the set of encoded data slices, wherein the subset of encoded data slices includes less than the decode threshold number of encoded data slices and does not include the first, second, or third encoded data slice.

19. The DS module of claim 11 , wherein the third module further functions to output by:

obfuscating the ZIG encoded data slice utilizing an obfuscation function prior to outputting the ZIG encoded data slice.

20. The DS module of claim 11 further comprises:

the third module further functions to output ZIG function information regarding the encoding of the first encoded data 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 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2012
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 028949/0164 →