Distribute encryption keys securely and efficiently

A method for distributing encryption keys includes receiving a table associated with a particular user, the table including a plurality of data blocks and splitting the table into a plurality of tablets including a corresponding portion of data blocks. The method also includes generating a resource key uniquely associated with the table and for each tablet generating a unique data encryption key for the corresponding tablet to encrypt with the unique data encryption key. The method also includes encrypting each data encryption key with the resource key and distributing control of each encrypted tablet and each corresponding encrypted data encryption key to a plurality of tablet servers, each controlling one or more of the encrypted tablets. The resource key transmits to a remote entity causing the remote entity to encrypt the resource key with a user key associated with the particular user and transmit the encrypted resource key.

TECHNICAL FIELD

This disclosure relates to distributing encryption keys securely and efficiently.

BACKGROUND

Cloud computing has increased in popularity as storage of large quantities of data in the cloud becomes more common. The use of encryption has also grown to protect the increasingly large quantity of data stored in the cloud. Cloud service providers manage the encryption keys that protect customer data from access by unauthorized users. Some customers may choose to generate their own encryption keys, which adds another layer of complexity to key management. With the increasingly large quantity of data stored on the cloud and the complexity of encryption, managing the encryption keys is often a cumbersome process.

SUMMARY

One aspect of the disclosure provides a method for distributing encryption keys securely and efficiently. The method includes receiving, at data processing hardware, a table associated with a particular user. The table includes a plurality of data blocks. The method also includes splitting, by the data processing hardware, the table into a plurality of tablets. Each tablet includes a corresponding portion of the plurality of data blocks of the table. The method also includes generating, by the data processing hardware, a resource key uniquely associated with the table. For each tablet of the plurality of tablets, the method includes generating, at the data processing hardware, a unique data encryption key for the corresponding tablet and encrypting, by the data processing hardware, the corresponding tablet with the unique data encryption key. The method also includes encrypting, by the data processing hardware, the data encryption key with the resource key. The method includes distributing, by the data processing hardware, control of each encrypted tablet and each corresponding encrypted data encryption key to a plurality of tablet servers. Each tablet server in the plurality of tablet servers is independent from each other tablet server in the plurality of tablet servers and controls one or more of the encrypted tablets from the table. The method includes transmitting, by the data processing hardware, the resource key to a remote entity, which, when received by the remote entity causes the remote entity to encrypt the resource key with a user key associated with the particular user and kept secret from the data processing hardware and transmit the encrypted resource key to the data processing hardware.

Implementations of the disclosure may include one or more of the following optional features. In some implementations, the method further includes, after receiving the encrypted resource key from the remote entity, obtaining, by the data processing hardware, a request to access one or more data blocks of the table; generating, by the data processing hardware, a resource key decryption request that includes the encrypted resource key; and transmitting, by the data processing hardware, the resource key decryption request to the remote entity. In these implementations, transmitting the resource key decryption request causes the remote entity to decrypt the encrypted resource key with the user key associated with the particular user and transmit the decrypted resource key to the data processing hardware. In some examples, the method also includes, after receiving the decrypted resource key, encrypting, by the data processing hardware, the decrypted resource key with an access control key associated with an access control list (ACL). The ACL includes a list of tablet servers authorized to access the resource key. In some implementations, the access control list is based on a role assigned to one or more tablet servers of the plurality of tablet servers. Optionally, the method may also include: receiving, at the data processing hardware, a resource key request requesting the resource key in a decrypted form from one of the tablet servers of the plurality of tablet servers; determining, by the data processing hardware, whether the one of the tablet servers is authorized to access the resource key based on the ACL; and when the one of the tablet servers is authorized to access the resource key, decrypting, by the data processing hardware, the encrypted resource key with the access control key and transmitting, by the data processing hardware, the decrypted resource key to the one of the tablet servers. In some examples, the decrypted resource key, when received by the one of the tablet servers, causes the one of the tablet server to decrypt, using the decrypted resource key, the data encryption key corresponding to at least one tablet controlled by the one of the tablet servers and decrypt, using the decrypted data encryption key, the corresponding at least one tablet.

