IP Library Granted Patent US 9,372,998
Granted Patent B2
US 9,372,998 · App. 14/508,654 · Granted Jun 21, 2016

Client-side encryption in a deduplication backup system

Inventors: Nathan S. Bushman (Pleasant Grove, UT); Dudley Melvin Irish (Salt Lake City, UT); Jeffrey Dale Blair (American Fork, UT); Adam Julian Mensel (Salt Lake City, UT)
Assignee: STORAGECRAFT TECHNOLOGY CORPORATION
G06F21/602G06F11/1446G06F17/30979
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,372,998
App. No.
14/508,654
Granted
Jun 21, 2016
Kind
B2
Abstract

Client-side encryption in a deduplication backup system. In one example embodiment, a method includes a backup phase in which various steps are performed for each allocated plain text block stored in a source storage. One step includes hashing, using a first cryptographic hash function, the plain text block to generate a first hash. Another step includes hashing, using a second cryptographic hash function, the first hash to generate a second hash. Another step includes searching a key-value table of a deduplication storage to determine whether the second hash matches any key in the key-value table. Another step includes, upon determining that the second hash does not match any key in the key-value table, encrypting, using an encrypt/decrypt function, the plain text block using the first hash as an encryption password and inserting a key-value pair into the key-value table with the key being the second hash and the value being the encrypted block.

Claims (64)

1. A method for client-side encryption in a deduplication backup system, the method comprising:

a backup phase in which the following steps are performed for each allocated plain text block stored in a client-side source storage at a point in time:

hashing, using a first cryptographic hash function, the plain text block to generate a first hash;

hashing, using a second cryptographic hash function, the first hash to generate a second hash;

searching a key-value table of a deduplication storage to determine whether the second hash matches any key in the key-value table, each key-value pair in the key-value table including a key that is a hash and a value that is an encrypted block;

upon determining that the second hash does not match any key in the key-value table, encrypting, using an encrypt/decrypt function, the plain text block using the first hash as an encryption password and inserting a key-value pair into the key-value table with the key being the second hash and the value being the encrypted block; and

inserting an entry into an image map corresponding to the client-side source storage that includes the first hash and a position of the plain text block as stored in the client-side source storage to be subsequently used in a restore phase to restore the plain text block to the position, the entry in the image map not including the second hash, the image map being stored in a separate location from the key-value table; and

encrypting the image map; and

a restore phase in which each block that was stored in the client-side source storage at the point in time is restored from the deduplication storage to a restore storage, thereby recreating the state of the client-side source storage at the point in time on the restore storage.

2. The method as recited in claim 1 , further comprising storing the encrypted image map in the deduplication storage.

3. The method as recited in claim 1 , wherein the image map is stored in the client-side source storage.

4. The method as recited in claim 1 , wherein the restore phase includes performing the following steps for each entry in the image map:

hashing, using the second cryptographic hash function, the first hash included in the entry to generate the second hash;

searching the key-value table to retrieve the encrypted block of the key-value pair having a key that matches the second hash;

decrypting, using the encrypt/decrypt function, the encrypted block using the first hash as a decryption password; and

storing the decrypted block in the restore storage at the position included in the entry.

5. The method as recited in claim 4 , further comprising decrypting the image map prior to the restore phase.

6. The method as recited in claim 1 , wherein each of the first cryptographic hash function and the second cryptographic hash function is one of a SHA-1, SHA-2, SHA-3, or MD5 cryptographic hash function.

7. The method as recited in claim 1 , wherein the first cryptographic hash function is different from the second cryptographic hash function.

8. The method as recited in claim 1 , further comprising:

a second backup phase in which the following steps are performed for each allocated plain text block stored in a second source storage at a second point in time:

hashing, using the first cryptographic hash function, the plain text block to generate a fourth hash;

hashing, using the second cryptographic hash function, the fourth hash to generate a fifth hash;

searching the key-value table to determine whether the fifth hash matches any key in the key-value table;

upon determining that the fifth hash does not match any key in the key-value table, encrypting, using the encrypt/decrypt function, the plain text block using the fourth hash as an encryption password and inserting a key-value pair into the key-value table with the key being the fifth hash and the value being the encrypted block; and

inserting an entry into a second image map corresponding to the second source storage that includes the fourth hash and a position of the plain text block in the second source storage and that does not include the fifth hash.

9. The method as recited in claim 8 , further comprising a second restore phase in which the following steps are performed for each entry in the second image map:

hashing, using the second cryptographic hash function, the fourth hash included in the entry to generate the fifth hash;

searching the key-value table to retrieve the encrypted block of the key-value pair having a key that matches the fifth hash;

decrypting, using the encrypt/decrypt function, the encrypted block using the fourth hash as a decryption password; and

storing the decrypted block in a second restore storage at the position included in the entry.

10. The method of claim 1 , wherein instructions to perform the method are stored on one or more non-transitory computer-readable media that cause one or more processors to execute the method.

11. A method for client-side encryption in a deduplication backup system, the method comprising:

