IP Library › Granted Patent US 10,902,138
Granted Patent B2
US 10,902,138 · App. 15/467,983 · Granted Jan 26, 2021

Distributed cloud storage

Inventors: Chi-Kwan J. Cheung (Santa Monica, CA); Donald C. D. Chang (Thousand Oaks, CA); Juo-Yu Lee (Camarillo, CA); Steve K. Chen (Pacific Palisades, CA); Tzer-Hso Lin (Chatsworth, CA)
Assignee: PhazrlO Inc.
G06F21/6218H04L9/0863H04L9/0894H04L9/3226H04L9/3236H04L63/0435H04L63/083H04L67/1097G06F2221/2147H04L2463/061
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,902,138
App. No.
15/467,983
Granted
Jan 26, 2021
Kind
B2
Abstract

One embodiment provides a storage management system. During operation, the system identifies a data file of a user. The system obtains an encrypted client registry from a primary cloud provider in a plurality of cloud providers that provide cloud storage to the user and retrieves a key associated with a device of the user by decrypting the encrypted client registry using a hash of a password associated with the user. The system obtains credentials of the plurality of cloud providers by decrypting a locally stored cloud configuration using the key and generates a plurality of coded fragments from the data file based on a generator matrix of erasure encoding. The number of coded fragments is determined based on a number of the cloud providers associated with the user. The system selects a respective coded fragment for uploading to a corresponding cloud provider in the plurality of cloud providers.

Claims (78)

1. A method, comprising:

identifying, by a device of a user, a data file to be uploaded to a cloud storage of the user;

obtaining an encrypted client registry from a primary cloud provider in a plurality of cloud providers that provide cloud storage to the user, wherein the client registry comprises a key associated with the device;

decrypting the encrypted client registry using a hash of a password associated with the user that allows the user to access the primary cloud provider;

retrieving the key associated with the device from the decrypted client registry;

decrypting a locally stored cloud configuration using the key;

obtaining credentials of the plurality of cloud providers from the decrypted locally stored cloud configuration;

generating a plurality of coded fragments from the data file by applying a generator matrix of erasure encoding to the data file, wherein a cardinality of the plurality of coded fragments corresponds to a cardinality of the plurality of cloud providers associated with the user; and

selecting a respective cloud provider from the plurality of cloud providers for uploading a distinct coded fragment of the plurality of coded fragments.

2. The method of claim 1 , wherein credentials for the primary cloud provider are included in an encrypted data structure of an operating system of the device.

3. The method of claim 1 , further comprising storing a file registry in the primary cloud provider, wherein the file registry includes one or more of: a name and a path of the data file, location and order of a respective coded fragment of the data file, and additional metadata.

4. The method of claim 3 , further comprising initializing a lock for the data file, wherein the lock prevents another device of the user from modifying the file registry.

5. The method of claim 1 , further comprising verifying validity of the password by:

generating a hash of the hash of the password;

retrieving a password key from the primary cloud provider, wherein the password key is a previously generated hash of the hash of the password; and

comparing the generated hash of the hash of the password with the password key.

6. The method of claim 1 , wherein generating the plurality of coded fragments from the data file includes:

obtaining a plurality of data elements from the data file;

converting a respective data element in the plurality of data elements to a numerical representation;

representing the numerical representations as a data matrix; and

multiplying the data matrix with the generator matrix.

7. The method of claim 1 , wherein, in response to detecting a request for a new password, the method further comprises:

decrypting the encrypted client registry using the hash of the password;

obtaining a new password from the user;

encrypting the decrypted client registry using a hash of the new password; and

storing a new password key comprising a hash of the hash of the new password in the primary cloud provider.

8. The method of claim 1 , further comprising maintaining an unencrypted client registry by:

generating a plurality of coded fragments of the unencrypted client registry; and

storing a respective coded fragment of the unencrypted client registry in a corresponding cloud provider.

9. The method of claim 8 , wherein, in response to detecting a request for resetting the password, the method further comprises:

obtaining credentials for a respective cloud provider in the plurality of cloud providers from the user;

obtaining a respective coded fragment of the unencrypted client registry from the corresponding cloud provider using the credentials of that cloud provider;

generating the unencrypted client registry from the obtained coded fragments of the unencrypted client registry; and