The resource key may include an expiration time limit. Optionally, the method includes rotating, by the data processing hardware, the resource key at a rotation rate that is less than the expiration time limit of the resource key. In some examples, the expiration time limit and the rotation rate are each configurable by the particular user. In some implementations, the corresponding portion of data blocks of each tablet includes different data blocks than the corresponding portions of data blocks of each other tablet.

Another aspect of the disclosure provides a system for distributing encryption keys securely and efficiently. The system includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware storing instructions that when executed on the data processing hardware cause the data processing hardware to perform operations. The operations include receiving a table associated with a particular user. The table includes a plurality of data blocks. The operations also include splitting the table into a plurality of tablets. Each tablet includes a corresponding portion of the plurality of data blocks of the table. The operations also include generating a resource key uniquely associated with the table. For each tablet of the plurality of tablets, the operations include generating a unique data encryption key for the corresponding tablet and encrypting the corresponding tablet with the unique data encryption key. The operations also include encrypting the data encryption key with the resource key. The operations include distributing control of each encrypted tablet and each corresponding encrypted data encryption key to a plurality of tablet servers. Each tablet server in the plurality of tablet servers is independent from each other tablet server in the plurality of tablet servers and controls one or more of the encrypted tablets from the table. The operations include transmitting the resource key to a remote entity, which, when received by the remote entity, causes the remote entity to encrypt the resource key with a user key associated with the particular user and kept secret from the data processing hardware, and transmit the encrypted resource key to the data processing hardware.

Implementations of the disclosure may include one or more of the following optional features. In some implementations, the operations also include, after receiving the encrypted resource key from the remote entity: obtaining a request to access one or more data blocks of the table; generating a resource key decryption request that includes the encrypted resource key; and transmitting the resource key decryption request to the remote entity. Transmitting the resource key decryption request may cause the remote entity to decrypt the encrypted resource key with the user key associated with the particular user and transmit the decrypted resource key to the data processing hardware.

In some examples, the operations also include, after receiving the decrypted resource key, encrypting the decrypted resource key with an access control key associated with an access control list (ACL). The ACL includes a list of tablet servers authorized to access the resource key. In some implementations, the access control list is based on a role assigned to one or more tablet servers of the plurality of tablet servers. Optionally, the operations may also include: receiving a resource key request requesting the resource key in a decrypted form from one of the tablet servers of the plurality of tablet servers; determining whether the one of the tablet servers is authorized to access the resource key based on the ACL; and when the one of the tablet servers is authorized to access the resource key, decrypting the encrypted resource key with the access control key and transmitting the decrypted resource key to the one of the tablet servers. In some examples, the decrypted resource key, when received by the one of the tablet servers causes the one of the tablet server to decrypt, using the decrypted resource key, the data encryption key corresponding to at least one tablet controlled by the one of the tablet servers and decrypt, using the decrypted data encryption key, the corresponding at least one tablet.

The resource key may include an expiration time limit. Optionally, the operations include rotating the resource key at a rotation rate that is less than the expiration time limit of the resource key. In some examples, the expiration time limit and the rotation rate are each configurable by the particular user. In some implementations, the corresponding portion of data blocks of each tablet includes different data blocks than the corresponding portions of data blocks of each other tablet.

DETAILED DESCRIPTION

In a cloud computing environment, large collections of data (e.g., tables) may be spread across hundreds if not thousands of different computing platforms such as servers. It is often desirable or necessary to protect access to this data via the use of encryption. For example, customer managed keys (CMK) is an architectural pattern that allows a client to protect data distributed in the cloud with the client's own keys. This ensures that only the client and no one else (not even the cloud provider) has access to the client's data. However, when dealing with large amounts of data and thousands of servers, protecting and distributing keys becomes logistically difficult.

Implementations herein are directed toward a key management system that distributes control of portions of a table (i.e., tablets) to a plurality of servers (i.e., tablet servers). The system generates a unique resource key associated with the table and unique data encryption keys for each tablet. The data encryption keys are “wrapped” (i.e., encrypted) by the resource key and the resource key is wrapped by a user key associated with a user or customer or client associated with the table. Thus, the user (e.g., the owner of the data) controls access to the data stored in the tablets by controlling the user key.

