IP Library Granted Patent US 11,573,929
Granted Patent B2
US 11,573,929 · App. 16/844,742 · Granted Feb 7, 2023

Deduplication of encrypted data using multiple keys

Inventors: Jose Gilberto Biondo Junior (Valinhos, BR); Juscelino Candido De Lima Junior (Campinas, BR); Marcelo Lopes De Moraes (Hortolandia, BR); Rosana Rueda Elias (Campinas, BR)
Assignee: KYNDRYL, INC.
G06F16/1748H04L9/0643H04L9/088
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 11,573,929
App. No.
16/844,742
Granted
Feb 7, 2023
Kind
B2
Abstract

Deduplication of encrypted data using multiple keys includes responding to a request to store a predetermined set of data in an electronic data store by receiving a hash corresponding to the predetermined set of data, receiving encrypted data generated by encrypting the predetermined set of data using an encryption key, and receiving a key index corresponding to the encryption key. The hash may be determined to match a previously stored hash, the previously stored hash indicating that a previously encrypted version of the predetermined set of data is stored at a physical location in the electronic data store. Based on determining that the hash matches a previously stored hash, the hash, encrypted data, and key index are discarded.

Claims (77)

1. A method, comprising:

responsive to a request to store a predetermined set of data in an electronic data store, receiving, with computer hardware, a hash corresponding to the predetermined set of data, encrypted data generated by encrypting the predetermined set of data using an encryption key, and a key index corresponding to the encryption key;

determining that the hash matches a previously stored hash, the previously stored hash indicating that a previously encrypted version of the predetermined set of data is stored at a physical location in the electronic data store; and

based on the determining, discarding the hash, the encrypted data, and the key index.

2. The method of claim 1 , further comprising generating an association associating the predetermined set of data with the previously encrypted version, the association indicating the physical location in the electronic data store at which the previously encrypted version is stored.

3. The method of claim 1 , further comprising responding to a prior request to store the predetermined set of data in the electronic data store by:

receiving the hash corresponding to the predetermined set of data, the encrypted data generated by encrypting the predetermined set of data using a different encryption key, and a key index corresponding to the different encryption key;

determining that the hash does not match a previously stored hash;

storing the encrypted data encrypted using the different encryption key at the physical location in the electronic data store; and

generating an association associating the hash with the key index corresponding to the different encryption key and with the physical location in the electronic data store.

4. The method of claim 1 , further comprising responding to a request to read the predetermined set of data by:

receiving a copy of the hash corresponding to the predetermined set of data;

determining, based on the copy of the hash, the physical location in the electronic data store; and

identifying a different key index for decrypting the previously encrypted version of the predetermined set of data using a different encryption key that is associated with the different key index.

5. The method of claim 1 , further comprising:

in response to a prior request to store the predetermined set of data, generating at a first networked site a packet that includes the hash, encrypted data generated by encrypting the predetermined set of data using a different encryption key, and a key index corresponding to the different encryption key;

conveying the packet over a data communications network to a second networked device that hosts the electronic data store; and

on the second networked device, electronically storing the encrypted data generated by encrypting the predetermined set of data using the different encryption key in response to determining that the hash does not match the previously stored hash.

6. The method of claim 1 , further comprising:

in response to the request, generating at a first networked site a packet that includes the hash, the encrypted data associated with the hash, and the key index; and

conveying the packet over a data communications network to a second networked device that hosts the electronic data store.

7. The method of claim 1 , wherein

the encryption key used to encrypt the predetermined set of data is different from an encryption key used to encrypt the previously encrypted version of the predetermined set of data.

8. A system, comprising:

a processor configured to initiate operations including:

responsive to a request to store a predetermined set of data in an electronic data store, receiving a hash corresponding to the predetermined set of data, encrypted data generated by encrypting the predetermined set of data using an encryption key, and a key index corresponding to the encryption key;

determining that the hash matches a previously stored hash, the previously stored hash indicating that a previously encrypted version of the predetermined set of data is stored at a physical location in the electronic data store; and

based on the determining, discarding the hash, the encrypted data, and the key index.

9. The system of claim 8 , wherein

the processor is configured to initiate operations further comprising generating an association associating the predetermined set of data with the previously encrypted version, the association indicating the physical location in the electronic data store at which the previously encrypted version is stored.

10. The system of claim 8 , wherein

the processor is configured to initiate operations further comprising responding to a prior request to store the predetermined set of data in the electronic data store by:

receiving the hash corresponding to the predetermined set of data, encrypted data generated by encrypting the predetermined set of data using a different encryption key, and a key index corresponding to the different encryption key;

determining that the hash does not match a previously stored hash;

