Secure and efficient distribution of encryption keys

JP7905420B2Active Publication Date: 2026-08-14GOOGLE LLC
View PDF 4 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2024-12-26
Publication Date
2026-08-14

Smart Images

  • Figure 0007905420000001
    Figure 0007905420000001
  • Figure 0007905420000002
    Figure 0007905420000002
  • Figure 0007905420000003
    Figure 0007905420000003
Patent Text Reader

Abstract

To provide a method and a system for securely and efficiently distributing encryption keys.SOLUTION: A method for distributing encryption keys includes the steps of receiving a table including a plurality of data blocks, dividing the table into a plurality of tablets including corresponding portions of the data blocks, generating a resource key uniquely associated with the table, generating for each tablet a unique data encryption key used to encrypt the corresponding tablet, encrypting each data encryption key with the resource key, distributing control of each encrypted tablet and each corresponding encrypted data encryption key to a plurality of tablet servers that control one or more of the encrypted tablets, and sending the resource key to a remote entity to be encrypted with a user key.SELECTED DRAWING: Figure 6
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Technical Field The present disclosure relates to securely and efficiently distributing encryption keys.

Background Art

[0002] Background Cloud computing has become more widespread as the storage of large amounts of data in the cloud has become more prevalent. The use of encryption to protect the ever-increasing amounts of data stored in the cloud has also increased. Cloud service providers manage encryption keys to protect customer data from unauthorized user access. Some customers may choose to generate their own encryption keys, which adds another layer of complexity to key management. As the amount of data stored on the cloud increases and encryption becomes more complex, the management of encryption keys often becomes a cumbersome process.

Summary of the Invention

[0003] Summary One aspect of this disclosure provides a method for securely and efficiently distributing encryption keys. The method includes the step of receiving a table associated with a specific user in data processing hardware. The table contains multiple data blocks. The method also includes the step of dividing the table into multiple tablets by the data processing hardware. Each tablet contains a corresponding portion of the multiple data blocks in the table. The method also includes the step of generating a resource key uniquely associated with the table by the data processing hardware. For each of the multiple tablets, the method includes the steps of generating a unique data encryption key for the corresponding tablet in the data processing hardware, and encrypting the corresponding tablet with the unique data encryption key by the data processing hardware. The method also includes the step of encrypting the data encryption key with the resource key by the data processing hardware. The method includes the step of distributing control of each encrypted tablet and each corresponding encrypted data encryption key to a plurality of tablet servers by the data processing hardware. Each tablet server within the plurality of tablet servers is independent of the other tablet servers within the plurality of tablet servers and controls one or more of the encrypted tablets from the table. The method includes the step of having the data processing hardware send the resource key to a remote entity, which, upon receipt by the remote entity, encrypts the resource key with a user key associated with the particular user and kept secret from the data processing hardware, and then sends the encrypted resource key to the data processing hardware.

[0004] Implementations of this disclosure may include one or more of the following features. In some implementations, the method further includes the steps of: receiving the encrypted resource key from the remote entity, the data processing hardware obtaining a request to access one or more data blocks in the table; the data processing hardware generating a resource key decryption request containing the encrypted resource key; and the data processing hardware transmitting the resource key decryption request to the remote entity. In these implementations, the step of transmitting the resource key decryption request involves associating the remote entity with a specific user. The encrypted resource key is decrypted using the user key, and the decrypted resource key is sent to the data processing hardware. In some examples, after receiving the decrypted resource key, the data processing hardware also performs access control based on the access control list (ACL) associated with it. The method includes the step of encrypting the decrypted resource key with the access control key. The ACL includes a list of tablet servers that are permitted 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 the steps of: receiving a resource key request in the data processing hardware requesting the resource key in a decrypted form from one of the tablet servers; the data processing hardware determining, based on the ACL, whether one of the tablet servers is permitted to access the resource key; if one of the tablet servers is permitted to access the resource key, the data processing hardware decrypting the encrypted resource key with the access control key; and the data processing hardware sending the decrypted resource key to one of the tablet servers. In some examples, when the decrypted resource key is received by one of the tablet servers, that tablet server is instructed to use the decrypted resource key to decrypt the data encryption key corresponding to at least one tablet controlled by that tablet server, 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 the step of rotating the resource key at a rotation speed less than the expiration date by the data processing hardware. In some examples, the expiration date and rotation speed are each configurable by a specific user. In some implementations, corresponding portions of the data blocks in each tablet contain data blocks that are different from corresponding portions of the data blocks in other tablets.