The system may wrap the resource key with an access control key associated with an access control list. Using the access control key and the access control list, the system ensures that only authorized tablet servers gain access to the decrypted resource key and subsequently access to the data encryption keys. Furthermore, use of the intermediate resource key and access control key greatly reduces the number of requests for key decryption requests the system requires. Thus, the key management system distributes keys efficiently and securely even in extremely large distributed computing environments.

Referring now toFIG.1, in some implementations, an example key management system100includes a remote system140in communication with one or more user devices10via a network112. The remote system140may be multiple computers or a distributed system (e.g., a cloud environment) having scalable/elastic resources142including computing resources144(e.g., data processing hardware) and/or storage resources146(e.g., memory hardware). A data store152(i.e., a remote storage device) may be overlain on the storage resources146to allow scalable use of the storage resources146by one or more of the clients (e.g., the user device10) or the computing resources144. The data store152is configured to store a plurality of data blocks154,154a-nwithin one or more tables158,158a-n(i.e., a cloud database). The data store152may store any number of tables158associated with any number of users12at any point in time.

The remote system140is configured to receive a table158from a user device10associated with a respective user12via, for example, a network112. The user device10may correspond to any computing device, such as a desktop workstation, a laptop workstation, or a mobile device (i.e., a smart phone). The user device10includes computing resources18(e.g., data processing hardware) and/or storage resources16(e.g., memory hardware). The remote system140splits the table158into a plurality of tablets159,159a-n. Each tablet159includes a corresponding portion of the plurality of data blocks154of the table158. For example, each tablet159includes a respective portion of rows and/or columns of the table158. In some examples, each tablet159is approximately the same size (i.e., includes approximately the same amount of data), while in other examples, the tablets159vary in size. Optionally, the corresponding portion of data blocks of each tablet includes different data blocks than the corresponding portions of data blocks of each other tablet.

The remote system140executes a key manager160that includes a resource key manager170and a data key manager180. The resource key manager170generates a resource key172that is uniquely associated with the table158. That is, a new resource key172is generated for each table158received by the key manager160(either from the same user12or a different users) and each table158is associated with a single resource key172at a time. The data key manager180, for each tablet159of the plurality of tablets159of the table158, generates a unique data encryption key (DEK)182,182a-n. The data key manager180encrypts each tablet159with its respective DEK182. Thus, each tablet159may only be accessed (i.e., in plaintext) via decryption with the corresponding DEK182.

The resource key manager170wraps (i.e., encrypts) each DEK182with the resource key172associated with the table158. That is, each tablet159of the table158is encrypted by a DEK182uniquely associated with the corresponding tablet159and each DEK182is encrypted by the resource key172uniquely associated with the table158that originated the tablets159. Thus, the key manager160encrypts all DEKs182that correspond to the same table158with the same resource key172.

The key manager160distributes control of each tablet159(encrypted by the DEK182) to a plurality of tablet servers150,150a-n. That is, control of the tablets159are distributed among two or more tablet servers150, with each tablet server150receiving control of one or more tablets159. Each tablet server150may receive control of any number of tablets159and the system100may distribute control of the tablets159to any number of tablet servers150. As used herein, control of a tablet159refers to a responsibility to service requests to access the data of the controlled tablets159. For example, a tablet server150that controls an encrypted tablet152(i.e., encrypted data-at-rest) receives requests (e.g., originating from a client or user12) to access data stored within the encrypted tablet152. The tablet server150responds to the request by decrypting the tablet159and providing the requested data. Thus, in some implementations, the tablet servers150are part of the distributed computing and storage environment of the remote system140that are designated to control (i.e., service data requests) to portions of tables158(i.e., tablets159) for the remote system140. Alternatively, the tablet servers150may be independent from the remote system140and receive the tablets150to store in local storage.

