IP Library Granted Patent US 10,387,673
Granted Patent B2
US 10,387,673 · App. 15/638,434 · Granted Aug 20, 2019

Fully managed account level blob data encryption in a distributed storage environment

Inventors: Rushi Srinivas Surla (Kenmore, WA); Shane Kumar Mainali (Duvall, WA); Andrew Edwards (Bellevue, WA); Maneesh Sah (Sammamish, WA); Weiping Zhang (Redmond, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F21/6227H03M7/30H04L63/00H04L67/2828H04L9/0618H04L67/1095H04L67/1097
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,387,673
App. No.
15/638,434
Granted
Aug 20, 2019
Kind
B2
Abstract

A system receives a request to store data at a first layer of servers in a cluster, configured to authenticate and authorize the request. The system compresses the data upon authenticating and authorizing the request and encrypts the compressed data at the first layer of servers when encryption is enabled. The system sends the request and the encrypted data to a second layer of servers in the cluster, configured to store data structures used to manage data storage in a third layer of servers in the cluster, and to distribute the request and the encrypted data to the third layer of servers using the data structures. The system stores the encrypted data in the third layer of servers. Encrypting the data at the first layer of servers reduces latency associated with transferring the data between the first, second, and third layers of servers.

Claims (60)

1. A system comprising:

a hardware processor; and

machine readable instructions, stored on a tangible machine readable device, when executed by the hardware processor, configure the hardware processor to:

receive a request to store data in a cluster in a cloud computing system, the request received at a first layer of servers in the cluster, the first layer of servers configured to authenticate and authorize the request;

compress the data at the first layer of servers upon authentication and authorization of the request;

encrypt the compressed data at the first layer of servers when encryption is enabled;

send the request and the encrypted data to a second layer of servers in the cluster, the second layer of servers configured to store data structures used to manage data storage in a third layer of servers in the cluster, and to distribute the request and the encrypted data to the third layer of servers using the data structures; and

store the encrypted data in the third layer of servers, wherein encrypting the data at the first layer of servers reduces latency experienced by an end user associated with transferring the data between the first, second, and third layers of servers.

2. The system of claim 1 wherein the machine readable instructions configure the hardware processor to:

allow dynamic enabling and disabling of the encryption; and

append the encrypted data to unencrypted data stored in the third layer of servers and append unencrypted data to the encrypted data stored in the third layer of servers depending on whether the encryption is enabled or disabled.

3. The system of claim 2 wherein the machine readable instructions configure the hardware processor to track encryption status of data stored in the third layer of servers to indicate whether the data stored in the third layer of servers is unencrypted, encrypted, or partially encrypted due to the dynamic enabling and disabling of the encryption.

4. The system of claim 1 wherein the machine readable instructions configure the hardware processor to:

compress, at the first layer of servers, metadata received with the data;

encrypt, at the first layer of servers, the compressed metadata received with the data when encryption is enabled; and

store the encrypted metadata in the third layer of servers.

5. The system of claim 1 wherein the machine readable instructions configure the hardware processor to encrypt, when encryption is enabled, each block of data using a unique key so that consecutive encrypted blocks appear random.

6. The system of claim 5 wherein the machine readable instructions configure the hardware processor to generate each unique key based on a unique seed randomly generated for each block and a first key assigned to an account to which the data belongs.

7. The system of claim 6 wherein the machine readable instructions configure the hardware processor to store a seed used to encrypt a block in unencrypted form in a header associated with the encrypted block and to use the seed stored in the header associated with the encrypted block when decrypting the encrypted block.

8. The system of claim 6 wherein the machine readable instructions configure the hardware processor to encrypt the first key using a second key associated with the cluster.

9. The system of claim 8 wherein the machine readable instructions configure the hardware processor to rotate the second key.

10. The system of claim 1 wherein the machine readable instructions configure the hardware processor to write, using the data structure, a record to a log for each received request to write data, and to reproduce, using the log, the request to write data when a server in the second layer of servers crashes.

11. The system of claim 1 wherein the machine readable instructions configure the hardware processor to store the encrypted data in data units in the third layer of servers, and to selectively move content of a first data unit to a second data unit to make the first data unit available for storing new data.

12. A method enacted on a computing system comprising a hardware processor and storage device, the method comprising:

receiving, at a first layer of servers in a cluster in a cloud computing system, a request to store data and associated metadata in the cluster, the first layer of servers configured to authenticate and authorize the request;

compressing the data and the metadata at the first layer of servers upon authentication and authorization of the request;

encrypting the compressed data and metadata at the first layer of servers when encryption is enabled;

sending the request and the encrypted data and metadata to a second layer of servers in the cluster, the second layer of servers configured to store data structures used to manage data storage in a third layer of servers in the cluster;

distributing the request and the encrypted data and metadata to the third layer of servers using the data structures; and

storing the encrypted data and metadata in the third layer of servers, wherein encrypting the data and the metadata at the first layer of servers reduces latency experienced by an end user associated with transferring the data and the metadata between the first, second, and third layers of servers.

13. The method of claim 12 further comprising:

allowing dynamic enabling and disabling of the encryption;

appending the encrypted data and metadata to unencrypted data and metadata stored in the third layer of servers when the encryption is enabled; and

appending unencrypted data and metadata to the encrypted data and metadata stored in the third layer of servers when the encryption is disabled.

14. The method of claim 13 further comprising:

tracking encryption status of data stored in the third layer of servers; and

indicating, based on the tracked status of the data, whether the data is unencrypted, encrypted, or partially encrypted due to the dynamic enabling and disabling of the encryption.

15. The method of claim 12 further comprising:

generating, when encryption is enabled, a unique key to encrypt each block of data, each unique key being based on a unique seed randomly generated for each block of data and based on a first key assigned to an account to which the data belongs; and

encrypting each block of data using a respective key so that consecutive encrypted blocks appear random.

16. The method of claim 15 further comprising:

storing a seed used to encrypt a block in unencrypted form in a header associated with the encrypted block; and

decrypting the encrypted block using the seed stored in the header associated with the encrypted block.

17. The method of claim 15 further comprising:

encrypting the first key using a second key associated with the cluster; and

rotating the second key.

18. The method of claim 12 further comprising:

writing, using the data structure, a record to a log for each received request to write data; and

reproducing, using the log, the request to write data when a server in the second layer of servers crashes.

19. The method of claim 12 further comprising:

storing the encrypted data in data units in the third layer of servers; and

selectively moving content of a first data unit to a second data unit to make the first data unit available for storing new data.

20. A system comprising:

a hardware processor; and

machine readable instructions, stored on a tangible machine readable device, when executed by the hardware processor, configure the hardware processor to:

receive a request to store data in a cluster in a cloud computing system, the request received at a first layer of servers in the cluster, the first layer of servers configured to authenticate and authorize the request;

compress the data at the first layer of servers upon authentication and authorization of the request;

encrypt, when encryption is enabled, each block of the compressed data at the first layer of servers using a unique key generated based on a unique seed randomly generated for each block of data and based on a first key assigned to an account to which the data belongs;

send the request and the encrypted data to a second layer of servers in the cluster, the second layer of servers configured to store data structures used to manage data storage in a third layer of servers in the cluster, and to distribute the request and the encrypted data to the third layer of servers using the data structures; and

store the encrypted data in the third layer of servers, wherein encrypting the data at the first layer of servers reduces latency experienced by an end user associated with transferring the data between the first, second, and third layers of servers.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNMENT EXECUTION DATE FOR INVENTOR SHANE KUMAR MAINALI PREVIOUSLY RECORDED ON REEL 042870 FRAME 0986. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 4, 2019
From: SURLA, RUSHI SRINIVAS; MAINALI, SHANE KUMAR; EDWARDS, ANDREW; SAH, MANEESH; ZHANG, WEIPING
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 049359/0760 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2017
From: SURLA, RUSHI SRINIVAS; MAINALI, SHANE KUMAR; EDWARDS, ANDREW; SAH, MANEESH; ZHANG, WEIPING
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042870/0986 →
Continuity (1)
Related Publication 20190005262A1 · Jan 3, 2019
Cited By (8)
US 12,309,166 US 12,386,542 US 12,413,243 US 12,430,056 US 12,474,852 US 12,498,869 US 12,687,967 US 12,737,113