storing the encrypted data encrypted using the different encryption key at the physical location in the electronic data store; and

generating an association associating the hash with the key index corresponding to the different encryption key and with the physical location in the electronic data store.

11. The system of claim 8 , wherein

the processor is configured to initiate operations further comprising responding to a request to read the predetermined set of data by:

receiving a copy of the hash corresponding to the predetermined set of data;

based on the copy of the hash determining the physical location in the electronic data store; and

identifying a different key index for decrypting the previously encrypted version of the predetermined set of data using a different encryption key that is associated with the different key index.

12. The system of claim 8 , wherein

the processor is configured to initiate operations further comprising responding to a prior request to store the predetermined set of data in the electronic data store by:

generating at a first networked site a packet that includes the hash, encrypted data generated by encrypting the predetermined set of data using a different encryption key, and a key index corresponding to the different encryption key;

conveying the packet over a data communications network to a second networked device that hosts the electronic data store; and

on the second networked device, electronically storing the encrypted data generated by encrypting the predetermined set of data using the different encryption key in response to determining that the hash does not match the previously stored hash.

13. The system of claim 8 , wherein

the encryption key used to encrypt the predetermined set of data is different from an encryption key used to encrypt the previously encrypted version of the predetermined set of data.

14. A computer program product, the computer program product comprising:

one or more computer-readable storage media and program instructions collectively stored on the one or more computer-readable storage media, the program instructions executable by a processor to cause the processor to initiate operations including:

responsive to a request to store a predetermined set of data in an electronic data store, receiving a hash corresponding to the predetermined set of data, encrypted data generated by encrypting the predetermined set of data using an encryption key, and a key index corresponding to the encryption key;

determining that the hash matches a previously stored hash, the previously stored hash indicating that a previously encrypted version of the predetermined set of data is stored at a physical location in the electronic data store; and

based on the determining, discarding the hash, the encrypted data, and the key index.

15. The computer program product of claim 14 , wherein

the program instructions are executable by the processor to cause the processor to initiate operations further comprising generating an association associating the predetermined set of data with the previously encrypted version, the association indicating the physical location in the electronic data store at which the previously encrypted version is stored.

16. The computer program product of claim 14 , wherein

the program instructions are executable by the processor to cause the processor to initiate operations further comprising responding to a prior request to store the predetermined set of data in the electronic data store by:

receiving the hash corresponding to the predetermined set of data, encrypted data generated by encrypting the predetermined set of data using a different encryption key, and a key index corresponding to the different encryption key;

determining that the hash does not match a previously stored hash;

storing the encrypted data encrypted using the different encryption key at the physical location in the electronic data store; and

generating an association associating the hash with the key index corresponding to the different encryption key and with the physical location in the electronic data store.

17. The computer program product of claim 14 , wherein

the program instructions are executable by the processor to cause the processor to respond to a request to read the predetermined set of data by:

receiving a copy of the hash corresponding to the predetermined set of data;

based on the copy of the hash determining the physical location in the electronic data store; and

identifying a different key index for decrypting the previously encrypted version of the predetermined set of data using a different encryption key that is associated with the different key index.

18. The computer program product of claim 14 , wherein

the program instructions are executable by the processor to cause the processor to initiate operations further comprising responding to a prior request to store the predetermined set of data by:

generating at a first networked site a packet that includes the hash, encrypted data generated by encrypting the predetermined set of data using a different encryption key, and a key index corresponding to the different encryption key;

conveying the packet over a data communications network to a second networked device that hosts the electronic data store; and

on the second networked device, electronically storing the encrypted data generated by encrypting the predetermined set of data using the different encryption key in response to determining that the hash does not match the previously stored hash.

19. The computer program product of claim 14 , wherein

the program instructions are executable by the processor to cause the processor to initiate operations further comprising responding to the request to store the predetermined set of data by:

generating at a first networked site a packet that includes the hash, the encrypted data associated with the hash, and the key index; and

conveying the packet over a data communications network to a second networked device that hosts the electronic data store.

20. The computer program product of claim 14 , wherein

the encryption key used to encrypt the predetermined set of data is different from an encryption key used to encrypt the previously encrypted version of the predetermined set of data.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: KYNDRYL, INC.
Reel/Frame 058213/0912 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 9, 2020
From: BIONDO JUNIOR, JOSE GILBERTO; CANDIDO DE LIMA JUNIOR, JUSCELINO; MORAES, MARCELO LOPES DE; RUEDA ELIAS, ROSANA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 052359/0744 →
Continuity (1)
Related Publication 20210318993A1 · Oct 14, 2021
Cited By (2)
US 12,634,143 US 12,683,778