While examples herein show a single table158and three tablet servers159for clarity, typically, each tablet server150will control many tablets159from many different tables158. For example, the system100includes thousands of tables158with control distributed amongst thousands of tablet servers150to create a large-scale distributed storage system. Distribution of control of the tablets159across multiple tablet servers150may increase access capacity (i.e., the number of simultaneous accesses to the data the system140supports).

Each tablet server150maintains the designated tablets159stored within a corresponding portion of the data store152, which, when combined with the corresponding portions of the data store152of each other tablet server150, forms the cloud database for storage of the table158, allowing scalable use of the storage resources146. Each tablet server150also receives wrapped DEKs182W,182Wa-n corresponding to at least the tablets159controlled by the tablet server150. That is, each tablet server150controls one or more tablets159encrypted by a respective DEK182and each wrapped DEK182W (i.e., the DEK182encrypted by the resource key172) that corresponds to the controlled tablets159. Thus, to obtain access to the tablets159, the tablet server150must first obtain the unwrapped DEK182(i.e., via decryption by the resource key172).

The key manager160transmits a wrap request174to a remote entity190. In some examples, the remote entity190is a customer-managed key store (CKMS). The remote entity190controls one or more user keys192(which also may be referred to as a customer key or client key or customer-managed encryption key (CMEK) herein). The remote system140does not receive access to the user key192and instead, the remote entity190(i.e., the CKMS) retains sole access to the user key192. In some examples, the wrap request174includes the resource key172. After receiving the wrap request174, the remote entity190may authorize and/or authenticate the key manager160. That is, the remote entity190verifies that the key manager160is allowed to have operations (e.g., encryption/decryption operations) performed using the user key192at that point in time. Permissions may be granted and denied by the user12or a third party on behalf of the user12.

After authenticating and/or authorizing the key manager160, the remote entity190encrypts the resource key172with the user key192. The remote entity190may uniquely associate the user key192with the table158. Alternatively, the user key192protects a variety of assets associated with the user12(e.g., multiple tables158). The remote entity190transmits the wrapped resource key172W (i.e., the resource key172encrypted by the user key192) to the key manager160. The key manager160deletes or otherwise discards all plaintext (i.e., unencrypted) copies of the resource key172and all plaintext copies of the DEKs182. Thus, all tablets159controlled by the tablet servers150are encrypted by DEKs182that in turn are wrapped by the resource key172which in turn is wrapped by the user key192. Because the user key192is under sole control of the remote entity190, no other entity (including the remote system140) may access the tablets159without authorization from the user12or a third-party on behalf of the user12.

Referring now toFIG.2, a schematic view200shows that the key manager160, in some implementations, after receiving the encrypted resource key172W from the remote entity190, receives a data request210to access one or more data blocks154of the table158. The data request210may originate from the user12or another entity authorized by the user. The data request210may also originate from one of the tablet servers159or a table manager executing on the remote system140(e.g., to rebalance data, compact data, recover data, etc.). In response to receiving the data request210to access the one or more data blocks154, the key manager160generates a resource key decryption request212that includes the wrapped resource key172W and transmits the resource key decryption request212to the remote entity190(e.g., the CMEK). The remote entity190, after receiving the resource key decryption request212(that includes the wrapped resource key172W), decrypts the wrapped resource key172W using the user key192associated with the particular user12. Prior to decrypting the wrapped resource key172W, the remote entity190may authorize and/or authenticate the key manager160. Optionally, the key manager160includes credentials or other identifying information with the resource key decryption request212to assist in authorization and/or authentication. After unwrapping the wrapped resource key172W, the remote entity190transmits the unwrapped resource key172to the key manager160. Note that, while the remote entity190decrypts the resource key172W using the user key192, the remote entity190and key manager need not communicate “in the clear”. That is, the key manager160and remote entity190may share symmetric keys and/or or asymmetric keys (e.g., public-key cryptography) to ensure that all communications between the key manager160and the remote entity190are secure.