a backup phase in which the following steps are performed for each allocated plain text block stored in a client-side source storage at a point in time:

hashing, using a first cryptographic hash function, the plain text block to generate a first hash;

encrypting, using an encrypt/decrypt function, the plain text block using the first hash as an encryption password;

hashing, using a second cryptographic hash function, the encrypted block to generate a third hash;

searching a key-value table of a deduplication storage to determine whether the third hash matches any key in the key-value table, each key-value pair in the key-value table including a key that is a hash and a value that is an encrypted block;

upon determining that the third hash does not match any key in the key-value table, inserting a key-value pair into the key-value table with the key being the third hash and the value being the encrypted block; and

inserting an entry into an image map corresponding to the client-side source storage that includes the first hash, the third hash, and a position of the plain text block as stored in the client-side source storage to be subsequently used in a restore phase to restore the plain text block to the position, the image map being stored in a separate location from the key-value table; and

encrypting the image map; and

a restore phase in which each block that was stored in the client-side source storage at the point in time is restored from the deduplication storage to a restore storage, thereby recreating the state of the client-side source storage at the point in time on the restore storage.

12. The method as recited in claim 11 , further comprising storing the encrypted image map in the deduplication storage.

13. The method as recited in claim 11 , wherein the image map is stored in the client-side source storage.

14. The method as recited in claim 11 , wherein the restore phase includes performing the following steps for each entry in the image map:

searching the key-value table to retrieve the encrypted block of the key-value pair having a key that matches the third hash included in the entry;

decrypting, using the encrypt/decrypt function, the encrypted block using the first hash as a decryption password; and

storing the decrypted block in the restore storage at the position included in the entry.

15. The method as recited in claim 14 , further comprising decrypting the image map prior to the restore phase.

16. The method as recited in claim 11 , wherein each of the first cryptographic hash function and the second cryptographic hash function is one of a SHA-1, SHA-2, SHA-3, or MD5 cryptographic hash function.

17. The method as recited in claim 11 , wherein the first cryptographic hash function is the same as the second cryptographic hash function.

18. The method as recited in claim 11 , further comprising:

a second backup phase in which the following steps are performed for each allocated plain text block stored in a second source storage at a second point in time:

hashing, using the first cryptographic hash function, the plain text block to generate a fourth hash;

encrypting, using the encrypt/decrypt function, the plain text block using the fourth hash as an encryption password;

hashing, using the second cryptographic hash function, the encrypted block to generate a sixth hash;

searching a key-value table of the deduplication storage to determine whether the sixth hash matches any key in the key-value table;

upon determining that the sixth hash does not match any key in the key-value table, inserting a key-value pair into the key-value table with the key being the sixth hash and the value being the encrypted block; and

inserting an entry into a second image map corresponding to the second source storage that includes the fourth hash, the sixth hash, and a position of the plain text block as stored in the second source storage.

19. The method as recited in claim 18 , further comprising a second restore phase in which the following steps are performed for each entry in the second image map:

searching the key-value table to retrieve the encrypted block of the key-value pair having a key that matches the sixth hash included in the entry;

decrypting, using the encrypt/decrypt function, the encrypted block using the fourth hash as a decryption password; and

storing the decrypted block in a second restore storage at the position included in the entry.

20. The method of claim 11 , wherein instructions to perform the method are stored on one or more non-transitory computer-readable media that cause one or more processors to execute the method.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2024
From: MONROE CAPITAL MANAGEMENT ADVISORS, LLC; ARCSTOR MIDCO LLC; ARCSERVE ACQUISITION COMPANY LLC; ARCSERVE (USA) LLC; STORAGECRAFT TECHNOLOGY, LLC
To: STORAGECRAFT, LLC
Reel/Frame 068660/0208 →
CHANGE OF NAME Recorded Aug 16, 2024
From: STORAGECRAFT TECHNOLOGY CORPORATION
To: STORAGECRAFT TECHNOLOGY LLC
Reel/Frame 068660/0176 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT Recorded Mar 16, 2021
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: STORAGECRAFT TECHNOLOGY CORPORATION
Reel/Frame 055614/0607 →
SECURITY INTEREST Recorded Mar 16, 2021
From: ARCSERVE (USA) LLC; STORAGECRAFT TECHNOLOGY LLC; ZETTA, LLC
To: MONROE CAPITAL MANAGEMENT ADVISORS, LLC, AS COLLATERAL AGENT
Reel/Frame 055603/0219 →
SECURITY AGREEMENT Recorded Apr 18, 2016
From: STORAGECRAFT TECHNOLOGY CORPORATION
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 038449/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2015
From: MENSEL, ADAM JULIAN
To: STORAGECRAFT TECHNOLOGY CORPORATION
Reel/Frame 035396/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 7, 2014
From: BUSHMAN, NATHAN S.; IRISH, DUDLEY MELVIN; BLAIR, JEFFREY DALE
To: STORAGECRAFT TECHNOLOGY CORPORATION
Reel/Frame 033905/0480 →
Continuity (1)
Related Publication 20160098568A1 · Apr 7, 2016