in response to a successful generation of the unencrypted client registry, prompting the user for a new password.

10. The method of claim 8 , wherein, in response to detecting a marker indicating that the encrypted client registry has been updated, the method further comprises updating the unencrypted client registry by:

retrieving the encrypted client registry from the primary cloud provider;

decrypting the encrypted client registry using the hash of the password; and

generating a plurality of coded fragments of the decrypted client registry.

11. A device of a user, the device comprising:

a processor; and

a storage device storing instructions that when executed by the processor cause the processor to perform a method, the method comprising:

identifying a data file to be uploaded to a cloud storage of the user;

obtaining an encrypted client registry from a primary cloud provider in a plurality of cloud providers that provide cloud storage to the user, wherein the client registry comprises a key associated with the device;

decrypting the encrypted client registry using a hash of a password associated with the user that allows the user to access the primary cloud provider;

retrieving the key associated with the device from the decrypted client registry;

decrypting a locally stored cloud configuration using the key;

obtaining credentials of the plurality of cloud providers from the decrypted locally stored cloud configuration;

generating a plurality of coded fragments from the data file by applying a generator matrix of erasure encoding to the data file, wherein a cardinality of the plurality of coded fragments corresponds to a cardinality of the plurality of cloud providers associated with the user; and

selecting a respective cloud provider from the plurality of cloud providers for uploading a distinct coded fragment of the plurality of coded fragments.

12. The device of claim 11 , wherein credentials for the primary cloud provider are included in an encrypted data structure of an operating system of the device.

13. The device of claim 11 , wherein the method further comprises storing a file registry in the primary cloud provider, wherein the file registry includes one or more of: a name and a path of the data file, location and order of a respective coded fragment of the data file, and additional metadata.

14. The device of claim 13 , wherein the method further comprises initializing a lock for the data file, wherein the lock prevents another device of the user from modifying the file registry.

15. The device of claim 11 , wherein the method further comprises verifying validity of the password by:

generating a hash of the hash of the password;

retrieving a password key from the primary cloud provider, wherein the password key is a previously generated hash of the hash of the password; and

comparing the generated hash of the hash of the password with the password key.

16. The device of claim 11 , wherein generating the plurality of coded fragments from the data file includes:

obtaining a plurality of data elements from the data file;

converting a respective data element in the plurality of data elements to a numerical representation;

representing the numerical representations as a data matrix; and

multiplying the data matrix with the generator matrix.

17. The device of claim 11 , wherein, in response to detecting a request for a new password, the method further comprises:

decrypting the encrypted client registry using the hash of the password;

obtaining a new password from the user;

encrypting the decrypted client registry using a hash of the new password; and

storing a new password key comprising a hash of the hash of the new password in the primary cloud provider.

18. The device of claim 11 , wherein the method further comprises maintaining an unencrypted client registry by:

generating a plurality of coded fragments of the unencrypted client registry; and

storing a respective coded fragment of the unencrypted client registry in a corresponding cloud provider.

19. The device of claim 18 , wherein, in response to detecting a request for resetting the password, the method further comprises:

obtaining credentials for a respective cloud provider in the plurality of cloud providers from the user;

obtaining a respective coded fragment of the unencrypted client registry from the corresponding cloud provider using the credentials of that cloud provider;

generating the unencrypted client registry from the obtained coded fragments of the unencrypted client registry; and

in response to a successful generation of the unencrypted client registry, prompting the user for a new password.

20. The device of claim 18 , wherein, in response to detecting a marker indicating that the encrypted client registry has been updated, the method further comprises updating the unencrypted client registry by:

retrieving the encrypted client registry from the primary cloud provider;

decrypting the encrypted client registry using the hash of the password; and

generating a plurality of coded fragments of the decrypted client registry.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2017
From: CHEUNG, CHI-KWAN J.; CHANG, DONALD C. D.; LEE, JUO-YU; CHEN, STEVE K.; LIN, TZER-HSO
To: PHAZRIO INC.
Reel/Frame 041734/0750 →
Continuity (2)
Provisional Application 62315009 · Mar 30, 2016
Related Publication 20170286710A1 · Oct 5, 2017
Cited By (1)
US 12,493,419