IP Library Granted Patent US 9,311,186
Granted Patent B2
US 9,311,186 · App. 14/726,699 · Granted Apr 12, 2016

Dispersed storage network slice name verification

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,311,186
App. No.
14/726,699
Granted
Apr 12, 2016
Kind
B2
Abstract

A method begins by a processing module dispersed storage error encoding data to produce a plurality of sets of encoded data slices in accordance with dispersed storage error coding parameters. The method continues with the processing module determining a plurality of sets of slice names corresponding to the plurality of sets of encoded data slices. The method continues with the processing module determining integrity information for the plurality of sets of slice names and sending the plurality of sets of encoded data slices, the plurality of sets of slice names, and the integrity information to a dispersed storage network memory for storage therein.

Claims (109)

1. A method comprises:

receiving a data retrieval request;

determining a plurality of sets of slice names in accordance with the data retrieval request;

receiving stored integrity information corresponding to the data retrieval request;

generating desired integrity information based on the plurality of sets of slice names;

comparing the stored integrity information with the desired integrity information; and

when the stored integrity information compares favorably with the desired integrity information, dispersed storage error decoding at least a decode threshold number of encoded data slices of a set of encoded data slices of a plurality of sets of encoded data slices.

2. The method of claim 1 further comprises:

for a first integrity method and when the stored integrity information compares unfavorably with the desired integrity information:

identifying at least one of the slices names of at least some of the plurality of sets of slices names corresponding to the unfavorable comparison; and

excluding at least one encoded data slice associated with the at least one of the slice names from the dispersed storage error decoding;

for a second integrity method and when the stored integrity information compares unfavorably with the desired integrity information:

identifying a set of slice names of at least some of the plurality of sets of slice names corresponding to the unfavorable comparison; and

excluding a set of encoded data slices associated with the set of slice names from the dispersed storage error decoding;

for a third integrity method and when the stored integrity information compares unfavorably with the desired integrity information:

identifying a pillar set of slice names of at least some of the plurality of sets of slice names corresponding to the unfavorable comparison; and

excluding a pillar set of encoded data slices associated with the pillar set of slice names from the dispersed storage error decoding;

for a fourth integrity method and when the stored integrity information compares unfavorably with the desired integrity information, indicating a dispersed storage error decoding failure; and

for a fifth integrity method and when the stored integrity information compares unfavorably with the desired integrity information:

identifying at least one of the slices names of at least some of the plurality of sets of slices names corresponding to the unfavorable comparison; and

excluding at least one encoded data slice associated with the at least one of the slice names from the dispersed storage error decoding.

3. The method of claim 2 further comprises:

comparing the stored integrity information with the desired integrity information using the fourth integrity method;

when the comparing the stored integrity information with the desired integrity information using the fourth integrity method fails, comparing the stored integrity information with the desired integrity information using at least one of the second and third integrity methods; and

when the comparing the stored integrity information with the desired integrity information using the at least one of the second and third integrity methods fails, comparing the stored integrity information with the desired integrity information using the first integrity method.

4. The method of claim 1 , wherein the determining the desired integrity information further comprises:

for a first integrity method:

generating individual integrity information for at least some of the slices names of at least some of the plurality of sets of slices names; and

generating the desired integrity information based on the individual integrity information;

for a second integrity method:

generating set integrity information for a set of slice names of at least some of the plurality of sets of slice names; and

generating the desired integrity information based on the set integrity information;

for a third integrity method:

generating pillar integrity information for a pillar set of slice names of at least some of the plurality of sets of slice names; and

generating the desired integrity information based on the pillar integrity information;

for a fourth integrity method:

generating data file integrity information for at least some of the plurality of sets of slice names; and

generating the desired integrity information based on the data file integrity information; and

for a fifth integrity method:

generating combined integrity information for at least some of the encoded data slices of the plurality of sets of encoded data slices and for at least some of the slices names of at least some of the plurality of sets of slice names; and

generating the desired integrity information based on the combined integrity information.

5. The method of claim 4 further comprises:

for the first integrity method, performing one or more of a hash function, cyclic redundancy check, encryption function, and parity check on a slice name of the at least some of the slices names of at least some of the plurality of sets of slices names to generate the individual integrity information;

for the second integrity method, performing one or more of the hash function, the cyclic redundancy check, the encryption function, and the parity check on the set of slice names of at least some of the plurality of sets of slice names to generate the set integrity information;

for the third integrity method, performing one or more of the hash function, the cyclic redundancy check, the encryption function, and the parity check on the pillar set of slice names of at least some of the plurality of sets of slice names to generate the pillar integrity information;

for the fourth integrity method, performing one or more of the hash function, the cyclic redundancy check, the encryption function, and the parity check on the at least some of the plurality of sets of slice names to generate the data file integrity information; and

for the fifth integrity method, performing one or more of a hash function, cyclic redundancy check, encryption function, and parity check on an encoded data slice of the at least some of the encoded data slices of the plurality of encoded data slices and an associated slice name of the at least some of the slice names of the plurality of sets of slice names to generate the combined integrity information.

6. The method of claim 5 further comprises:

the hash function including a hashed message authentication code (HMAC) that uses a shared key; and

the encryption function includes an encryption algorithm that utilizes an encryption shared key.

7. The method of claim 1 , wherein the comparing the stored integrity information with the desired integrity information further comprises:

