IP Library Granted Patent US 10,042,703
Granted Patent B2
US 10,042,703 · App. 15/193,335 · Granted Aug 7, 2018

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 10,042,703
App. No.
15/193,335
Granted
Aug 7, 2018
Kind
B2
Abstract

A method includes generating a data matrix from the data, wherein the data matrix includes a plurality of columns and a plurality of rows. The method further includes generating a chunkset data matrix from one or more rows of the data matrix. The method further includes matrix multiplying the chunkset data matrix by an encoding matrix to produce a chunkset slice matrix, wherein a row of the chunkset slice matrix corresponds to an encoded data slice and wherein the plurality of rows of the chunkset slice matrix corresponds to a set of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is needed to recover the data grouping associated with the one or more rows of the data matrix.

Claims (65)

1. A method for dispersed storage error encoding data by a computing device, the method comprises:

generating, by the computing device, a data matrix from the data, wherein the data matrix includes a plurality of columns and a plurality of rows, a column of the plurality of columns is based on data size and a row of the plurality of rows is based on a data grouping;

generating, by the computing device, a chunkset data matrix, wherein generating, by the computing device, the chunkset data matrix comprises:

selecting, by the computing device, a row of the data matrix;

dividing, by the computing device, the data grouping of the selected row into a decode threshold number of data sub-groupings;

determining the selected number of data blocks based on a desired data size for a data block of the selected number of data blocks in accordance with a desired level of reliability performance;

dividing, by the computing device, each of the decode threshold number of data sub-groupings into the selected number of data blocks; and

arranging, by the computing device, the selected number of data blocks of the decode threshold number of data sub-groupings into the chunkset data matrix;

matrix multiplying, by the computing device, the chunkset data matrix by an encoding matrix to produce a chunkset slice matrix, wherein a row of the chunkset slice matrix corresponds to an encoded data slice and wherein the plurality of rows of the chunkset slice matrix corresponds to a set of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is needed to recover the data grouping associated with the one or more rows of the data matrix.

2. The method of claim 1 , wherein the generating, by the computing device, the data matrix comprises:

obtaining, by the computing device, the data, which includes a plurality of data groups;

determining, by the computing device, a data length for a data chunkset based on size of one or more data groups of the plurality of data groups;

arranging, by the computing device, the plurality of data groups into data chunksets based on the data length;

determining, by the computing device, whether data padding is needed for one or more of the data chunksets; and

when data padding is needed for one or more of the data chunksets, adding, by the computing device, data padding to the data one or more of the data chunksets such that each of the data chunksets is of a substantially similar data length.

3. The method of claim 1 , wherein the matrix multiplying, by the computing device, comprises:

selecting, by the computing device, a column of the chunkset data matrix to produce a selected column of the chunkset data matrix;

matrix multiplying, by the computing device, the selected column of the chunkset data matrix by the encoding matrix to produce a column of the chunkset slice matrix; and

repeating the selecting of the selected column and the matrix multiplying, by the computing device, of the selected column until each of the columns of the chunkset data matrix have been selected and matrix multiplied to produce the chunkset slice matrix.

4. The method of claim 1 further comprises:

encrypting, by the computing device, the decode threshold number of encoded data slices to produce a subset of encrypted encoded data slices; and

sending, by the computing device, the subset of encrypted encoded data slices and remaining encoded data slices of the set of encoded data slices to storage units for storage therein.

5. The method of claim 1 , where the data comprises one or more of:

a text data object;

a portion of the text data object;

a video data object;

a portion of the vide data object;

an audio data object;

a portion of the audio data object;

an graphic image data object; and

a portion of the graphic image data object, wherein at least one of: the text data object, the portion of the text data object, the video data object, the portion of the vide data object, the audio data object, the portion of the audio data object, the graphic image data object, and the portion of the graphic image data object is in a group of data corresponding to the data grouping.

6. A computer readable memory device comprises:

a first memory section that stores operational instructions that, when executed by a computing device, causes the computing device to:

generate a data matrix from the data, wherein the data matrix includes a plurality of columns and a plurality of rows, a column of the plurality of columns is based on data size and a row of the plurality of rows is based on a data grouping;

a second memory section that stores operational instructions that, when executed by the computing device, causes the computing device to:

generate a chunkset data matrix from one or more rows of the data matrix, wherein generating the chunkset data matrix comprises:

selecting a row of the data matrix;

dividing the data grouping of the selected row into a decode threshold number of data sub-groupings;

determine the selected number of data blocks based on a desired data size for a data block of the selected number of data blocks in accordance with a desired level of reliability performance;

dividing each of the decode threshold number of data sub-groupings into the selected number of data blocks; and

arranging the selected number of data blocks of the decode threshold number of data sub-groupings into the chunkset data matrix;

a third memory section that stores operational instructions that, when executed by the computing device, causes the computing device to:

matrix multiply the chunkset data matrix by an encoding matrix to produce a chunkset slice matrix, wherein a row of the chunkset slice matrix corresponds to an encoded data slice and wherein the plurality of rows of the chunkset slice matrix corresponds to a set of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is needed to recover the data grouping associated with the one or more rows of the data matrix.

7. The computer readable memory device of claim 6 , wherein the first memory section further stores operational instructions that, when executed by the computing device, causes the computing device to generate the data matrix by:

obtaining the data, which includes a plurality of data groups;

determining a data length for a data chunkset based on size of one or more data groups of the plurality of data groups;

arranging the plurality of data groups into data chunksets based on the data length;

determining whether data padding is needed for one or more of the data chunksets; and

when data padding is needed for one or more of the data chunksets, adding data padding to the data one or more of the data chunksets such that each of the data chunksets is of a substantially similar data length.

8. The computer readable memory device of claim 6 , wherein the third memory section further stores operational instructions that, when executed by the computing device, causes the computing device to matrix multiplying by:

selecting a column of the chunkset data matrix to produce a selected column of the chunkset data matrix;

matrix multiplying the selected column of the chunkset data matrix by the encoding matrix to produce a column of the chunkset slice matrix; and

repeating the selecting of the selected column and the matrix multiplying of the selected column until each of the columns of the chunkset data matrix have been selected and matrix multiplied to produce the chunkset slice matrix.

9. The computer readable memory device of claim 6 , wherein the third memory section further stores operational instructions that, when executed by the computing device, causes the computing device to:

encrypt the decode threshold number of encoded data slices to produce a subset of encrypted encoded data slices; and

send the subset of encrypted encoded data slices and remaining encoded data slices of the set of encoded data slices to storage units for storage therein.

10. The computer readable memory device of claim 6 , where the data comprises one or more of:

a text data object;

a portion of the text data object;

a video data object;

a portion of the vide data object;

an audio data object;

a portion of the audio data object;

an graphic image data object; and

a portion of the graphic image data object, wherein at least one of: the text data object, the portion of the text data object, the video data object, the portion of the vide data object, the audio data object, the portion of the audio data object, the graphic image data object, and the portion of the graphic image data object is in a group of data corresponding to the data grouping.

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 Jan 30, 2017
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041550/0806 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2017
From: RESCH, JASON K.; DHUSE, GREG
To: CLEVERSAFE, INC.
Reel/Frame 041078/0895 →