In some examples, the key manager160, after receiving the unwrapped resource key172from the remote entity190, encrypts the decrypted resource key172with an access control key232associated with an access control list (ACL)234(i.e., the wrapped resource key172W′). In some implementations, the ACL234corresponds to a list of tablet servers150authorized to access the resource key172. For example, the key manager160generates the ACL234when distributing control of the tablets159to the tablet servers150to determine which tablet servers150have access to which tablets159. That is, the key manager160may authorize or allow a tablet server150(via the ACL234) to access the resource key172(to decrypt the DEKs182) based on whether the tablet server150controls any tablets159of the table158associated with the resource key172.

In some examples, the ACL234is based on a role assigned to one or more tablet servers150. For example, all tablet servers150execute in a specific role such as a production (i.e., “prod”) role associated with one or more tables158. Other tablet servers150(e.g., a malicious tablet server) cannot be assigned this same role. Thus, the ACL234may ensure the requesting tablet server150is assigned the proper role based on the table158and/or resource key172that the tablet server150requests access to. This allows only authorized tablet servers150assigned to the authorized role to access the resource key172unwrapped by the access control key232. The ACL234may enforce other means of access control as well. For example, the ACL234includes identifiers for each authorized tablet server150and the tablet server150verifies its identity (e.g., via a digital signature) when required.

In some examples, the key manager160after wrapping the resource key172with the access control key232, distributes the wrapped resource key172W′ (i.e., the resource key172encrypted by the access control key232) to all tablet servers150in communication with the key manager160regardless of whether each respective tablet server150is authorized to access the unwrapped resource key172. For simplicity, the key manager160distributing the wrapped resource key172W′ to all the tablet servers150is omitted from the example ofFIG.2. Because each tablet server150must request access to the unwrapped resource key172protected by the ACL234, the key manager160may safely broadcast the wrapped resource key172W′ to the tablet servers150. This eliminates the need for the key manager160to care or even be aware of what tablet servers150exist and which tablets159each tablet server150stores.

After receiving the wrapped resource key172W′ (now shown inFIG.2), one of the tablet servers150may generate a resource key unwrap request242requesting the key manager160to unwrap the wrapped resource key172W′. Because the tablet server150may control tablets159from a plurality of tables158(each associated with a different resource key172), the tablet server150may include the wrapped resource key172W′ within the request242to indicate to the key manager160which resource key172the tablet server150requests access to.

The key manager160receives the resource key unwrap request242from the one of the tablet servers150and determines whether the tablet server150is authorized to access the unwrapped resource key172based on the ACL234. When the tablet server150is authorized to access the resource key172, the key manager160decrypts the wrapped resource key172W′ using the access control key232. The key manager160transmits the unwrapped resource key172to the authorized tablet server150. When the tablet server150is not authorized (e.g., the tablet server150is not approved by the ACL234and/or the tablet server150is not running with an approved role), the key manager160may deny the unauthorized tablet server150access to the decrypted resource key172.

The tablet server150, after receiving the decrypted resource key172as depicted inFIG.2, may unwrap/decrypt one or more of the wrapped DEKs182W using the resource key172. After unwrapping one or more wrapped DEKs182W, the tablet server150uses the unwrapped DEK(s)182to unwrap the tablets159encrypted by the corresponding DEKs182. In some implementations, the tablet server150caches the unwrapped DEKs182(e.g., in volatile memory) for a period of time to reduce the frequency the tablet server150transmits resource key unwrap requests242to the key manager160. For example, the tablet server caches the decrypted DEKs182for one hour. After the period of time expires, the tablet server150may flush the cached DEKs182and again transmit a resource key unwrap request242to the key manager160. That is, when the tablet server150caches the DEKs182, the tablet server150may use the cached DEKs182rather than again requesting the key manager to unwrap the DEKs182W.

The tablet server150, in some examples, unwraps all DEKs182W associated with the same table158as the resource key172associated with the table158is used to wrap all DEKs corresponding to tablets159of the table158. Thus, with a single resource key unwrap request210to the key manager160, the tablet server150may gain access to all tablets159of the same table158. In contrast to conventional techniques that include a request for each DEK182, the key manager160greatly reduces the number of communications and the amount of time required to distribute the DEKs182.