decrypting the stored integrity information using a public key to produce at least some of a plurality of sets of reconstructed slice names; and

comparing corresponding slices names of the plurality of sets of slice names with the at least some of a plurality of sets of reconstructed slice names.

8. A computer comprises:

an interface;

a memory; and

a processing module operable to:

receive, via the interface, a data retrieval request;

determine a plurality of sets of slice names in accordance with the data retrieval request;

receive, via the interface, stored integrity information corresponding to the data retrieval request;

generate desired integrity information based on the plurality of sets of slice names;

compare the stored integrity information with the desired integrity information; and

when the stored integrity information compares favorably with the desired integrity information, dispersed storage error decode at least a decode threshold number of encoded data slices of a set of encoded data slices of a plurality of sets of encoded data slices.

9. The computer of claim 8 , wherein the processing module further functions to:

for a first integrity method and when the stored integrity information compares unfavorably with the desired integrity information:

identify at least one of the slices names of at least some of the plurality of sets of slices names corresponding to the unfavorable comparison; and

exclude at least one encoded data slice associated with the at least one of the slice names from the dispersed storage error decoding;

for a second integrity method and when the stored integrity information compares unfavorably with the desired integrity information:

identify a set of slice names of at least some of the plurality of sets of slice names corresponding to the unfavorable comparison; and

exclude a set of encoded data slices associated with the set of slice names from the dispersed storage error decoding;

for a third integrity method and when the stored integrity information compares unfavorably with the desired integrity information:

identify a pillar set of slice names of at least some of the plurality of sets of slice names corresponding to the unfavorable comparison; and

exclude a pillar set of encoded data slices associated with the pillar set of slice names from the dispersed storage error decoding;

for a fourth integrity method and when the stored integrity information compares unfavorably with the desired integrity information, indicate a dispersed storage error decoding failure; and

for a fifth integrity method and when the stored integrity information compares unfavorably with the desired integrity information:

identifying at least one of the slices names of at least some of the plurality of sets of slices names corresponding to the unfavorable comparison; and

excluding at least one encoded data slice associated with the at least one of the slice names from the dispersed storage error decoding.

10. The computer of claim 9 , wherein the processing module further functions to:

compare the stored integrity information with the desired integrity information using the fourth integrity method;

when the comparison of the stored integrity information with the desired integrity information using the fourth integrity method fails, compare the stored integrity information with the desired integrity information using at least one of the second and third integrity methods; and

when the comparison of the stored integrity information with the desired integrity information using the at least one of the second and third integrity methods fails, compare the stored integrity information with the desired integrity information using the first integrity method.

11. The computer of claim 8 , wherein the processing module further functions to determine the desired integrity information by:

for a first integrity method:

generating individual integrity information for at least some of the slices names of at least some of the plurality of sets of slices names; and

generating the desired integrity information based on the individual integrity information;

for a second integrity method:

generating set integrity information for a set of slice names of at least some of the plurality of sets of slice names; and

generating the desired integrity information based on the set integrity information;

for a third integrity method:

generating pillar integrity information for a pillar set of slice names of at least some of the plurality of sets of slice names; and

generating the desired integrity information based on the pillar integrity information;

for a fourth integrity method:

generating data file integrity information for at least some of the plurality of sets of slice names; and

generating the desired integrity information based on the data file integrity information; and

for a fifth integrity method:

generating combined integrity information for at least some of the encoded data slices of the plurality of sets of encoded data slices and for at least some of the slices names of at least some of the plurality of sets of slice names; and

generating the desired integrity information based on the combined integrity information.

12. The computer of claim 11 , wherein the processing module further functions to:

for the first integrity method, perform one or more of a hash function, cyclic redundancy check, encryption function, and parity check on a slice name of the at least some of the slices names of at least some of the plurality of sets of slices names to generate the individual integrity information;

for the second integrity method, perform one or more of the hash function, the cyclic redundancy check, the encryption function, and the parity check on the set of slice names of at least some of the plurality of sets of slice names to generate the set integrity information;

for the third integrity method, perform one or more of the hash function, the cyclic redundancy check, the encryption function, and the parity check on the pillar set of slice names of at least some of the plurality of sets of slice names to generate the pillar integrity information;

for the fourth integrity method, perform one or more of the hash function, the cyclic redundancy check, the encryption function, and the parity check on the at least some of the plurality of sets of slice names to generate the data file integrity information; and

for the fifth integrity method, performing one or more of a hash function, cyclic redundancy check, encryption function, and parity check on an encoded data slice of the at least some of the encoded data slices of the plurality of encoded data slices and an associated slice name of the at least some of the slice names of the plurality of sets of slice names to generate the combined integrity information.

13. The computer of claim 12 further comprises:

the hash function including a hashed message authentication code (HMAC) that uses a shared key; and

the encryption function includes an encryption algorithm that utilizes an encryption shared key.

14. The computer of claim 8 , wherein the processing module further functions to compare the stored integrity information with the desired integrity information by:

decrypting the stored integrity information using a public key to produce at least some of a plurality of sets of reconstructed slice names; and

comparing corresponding slices names of the plurality of sets of slice names with the at least some of a plurality of sets of reconstructed slice names.

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 Mar 31, 2016
From: RESCH, JASON K.; QUIGLEY, JOHN; LEGGETTE, WESLEY
To: CLEVERSAFE, INC.
Reel/Frame 038154/0102 →