IP Library Granted Patent US 10,824,495
Granted Patent B2
US 10,824,495 · App. 15/439,092 · Granted Nov 3, 2020

Cryptographic key storage in a dispersed storage network

Inventors: Wesley B. Leggette (Chicago, IL); Jason K. Resch (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/0781G06F3/064G06F3/0604G06F3/0605G06F3/0619G06F3/0623G06F3/0629G06F3/0644G06F3/0653G06F3/0659G06F11/0709G06F11/079G06F11/0727G06F11/0751G06F11/0793G06F11/1076G06F11/1451G06F11/2094G06F11/3034G06F11/3051G06F11/3055G06F11/327G06F13/4022G06F13/4282G06F30/20G06N3/04G06N3/084G06N3/10G06Q10/06316G06Q10/063116G06Q10/20H03M13/1515H03M13/2909H03M13/3761H03M13/616H04L9/0869H04L9/0894H04L9/14H04L9/3242H04L63/0428H04L63/061H04L63/101G06F3/067G06F2201/84
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,824,495
App. No.
15/439,092
Granted
Nov 3, 2020
Kind
B2
Abstract

Methods for use in a storage unit of a dispersed storage network (DSN) to securely store cryptographic key information. In various examples, the storage unit receives a slice access request relating to a key slice generated by performing a dispersed storage error encoding function on an encryption key. When the slice access request includes a request to store the key slice, the storage unit encrypts the key slice using a local key and stores the encrypted key slice (e.g., in a key region of a storage vault). When the slice access request includes a request to recover a key slice stored in the storage unit, the encrypted key slice is recovered from memory and decrypted using the local key to produce a decrypted key slice for provision to the requesting entity. For rebuilding operations, the storage unit may instead return a zero information gain (ZIG) representation of the key slice.

Claims (73)

1. A method for execution by one or more processing modules of a storage unit of a dispersed storage network (DSN), the storage unit including a local key, the method comprises:

receiving a slice access request from a requesting entity;

identifying the type of the slice access request as a key slice access request, wherein the key slice access request includes at least one of a request to store a key slice or a request to recover a key slice for rebuilding;

in response to determining that the key slice access request includes a request to store a key slice received in conjunction with the key slice access request:

encrypting the key slice using the local key of the storage unit to produce an encrypted key slice; and

storing the encrypted key slice in a memory of the storage unit; and

in response to determining that the key slice access request includes a request to recover a key slice for rebuilding, wherein the key slice is stored as an encrypted key slice in a memory of the storage unit:

recovering the encrypted key slice from the memory of the storage unit;

decrypting the encrypted key slice using the local key of the storage unit to produce a decrypted key slice; and

encoding the decrypted key slice in accordance with a zero information gain (ZIG) format to generate a ZIG representation of the decrypted key slice for provision to the requesting entity.

2. The method of claim 1 , wherein the key slice access request includes at least one of a request to store a key slice, a request to recover a key slice, or a request to recover a key slice for rebuilding, the method further comprises:

in response to determining that the key slice access request includes a request to recover a key slice, wherein the key slice is stored as an encrypted key slice in a memory of the storage unit:

recovering the encrypted key slice from the memory of the storage unit; and

decrypting the encrypted key slice using the local key of the storage unit to produce a decrypted key slice.

3. The method of claim 1 , wherein encoding the decrypted key slice in accordance with a zero information gain (ZIG) format to generate a ZIG representation of the decrypted key slice comprises:

obtaining an encoding matrix utilized to generate a related key slice to be recovered;

generating a decoding matrix based on the encoding matrix;

matrix multiplying the decoding matrix by the decrypted key slice to produce a vector; and

matrix multiplying the vector by a row of the encoding matrix corresponding to the related key slice to be recovered to produce the ZIG representation of the decrypted key slice.

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

reducing the encoding matrix to produce a square matrix that exclusively includes rows associated with a selected decode threshold number of related key slices; and

inverting the square matrix to produce the decoding matrix.

5. The method of claim 1 , wherein identifying the type of the slice access request as a key slice access request includes at least one of:

matching a slice name to a slice name range of a set of slice name ranges and associated types;

extracting an indicator from the slice access request; or

inferring the type of the slice access request based on the identity of the requesting entity.

6. The method of claim 1 , wherein the key slice is one of a set of key slices 1-n generated by encoding a key using a dispersed storage error encoding function, and wherein the key can be recreated from a decode threshold number of key slices of the set of key slices 1-n.

7. The method of claim 1 , wherein the key slice is stored in a portion of the memory of the storage unit that is configured as part of a key region of a vault having a designated addressing namespace within the DSN.

8. The method of claim 1 , wherein the local key of the storage unit is a key of a set of related keys stored in respective storage units of a set of storage units of the DSN.

9. A method for execution by one or more processing modules of a storage unit of a dispersed storage network (DSN), the storage unit including a local key, the method comprises:

receiving a slice access request;

determining that the type of the slice access request includes a request to store a key slice;

receiving the key slice for storage, wherein the key slice is one of a set of key slices 1-n generated by encoding a key using a dispersed storage error encoding function, and wherein the key can be recreated from a decode threshold number of key slices of the set of key slices 1-n;

encrypting the key slice using the local key of the storage unit to produce an encrypted key slice;

storing the encrypted key slice in a memory of the storage unit;

receiving a second slice access request;

in response to the second slice access request, recovering the encrypted key slice from the memory of the storage unit;

decrypting the encrypted key slice using the local key of the storage unit to produce a decrypted key slice; and

encoding the decrypted key slice with a zero information gain (ZIG) format to generate a ZIG representation of the decrypted key slice.

10. The method of claim 9 , wherein determining that the type of the slice access request includes a request to store a key slice includes at least one of:

matching a slice name to a slice name range of a set of slice name ranges and associated types;

extracting an indicator from the slice access request; or

inferring the type of the slice access request based on an identity of a requesting entity.

11. The method of claim 9 , wherein the key slice is included in the slice access request.

12. The method of claim 9 , wherein storing the encrypted key slice in a memory of the storage unit includes storing the encrypted key slice in a portion of the memory that is configured as part of a key region of a vault having a designated addressing namespace with the DSN.

13. The method of claim 9 , wherein the local key of the storage unit is a key of a set of related keys stored in respective storage units of a set of storage units of the DSN.

14. The method of claim 9 further comprises:

determining that the type of the second slice access request includes a request to recover a key slice for rebuilding.

15. A storage unit of a dispersed storage network (DSN), the storage unit comprises:

a network interface;

a local memory, the local memory including a local key;

a memory device; and

a processing module operably coupled to the network interface, the local memory, and the memory device, wherein the processing module is configured to:

receive, via the network interface, a slice access request from a requesting entity;

identify the type of the slice access request as a key slice access request, wherein the key slice access request includes at least one of a request to store a key slice or a request to recover a key slice for rebuilding;

in response to determining that the key slice access request includes a request to store a key slice received in conjunction with the key slice access request:

encrypt the key slice using the local key to produce an encrypted key slice; and

store the encrypted key slice in the memory device; and

in response to determining that the key slice access request includes a request to recover a key slice for rebuilding, the key slice stored as an encrypted key slice in the memory device:

recover the encrypted key slice from the memory device;

decrypt the encrypted key slice using the local key to produce a decrypted key slice; and

encode the decrypted key slice in accordance with a zero information gain (ZIG) format to generate a ZIG representation of the decrypted key slice for provision to the requesting entity.

16. The storage unit of claim 15 , wherein the key slice access request includes at least one of a request to store a key slice, a request to recover a key slice, or a request to recover a key slice for rebuilding, and wherein the processing module is further configured to:

in response to determining that the key slice access request includes a request to recover a key slice, wherein the key slice is stored as an encrypted key slice in the memory device:

recover the encrypted key slice from the memory device; and

decrypt the encrypted key slice using the local key to produce a decrypted key slice.

17. The storage unit of claim 15 , wherein identifying the type of the slice access request as a key slice access request includes at least one of:

matching a slice name to a slice name range of a set of slice name ranges and associated types;

extracting an indicator from the slice access request; or

inferring the type of the slice access request based on the identity of the requesting entity.

18. The storage unit of claim 15 , wherein the key slice is one of a set of key slices 1-n generated by encoding a key using a dispersed storage error encoding function, and wherein the key can be recreated from a decode threshold number of key slices of the set of key slices 1-n.

19. The storage unit of claim 15 , wherein the key slice is stored in a portion of the memory device that is configured as part of a key region of a vault having a designated addressing namespace within the DSN.

20. The storage unit of claim 15 , wherein the local key is a key of a set of related keys stored in respective storage units of a set of storage units of the DSN.

Assignments (4)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 20, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 050451/0549 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 22, 2017
From: LEGGETTE, WESLEY B.; RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041340/0968 →