IP Library Patent Application 19263692
Patent Application
App. No. 19/263,692

Storing and Processing Encrypted Data

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 None
App. No.
19/263,692
Abstract

A method includes storing a plurality of encrypted data, where each encrypted data of the plurality of encrypted data is generated based on encrypting corresponding underlying data. A plurality of data tags corresponding to the plurality of encrypted data are stored. First encrypted data and a first data tag are received, where the first encrypted data is generated based on encrypting first underlying data, and where the first data tag corresponds to the first underlying data of the first encrypted data. The first data tag is processed to determine whether the first underlying data is already stored as the corresponding underlying data of any of the plurality of encrypted data. The first encrypted data is stored based on determining the first underlying data is not already stored as other underlying data.

Claims (72)

1 . A method comprising:

storing a plurality of encrypted data, wherein each encrypted data of the plurality of encrypted data is generated based on encrypting corresponding underlying data;

storing a plurality of data tags corresponding to the plurality of encrypted data;

receiving, from a client device:

first encrypted data, wherein the first encrypted data is generated based on encrypting first underlying data; and

a first data tag corresponding to the first underlying data of the first encrypted data;

processing the first data tag to determine whether the first underlying data is already stored as the corresponding underlying data of any of the plurality of encrypted data;

storing the first encrypted data based on determining the first underlying data is not already stored as other underlying data of the any of the plurality of encrypted data via processing the first data tag;

receiving a read data request from the client device for the first encrypted data; and

sending a read data response to the client device that includes the first encrypted data, wherein the client device accesses the first underlying data based on decrypting the first encrypted data.

2 . The method of claim 1 , further comprising:

receiving, from the client device:

second encrypted data, wherein the second encrypted data is generated based on encrypting second underlying data; and

a second data tag corresponding to the second underlying data of the second encrypted data; and

processing the second data tag to determine whether the second underlying data is already stored as the corresponding underlying data of the any of the plurality of encrypted data, wherein the second encrypted data is not stored based on determining the second underlying data is already stored as corresponding underlying data of one of the plurality of encrypted data.

3 . The method of claim 2 , wherein the one of the plurality of encrypted data is different from the second encrypted data, despite the corresponding underlying data of the one of the plurality of encrypted data matching the second underlying data, based on the one of the plurality of encrypted data being generated via applying a first key and based on the second encrypted data being generated via applying a second key different from the first key.

4 . The method of claim 1 , wherein the first data tag is generated based on performing a hash function upon the first underlying data.

5 . The method of claim 1 , further comprising:

storing a plurality of data tags for the plurality of encrypted data, wherein processing the first data tag to determine whether the first underlying data is already stored as the corresponding underlying data of the any of the plurality of encrypted data is based on comparing the first data tag to the plurality of data tags.

6 . The method of claim 5 , wherein storing the plurality of data tags is based on storing an index structure that includes the plurality of data tags, and wherein processing the first data tag includes accessing the index structure.

7 . The method of claim 5 , further comprising:

receiving a plurality of storage requests that collectively include the plurality of encrypted data and the plurality of data tags, wherein the plurality of encrypted data and the plurality of data tags are stored based on processing the plurality of storage requests.

8 . The method of claim 1 , wherein storing the first encrypted data includes:

generating a set of encoded data slices based on performing a dispersed error encoding function upon the first encrypted data; and

storing the set of encoded data slices via a set of storage units.

9 . The method of claim 1 , wherein the first encrypted data is generated by the client device based on the client device encrypting the first underlying data.

10 . The method of claim 1 , wherein the first encrypted data is generated via applying a key to the first underlying data.

11 . The method of claim 10 , further comprising:

receiving an encrypted key from the client device for storage, wherein the encrypted key is generated based on encrypting the key; and

storing the encrypted key based on receiving the encrypted key;

wherein the read data response further includes encrypted key, wherein the client device accesses the first underlying data further based on accessing the key via decrypting the encrypted key, and wherein the first encrypted data is decrypted via applying the key.