[0006] Another aspect of this disclosure provides a system for securely and efficiently distributing encryption keys. The system includes data processing hardware and memory hardware that communicates with the data processing hardware. When executed on the data processing hardware, the memory hardware stores instructions that cause the data processing hardware to perform the following actions: The following actions include receiving a table associated with a particular user. The table contains multiple data blocks. The following actions also include dividing the table into multiple tablets. Each tablet contains a corresponding portion of the multiple data blocks in the table. The following actions also include generating a resource key uniquely associated with the table. For each of the multiple tablets, the following actions include generating a unique data encryption key for the corresponding tablet and encrypting the corresponding tablet with the unique data encryption key. The following actions also include encrypting the data encryption key with the resource key. The following actions include distributing control of each encrypted tablet and each corresponding encrypted data encryption key to multiple tablet servers. Each tablet server within the group of tablet servers is independent of the other tablet servers within the group of tablet servers and controls one or more of the encrypted tablets from the table. The following actions include sending the resource key to a remote entity, which, upon receipt by the remote entity, encrypts the resource key with a user key associated with a specific user and kept secret from the data processing hardware, and then sends the encrypted resource key to the data processing hardware. To do something and to have someone do it.

[0007] Implementations of this disclosure may include one or more of the following features. In some implementations, the following operations also include, after receiving the encrypted resource key from the remote entity, taking a request to access one or more data blocks of the table; generating a resource key decryption request containing 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 that particular user and to send the decrypted resource key to the data processing hardware.

[0008] In some examples, the following actions may 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 contains a list of tablet servers that are permitted 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 following actions may also include receiving a resource key request requesting the decrypted resource key from one of the tablet servers, determining, based on the ACL, whether one of the tablet servers is permitted to access the resource key, decrypting the encrypted resource key with the access control key if one of the tablet servers is permitted to access the resource key, and sending the decrypted resource key to one of the tablet servers. In some examples, when the decrypted resource key is received by one of the tablet servers, that tablet server is instructed to use the decrypted resource key to decrypt the data encryption key corresponding to at least one tablet controlled by that tablet server, 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 actions include rotating the resource key at a rotation speed less than the resource key's expiration date. In some examples, the expiration date and rotation speed are configurable by the specific user. In some implementations, corresponding portions of the data blocks on each tablet contain different data blocks from corresponding portions of the data blocks on other tablets.

[0010] Details of one or more implementations of this disclosure are described in the accompanying drawings and the following description. Other aspects, features, and advantages will become apparent from the following description, the accompanying drawings, and the accompanying claims. [Brief explanation of the drawing]

[0011] [Figure 1] This is a schematic diagram illustrating an exemplary system for distributing encryption keys. [Figure 2] This is a schematic diagram showing exemplary components of the system in Figure 1. [Figure 3] This is a schematic diagram showing the encryption key domain. [Figure 4] This is a schematic diagram showing the sequence for generating resource keys. [Figure 5] This is a schematic diagram showing the sequence for decrypting the data encryption key. [Figure 6] This flowchart shows an exemplary configuration of how encryption keys are distributed. [Figure 7] This is a schematic diagram showing exemplary computing devices that may be used to implement the systems and methods described herein. [Modes for carrying out the invention]

[0012] Similar reference symbols in various diagrams indicate the same elements. Detailed explanation In cloud computing environments, large collections of data (e.g., tables) can be distributed across hundreds, if not thousands, of different computing platforms, such as servers. Often, it is desirable or necessary to protect access to this data using encryption. For example, customer-managed keys (CMKs) are an architectural pattern that allows clients to protect their 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) can. However, protecting and distributing keys becomes logistically challenging when dealing with large amounts of data and thousands of servers.

[0013] The implementations described herein relate to a key management system that distributes control of a portion of a table (i.e., a tablet) to 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, and the resource key is associated with the table. It is wrapped in a user key associated with the user, customer, or client. Therefore, the user (e.g., the data owner) controls access to the data stored on the tablet by controlling the user key.

[0014] The system can wrap resource keys with access control keys associated with access control lists. The system uses access control keys and access control lists to ensure that only authorized tablet servers gain access to the decrypted resource keys, and subsequently to the data encryption keys. Furthermore, the use of intermediate resource keys and access control keys significantly reduces the number of key decryption requests required by the system. Therefore, the key management system efficiently and securely distributes keys even in extremely large distributed computing environments.

[0015] Referring here to Figure 1, in some implementations, the 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 a group of 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 within 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 given time.