Referring now toFIG.3, a schematic view300demonstrates exemplary key domains for the system100. Here, the remote entity190(e.g., the CKMS) retains sole access of the user key192by keeping the user key192secret from all other entities (including the remote system140and key manager160). That is, while authorized entities may request that the remote entity190perform operations with the user key192(e.g., encryption and decryption operations), the remote entity190will not reveal the user key192when performing the actions.

The key manager160generates and maintains both the access control key232and the resource key172. Both the access control key232and the user key192(under control of the remote entity190) wrap/encrypt the resource key172. The key manager160may have sole access to the access control key232. In some implementations, the key manager160wraps the resource key172with the access control key232after the key manager160receives the unwrapped resource key172from the remote entity190.

The resource key172wraps one or more DEKs182stored at one or more tablet servers150. In some examples, the key manager160distributes the resource key172W′ wrapped by the access control key to each tablet server150. The tablet servers150request access to the DEKs182wrapped by the resource key172(and correspondingly to the tablets159that the DEKs182encrypt) from the key manager160. After authorizing the tablet sever150(e.g., via the ACL234), the key manager160unwraps the wrapped resource key172W′ and transmits the unwrapped resource key172to the corresponding tablet server150. The tablet server150may unwrap one or more DEKs182to access one or more of the tablets159stored at the tablet server150.

FIG.4provides a sequence diagram400for steps to generate the resource key172. The Y-axis of the sequence diagram400represents time increasing from top to bottom to provide an order to the steps. The steps begin at the top of the Y-axis (i.e., the earliest point in time) and proceed in order down the Y-axis. The parallel vertical lines represent the user device10, the key manager160, and the remote entity190, respectively. At step410, the user device10creates and sends or commands the key manager160to create the table158. Next, the key manager160, at step412, generates the resource key172. The resource key172is uniquely associated with the table158created at step410. The key manager160then sends the generated resource key172to the remote entity at step414. The key manager includes the resource key172within a wrap request174. The remote entity190, at step416, after authorizing and/or authentication the key manager160, wraps the resource key172with the user key192. At step418, the remote entity190transmits the wrapped resource key172W to the key manager160. After receiving the wrapped resource key172W, the key manager160, at step420, stores the wrapped resource key172W (e.g., caches the key172W in volatile memory).

Referring now toFIG.5, a sequence diagram500includes steps to unwrap the wrapped DEKs182W with the resource key172. The steps begin at the top of the Y-axis (i.e., the earliest point in time) and proceed in order down the Y-axis. The parallel vertical lines represent the remote entity190, the key manager160, and the tablet server150, respectively. The sequence diagram500begins at step510when the key manager160transmits a resource key decryption request212to the remote entity190. At step512, the remote entity190, after receiving the resource key decryption request212, unwraps (i.e., decrypts) the wrapped resource key172W using the user key192that is associated with the user12that created and/or owns the table158.

At step514, the remote entity190transmits the unwrapped resource key172to the key manager160. The key manager160, at step516, wraps the unwrapped resource key172with the access control key232. At step518, the key manager160, transmits the wrapped resource key172W′ (i.e., wrapped by the access control key232) to one or more tablet servers150. One of the tablet servers150, at step520, sends a resource key unwrap request242that includes the wrapped resource key172W′ to the key manager160. The key manager160may determine whether the tablet server150is authorized to access the resource key172(e.g., based on the ACL234). When the tablet server150is authorized, the key manager160, at step522, unwraps the wrapped resource key172W′ using the access control key232and, at step524, transmits the unwrapped resource key172to the tablet server150. The tablet server150, at step526, unwraps one or more wrapped DEKs182W with the resource key172.

In some implementations, the resource key172includes an expiration time limit. The expiration time limit indicates a time period that the key is valid. That is, once the key is expired, the remote system140may not and will not use the expired key to perform any encryption or decryption operations. The expiration time limit prevents the system from using “stale” keys in the event that, for example, communication is lost between devices (e.g., between the key manager160and the remote entity190and/or between the key manager160and the tablet servers150).