12 . The method of claim 11 , wherein the encrypted key is generated by the client device based on applying a private key different from the key to encrypt the key.

13 . The method of claim 1 , further comprising:

receiving a first storage request from the client device indicating the first data tag, wherein the first data tag is processed in response to receiving the first storage request;

in response to determining the first underlying data is not already stored as other underlying data of the any of the plurality of encrypted data, sending a first storage response to the client device indicating the first underlying data is not already stored as other underlying data of the any of the plurality of encrypted data; and

receiving a second storage request from the client device that includes the first encrypted data based on the client device processing the first storage request, wherein the first encrypted data is stored in response to receiving the second storage request.

14 . A computer comprises:

a memory; and

a processing module operable to:

store a plurality of encrypted data, wherein each encrypted data of the plurality of encrypted data is generated based on encrypting corresponding underlying data;

store a plurality of data tags corresponding to the plurality of encrypted data;

receive, from a client device:

first encrypted data, wherein the first encrypted data is generated based on encrypting first underlying data; and

a first data tag corresponding to the first underlying data of the first encrypted data;

process the first data tag to determine whether the first underlying data is already stored as the corresponding underlying data of any of the plurality of encrypted data;

store the first encrypted data based on determining the first underlying data is not already stored as other underlying data of the any of the plurality of encrypted data via processing the first data tag;

receive a read data request from the client device for the first encrypted data; and

send a read data response to the client device that includes the first encrypted data, wherein the client device accesses the first underlying data based on decrypting the first encrypted data.

15 . The computer of claim 14 , wherein the processing module is further operable to:

receive, from the client device:

second encrypted data, wherein the second encrypted data is generated based on encrypting second underlying data; and

a second data tag corresponding to the second underlying data of the second encrypted data; and

process the second data tag to determine whether the second underlying data is already stored as the corresponding underlying data of the any of the plurality of encrypted data, wherein the second encrypted data is not stored based on to determining the second underlying data is already stored as corresponding underlying data of one of the plurality of encrypted data via processing the second data tag.

16 . The computer of claim 14 , wherein the first data tag is generated based on performing a hash function upon the first underlying data.

17 . The computer of claim 14 , wherein the processing module is further operable to:

store a plurality of data tags for the plurality of encrypted data, wherein processing the first data tag to determine whether the first underlying data is already stored as the corresponding underlying data of the any of the plurality of encrypted data is based on comparing the first data tag to the plurality of data tags.

18 . The computer of claim 14 , wherein storing the first encrypted data includes:

generating a set of encoded data slices based on performing a dispersed error encoding function upon the first encrypted data; and

storing the set of encoded data slices via a set of storage units.

19 . The computer of claim 14 , wherein the first encrypted data is generated by the client device based on the client device encrypting the first underlying data via applying a key to the first underlying data.

20 . A storage system comprises:

a plurality of storage units; and

at least one processing module operable to:

store a plurality of encrypted data, wherein each encrypted data of the plurality of encrypted data is generated based on encrypting corresponding underlying data;

store a plurality of data tags corresponding to the plurality of encrypted data;

receive, from a client device:

first encrypted data, wherein the first encrypted data is generated based on encrypting first underlying data; and

a first data tag corresponding to the first underlying data of the first encrypted data;

process the first data tag to determine whether the first underlying data is already stored as the corresponding underlying data of any of the plurality of encrypted data;

store the first encrypted data based on determining the first underlying data is not already stored as other underlying data of the any of the plurality of encrypted data via processing the first data tag;

receive a read data request from the client device for the first encrypted data; and

send a read data response to the client device that includes the first encrypted data, wherein the client device accesses the first underlying data based on decrypting the first encrypted data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2025
From: RESCH, JASON K.; LEGGETTE, WESLEY B.; VOLVOVSKI, ILYA
To: PURE STORAGE, INC.
Reel/Frame 071673/0771 →