[0016] The remote system 140 is configured to receive, for example, a table 158 from a user device 10 associated with each user 12 via a network 112. The user device 10 may be a desktop workstation, a laptop workstation, etc. This can correspond to any computing device such as a computer or mobile device (i.e., a smartphone). User device 10 includes computing resources 18 (e.g., data processing hardware) and / or storage resources 16 (e.g., memory hardware). Remote system 140 divides table 158 into multiple tablets 159, 159a to 159n. Each tablet 159 contains a corresponding portion of multiple data blocks 154 of table 158. For example, each tablet 159 contains a portion of each row and / or column of table 158. In some examples, each tablet 159 is approximately the same size (i.e., contains approximately the same amount of data), but in other examples, the tablets 159 are of different sizes. Optionally, a corresponding portion of the data blocks in each tablet contains a different data block than the corresponding portion of the data blocks in each other tablet.

[0017] The remote system 140 runs a key manager 160, which includes a resource key manager 170 and a data key manager 180. The resource key manager 170 generates resource keys 172 that are uniquely associated with table 158. That is, a new resource key 172 is generated for each table 158 received by the key manager 160 (from the same user 12 or different users), and each table 158 is associated with one resource key 172 at a time. The data key manager 180 generates a unique data encryption key (data) for each tablet 159 of the multiple tablets 159 of table 158. Generate encryption keys (DEK) 182, 182a~182n. Data key money The 180 encrypts each tablet 159 with its respective DEK 182. Therefore, each tablet 159 can only be accessed by decryption with the corresponding DEK 182 (i.e., in plain text).

[0018] The resource key manager 170 wraps (i.e., encrypts) each DEK 182 with a resource key 172 associated with the table 158. That is, each tablet 159 of the table 158 is encrypted by a DEK 182 uniquely associated with the corresponding tablet 159, and each DEK 182 is encrypted by a resource key 172 uniquely associated with the table 158 that sent the tablet 159. For this reason, the key manager 160 encrypts all DEK 182 corresponding to the same table 158 with the same resource key 172.

[0019] The key manager 160 distributes the control of each tablet 159 (encrypted by the DEK 182) to a plurality of tablet servers 150, 150a to 150n. That is, the control of the tablet 159 is distributed among two or more tablet servers 150, and each tablet server 150 receives the control of one or more tablets 159. Each tablet server 150 can receive the control of any number of tablets 159, and the system 100 can distribute the control of the tablet 159 to any number of tablet servers 150. As used herein, the control of the tablet 159 refers to the responsibility corresponding to a request for accessing the 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., sent from a client or user 12) for accessing the 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. For this reason, in some embodiments, the tablet server 150 is a part of a distributed computing and storage environment of the remote system 140 designated to control (i.e., respond to data requests) a part of the table 158 for the remote system 140 (i.e., the tablet 159). Alternatively, the tablet server 150 may be independent of the remote system 140 and may receive a tablet 150 to be stored in local storage.

[0020] The examples in this specification show a single table 158 and three tablet servers 159 for clarity, but 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 data that the system 140 can access simultaneously) can be increased.

[0021] Each tablet server 150 maintains the designated tablets 159 stored within the corresponding portion of the data store 152, and the corresponding portions, when combined with the corresponding portions of the data stores 152 of each other tablet server 150, form a cloud database for storage of the table 158 and enable scalable use of the storage resources 146. Each tablet server 150 also receives the wrapped DEKs 182W, 182Wa~182Wn corresponding at least to the tablets 159 controlled by the tablet server 150. That is, each tablet server 150 controls one or more tablets 159 encrypted by the respective DEK 182 and each wrapped DEK 182W corresponding to the controlled tablets 159 (i.e., the DEK 182 encrypted by the resource key 172). For this reason, to access the tablets 159, the tablet server 150 must first obtain the unwrapped DEK 182 (i.e., by decryption with the resource key 172).

