Secure and efficient distribution of encryption keys
By splitting the data table into multiple data blocks and generating a unique encryption key for each block, the problem of key management complexity in the cloud computing environment is solved, and secure and efficient key distribution and management is achieved.
Patent Information
- Application Number
- JP2024230406
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-09-03
- Filing Date
- 2024-12-26
- Publication Date
- 2025-04-10
- Estimated Expiration
- 2041-08-27
AI Technical Summary
In a cloud computing environment, the process of managing and distributing encryption keys is complicated, especially in large-scale data storage and distributed computing environments, and it is difficult for the prior art to achieve secure and efficient key distribution.
Encryption and distribution by splitting the data table into multiple data blocks and generating a unique data encryption key and resource key for each data block. This method distributes the key to a separate table server and is encrypted and authorized through user keys and access control lists.
It realizes the secure and efficient distribution and management of encryption keys in a large-scale distributed computing environment, reducing the complexity and risk of key management, and improving the reliability and access efficiency of the system.
Smart Images

Figure 2025060899000001_ABST
Abstract
Description
[Technical field]
[0001] Technical Field The present disclosure relates to securely and efficiently distributing encryption keys. [Background technology]
[0002] background Cloud computing has become more popular as the storage of large amounts of data in the cloud becomes more prevalent. Encryption has also become increasingly used to protect the data that is increasingly 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. As encryption becomes more complex with the increasing amount of data stored on the cloud, managing encryption keys often becomes a cumbersome process. Summary of the Invention
[0003] overview One aspect of the present disclosure provides a method for securely and efficiently distributing encryption keys. 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 dividing, by the data processing hardware, the table into a plurality of tablets, each tablet including 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 a 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 of other tablet servers 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, upon receipt by the remote entity, causes the remote entity to encrypt the resource key with a user key associated with the particular user and maintained secret from the data processing hardware, and transmit the encrypted resource key to the data processing hardware.
[0004] Implementations of the present disclosure may include any one or more of the following features. In some implementations, the method further includes obtaining, by the data processing hardware, a request to access one or more data blocks of the table after receiving the encrypted resource key from the remote entity; generating, by the data processing hardware, a resource key decryption request including 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 includes informing the remote entity of a resource key associated with a particular user. In some examples, the method also includes, after receiving the decrypted resource key, decrypting the encrypted resource key with the assigned user key and transmitting the decrypted resource key to the data processing hardware. In some examples, the method also includes, after receiving the decrypted resource key, decrypting the access control associated with an access control list (ACL) by the data processing hardware. and encrypting the decrypted resource key with an access control key. The ACL includes a list of tablet servers authorized to access the resource key. In some implementations, the access control list is based on roles assigned to one or more of the tablet servers. Optionally, the method may also include receiving at the data processing hardware a resource key request requesting a decrypted form of the resource key from one of the tablet servers, determining, by the data processing hardware, whether one of the tablet servers is authorized to access the resource key based on the ACL, and if one of the tablet servers is authorized to access the resource key, decrypting, by the data processing hardware, the encrypted resource key with an access control key, and transmitting, by the data processing hardware, the decrypted resource key to one of the tablet servers. In some examples, the decrypted resource key, when received by one of the tablet servers, causes the one of the tablet servers to use the decrypted resource key to decrypt the data encryption key corresponding to at least one tablet controlled by the one of the tablet servers, and to use the decrypted data encryption key to decrypt the corresponding at least one tablet.
[0005] The resource key may include an expiration date. Optionally, the method includes rotating, by the data processing hardware, the resource key at a rotation rate that is less than the expiration date of the resource key. In some examples, the expiration date and the rotation rate are each configurable by a particular user. In some implementations, corresponding portions of the data blocks of each tablet include different data blocks than corresponding portions of the data blocks of each other tablet.
[0006] Another aspect of the present disclosure provides a system for securely and efficiently distributing encryption keys. The system includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instructions that, when executed on the data processing hardware, cause the data processing hardware to perform the following operations: receiving a table associated with a particular user, the table including a plurality of data blocks. The following operations also include dividing the table into a plurality of tablets, each tablet including a corresponding portion of the plurality of data blocks of the table. The following operations also include generating a resource key uniquely associated with the table. For each tablet of the plurality of tablets, the following operations include generating a unique data encryption key for a corresponding tablet and encrypting the corresponding tablet with the unique data encryption key. The following operations also include encrypting the data encryption key with the resource key. The following 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 of each other tablet server in the plurality of tablet servers and controls one or more of the encrypted tablets from the table. The following operations include transmitting the resource key to a remote entity, which upon receipt by the remote entity, instructs the remote entity to encrypt the resource key with a user key associated with a particular user and maintained secret from the data processing hardware, and transmitting the encrypted resource key to the data processing hardware. and make them do what they want.
[0007] Implementations of the present disclosure may include any one or more of the following features. In some implementations, the following operations also include obtaining a request to access one or more data blocks of the table after receiving the encrypted resource key from the remote entity, generating a resource key decryption request that includes the encrypted resource key, and sending the resource key decryption request to the remote entity. Sending 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 send the decrypted resource key to the data processing hardware.
[0008] In some examples, the following 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 roles assigned to one or more tablet servers of the plurality of tablet servers. Optionally, the following operations may also include receiving a resource key request requesting a decrypted form of the resource key from one of the plurality of tablet servers, determining based on the ACL whether one of the tablet servers is authorized to access the resource key, and if one of the tablet servers is authorized to access the resource key, decrypting the encrypted resource key with the access control key and sending the decrypted resource key to one of the tablet servers. In some examples, the decrypted resource key, when received by one of the tablet servers, causes the one of the tablet servers to use the decrypted resource key to decrypt the data encryption key corresponding to at least one tablet controlled by the one of the tablet servers, and to use the decrypted data encryption key to decrypt the corresponding at least one tablet.
[0009] The resource key may include an expiration date. Optionally, the following action includes rotating the resource key at a rotation rate that is less than the expiration date of the resource key. In some examples, the expiration date and the rotation rate are each configurable by the particular user. In some implementations, corresponding portions of the data blocks of each tablet include different data blocks than corresponding portions of the data blocks of each other tablet.
[0010] The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will become apparent from the following description and the accompanying drawings, as well as the appended claims. [Brief description of the drawings]
[0011] [Figure 1] FIG. 1 is a schematic diagram illustrating an exemplary system for distributing encryption keys. [Diagram 2] FIG. 2 is a schematic diagram illustrating exemplary components of the system of FIG. 1. [Diagram 3] FIG. 2 is a schematic diagram showing a cryptographic key domain. [Figure 4] FIG. 1 is a schematic diagram illustrating a sequence diagram for generating a resource key. [Diagram 5] FIG. 2 is a schematic diagram illustrating a sequence diagram for decrypting a data encryption key. [Figure 6] 4 is a flow chart illustrating an exemplary arrangement of operations for a method of distributing encryption keys. [Figure 7] FIG. 1 is a schematic diagram illustrating an example computing device that can be used to implement the systems and methods described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0012] Like reference symbols in the various drawings indicate like elements. Detailed Description In a cloud computing environment, a large collection of data (e.g., tables) may be distributed across hundreds, if not thousands, of different computing platforms, such as servers. It is often desirable or necessary to protect access to this data by using encryption. For example, customer managed keys (CMK) are an architectural pattern that allows clients to protect cloud-distributed data with their own keys. This ensures that only the client can access their data and no one else (not even the cloud provider). However, when dealing with large amounts of data and thousands of servers, protecting and distributing the keys becomes logistically challenging.
[0013] Implementations herein are directed to a key management system that distributes control of portions of a table (i.e., tablets) across multiple servers (i.e., tablet servers). The system generates a unique resource key associated with the table and a unique data encryption key for each tablet. The data encryption key is "wrapped" (i.e., encrypted) by the resource key, which is associated with the table. The data is wrapped in a user key associated with a particular user, customer or client, such that the user (e.g., the owner of the data) controls access to the data stored on the tablet by controlling the user key.
[0014] The system may wrap the resource key with an access control key associated with an access control list. The system uses the access control key and the access control list to ensure that only authorized tablet servers gain access to the decrypted resource key, and subsequently to the data encryption key. Furthermore, the use of intermediate resource keys and access control keys significantly reduces the number of requests for key decryption requests required by the system. Thus, the key management system efficiently and securely distributes keys even in extremely large distributed computing environments.
[0015] 1, in some implementations, an exemplary key management system 100 includes a remote system 140 that communicates with one or more user devices 10 via a network 112. The remote system 140 may be multiple computers or a distributed system (e.g., a cloud environment) having scalable / elastic resources 142, including computing resources 144 (e.g., data processing hardware) and / or storage resources 146 (e.g., memory hardware). A data store 152 (i.e., a remote storage device) may be overlaid on the storage resources 146 to enable scalable use of the storage resources 146 by one or more of the clients (e.g., user devices 10) or computing resources 144. The data store 152 is configured to store multiple data blocks 154, 154a-154n in one or more tables 158, 158a-158n (i.e., a cloud database). The data store 152 may store any number of tables 158 associated with any number of users 12 at any time.
[0016] The remote system 140 is configured to receive the table 158 from a user device 10 associated with each user 12, for example, via the network 112. The user device 10 may be a desktop workstation, a laptop workstation, or the like. The user device 10 may correspond to any computing device, such as a mobile device (i.e., a smartphone), a mobile terminal, or a mobile terminal (i.e., a smartphone). The user device 10 includes computing resources 18 (e.g., data processing hardware) and / or storage resources 16 (e.g., memory hardware). The remote system 140 divides the table 158 into a number of tablets 159, 159a-159n. Each tablet 159 includes a corresponding portion of the number of data blocks 154 of the table 158. For example, each tablet 159 includes a respective portion of the rows and / or columns of the table 158. In some examples, each tablet 159 is approximately the same size (i.e., includes approximately the same amount of data), while in other examples, the tablets 159 are different sizes. Optionally, the corresponding portions of the data blocks of each tablet include different data blocks than the corresponding portions of the data blocks of each other tablet.
[0017] Remote system 140 executes key manager 160, which includes resource key manager 170 and data key manager 180. Resource key manager 170 generates resource keys 172 that are uniquely associated with tables 158. That is, a new resource key 172 is generated for each table 158 received by key manager 160 (from the same user 12 or a different user), and each table 158 is associated with one resource key 172 at a time. Data key manager 180 generates a unique data encryption key (data Generates data encryption key (DEK) 182, 182a to 182n. The DEK 180 encrypts each tablet 159 with its respective DEK 182. Thus, each tablet 159 can only be accessed by decryption with the corresponding DEK 182 (i.e., in plaintext).
[0018] Resource key manager 170 wraps (i.e., encrypts) each DEK 182 with the resource key 172 associated with table 158. That is, each tablet 159 of table 158 is encrypted with a DEK 182 uniquely associated with the corresponding tablet 159, and each DEK 182 is encrypted with a resource key 172 uniquely associated with the table 158 that originated the tablet 159. Thus, key manager 160 encrypts all DEKs 182 that correspond to the same table 158 with the same resource key 172.
[0019] The key manager 160 distributes control of each tablet 159 (encrypted by the DEK 182) to multiple tablet servers 150, 150a-150n. That is, control of the tablets 159 is distributed among two or more tablet servers 150, with each tablet server 150 receiving control of one or more tablets 159. Each tablet server 150 may receive control of any number of tablets 159, and the system 100 may distribute control of the tablets 159 to any number of tablet servers 150. As used herein, control of a tablet 159 refers to the responsibility for responding to requests to access data of the controlled tablet 159. For example, a tablet server 150 that controls an encrypted tablet 152 (i.e., encrypted stored data) receives a request (e.g., originating from a client or user 12) to access data stored in the encrypted tablet 152. The tablet server 150 responds to the request by decrypting the tablet 159 and providing the requested data. Thus, in some implementations, tablet server 150 is part of a distributed computing and storage environment of remote system 140 designated to control (i.e., service data requests for) the portion of table 158 for remote system 140 (i.e., tablets 159). Alternatively, tablet server 150 may be separate from remote system 140 and may receive tablets 150 to be stored in local storage.
[0020] Although the examples herein show a single table 158 and three tablet servers 159 for clarity, typically each tablet server 150 will control many tablets 159 from many different tables 158. For example, the system 100 includes thousands of tables 158 with control distributed among thousands of tablet servers 150 to create a large-scale distributed storage system. By distributing control of the tablets 159 across multiple tablet servers 150, the access capacity (i.e., the number of concurrent accesses to data that the system 140 supports) may be increased.
[0021] Each tablet server 150 maintains a designated tablet 159 stored in a corresponding portion of the data store 152 which, when combined with the corresponding portions of the data store 152 of each of the other tablet servers 150, forms a cloud database for storage of the table 158, allowing for scalable use of storage resources 146. Each tablet server 150 also receives wrapped DEKs 182W, 182Wa-182Wn corresponding to at least the tablets 159 controlled by the tablet server 150. That is, each tablet server 150 controls one or more tablets 159 encrypted with a respective DEK 182 and each wrapped DEK 182W (i.e., DEK 182 encrypted by resource key 172) corresponding to the controlled tablet 159. Thus, to access a tablet 159, the tablet server 150 must first obtain the unwrapped DEK 182 (i.e., by decryption with resource key 172).
[0022] Key manager 160 sends wrap request 174 to a remote entity 190. In some examples, remote entity 190 is a customer-managed key store (CKMS). Remote entity 190 controls one or more user keys 192 (which may also be referred to herein as customer keys or client keys or customer-managed encryption keys (CMEKs)). Remote system 140 does not receive access to user key 192; instead, remote entity 190 (i.e., the CKMS) holds sole access to user key 192. In some examples, wrap request 174 includes resource key 172. After receiving wrap request 174, remote entity 190 may authorize and / or authenticate key manager 160. That is, remote entity 190 verifies that key manager 160 is currently authorized to have operations (e.g., encryption / decryption operations) performed with user key 192. Authorization may be granted and denied by user 12 or by a third party on behalf of user 12.
[0023] After authenticating and / or authorizing the key manager 160, the remote entity 190 encrypts the resource key 172 with the user key 192. The remote entity 190 may uniquely associate the user key 192 with the table 158. Alternatively, the user key 192 protects various assets (e.g., multiple tables 158) associated with the user 12. The remote entity 190 sends the wrapped resource key 172W (i.e., the resource key 172 encrypted by the user key 192) to the key manager 160. The key manager 160 deletes or discards all plaintext (i.e., unencrypted) copies of the resource key 172 and all plaintext copies of the DEK 182. Thus, all tablets 159 controlled by the tablet server 150 are encrypted by the DEK 182, then wrapped by the resource key 172, then wrapped by the user key 192. Because the user key 192 is under the sole control of the remote entity 190, no other entity (including the remote system 140) can access the tablet 159 without authorization from the user 12 or from a third party on behalf of the user 12. .
[0024] 2, a schematic diagram 200 illustrates that the key manager 160, in some implementations, receives a data request 210 to access one or more data blocks 154 of the table 158 after receiving the encrypted resource key 172W from the remote entity 190. The data request 210 may originate from the user 12 or from another entity authorized by the user. The data request 210 may also originate from one of the tablet servers 159 (e.g., to rebalance data, compact data, recover data, etc.) or from a table manager running on the remote system 140. In response to receiving the data request 210 to access one or more data blocks 154, the key manager 160 generates a resource key decryption request 212 that includes the wrapped resource key 172W and transmits the resource key decryption request 212 to the remote entity 190 (e.g., CMEK). After receiving the resource key decryption request 212 (including the wrapped resource key 172W), the remote entity 190 decrypts the wrapped resource key 172W using a user key 192 associated with a particular user 12. Before decrypting the wrapped resource key 172W, the remote entity 190 may authorize and / or authenticate the key manager 160. Optionally, the key manager 160 includes authentication information or other identifying information along with the resource key decryption request 212 to aid in the authorization and / or authentication. After unwrapping the wrapped resource key 172W, the remote entity 190 sends the unwrapped resource key 172 to the key manager 160. It should be noted that while the remote entity 190 is decrypting the resource key 172W with the user key 192, the remote entity 190 and the key manager do not need to communicate "in the clear." That is, key manager 160 and remote entity 190 may share symmetric and / or asymmetric keys (e.g., public key cryptography) to ensure that all communications between key manager 160 and remote entity 190 are secure.
[0025] In some examples, after receiving the unwrapped resource key 172 from the remote entity 190, the key manager 160 may convert the decrypted resource key 172 into an access control key associated with an access control list (ACL) 234. 232 (i.e., wrapped resource key 172W′). In some implementations, ACL 234 corresponds to a list of tablet servers 150 that are authorized to access resource key 172. For example, key manager 160 generates ACL 234 when distributing control of tablets 159 to tablet servers 150 to determine which tablet servers 150 can access which tablets 159. That is, key manager 160 may permit or enable tablet server 150 to access resource key 172 (to decrypt DEK 182) (via ACL 234) based on whether tablet server 150 controls any tablets 159 in table 158 associated with resource key 172.
[0026] In some examples, the ACL 234 is based on roles assigned to one or more tablet servers 150. For example, all tablet servers 150 execute with a particular role, such as a production (i.e., "prod") role, that is associated with one or more tables 158. Other tablet servers 150 (e.g., malicious tablet servers) cannot be assigned this same role. Thus, the ACL 234 can ensure that an appropriate role is assigned to a requesting tablet server 150 based on the table 158 and / or resource key 172 to which the tablet server 150 requests access. This ensures that only authorized tablet servers 150 that are assigned an authorized role can access the resource key 172 unwrapped by the access control key 232. The ACL 234 may implement other means of access control as well. For example, the ACL 234 may include an identifier for each authorized tablet server 150, and the tablet server 150 may verify its identity (e.g., by a digital signature) if necessary.
[0027] In some examples, after wrapping the resource key 172 with the access control key 232, the key manager 160 distributes the wrapped resource key 172W′ (i.e., the resource key 172 encrypted by the access control key 232) to all tablet servers 150 in communication with the key manager 160, regardless of whether each tablet server 150 is authorized to access the unwrapped resource key 172. For simplicity, the key manager 160 distributing the wrapped resource key 172W′ to all tablet servers 150 is not shown in the example of FIG. 2. Since each tablet server 150 must request access to the unwrapped resource key 172, which is protected by the ACL 234, the key manager 160 may securely broadcast the wrapped resource key 172W′ to the tablet servers 150. This avoids the need for the key manager 160 to care or know what tablet servers 150 exist and which tablets 159 each tablet server 150 stores.
[0028] After receiving the wrapped resource key 172W' (here shown in FIG. 2), one of the tablet servers 150 may generate a resource key unwrap request 242 requesting the key manager 160 to unwrap the wrapped resource key 172W'. Because the tablet server 150 may control tablets 159 from multiple tables 158 (each associated with a different resource key 172), the tablet server 150 may include the wrapped resource key 172W' in the request 242 to indicate to the key manager 160 which resource key 172 the tablet server 150 is requesting access to.
[0029] The key manager 160 receives a resource key unwrap request 242 from one of the tablet servers 150 and determines, based on the ACL 234, whether the tablet server 150 is authorized to access the unwrapped resource key 172. If the tablet server 150 is authorized to access the resource key 172, the key manager 160 decrypts the wrapped resource key 172W′ using the access control key 232. The key manager 160 sends the unwrapped resource key 172 to the authorized tablet server 150. If the tablet server 150 is unauthorized (e.g., if the tablet server 150 is not authorized by the ACL 234 and / or if the tablet server 150 is not operating in an authorized role), the key manager 160 may deny the unauthorized tablet server 150 access to the decrypted resource key 172.
[0030] After receiving the decrypted resource key 172, the tablet server 150 may use the resource key 172 to unwrap / decrypt one or more of the wrapped DEKs 182W, as shown in FIG. 2. After unwrapping one or more wrapped DEKs 182W, the tablet server 150 uses the unwrapped DEK 182 to unwrap the tablet 159 encrypted by the corresponding DEK 182. In some implementations, the tablet server 150 caches the unwrapped DEK 182 (e.g., in volatile memory) for a period of time to reduce the frequency at which the tablet server 150 sends resource key unwrap requests 242 to the key manager 160. For example, the tablet server caches the decrypted DEK 182 for one hour. After this period expires, the tablet server 150 flushes the cached DEK 182. and may send resource key unwrap request 242 again to key manager 160. That is, when tablet server 150 caches DEK 182, it may use the cached DEK 182 rather than again requesting the key manager to unwrap DEK 182W.
[0031] The tablet server 150, in some instances, unwraps all DEKs 182W associated with the same table 158 because the resource key 172 associated with the table 158 is used to wrap all DEKs that correspond to the tablets 159 in the table 158. Thus, with a single resource key unwrap request 210 to the key manager 160, the tablet server 150 may access all tablets 159 in the same table 158. In contrast to conventional techniques that include a request for each DEK 182, the key manager 160 significantly reduces the number of communications and the amount of time required to distribute a DEK 182.
[0032] 3, a schematic diagram 300 illustrates an exemplary key domain for system 100, where remote entity 190 (e.g., CKMS) maintains sole access to user key 192 by keeping it secret from all other entities (including remote system 140 and key manager 160). That is, while an authorized entity may request that remote entity 190 perform operations (e.g., encryption and decryption operations) with user key 192, remote entity 190 will not reveal user key 192 when performing the action.
[0033] Key manager 160 generates and maintains both access control key 232 and resource key 172. The access control key 232 and user key 192 (under the control of remote entity 190) together wrap / encrypt resource key 172. Key manager 160 may have sole access to access control key 232. In some implementations, key manager 160 wraps resource key 172 with access control key 232 after receiving the unwrapped resource key 172 from remote entity 190.
[0034] The resource key 172 wraps one or more DEKs 182 stored in one or more tablet servers 150. In some examples, the key manager 160 distributes the resource key 172W′ wrapped by the access control key to each tablet server 150. The tablet server 150 requests access to the DEK 182 (and correspondingly, the tablets 159 that the DEK 182 encrypts) wrapped by the resource key 172 from the key manager 160. After authenticating the tablet server 150 (e.g., via the ACL 234), the key manager 160 unwraps the wrapped resource key 172W′ and sends the unwrapped resource key 172 to the corresponding tablet server 150. The tablet server 150 may unwrap the one or more DEKs 182 to access one or more of the tablets 159 stored in the tablet server 150.
[0035] 4 provides a sequence diagram 400 of steps for generating a resource key 172. The Y-axis of the sequence diagram 400 represents time, increasing from top to bottom, to show the steps in order. The steps start at the top of the Y-axis (i.e., the earliest point in time) and progress sequentially downward along the Y-axis. The parallel vertical lines represent the user device 10, the key manager 160, and the remote entity 190, respectively. In step 410, the user device 10 creates, sends, or instructs the key manager 160 to create the table 158. The key manager 160 then The key manager 160 generates a resource key 172 in step 412. The resource key 172 is uniquely associated with the table 158 created in step 410. The key manager 160 then sends the generated resource key 172 to the remote entity in step 414. The key manager includes the resource key 172 in a wrap request 174. The remote entity 190, after authorizing and / or authenticating the key manager 160 in step 416, wraps the resource key 172 with the user key 192. In step 418, the remote entity 190 sends the wrapped resource key 172W to the key manager 160. After receiving the wrapped resource key 172W, the key manager 160 stores the wrapped resource key 172W (e.g., caches the key 172W in volatile memory) in step 420.
[0036] 5, a sequence diagram 500 includes steps for unwrapping the wrapped DEK 182W with the resource key 172. The steps start at the top of the Y-axis (i.e., the earliest point in time) and proceed sequentially downward along the Y-axis. The parallel vertical lines represent the remote entity 190, the key manager 160, and the tablet server 150, respectively. The sequence diagram 500 begins at step 510, when the key manager 160 sends a resource key decryption request 212 to the remote entity 190. In step 512, the remote entity 190, after receiving the resource key decryption request 212, unwraps (i.e., decrypts) the wrapped resource key 172W with the user key 192 associated with the user 12 that created and / or owns the table 158.
[0037] In step 514, the remote entity 190 sends the unwrapped resource key 172 to the key manager 160. The key manager 160 wraps the unwrapped resource key 172 with the access control key 232 in step 516. In step 518, the key manager 160 sends the wrapped (i.e., wrapped by the access control key 232) resource key 172W′ to one or more tablet servers 150. One of the tablet servers 150 sends a resource key unwrap request 242 including the wrapped resource key 172W′ to the key manager 160 in step 520. The key manager 160 may determine whether the tablet server 150 is authorized to access the resource key 172 (e.g., based on the ACL 234). If the tablet server 150 is authorized, the key manager 160 unwraps the wrapped resource key 172W′ with the access control key 232 in step 522 and sends the unwrapped resource key 172 to the tablet server 150 in step 524. The tablet server 150 unwraps one or more wrapped DEKs 182W with the resource key 172 in step 526.
[0038] In some implementations, the resource key 172 includes an expiration date. The expiration date indicates the period for which the key is valid. That is, once the key expires, the remote system 140 will not be able to use the expired key to perform any encryption or decryption operations and will not use the key. The expiration date prevents the system from using the "old" key, for example, if communication is lost between the devices (e.g., between the key manager 160 and the remote entity 190 and / or between the key manager 160 and the tablet server 150).
[0039] In some examples, the key manager 160 rotates the resource keys 172 at a rotation rate that is less than the expiration date of the resource keys 172. That is, the key manager 160 generates new resource keys 172 at a frequency that is based on the rotation rate. Upon generating resource key 172 to replace existing resource key 172, key manager 160 may disable previous resource key 172 (e.g., by sending a key disable message to each tablet server 150) and continue to wrap resource key 172 with user key 192 and access control key 232, wrap DEK 182, and distribute wrapped DEK 182W and wrapped resource key 172W′ to tablet servers 150 as described in connection with FIGS. 1-5. The expiration time of resource key 172 may be greater than the rotation rate to provide a fallback when communication between the entities fails. For example, if the rotation rate is four hours (i.e., a new resource key 172 is generated every four hours), the expiration time of resource key 172 may be six hours. Then, in the situation where the tablet server 150 is no longer able to communicate with the key manager 160 and therefore does not receive the new resource key 172 in a timely manner, the tablet server 150 will at least stop using the old resource key 172 once the key expires (i.e., after six hours in this example).
[0040] Optionally, the expiration times and rotation rates for resource keys 172 are each configurable by a particular user 12. For example, a user indicates a preference for expiration times and rotation rates when creating table 158. In some implementations, a user may adjust the rotation rates and / or expiration times at any time after creation of table 158.
[0041] 6 is a flow chart of an exemplary arrangement of operations for a method 600 for securely and efficiently distributing encryption keys. Method 600 includes, at step 602, receiving at data processing hardware 144 a table 158 associated with a particular user 12. Table 158 includes a plurality of data blocks 154. Method 600 includes, at step 604, dividing table 158 into a plurality of tablets 159, by data processing hardware 144. Each tablet 159 includes a corresponding portion of the plurality of data blocks 154 of table 158. Method 600 includes, at step 606, generating, by data processing hardware 144, a resource key 172 uniquely associated with table 158.
[0042] For each tablet 159 of the plurality of tablets 159, the method 600 includes, in step 608, generating a unique data encryption key 182 for the corresponding tablet 159. In step 610, the method 600 includes encrypting, by the data processing hardware 144, the corresponding tablet 159 with the unique data encryption key 182. The method 600 includes, in step 612, encrypting, by the data processing hardware 144, each data encryption key 182 with the resource key 172. In step 614, the method 600 also includes distributing, by the data processing hardware 144, control of each encrypted tablet 159 and each corresponding encrypted data encryption key 182W to the plurality of tablet servers 150. Each tablet server 150 in the plurality of tablet servers 150 is independent of each other tablet server 150 in the plurality of tablet servers 150. Each tablet server 150 controls one or more of the encrypted tablets 159 from the table 158. At step 616, the method 600 includes transmitting, by the data processing hardware 144, the resource key 172 to the remote entity 190. When the resource key 172 is received by the remote entity 190, it causes the remote entity 190 to encrypt the resource key 172 with a user key 192 that is associated with a particular user 12 and that is maintained secret from the data processing hardware 144. The remote entity also transmits the encrypted resource key 172W to the data processing hardware 144.
[0043] FIG. 7 illustrates an exemplary embodiment that may be used to implement the systems and methods described herein. 7 is a schematic diagram of a computing device 700. Computing device 700 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. The components shown, their connections and relationships, and their functions are merely exemplary and are not intended to limit the implementation of the invention as described and / or claimed herein.
[0044] Computing device 700 includes a processor 710, a memory 720, a storage device 730, a high-speed interface / controller 740 that connects to memory 720 and high-speed expansion port 750, and a low-speed interface / controller 760 that connects to low-speed bus 770 and storage device 730. Each of components 710, 720, 730, 740, 750, and 760 are interconnected using various buses and may be implemented on a common motherboard or in other manners as appropriate. Processor 710 can process instructions for execution within computing device 700, including instructions stored in memory 720 or storage device 730, to display graphical information for a graphical user interface (GUI) on an external input / output device, such as a display 780 coupled to high-speed interface 740. In other implementations, multiple processors and / or multiple buses may be used, along with multiple memories and multiple types of memories, as appropriate. Also, multiple computing devices 700 may be connected, with each device providing a portion of the required operations (eg, as a bank of servers, as a group of blade servers, or as a multi-processor system).
[0045] The memory 720 stores information non-transiently within the computing device 700. The memory 720 may be a computer-readable medium, a volatile memory unit, or a non-volatile memory unit. The non-transient memory 720 may be a physical device used to temporarily or permanently store programs (e.g., sequences of instructions) or data (e.g., program state information) for use by the computing device 700. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM) / programmable read-only memory (PROM) / erasable programmable read-only memory (EPROM) / electronically erasable programmable read only memory (EEPROM) (e.g., typically used for firmware such as boot programs). Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and the like. ), phase change memory (PCM), and disk or tape Includes, but is not limited to:
[0046] The storage device 730 can provide mass storage for the computing device 700. In some implementations, the storage device 730 is a computer-readable medium. In various different implementations, the storage device 730 can be a floppy disk device, a hard disk device, an optical disk device, or an array of devices including a tape device, a flash memory or other similar solid-state memory device, or a device in a storage area network or other configuration. In additional implementations, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier can be a computer-readable medium, such as memory 720, the storage device 730, or a memory on the processor 710. A medium or machine-readable medium.
[0047] The high speed controller 740 manages bandwidth intensive operations for the computing device 700, and the low speed controller 760 manages lower bandwidth intensive operations. Such duty allocation is merely exemplary. In some implementations, the high speed controller 740 is coupled to a memory 720, a display 780 (e.g., via a graphics processor or accelerator), and a high speed expansion port 750 that may accept various expansion cards (not shown). In some implementations, the low speed controller 760 is coupled to a storage device 730 and a low speed expansion port 790. Various communication ports (e.g., USB, Bluetooth, Ethernet, wireless internet, etc.) may be connected to the high speed controller 740. Low speed expansion ports 790, which may include a LAN (Ethernet), may be coupled, for example via a network adapter, to one or more input / output devices, such as a keyboard, pointing device, scanner, or a networking device such as a switch or router.
[0048] Computing device 700, as shown, may be implemented in a number of different forms, such as as a standard server 700a, or multiple times within a group of such servers 700a, as a laptop computer 700b, or as part of a rack server system 700c.
[0049] Various implementations of the systems and techniques described herein may be implemented using digital electronic and / or optical circuits, integrated circuits, specially designed application specific integrated circuits (ASICs), computer hardware, firmware, software, or other devices. These various implementations may include implementations in one or more computer programs executable and / or interpretable on a programmable system including at least one programmable processor, which may be special purpose or general purpose, coupled to transmit and receive data and instructions from a storage system, at least one input device, and at least one output device.
[0050] A software application (i.e., a software resource) may refer to computer software that causes a computing device to perform tasks. In some examples, a software application may be referred to as an "application," "app," or "program." Exemplary applications include, but are not limited to, system diagnostic applications, system management applications, system maintenance applications, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and gaming applications.
[0051] These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor and may be implemented in a high-level procedural and / or object-oriented programming language and / or in assembly / machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, non-transitory computer-readable medium, apparatus, and / or device (e.g., magnetic disk, optical disk, memory, Programmable Logic Device (PLD)) used to provide machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to a medium that receives the machine instructions and / or data as a programmable signal. This refers to any signal used to provide data to a programmable processor.
[0052] The processes and logic flows described herein may be performed by one or more programmable processors, also referred to as data processing hardware, which may execute one or more computer programs to perform functions by performing operations on input data and generating output. The processes and logic flows may also be implemented using special purpose logic circuitry, such as field programmable gate arrays (FPGs). A) or ASIC (Application Specific Integrated Circuit). Processors suitable for executing computer programs include, by way of example, both general purpose and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory, or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive or transfer or receive and transfer data to or from, one or more mass storage devices, such as magnetic disks, magneto-optical disks, or optical disks, for storing data. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, such as, by way of example, semiconductor memory devices, such as, for example, EPROM, EEPROM, and flash memory devices, magnetic disks, such as internal hard disks or removable disks, magneto-optical disks, and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0053] To allow for user interaction, one or more aspects of this disclosure may be implemented on a computer having a display device, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen, for displaying information to the user, and optionally a keyboard and pointing device, such as a mouse or trackball, for allowing the user to provide input to the computer. Other types of devices may be used to provide for user interaction as well. For example, feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback. Also, input from the user may be received in any form, including acoustic, speech, or tactile input. In addition, the computer may interact with the user by sending documents to and receiving documents from a device used by the user, for example, by sending a web page to a web browser on the user's client device in response to a request received from the web browser.
[0054] Several implementations have been described. However, it will be understood that various modifications can be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.
Claims
1. 1. A method (600), comprising: receiving, in the data processing hardware (144), a table (158) associated with a particular user (12), the table (158) including a plurality of data blocks (154); the method further comprising: dividing, by the data processing hardware (144), the table (158) into a plurality of tablets (159), each tablet (159) including a corresponding portion of the plurality of data blocks (154) of the table (158), the method further comprising: generating, by said data processing hardware (144), a resource key (172) uniquely associated with said table (158); For each tablet (159) of the plurality of tablets (159), generating, by said data processing hardware (144), a unique data encryption key (182) for said corresponding tablet (159); encrypting, by said data processing hardware (144), said corresponding tablet (159) with said unique data encryption key (182); encrypting, by said data processing hardware (144), each data encryption key (182) with said resource key (172); and distributing, by the data processing hardware (144), control of each encrypted tablet (152) and each corresponding encrypted data encryption key (182) to a plurality of tablet servers (150), each tablet server (150) in the plurality of tablet servers (150) being independent of each other tablet server (150) in the plurality of tablet servers (150) and controlling one or more of the encrypted tablets (152) from the table (158), the method further comprising: transmitting, by the data processing hardware (144), the resource key (172) to a remote entity (190), the resource key (172) being received by the remote entity (190) and transmitting to the remote entity (190): encrypting said resource key (172) with a user key (192) that is associated with said particular user (12) and that is maintained secret from said data processing hardware (144); and transmitting the encrypted resource key (172) to the data processing hardware (144).
2. After receiving the encrypted resource key (172) from the remote entity (190), obtaining, by said data processing hardware (144), a request to access one or more data blocks (154) of said table (158); generating, by said data processing hardware (144), a resource key decryption request (212) including said encrypted resource key (172); and transmitting, by the data processing hardware (144), the resource key decryption request (212) to the remote entity (190), the resource key decryption request (212) being received by the remote entity (190) and transmitting to the remote entity (190): decrypting the encrypted resource key (172) with the user key (192) associated with the particular user (12); and transmitting the decrypted resource key to the data processing hardware.
3. After receiving the decrypted resource key (172), the data processing hardware (144) converts the decrypted resource key (172) into an access control key (232) associated with an access control list (ACL) (234).
3. The method of claim 2, further comprising: encrypting the resource key with a , and wherein the ACL includes a list of tablet servers that are authorized to access the resource key.
4. 4. The method (600) of claim 3, wherein the access control list is based on roles assigned to one or more tablet servers (150) of the plurality of tablet servers (150).
5. receiving a resource key request at said data processing hardware (144) requesting said resource key (172) in decrypted form from one of said plurality of tablet servers (150); determining, by said data processing hardware (144), based on said ACL (234) whether said one of said tablet servers (150) is authorized to access said resource key (172); decrypting, by the data processing hardware (144), the encrypted resource key (172) with the access control key (232) if the one of the tablet servers (150) is authorized to access the resource key (172); and transmitting, by the data processing hardware (144), the decrypted resource key (172) to the one of the tablet servers (150).
6. The decrypted resource key (172), when received by one of the tablet servers (150), is transmitted to one of the tablet servers (150): using the decrypted resource key (172) to decrypt the data encryption key (182) corresponding to at least one tablet (159) controlled by the one of the tablet servers (150); and using the decrypted data encryption key to decrypt the corresponding at least one tablet.
7. The method (600) of any one of claims 1 to 6, wherein the resource key (172) includes an expiration date.
8. 8. The method of claim 7, further comprising rotating, by the data processing hardware, the resource key at a rotation rate that is less than the expiration date of the resource key.
9. 9. The method (600) of claim 8, wherein the expiration time and the rotation speed are each configurable by the particular user (12).
10. 10. The method (600) of any one of claims 1 to 9, wherein corresponding portions of the data blocks (154) of each tablet (159) include data blocks (154) that are different from corresponding portions of the data blocks (154) of each other tablet (159).
11. A system (100), comprising: Data processing hardware (144); and memory hardware (146) in communication with the data processing hardware (144), the memory hardware (146) storing instructions that, when executed on the data processing hardware (144), cause the data processing hardware (144) to perform the following operations: The method includes an act of receiving a table (158) associated with a particular user (12), the table (158) including a plurality of data blocks (154), the act of: dividing said table (158) into a plurality of tablets (159), each tablet (159) including a corresponding portion of said plurality of data blocks (154) of said table (158), said following operations further comprising: generating a resource key (172) uniquely associated with said table (158); for each tablet (159) of said plurality of tablets (159), generating a unique data encryption key (182) for said corresponding tablet (159); and encrypting said corresponding tablet (159) with said unique data encryption key (182), said following operations further comprising: encrypting each data encryption key (182) with said resource key (172); and distributing control of each encrypted tablet (152) and each corresponding encrypted data encryption key (182) to a plurality of tablet servers (150), each tablet server (150) being within said plurality of tablet servers (150) and controlling one or more of said encrypted tablets (152) from said table (158), said operations further comprising: and transmitting the resource key (172) to a remote entity (190), the resource key (172) being received by the remote entity (190) to the remote entity (190) to: encrypting said resource key (172) with a user key (192) that is associated with said particular user (12) and that is maintained secret; and transmitting the encrypted resource key to the data processing hardware.
12. The following operations further include, after receiving the encrypted key from the remote entity (190): obtaining a request to access one or more data blocks (154) of the table (158); generating a resource key decryption request (212) including the encrypted resource key (172); and transmitting the resource key decryption request (212) to the remote entity (190), the resource key decryption request (212) upon receipt by the remote entity (190) to the remote entity (190). decrypting the encrypted resource key (172) with the user key (192) associated with the particular user (12); and transmitting the decrypted resource key to the data processing hardware.
13. The following operations further include, after receiving the decrypted resource key (172), encrypting the decrypted resource key (172) with an access control key (232) associated with an access control list (ACL) (234), the ACL (234) indicating which tablet servers (15) are authorized to access the resource key (172).
13. The system (100) of claim 12, further comprising a list of the first and second nodes (110, 112, 114, 116, 118, 119, 120, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
14. 14. The system (100) of claim 13, wherein the access control list is based on roles assigned to one or more tablet servers (150) of the plurality of tablet servers (150).
15. The following operations further include: receiving a resource key request requesting the resource key (172) in decrypted form from the one of the plurality of tablet servers (150); determining whether said one of said tablet servers (150) is authorized to access said resource key (172) based on said ACL (234); decrypting the encrypted resource key (172) with the access control key (232) if the one of the tablet servers (150) is authorized to access the resource key (172); and transmitting the decrypted resource key (172) to the one of the tablet servers (150).
16. The decrypted resource key (172), when received by the one of the tablet servers (150), is transmitted to the one of the tablet servers (150): using the decrypted resource key (172) to decrypt the data encryption key (182) corresponding to at least one tablet (159) controlled by the one of the tablet servers (150); and using the decrypted data encryption key to decrypt the corresponding at least one tablet.
17. The system (100) of any one of claims 11 to 16, wherein the resource key (172) includes an expiration date.
18. 20. The system (100) of claim 17, wherein the subsequent actions further comprise rotating the resource key (172) at a rotation rate that is less than the expiration date of the resource key (172).
19. 20. The system (100) of claim 18, wherein the expiration time and the rotation speed are each configurable by the particular user (12).
20. 20. The system (100) of claim 11, wherein corresponding portions of the data blocks (154) of each tablet (159) include data blocks (154) that are different from corresponding portions of the data blocks (154) of each other tablet (159).
Citation Information
Patent Citations
Information supply system
JP1999088436A
Contents receiver
JP2002344921A
Device, method and program for processing information
JP2006107323A
Secure server side encryption for online file sharing and collaboration
US20130254536A1