In some examples, the key manager160rotates the resource key172at a rotation rate that is less than the expiration time limit of the resource key172. That is, the key manager160generates a new resource key172at a frequency based on the rotation rate. When the key manager160generates a new resource key172to replace an existing resource key172, the key manager160may invalidate the previous resource key172(e.g., by sending a key invalidation message to each tablet server150) and proceed with wrapping the resource key172with the user key192and the access control key232, wrapping the DEKs182, and distributing the wrapped DEKs182W and the wrapped resource key172W′ to the tablet servers150as described with respect toFIGS.1-5. The expiration time limit of the resource key172may be greater than the rotation rate to provide a fall back when communications between entities fail. For example, when the rotation rate is four hours (i.e., a new resource key172is generated every four hours), the resource key172expiration time limit may be six hours. Then, in a situation where the tablet servers150can no longer communicate with the key manager160and therefore do not receive the new resource key172at the appropriate time, the tablet servers150at least cease use of the stale resource key172when the key expires (i.e., after six hours in this example).

Optionally, the expiration time limit and the rotation rate for the resource key172are each configurable by the particular user12. For example, the user indicates preferences for the expiration time limit and rotation rate when creating the table158. In some implementations, the user may adjust the rotation rate and/or the expiration time limit at any point after creation of the table158.

FIG.6is a flowchart of an exemplary arrangement of operations for a method600for distributing encryption keys securely and efficiently. The method600, at step602, includes receiving, at data processing hardware144, a table158associated with a particular user12. The table158includes a plurality of data blocks154. The method600, at step604, includes splitting, by the data processing hardware144, the table158into a plurality of tablets159. Each tablet159includes a corresponding portion of the plurality of data blocks154of the table158. The method600, at step606, includes generating, by the data processing hardware144, a resource key172uniquely associated with the table158.

For each tablet159of the plurality of tablets159, the method600, at step608, includes generating a unique data encryption key182for the corresponding tablet159. At step610, the method600includes encrypting, by the data processing hardware144, the corresponding tablet159with the unique data encryption key182. The method600, at step612, includes encrypting, by the data processing hardware144, each data encryption key182with the resource key172. At step614, the method600also includes distributing, by the data processing hardware144, control of each encrypted tablet159and each corresponding encrypted data encryption key182W to a plurality of tablet servers150. Each tablet server150in the plurality of tablet servers150is independent from each other tablet server150in the plurality of tablet servers150. Each tablet server150controls one or more of the encrypted tablets159from the table158. At step616, the method600includes transmitting, by the data processing hardware144, the resource key172to a remote entity190. The resource key172, when received by the remote entity190, causes the remote entity190to encrypt the resource key172with a user key192associated with the particular user12and kept secret from the data processing hardware144. The remote entity also transmits the encrypted resource key172W to the data processing hardware144.

The computing device700includes a processor710, memory720, a storage device730, a high-speed interface/controller740connecting to the memory720and high-speed expansion ports750, and a low speed interface/controller760connecting to a low speed bus770and a storage device730. Each of the components710,720,730,740,750, and760, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor710can process instructions for execution within the computing device700, including instructions stored in the memory720or on the storage device730to display graphical information for a graphical user interface (GUI) on an external input/output device, such as display780coupled to high speed interface740. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices700may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

The storage device730is capable of providing mass storage for the computing device700. In some implementations, the storage device730is a computer-readable medium. In various different implementations, the storage device730may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. In additional implementations, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory720, the storage device730, or memory on processor710.

The high speed controller740manages bandwidth-intensive operations for the computing device700, while the low speed controller760manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only. In some implementations, the high-speed controller740is coupled to the memory720, the display780(e.g., through a graphics processor or accelerator), and to the high-speed expansion ports750, which may accept various expansion cards (not shown). In some implementations, the low-speed controller760is coupled to the storage device730and a low-speed expansion port790. The low-speed expansion port790, which may include various communication ports (e.g., USB, BLUETOOTH, Ethernet, wireless Ethernet), may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.

The computing device700may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server700aor multiple times in a group of such servers700a, as a laptop computer700b, or as part of a rack server system700c.