[0022] The key manager 160 sends a wrap request 174 to the remote entity 190. In some examples, the remote entity 190 is a customer-managed key store (CKMS). The remote entity 190 controls one or more user keys 192 (which may also be referred to herein as customer keys, client keys, or customer-managed encryption keys (CMEK)). The remote system 140 does not receive access to the user key 192; instead, the remote entity 190 (i.e., CKMS) holds sole access to the user key 192. In some examples, the wrap request 174 includes the resource key 172. After receiving the wrap request 174, the remote entity 190 may authorize and / or authenticate the key manager 160. That is, the remote entity 190 verifies that the key manager 160 is authorized to perform an action (e.g., an encryption / decryption action) using the user key 192 at that time. Authorization can 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 associate the user key 192 specifically with table 158. Alternatively, the user key 192 protects various assets (e.g., multiple tables 158) associated with user 12. The remote entity 190 sends the wrapped resource key 172W (i.e., resource key 172 encrypted with 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 with the DEK 182, then wrapped with the resource key 172, and then wrapped with the user key 192. Since user key 192 is under the sole control of remote entity 190, no other entity (including remote system 140) can access tablet 159 without permission from user 12, or without permission from a third party on behalf of user 12. .

[0024] Referring here to Figure 2, schematic diagram 200 shows that, in several implementations, the key manager 160 receives an encrypted resource key 172W from a remote entity 190 and then receives a data request 210 to access one or more data blocks 154 of table 158. The data request 210 may originate from user 12 or from another entity authorized by the user. The data request 210 may also originate from one of the tablet servers 159 (for example, to rebalance data, compact data, recover data, etc.) or from a table manager running on 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 containing the wrapped resource key 172W and sends the resource key decryption request 212 to the remote entity 190 (e.g., CMEK). After receiving a resource key decryption request 212 (which includes the wrapped resource key 172W), the remote entity 190 decrypts the wrapped resource key 172W using the user key 192 associated with a specific 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 may include authentication information or other identification information with the resource key decryption request 212 to assist with 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. Note that while the remote entity 190 is decrypting the resource key 172W using the user key 192, the remote entity 190 and the key manager do not need to communicate "in the clear". In other words, the key manager 160 and the remote entity 190 may share a symmetric key and / or an asymmetric key (for example, a public-key cryptography) to ensure that all communications between the key manager 160 and the remote entity 190 are secure.

[0025] In some examples, after the key manager 160 receives the unwrapped resource key 172 from the remote entity 190, it assigns the decrypted resource key 172 to the access control key associated with the access control list (ACL) 234. Encrypt with 232 (i.e., the wrapped resource key 172W'). In some implementations, ACL234 corresponds to a list of tablet servers 150 that are permitted to access resource key 172. For example, key manager 160 generates ACL234 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 (via ACL234) (to decrypt DEK182) based on whether tablet server 150 controls any tablet 159 in table 158 associated with resource key 172.

[0026] In some examples, ACL234 is based on roles assigned to one or more tablet servers 150. For example, all tablet servers 150 run with a specific role, such as the production (i.e., "prod") role associated with one or more tables 158. Other tablet servers 150 (e.g., malicious tablet servers) cannot be assigned this same role. Therefore, ACL234 can ensure that the appropriate role is assigned to the requesting tablet server 150 based on the tables 158 and / or resource keys 172 that the tablet server 150 requests access to. This ensures that only authorized tablet servers 150 assigned to authorized roles can access the resource keys 172 unwrapped by the access control key 232. Access becomes possible. ACL234 may also implement other means of access control. For example, ACL234 includes an identifier for each authorized tablet server 150, and the tablet server 150 verifies its identity as needed (e.g., by digital signature).

[0027] In some examples, the key manager 160 wraps the resource key 172 with the access control key 232 and then distributes the wrapped resource key 172W' (i.e., the resource key 172 encrypted by the access control key 232) to all tablet servers 150 communicating with the key manager 160, regardless of whether each tablet server 150 is permitted 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 in Figure 2. Since each tablet server 150 must request access to the unwrapped resource key 172 protected by ACL 234, the key manager 160 can securely broadcast the wrapped resource key 172W' to the tablet servers 150. This eliminates the need for the key manager 160 to consider or be aware of what tablet servers 150 exist and which tablets 159 each tablet server 150 stores.

[0028] After receiving a wrapped resource key 172W' (as shown in Figure 2), one of the tablet servers 150 may generate a resource key unwrap request 242 that requests the key manager 160 to unwrap the wrapped resource key 172W'. Since the tablet server 150 can control the tablet 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 not authorized (for example, 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] As shown in Figure 2, 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 DEK182W. After unwrapping one or more wrapped DEK182W, the tablet server 150 uses the unwrapped DEK182 to unwrap the tablet 159 encrypted by the corresponding DEK182. In some implementations, the tablet server 150 caches the unwrapped DEK182 for a period of time (e.g., in volatile memory) to reduce the frequency with which the tablet server 150 sends resource key unwrap requests 242 to the key manager 160. For example, the tablet server caches the decrypted DEK182 for one hour. After this period expires, the tablet server 150 flushes the cached DEK182. The tablet server 150 can then send the resource key unwrap request 242 back to the key manager 160. That is, when the tablet server 150 caches DEK182, it can use the cached DEK182 instead of requesting the key manager to unwrap DEK182W again.

[0031] In some examples, the tablet server 150 uses the resource key 172 associated with table 158 to wrap all DEKs corresponding to tablets 159 in table 158, and therefore unwraps all DEKs 182W associated with the same table 158. Thus, with a single resource key unwrap request 210 to the key manager 160, the tablet server 150 can access all tablets 159 in the same table 158. In contrast to conventional techniques involving requests for each DEK 182, the key manager 160 significantly reduces the number of communications and time required to distribute the DEKs 182.

[0032] Referring here to Figure 3, schematic diagram 300 shows an exemplary key domain for system 100. Here, the 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 the remote entity 190 to perform an action (e.g., encryption and decryption) using user key 192, the remote entity 190 will not reveal user key 192 when performing the action.

[0033] The key manager 160 generates and maintains both the access control key 232 and the resource key 172. The access control key 232 and the user key 192 (under the control of the remote entity 190) together wrap / encrypt the resource key 172. The key manager 160 may have sole access to the access control key 232. In some implementations, the key manager 160 receives the unwrapped resource key 172 from the remote entity 190 and then wraps the resource key 172 with the access control key 232.

[0034] Resource key 172 wraps one or more DEKs 182 stored in one or more tablet servers 150. In some examples, key manager 160 distributes resource key 172W′ wrapped by the access control key to each tablet server 150. The tablet server 150 requests access from key manager 160 to the DEK 182 wrapped by resource key 172 (and, correspondingly, the tablet 159 encrypted by the DEK 182). After authenticating the tablet server 150 (for example, via ACL 234), 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 one or more DEKs 182 to access one or more of the tablets 159 stored in the tablet server 150.

[0035] Figure 4 provides a sequence diagram 400 for the steps to generate resource key 172. The Y-axis in sequence diagram 400 represents time increasing from top to bottom to show the steps in order. The steps begin at the peak 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 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 table 158. Next, - In step 412, the manager 160 generates a resource key 172. The resource key 172 is uniquely associated with the table 158 created in step 410. Next, in step 414, the key manager 160 sends the generated resource key 172 to the remote entity. The key manager includes the resource key 172 in a wrap request 174. In step 416, the remote entity 190 authorizes and / or authenticates the key manager 160, and then 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 in step 420 (for example, by caching the key 172W in volatile memory).

[0036] Referring here to Figure 5, sequence diagram 500 includes the step of unwrapping the wrapped DEK 182W with resource key 172. This step begins at the vertex of the Y-axis (i.e., the earliest point in time) and proceeds 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. 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, after receiving the resource key decryption request 212, the remote entity 190 unwraps (i.e., decrypts) the wrapped resource key 172W using the user key 192 associated with the user 12 that created and / or owns table 158.

[0037] In step 514, the remote entity 190 sends the unwrapped resource key 172 to the key manager 160. In step 516, the key manager 160 wraps the unwrapped resource key 172 with the access control key 232. 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. In step 520, one of the tablet servers 150 sends a resource key unwrap request 242 containing the wrapped resource key 172W′ to the key manager 160. The key manager 160 may determine (for example, based on ACL 234) whether the tablet server 150 is permitted to access the resource key 172. When the tablet server 150 is authorized, the key manager 160 unwraps the wrapped resource key 172W' using the access control key 232 in step 522, and sends the unwrapped resource key 172 to the tablet server 150 in step 524. In step 526, the tablet server 150 unwraps one or more wrapped DEK 182W with the resource key 172.

[0038] In some implementations, resource key 172 includes an expiration date. The expiration date indicates the period during which the key is valid. That is, once the key expires, the remote system 140 will no longer be able to use the expired key to perform any encryption or decryption operation, and will cease to use that key. The expiration date prevents the system from using an "old" key if communication is lost between devices (for example, between key manager 160 and remote entity 190, and / or between key manager 160 and tablet server 150).

[0039] In some cases, the key manager 160 rotates resource key 172 at a rotation rate that is less than the expiration date of resource key 172. That is, the key manager 160 generates new resource key 172 at a frequency based on the rotation rate. When a resource key 172 is generated and replaces an existing resource key 172, the key manager 160 can invalidate the previous resource key 172 (for example, by sending a key invalidation message to each tablet server 150), and then, as illustrated in Figures 1 to 5, wrap the resource key 172 with the user key 192 and the access control key 232, wrap the DEK 182, and distribute the wrapped DEK 182W and the wrapped resource key 172W' to the tablet servers 150. The expiration time of the resource key 172 may be greater than the rotation speed to provide a fallback when communication between entities fails. For example, if the rotation speed is 4 hours (i.e., a new resource key 172 is generated every 4 hours), the expiration time of the resource key 172 may be 6 hours. Next, if the tablet server 150 is no longer able to communicate with the key manager 160 and therefore does not receive a new resource key 172 at the appropriate time, the tablet server 150 will at least cease using the old resource key 172 when the key expires (i.e., after 6 hours in this example).

[0040] Optionally, the expiration date and rotation speed for resource key 172 can be configured by a specific user 12. For example, a user might specify the priority of the expiration date and rotation speed when creating table 158. In some implementations, the user may adjust the rotation speed and / or expiration date at any point after the creation of table 158.

[0041] Figure 6 is a flowchart illustrating an exemplary configuration of operation for method 600 for securely and efficiently distributing encryption keys. Method 600 includes, in step 602, receiving a table 158 associated with a specific user 12 in data processing hardware 144. The table 158 contains a plurality of data blocks 154. Method 600 includes, in step 604, dividing the table 158 into a plurality of tablets 159 by the data processing hardware 144. Each tablet 159 contains a corresponding portion of the plurality of data blocks 154 of the table 158. Method 600 includes, in step 606, generating a resource key 172 uniquely associated with the table 158 by the data processing hardware 144.

[0042] For each tablet 159 among the multiple tablets 159, Method 600 includes, in step 608, generating a unique data encryption key 182 for the corresponding tablet 159. In step 610, Method 600 includes, by using data processing hardware 144, encrypting the corresponding tablet 159 with the unique data encryption key 182. In step 612, Method 600 includes, by using data processing hardware 144, encrypting each data encryption key 182 with a resource key 172. In step 614, Method 600 also includes, by using data processing hardware 144, distributing control of each encrypted tablet 159 and each corresponding encrypted data encryption key 182W to the multiple tablet servers 150. Each tablet server 150 in the multiple tablet servers 150 is independent of each other tablet server 150 in the multiple tablet servers 150. Each tablet server 150 controls one or more encrypted tablets 159 from table 158. In step 616, method 600 includes the step of having the data processing hardware 144 transmit the resource key 172 to the remote entity 190. Upon receiving the resource key 172, the remote entity 190 encrypts the resource key 172 with a user key 192 associated with a specific user 12 and kept secret from the data processing hardware 144. The remote entity also transmits the encrypted resource key 172W to the data processing hardware 144.

[0043] Figure 7 is an example that may be used to implement the systems and methods described herein. This is a schematic diagram of 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 herein, their connections and relationships, and their functions are illustrative and are not intended to limit the examples of the invention described and / or claimed herein.

[0044] The computing device 700 includes a processor 710, memory 720, storage device 730, a high-speed interface / controller 740 connected to memory 720 and high-speed expansion port 750, and a low-speed bus 770 and a low-speed interface / controller 760 connected to storage device 730. Each of the components 710, 720, 730, 740, 750, and 760 is interconnected using various buses and may be implemented on a common motherboard or in other manner as needed. The processor 710 can process instructions to be executed within the computing device 700, including instructions stored in memory 720 or storage device 730 for displaying graphical information about a graphical user interface (GUI) on an external input / output device such as a display 780 coupled to the high-speed interface 740. In other implementations, multiple processors and / or multiple buses may be used with multiple memories and multiple types of memory as appropriate. Furthermore, multiple computing devices 700 may be connected, each providing a portion of the required operation (for example, as a server bank, as a group of blade servers, or as a multiprocessor system).

[0045] Memory 720 stores information non-temporarily within the computing device 700. Memory 720 may be a computer-readable medium, a volatile memory unit, or a non-volatile memory unit. Non-temporarily stored 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), and static random access memory (SRAM). ), phase change memory (PCM), and disk or tape These are included, but not limited to.

[0046] The storage device 730 can provide large-capacity 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 may be an array of devices including a floppy disk device, a hard disk device, an optical disk device, or a tape device, flash memory or other similar solid-state memory device, or a device in a storage area network or other configuration. In additional implementations, the computer program product is tangibly embodied in the information carrier. The computer program product includes instructions that, when executed, perform one or more methods such as those described above. The information carrier is a computer-readable medium such as memory 720, the storage device 730, or memory on the processor 710. It is a medium or machine-readable medium.

[0047] The high-speed controller 740 manages bandwidth-intensive operations for the computing device 700, while the low-speed controller 760 manages lower bandwidth-intensive operations. Such duty assignments are illustrative only. In some implementations, the high-speed controller 740 is coupled to memory 720, a display 780 (e.g., via a graphics processor or accelerator), and a high-speed expansion port 750 that can 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) are also available. The low-speed expansion port 790, which may include (Sanet®), can be coupled to one or more input / output devices such as a keyboard, pointing device, scanner, or networking device such as a switch or router, for example, via a network adapter.

[0048] The computing device 700 can be implemented in several different forms, as shown in the figure. For example, it may be implemented 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 technologies described herein include digital electronic and / or optical circuits, integrated circuits, application-specific integrated circuits (ASICs), computer hardware, firmware, and software. This can be implemented in a way, and / or in combination thereof. These various implementations may include implementations in one or more computer programs that are executable and / or interpretable on a programmable system which includes at least one programmable processor that may be dedicated or general-purpose, coupled to send and receive data and instructions to and from a storage system, at least one input device, and at least one output device.

[0050] A software application (i.e., a software resource) can refer to computer software that causes a computing device to perform a task. In some examples, a software application may also be called an “application,” “app,” or “program.” Exemplary applications include, but are not limited to, system diagnostic applications, system administration applications, system maintenance applications, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and game applications.

[0051] These computer programs (also known as programs, software, software applications, or code) include machine instructions for programmable processors and may be implemented in high-level procedural and / or object-oriented programming languages, as well as in assembly / machine languages. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, non-temporary computer-readable medium, apparatus, and / or device (e.g., magnetic disks, optical disks, memory, programmable logic devices (PLDs)) used to provide machine instructions and / or data to a programmable processor, including machine-readable medium that receives machine instructions as machine-readable signals. The term “machine-readable signals” refers to machine instructions and / or data This refers to any signal used to provide data to a programmable processor.

[0052] The processes and logic flows described herein can be executed by one or more programmable processors, also referred to as data processing hardware, which can perform functions by executing one or more computer programs to perform operations on input data and generate outputs. The processes and logic flows can also be executed by dedicated logic circuits, such as field programmable gate arrays (FPGs). A) or execution can be performed by an ASIC (Application-Specific Integrated Circuit). Processors suitable for executing computer programs include, for example, both general-purpose microprocessors and dedicated microprocessors, as well as any one or more processors in any type of digital computer. Generally, a processor will receive instructions and data from read-only memory or random-access memory, or both. 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 one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or will be operablely coupled to them to receive or transfer or receive and transfer data. However, a computer is not required to 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, for example, semiconductor memory devices such as 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 memory may be complemented by or integrated into dedicated logic circuits.

[0053] To enable interaction with the user, one or more aspects of this disclosure may be implemented on a computer having a display device for displaying information to the user, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touchscreen, and optionally a keyboard and pointing device, such as a mouse or trackball, that enables user input to the computer. Other types of devices may also be used to provide interaction with the user. For example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback. Input from the user may be received in any form, including acoustic input, voice input, 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 that 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 this disclosure. Therefore, other implementations are within the scope of the attached claims.

Claims

1. A method implemented by a computer, which is performed by data processing hardware, wherein the computer-implemented method causes the data processing hardware to perform the following operations, and the following operations are: The process involves receiving a resource key request from the tablet server that requests the decryption of a unique resource key encrypted with an access control key associated with an access control list (ACL), and An operation to determine whether the tablet server is permitted to access the unique resource key based on the access control list, Based on the determination that the tablet server is permitted to access the unique resource key, the operation of decrypting the unique resource key encrypted with the access control key, The operation includes sending the decrypted unique resource key to the tablet server, and when the decrypted unique resource key is received by the tablet server, the tablet server will receive the decrypted unique resource key. Using the decrypted unique resource key, decrypt the unique data encryption key corresponding to the encrypted tablet associated with the tablet server, The system is configured to decrypt the encrypted tablet using the decrypted unique data encryption key. The aforementioned actions are further described below. The operation includes receiving a table associated with a specific user, the table containing multiple data blocks, and the following operations further include: This includes the operation of dividing the table into multiple tablets, each tablet containing a corresponding portion of the multiple data blocks of the table. The following operations described above are further described below. This includes the operation of generating the unique resource key that is uniquely associated with the table, for each of the multiple tablets, The operation of generating a unique data encryption key for the corresponding tablet, A method implemented by a computer, which includes the operation of encrypting the corresponding tablet with the unique data encryption key.

2. The method according to claim 1, wherein the operations described above further include distributing control of each encrypted tablet and each corresponding encrypted data encryption key to a plurality of tablet servers, and each tablet server in the plurality of tablet servers controls access to one or more encrypted tablets from the table, the operations described above are further independent of each other tablet server in the plurality of tablet servers.

3. The following operations further include sending the unique resource key to the remote entity, and upon receipt of the unique resource key by the remote entity, the remote entity shall The unique resource key is encrypted with a user key that is associated with the specific user and is kept secret from the data processing hardware, The method according to claim 2, wherein the encrypted unique resource key is transmitted to the data processing hardware.

4. When the decrypted unique data encryption key is received by the tablet server, the tablet server will receive the key. Using the decrypted unique data encryption key, decrypt the data encryption key corresponding to the tablet controlled by the tablet server, The method according to any one of claims 1 to 3, wherein the tablet is decrypted using the decrypted data encryption key.

5. The method according to any one of claims 1 to 4, wherein the unique resource key includes an expiration date.

6. The method according to claim 5, wherein the operation further includes rotating the unique resource key at a rotation speed less than the expiration date of the unique resource key.

7. The method according to claim 6, wherein the expiration date and the rotation speed are each configurable by the user.

8. The method according to any one of claims 1 to 7, wherein the ACL includes a list of tablet servers that are permitted to access the unique resource key.

9. A system, Data processing hardware and The memory hardware includes a memory hardware that communicates with the data processing hardware, and the memory hardware, when executed on the data processing hardware, stores instructions that cause the data processing hardware to perform the following operations: The tablet server receives a resource key request requesting the decryption of a unique resource key encrypted with an access control key associated with an access control list (ACL), Based on the access control list, it is determined that the tablet server is permitted to access the unique resource key, Based on the determination that the tablet server is permitted to access the unique resource key, the unique resource key encrypted with the access control key is decrypted, The process includes transmitting the decrypted unique resource key to the tablet server, and upon receiving the decrypted unique resource key, the tablet server will receive the decrypted unique resource key. Using the decrypted unique resource key, decrypt the unique data encryption key corresponding to the encrypted tablet associated with the tablet server, The system is configured to decrypt the encrypted tablet using the decrypted unique data encryption key. The aforementioned instruction further causes the data processing hardware to do the following: This includes receiving a table associated with a specific user, the table containing multiple data blocks, This includes dividing the table into multiple tablets, each tablet containing a corresponding portion of the multiple data blocks of the table. The aforementioned instruction further causes the data processing hardware to do the following: This includes generating the unique resource key that is uniquely associated with the table, and for each of the plurality of tablets, To generate a unique data encryption key for the corresponding tablet, A system comprising encrypting the corresponding tablet with the unique data encryption key.

10. The system according to claim 9, wherein the instruction further includes distributing control of each encrypted tablet and each corresponding encrypted data encryption key to a plurality of tablet servers, each of the plurality of tablet servers being independent of each other in the plurality of tablet servers, and the instruction further causes the data processing hardware to control access to one or more encrypted tablets from the table.

11. The instruction further includes the operation of sending the unique resource key to the data processing hardware to the remote entity, the unique resource key being, upon receipt by the remote entity, to the remote entity The unique resource key is encrypted with a user key that is associated with the specific user and is kept secret from the data processing hardware, The system according to claim 10, wherein the encrypted unique resource key is transmitted to the data processing hardware.

12. When the decrypted unique data encryption key is received by the tablet server, the tablet server will receive the key. Using the decrypted unique data encryption key, decrypt the data encryption key corresponding to the tablet controlled by the tablet server, The system according to any one of claims 9 to 11, wherein the tablet is decrypted using the decrypted data encryption key.

13. The system according to any one of claims 9 to 12, wherein the unique resource key includes an expiration date.

14. The system according to claim 13, wherein the instruction further causes the data processing hardware to rotate the unique resource key at a rotation speed less than the expiration date of the unique resource key.

15. The system according to claim 14, wherein the expiration date and the rotation speed are each configurable by the user.

16. The system according to any one of claims 9 to 15, wherein the ACL includes a list of tablet servers authorized to access the unique resource key.

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