Distribute encrypted data objects

By embedding encrypted sender key indexes and surrounding key indexes into data objects, and using KMS to control access permissions, the access control and security issues of KMS when sharing data among multiple parties are solved, enabling flexible data sharing and secure management.

CN115804060BActive Publication Date: 2026-03-13INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2021-06-23
Publication Date
2026-03-13

Smart Images

  • Figure CN115804060B_ABST
    Figure CN115804060B_ABST
Patent Text Reader

Abstract

The process includes encrypting data at least partially based on the session key to generate encrypted data. It also involves encrypting the session key at least partially based on the sender's key to generate an encrypted session key. A request for an encrypted sender's key index is sent to the KMS, the request including the index of the sender's key and the index of each of one or more additional keys. The encrypted sender's key index is received from the KMS. An object is generated comprising the encrypted data, the encrypted session key, the index of each of one or more additional keys, and the encrypted sender's key index. Access to the data via the object is controlled at least partially based on whether the recipient has permission to access the sender's key and one or more additional keys.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This invention relates generally to data security, and more specifically, to the distribution of encrypted data objects, wherein the encryption key used for encryption is included as metadata of the data object. Background Technology

[0002] Data protection and security is a multi-billion dollar industry each year, yet data breaches still occur. This is due to many reasons, including the inherent difficulty of protecting data, competing protection standards, many different hardware and software solutions, and the wide range of skill levels among individuals or organizations implementing protection.

[0003] With the ever-increasing volume of data stored online, data security on network and cloud solutions continues to be a growing concern. One way to protect data is by using cryptography. Cryptography uses encryption keys and encryption algorithms to encrypt and decrypt data while transmitting it between two or more systems. Data protection on network and cloud solutions can take two basic forms: dynamic protection and static protection. Dynamic protection protects data on the network, while static protection protects data in storage.

[0004] Currently, encryption keys, such as symmetric keys, are primarily exchanged by encrypting the symmetric key with an asymmetric key before sending it to the other side, by encrypting the symmetric key with a second symmetric key before sending it to the other side, or by delivering the symmetric key using paper. Each of these common methods has various problems. One of the most challenging problems is the need to establish a direct relationship between the two parties to exchange symmetric keys. Establishing and managing this direct relationship is challenging, and the challenge is amplified when keys expire quickly and / or when many users are using the system. Other problems include slow key delivery and / or security vulnerabilities in the exchanged keys.

[0005] Even if key exchange can be implemented well, the keys must be securely managed and stored, allowing for tracking of which keys are used for which data. Typically, a given key can be selected to protect data based on business logic. Both the sender and receiver must understand the business logic to successfully determine which specific key should be used for a given piece of data. For this, the two parties must have a predefined relationship to exchange the necessary information about the key selection method and the business logic.

[0006] Different approaches to key management have been used in an attempt to provide secure keys and avoid the need for direct relationships between the parties exchanging encrypted data. Key management can be performed by a Key Management System (KMS), which generates, distributes, and more generally manages cryptographic keys used by clients (devices, applications, etc.). A KMS can handle several aspects of security, ranging from secure key generation to secure key processing and storage on client systems. A KMS typically includes backend functions for key generation, distribution, and replacement. It can also integrate specific client functions for injecting, storing, and managing keys on client devices.

[0007] Modern KMS systems have drawbacks. For example, they do not support the ability for multiple interested parties to independently control access to encrypted data objects after their creation, without needing to share multiple keys with the object's recipient. Furthermore, current methods require the recipient of the encrypted data object to send an index or other identifier of the encryption key stored in the KMS in order to obtain and send the encryption key to the recipient. This can lead to security vulnerabilities if multiple data objects are encrypted with the same key and the recipient's access to the key has been revoked. Therefore, while KMS offers advantages in encryption key management, security and access control can be improved. Summary of the Invention

[0008] One or more embodiments of the present invention relate to distributing encrypted data objects having encrypted information as metadata. A non-limiting example computer-implemented method includes encrypting data at least partially based on a session key to generate encrypted data. The session key is encrypted at least partially based on a sender key previously obtained from a key management system (KMS) to generate an encrypted session key. A request for an encrypted sender key index is sent to the KMS, the request including an index of the sender key and an index of each of one or more additional keys. An encrypted sender key index generated by the KMS at least partially based on the sender key and one or more additional keys is received. An object is generated including the encrypted data, the encrypted session key, an index of each of one or more additional keys, and the encrypted sender key index. Access to the data via the object is controlled at least partially based on whether the recipient has permission to access the sender key and one or more additional keys.

[0009] One or more embodiments of the present invention relate to a system for distributing encrypted data objects having encrypted information as metadata. A non-limiting example of the system includes a memory having computer-readable instructions and one or more processors for executing the computer-readable instructions. The computer-readable instructions can implement the methods described above.

[0010] One or more embodiments of the present invention relate to a computer program product for distributing encrypted data objects having encrypted information as metadata. The computer program product includes a computer-readable storage medium having program instructions embodied therein. The program instructions are executable by a processor to cause the processor to perform the methods described above.

[0011] Therefore, it advantageously facilitates data sharing among multiple parties while protecting encryption keys and encryption key indexes from being distributed to all parties. Furthermore, the sender of the data and other interested parties can render the encrypted data unusable for controlling access by invalidating their keys.

[0012] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, access to data via an object is controlled at least in part based on the validity of the sender key and one or more additional keys. Therefore, advantageously, access to data can be revoked by the sender invalidating the sender key or by the authorizing party invalidating one of the additional keys.

[0013] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, the receiver is prevented from accessing data via an object by sending a request to KMS to invalidate the sender's key. Therefore, advantageously, the management of the sender's key can be centralized.

[0014] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, the receiver's access to data via the object is prevented by sending a request to the KMS to invalidate at least one of one or more additional keys. Therefore, advantageously, the management of the sender's key and access to the data can be centralized.

[0015] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, access to data via an object is modified in response to the KMS adding or removing a requester from a list of users authorized to access the sender's key. Therefore, advantageously, access to data can be managed based on whether a user is in a user group already granted access to the sender's key.

[0016] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, access to data via an object is modified in response to the KMS adding or removing a recipient from a list of users authorized to access one or more additional keys. Thus, advantageously, access to data can be managed based on whether a user is in a user group already granted access to the additional keys.

[0017] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, the object is sent to the receiver. Therefore, advantageously, data and access management are distributed.

[0018] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, the object is sent to the recipient via a network. Therefore, advantageously, data and access management are distributed.

[0019] One or more embodiments of the present invention relate to a computer-implemented method for distributing encrypted data objects having encrypted information as metadata. A non-limiting example of the computer-implemented method includes receiving an object comprising encrypted data, an encrypted session key, an index of each of one or more additional keys, and an encrypted sender key index. A request for a sender key corresponding to the encrypted sender key index is sent to a KMS. The request originates from a requesting party and includes the encrypted sender key index and the index of each of one or more additional keys. In response to receiving the sender key from the KMS, the encrypted session key is decrypted at least partially based on the sender key to generate a session key, and the encrypted data is decrypted at least partially based on the session key to generate unencrypted data. In response to the KMS determining that the requesting party has access to the sender key and each of one or more additional keys, the KMS sends the sender key to the requesting party.

[0020] One or more embodiments of the present invention relate to a system for distributing encrypted data objects having encrypted information as metadata. A non-limiting example of the system includes a memory having computer-readable instructions and one or more processors for executing the computer-readable instructions. The computer-readable instructions can implement the methods described above.

[0021] One or more embodiments of the present invention relate to a computer program product for distributing encrypted data objects having encrypted information as metadata. The computer program product includes a computer-readable storage medium having program instructions embodied therein. The program instructions are executable by a processor to cause the processor to perform the methods described above.

[0022] Therefore, it advantageously facilitates data sharing among multiple parties while protecting encryption keys and encryption key indexes from being distributed to all parties. Furthermore, the sender of the data and other interested parties can render the encrypted data unusable for controlling access by invalidating their keys.

[0023] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, an error message is received from the KMS in response to the KMS determining that the requesting party is not authorized to access the sender's key. Thus, advantageously, the requesting party is notified when access to the object is denied.

[0024] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, when the sender's key is invalid, it is determined that the requesting party has no right to access the sender's key. Therefore, advantageously, access to data can be revoked by the sender invalidating the sender's key.

[0025] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, an error message is received from the KMS in response to the KMS determining that the requesting party is not authorized to access at least one or more additional keys. Thus, advantageously, the requesting party is notified when access to the object is denied.

[0026] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, when at least one of the one or more additional keys is invalid, it is determined that the requesting party has no right to access all keys in the one or more keys. Therefore, advantageously, access to data can be revoked by invalidating one of the additional keys through authorized parity checks.

[0027] One or more embodiments of the present invention relate to a computer-implemented method for distributing encrypted data objects having encrypted information as metadata. A non-limiting example of the computer-implemented method includes receiving a request for a sender key, the request being from a requesting party, and the request including an encrypted sender key index and an index of each of one or more additional keys. It is determined whether the requesting party has the right to access one or more additional keys identified by the index of each of the one or more additional keys. In response to determining that the requesting party has the right to access one or more additional keys, the encrypted sender key index is decrypted to generate a sender key index, and the sender key is located at least in part based on the sender key index. Furthermore, it is determined whether the requesting party has the right to access the sender key. Based on the determination that the requesting party has the right to access the sender key, the sender key is sent to the requesting party.

[0028] One or more embodiments of the present invention relate to a system for distributing encrypted data objects having encrypted information as metadata. A non-limiting example of the system includes a memory having computer-readable instructions and one or more processors for executing the computer-readable instructions. The computer-readable instructions can implement the methods described above.

[0029] One or more embodiments of the present invention relate to a computer program product for distributing encrypted data objects having encrypted information as metadata. The computer program product includes a computer-readable storage medium having program instructions embodied therein. The program instructions are executable by a processor to cause the processor to perform the methods described above.

[0030] Therefore, it advantageously facilitates data sharing among multiple parties while protecting encryption keys and encryption key indexes from being distributed to all parties. Furthermore, the sender of the data and other interested parties can render the encrypted data unusable for controlling access to it by invalidating their keys.

[0031] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, an encrypted sender key index is generated at least in part based on the sender key index and the index of each of one or more additional keys. Therefore, advantageously, access to the data is protected by multiple keys, each of which can be controlled by a different authorized user.

[0032] In addition to, or as an alternative to, the foregoing, in one or more embodiments of the invention, generating an encrypted sender key index includes locating one or more additional keys at least partially based on the index of each of the one or more additional keys, and combining them into a combined additional key. The sender key index is encrypted at least partially based on the combined additional key. Thus, advantageously, access to data is protected by multiple keys, each of which can be controlled by a different authorized user.

[0033] Additional technical features and benefits are achieved through the technology of this invention. Embodiments and aspects of the invention are described in detail herein and are considered part of the claimed subject matter. For a better understanding, refer to the detailed description and accompanying drawings. Attached Figure Description

[0034] The details of the proprietary rights described herein are specifically pointed out and clearly claimed in the claims at the end of the specification. The foregoing and other features and advantages of embodiments of the invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings, in which:

[0035] Figure 1 A block diagram depicts an environment for distributing encrypted data objects having encrypted information as metadata, according to one or more embodiments of the present invention;

[0036] Figure 2 A block diagram depicting an encryption scheme used in one or more embodiments of the present invention;

[0037] Figure 3A flowchart is depicted for a method of creating an encrypted data object according to one or more embodiments of the present invention;

[0038] Figure 4 An encrypted data object is depicted according to one or more embodiments of the present invention;

[0039] Figure 5 A flowchart is depicted for a method for generating an encrypted sender key index according to one or more embodiments of the present invention;

[0040] Figure 6 A flowchart is depicted illustrating a method for decrypting data contained in an encrypted data object according to one or more embodiments of the present invention;

[0041] Figure 7 A flowchart depicting a method for generating a sender key according to one or more embodiments of the present invention;

[0042] Figure 8 A cloud computing environment according to one or more embodiments of the present invention is described;

[0043] Figure 9 An abstract model layer according to one or more embodiments of the present invention is described; and

[0044] Figure 10 A system for encrypting objects according to one or more embodiments of the present invention is described, such that the creator of the encrypted object can be identified.

[0045] The figures depicted herein are illustrative. Many variations of the figures or operations described herein exist without departing from the scope of the invention. For example, actions may be performed in a different order, or actions may be added, deleted, or modified. Furthermore, the term "coupling" and its variations describe a communication path between two elements and do not imply a direct connection between the elements without any intermediate elements / connections between them. All such variations are considered part of the specification. Detailed Implementation

[0046] One or more embodiments of the present invention provide encrypted data objects having an encryption key for encrypting the data object, the encryption key being available as metadata within the encrypted data object. According to one or more embodiments of the present invention, a party, i.e., a sender, encrypts data using a sender's key and one or more additional encryption keys belonging to one or more interested parties. This allows the sender and any other interested parties to invalidate their keys and render the encrypted data unusable.

[0047] One or more embodiments of the present invention facilitate data sharing among multiple parties (e.g., sender and receiver) while protecting encryption keys from being distributed to all parties. By using a set of keys to protect sender key information, one or more embodiments provide a facility for multiple parties to control consent to data by allowing or disallowing access to a sender key index. Furthermore, the sender may have the final say on allowing or disallowing access because the sender controls its specific sender key.

[0048] One or more embodiments of the present invention package information about the sender key and one or more additional encryption keys together with the encrypted data into an encrypted data object. According to one or more embodiments of the present invention, the protected data, referred to herein as an "encrypted data object," includes one or more peripheral key indices, an encrypted sender key index, an encrypted session key, and encrypted data.

[0049] As used herein, the term "session key" refers to an encryption key used by an encryption algorithm to encrypt data encrypted by a sender, such as a sending processor. According to one or more embodiments of the invention, the sender can determine the optimal way to generate the session key. The session key can be obtained from a key management system (KMS), or it can be dynamically generated by the sender at certain intervals (e.g., per object, per day, per 10,000 objects, etc.). According to one or more embodiments of the invention, the session key (encapsulated along with the object) is generated by the KMS, rather than stored by the KMS.

[0050] As used here, the term "encrypted session key" refers to a session key that has been encrypted with the sender's key.

[0051] As used herein, the term "sender key" refers to the encryption key used by an encryption algorithm to encrypt the session key. The sender key is the encryption key used by the sender for data transmission. According to one or more embodiments of the invention, access to the sender key is controlled by the KMS. The KMS stores sender keys accessible via a sender key index. The sender key index is an identifier (e.g., a tag, handle) used by the KMS to locate the corresponding sender key.

[0052] As used herein, the term "peripheral key" is a key that defines a group of one or more parties (e.g., a recipient) entitled to access data. Examples of such groups include, but are not limited to, users in the United States or users in the Human Resources Department, or identifiers of specific users. A periphery key provides a user with a way to access data of interest. Access to the periphery can be granted, modified, and / or revoked by a party other than the sender, thereby allowing another party to control access to the data. According to one or more embodiments of the invention, access to the periphery key is controlled by a KMS. The KMS stores one or more periphery keys. A periphery key index is an identifier (e.g., a tag, handle) used by the KMS to locate the corresponding periphery key.

[0053] As used herein, the term "composite perimeter key" refers to a composite encryption key derived from one or more perimeter keys. According to one or more embodiments of the invention, a composite perimeter key is derived by performing an XOR operation on the values ​​of one or more perimeter keys. A composite perimeter key provides the ability to create a composite key using multiple key parts. A composite key is created when an encapsulated or encrypted data object is created, and then recreated when the encrypted data object is opened or unencrypted. If any key part used to create the composite perimeter key is unavailable when opened, the encrypted data will be unavailable from that point onward, as it will be impossible to decrypt the encrypted data.

[0054] As used herein, the term "encrypted sender key index" refers to the index of the sender key after it has been encrypted in KMS using a combination of peripheral key indexes.

[0055] According to one or more embodiments of the present invention, when an encrypted data object is created, the sender uses its sender key to encrypt the session key. As previously described, the sender key is controlled by the KMS, and the sender requests the KMS to encrypt its sender key index using a combined perimeter key. The combined perimeter key includes at least one key (e.g., an organization's key); however, it may also include more keys (e.g., a receiver key, an additional key with other owners, random key components, etc.).

[0056] According to one or more embodiments of the present invention, when a recipient of an encrypted data object (“the recipient”) wants to open the encrypted data object, it will need to send a peripheral key index and an encrypted sender key index to the KMS, and the KMS will provide the recipient with a sender key that can be used to decrypt the session key. According to one or more embodiments, upon receiving the peripheral key index and the encrypted sender key index, the KMS will first recombine the combined peripheral key, and if any component of the combined peripheral key is unavailable to the requesting party, the operation will fail and the recipient will be unable to decrypt the encrypted data in the encrypted data object.

[0057] If all components of the combined peripheral key are available, the KMS will use them to decrypt the sender key index. The KMS then uses the sender key index to locate the sender key within the KMS. If the sender key is not available to the requesting party, the operation will fail, and the receiver will not be able to decrypt the encrypted data. If all key materials are available and accessible to the requesting party, the KMS returns the sender key to the requesting receiver of the encrypted data object. According to one or more embodiments of the invention, the key is accessible to the requesting party when granted permission to access it.

[0058] The above-described aspects of one or more embodiments of the present invention address one or more drawbacks of the prior art by facilitating data sharing while protecting encryption keys and encryption key indexes from being distributed to all parties. Furthermore, using this set of peripheral keys to protect sender key information allows multiple parties to control access to data by allowing or disallowing access to the sender key index. The sender has ultimate say in the requester's ability to access data because the sender controls access to its corresponding sender key.

[0059] Furthermore, one or more embodiments of the present invention provide the receiver with a plaintext (unencrypted) sender key; however, the receiver cannot bind the sender key back to its corresponding sender key index. Access to the data can be revoked by the sender who invalidates its key (sender key) and / or by the sender who invalidates any of the keys that are part of the peripheral key, or by other interested parties with authority.

[0060] Furthermore, one or more embodiments of the present invention send a peripheral key index to the recipient instead of the peripheral key, thereby reducing the risk of the peripheral key being compromised.

[0061] Furthermore, one or more embodiments of the present invention provide scaling of key usage, enabling the same session key to be used for large amounts of data that are entirely local to the sending system. The final encapsulation operation for the session key can then be performed by KMS, which is a small operation (e.g., using relatively few computational resources).

[0062] One or more embodiments of the present invention can utilize a perimeter key to define a group of one or more users authorized to access the corresponding perimeter key, and the intersection of users in the group corresponding to the perimeter key used to encrypt the data object is granted access to the data object (provided the sender has not revoked the sender's key). An authorized administrator can update the users in each group.

[0063] In one example, the data could be human resources data, including data about employees in the United States (US). In this example, a first perimeter key might require the user to be located in the United States, and a second perimeter key might require the user to be in the human resources department. These determinations about the user can be made based on metadata associated with a computer user identifier. For example, when a user identifier is set for a user, the metadata might specify the user's geographic location and work department. This metadata can be updated based on changes in the user's status. If the recipient of the encrypted data object has access to the first and second perimeter keys (as well as the sender's key), the recipient is located in the United States and is in the human resources department, and therefore has the right to access or decrypt the data in the encrypted data object. If the recipient does not have access to any of the first perimeter key, the second perimeter key, or the sender's key, the recipient cannot access the data in the encrypted data object. This example is intended to illustrate aspects of one or more embodiments of the invention and is not intended to limit the embodiments to human resources data, as embodiments of the invention can operate on any type of data.

[0064] To control access to data within an encrypted data object, the data owner (e.g., the sender) or other authorized party can instruct the KMS to revoke a specific user's access to a perimeter key to prevent all future access to the data within the encrypted data object. The data owner or other authorized party can also instruct the KMS to invalidate a specific perimeter key. Furthermore, to prevent all future access to data within an encrypted data object, the data owner (e.g., the data sender) or other authorized party can also instruct the KMS to invalidate the sender's key.

[0065] Turn now Figure 1 According to one or more embodiments of the present invention, a block diagram 100 is generally shown for an environment for distributing encrypted data objects having encrypted information as metadata. Figure 1 It includes a sender system 104, a receiver system 106, and a key management system (KMS) 110. Figure 1It also includes data 108a and data 108b, collectively referred to herein as data 108, as well as encrypted data object 102, sender key and index 112, and peripheral key and index 114. According to one or more embodiments of the present invention, data 108a and data 108b have the same value, data 108a is located on or accessible by the sender system 104, and data 108b is located on or accessible by the receiver system 106.

[0066] The sending system 104 can be, for example, located at Figure 10 On the processor 1005 of the computer 1001 and / or located in Figure 8 The sending system 104 is implemented by software instructions and / or computer hardware executed on the processor of the cloud computing node 10, as further described herein. According to one or more embodiments of the invention, the sending system 104 executes, for example, as referenced below... Figure 3 The sender's processing is described. For example... Figure 1 As shown, the sending system 104 securely receives data 108a to be sent to the receiving system 106. Data 108a can be any digital format known in the art. The sending system 104 creates an encrypted data object 102, which includes the encrypted data 108a and metadata used by the receiving system 106 to decrypt the encrypted data object 102.

[0067] According to one or more embodiments of the present invention, the sender system 104 stores or has access to the data 108a to be sent securely, encrypted data, encrypted sender key index of encrypted data object 102, session key, sender key index, sender key, and one or more peripheral key indices.

[0068] like Figure 1 As shown in the embodiment, the sending system 104 interacts with KMS 110 to generate an encrypted data object 102. Figure 1 As shown, KMS 110 controls access to the sender key and index 112, which includes the sender key and its corresponding index or identifier. KMS 110 uses the index of the sender key to access the corresponding sender key. Figure 1 As shown, KMS 110 also controls access to peripheral keys and index 114, which includes peripheral keys and their corresponding indexes or identifiers. KMS 110 uses the index of a peripheral key to access the corresponding peripheral key.

[0069] The Key Management System (KMS) 110 can be, for example, located at Figure 10 On the processor 1005 of the computer 1001 and / or located in Figure 8The KMS 110 is implemented by software instructions and / or computer hardware executed on the processor of the cloud computing node 10, as further described herein. According to one or more embodiments of the invention, the KMS 110 executes the following reference... Figure 5 and Figure 7 The described key management process. For example... Figure 1 As shown, KMS 110 interacts with sender system 104, for example, by receiving a sender key index and one or more peripheral key indices from sender system 104, and in response, returning an encrypted sender key index to the requesting sender system 104. KMS 110 can also interact with receiver system 106, for example, by receiving an encrypted sender key index and one or more peripheral key indices from receiver system 106, and in response, returning a sender key to the requesting receiver system 106. Furthermore, KMS can receive commands from the owner of data 108 or from another authorized party to update the contents of sender key and index 112 and peripheral key and index 114.

[0070] The receiver system 106 can be, for example, located at Figure 10 On the processor 1005 of the computer 1001 and / or located in Figure 8 The receiving system 106 implements receiving processes through software instructions and / or computer hardware executed on the processor of the cloud computing node 10, as further described herein. According to one or more embodiments of the invention, the receiving system 106 performs receiving processing, for example, as referenced below. Figure 6 As described. Figure 1 As shown, the receiving system 106 receives an encrypted data object 102 from the sending system 104. If the receiving system 106 has access to the data, it decrypts the encrypted data object 102 to generate unencrypted data 108b.

[0071] Figure 1 The data 108 shown, the encrypted data object 102, the sender key and index 112, and the peripheral key and index 114 can be stored in any manner known in the art (e.g., database, index file, etc.) and in one or more locations on one or more storage devices.

[0072] Although Figure 1 An embodiment including a single KMS 110, a single sender system 104, and a single receiver system 106 is shown, but the invention is not limited to this. Figure 1 The illustrated embodiments, for example, one or more other embodiments may have multiple sender systems 104, multiple receiver systems 106 and / or multiple KMS 110.

[0073] Figure 1All or a subset of the components shown can communicate with each other via one or more networks, which are formed by one or more processors communicatively coupled or connected using wired or wireless components. According to one or more embodiments of the invention, Figure 1 All or a subset of the components shown are coupled via cloud networks and / or the Internet.

[0074] Regarding Figure 1 The embodiments described in block diagram 100 can be implemented with any suitable logic, wherein the logic mentioned herein may include any suitable hardware (e.g., processor, embedded controller, or application-specific integrated circuit, etc.), software (e.g., application, etc.), firmware, or any suitable combination of hardware, software, and firmware in various embodiments.

[0075] Now go to Figure 2 A block diagram 200 generally illustrates the encryption scheme utilized in one or more embodiments of the present invention. For example... Figure 2 As shown, in box 202, such as Figure 1 Data 108a is encrypted using a session key, and the session key is encrypted using the sender's key. For example... Figure 2 As shown in box 204, the perimeter keys are combined to generate a combined perimeter key. For example, the perimeter keys can be combined by XORing the values ​​of the perimeter keys or in some other repeatable manner, such as, but not limited to, using a key derivation function. Figure 2 As shown in box 206, the combined peripheral key is used to encrypt the index of the sender key, which is used to encrypt the session key, thus resulting in the sender key being encrypted using the combined peripheral key. Figure 2 The illustrated encryption scheme provides not only the sender with the ability, but also multiple other interested parties or organizations with the ability to control open access to the data via KMS.

[0076] Now go to Figure 3 According to one or more embodiments of the present invention, a flowchart of a method 300 for creating encrypted data objects is generally shown. Figure 3 All or part of the process shown can be, for example, by in Figure 1 The sending system 104 executes software instructions and / or computer hardware to perform the operation, as shown in box 302, such as... Figure 1Data 108a is received by the sending system and encrypted by the sending system using the session key. In box 304, the session key is encrypted using the sending key. The encryption at boxes 302 and 304 can be performed using any encryption algorithm known in the art, such as, but not limited to, Advanced Encryption Standard (AES) with any key length (e.g., 128, 196, 256) in any available mode (e.g., Cipher Block Linking (CBC), Galois / Counter Mode (GCM)).

[0077] exist Figure 3 At box 306, the sending system sends to, for example, Figure 1 The KMS system, such as KMS 110, sends a request to encrypt the sender's key index using a combined peripheral key, and at box 308, receives the encrypted sender's key index from the KMS. At box 310, the sender system establishes an encrypted data object, such as... Figure 1 and 4 Encrypted data object 102. Once in Figure 3 Box 310 generates an encrypted data object, and processing continues in box 312. In box 312, the encrypted data object is sent to the receiver, such as... Figure 1 The receiving system 106.

[0078] Figure 3 The process flowchart is not intended to indicate that the operations of method 300 will be performed in any particular order, or that all operations of method 300 will be included in every case. Furthermore, method 300 may include any suitable number of additional operations.

[0079] Now go to Figure 4 According to one or more embodiments of the present invention, embodiments of encrypted data object 102 or protected data are generally shown. Figure 4 The encrypted data object 102 shown includes data 402 encrypted with a session key, a session key 404 encrypted with a sender key, one or more peripheral key indices 406, and a sender key index 408 encrypted with a combined peripheral key.

[0080] Now go to Figure 5 According to one or more embodiments of the present invention, a method for creating an encrypted sender key index (e.g., using...) is generally shown. Figure 4 The flowchart of the method 500 (combining peripheral keys 408 encrypted sender key index). Figure 5 All or part of the processing shown can be, for example, by in Figure 1 The software instructions executed on the KMS 110 and / or computer hardware are used for execution. At box 502, from, for example... Figure 1The requesting party of the sending system 104 receives the sending key index and one or more peripheral key indices (such as... Figure 4 (The surrounding key index 404). Processing continues at box 504, obtaining one or more surrounding keys corresponding to the received surrounding key index. For example, it can be obtained from... Figure 1 The corresponding peripheral key is obtained from the peripheral key and index 114.

[0081] exist Figure 5 In box 506, the perimeter key is combined, and in box 508, the sender key index received in box 502 is encrypted with the combined perimeter key. Any method of combining the key can be used, such as, but not limited to, performing an XOR operation with the key or using a key derivation function (e.g., HMAC-based Extraction and Extension (HKDF) and / or Password-based Key Derivation Function 2 (PBKDF2)). The sender key index can be encrypted using any encryption scheme known in the art, such as, but not limited to, Advanced Encryption Standard (AES) with any key length (e.g., 128, 196, 256) in any available mode (e.g., Cipher Block Linking (CBC), Galois / Counter Mode (GCM)). In box 510, the encrypted sender key index is sent to the requesting party.

[0082] Figure 5 The process flowchart is not intended to indicate that the operations of method 500 will be performed in any particular order, or that all operations of method 500 will be included in every case. Furthermore, method 500 may include any suitable number of additional operations.

[0083] Now go to Figure 6 According to one or more embodiments of the present invention, a flowchart of a method 600 for decrypting data contained in an encrypted data object is generally shown. Figure 6 All or part of the process shown can be, for example, by in Figure 1 The receiving object is executed by software instructions and / or computer hardware on the receiving system 106. At box 602, the receiving object, such as... Figure 1 and Figure 4 The encrypted data object 102. According to one or more embodiments of the present invention, the object includes data encrypted with a session key, a session key encrypted with a sender key, one or more peripheral key indices, and a sender key index encrypted with a combination of peripheral keys.

[0084] At box 604, send the request to KMS, for example... Figure 1KMS 110 derives the sender key from one or more perimeter key indices and an encrypted sender key index contained in the received object. At box 606, if the receiving system has been granted access to all perimeter keys corresponding to one or more perimeter key indices in the received object, as well as access to the sender key, and the one or more perimeter keys and the sender key are valid keys in the KMS, meaning they have not been removed from the KMS prior to this request, then the sender key is received from the KMS.

[0085] If the receiving system is not granted access to all peripheral keys corresponding to one or more peripheral key indices in the received object, and access to the sender key, or if one or more of the peripheral keys or the sender key is an invalid key, then at block 606, the sender key is not received from the KMS. When this occurs, in one or more embodiments of the invention, the KMS sends an error message to the requesting party, while in other embodiments, the KMS simply does not respond to the request.

[0086] In response to receiving the sender's key in box 606, box 608 is executed. In box 608, the received sender's key is used to decrypt the encrypted session key. Processing continues in box 610, using the session key to decrypt the data encrypted with the session key in the object, to generate unencrypted data, such as... Figure 1 The data is 108 bits, and then the data 108 bits can be stored or input into a computer program.

[0087] Figure 6 The process flowchart is not intended to indicate that the operations of method 600 will be performed in any particular order, or that all operations of method 600 will be included in every case. Furthermore, method 600 may include any suitable number of additional operations.

[0088] Now go to Figure 7 According to one or more embodiments of the present invention, a flowchart of a method 700 for generating a sender key is generally shown. Figure 7 All or part of the processing shown can be, for example, by in Figure 1 The software instructions executed on the KMS 110 and / or computer hardware are used for execution. At box 702, from, for example... Figure 1 The requesting party, such as the receiving system 106, receives an encrypted sender key index and one or more peripheral key indices, at box 704, for example from... Figure 1 Peripheral keys and indexes 114 obtain the peripheral keys corresponding to one or more peripheral key indices.

[0089] In box 706, if all perimeter keys corresponding to one or more perimeter key indices are valid and the requester has access to all perimeter keys, then... Figure 5 The peripheral keys are combined in the same way as in box 506, and processing continues in box 708. If all peripheral keys corresponding to one or more peripheral key indices are invalid and / or the requester does not have access to all peripheral keys, then Figure 7 The processing shown has ended. In some embodiments, an error message is sent to the requester, while in other embodiments, no error message is sent.

[0090] In box 708, if the sender's key is valid and the requester has permission to access it, the sender's key index is decrypted using the combined peripheral key, and box 710 is executed to send the sender's key to the requester. In box 708, if the sender's key is invalid and / or if the requester does not have permission to access it, then... Figure 7 The processing shown has ended. In some embodiments, an error message is sent to the requester, while in other embodiments, no error message is sent.

[0091] Figure 7 The process flowchart is not intended to indicate that the operations of method 700 will be performed in any particular order, or that all operations of method 700 will be included in every case. Furthermore, method 700 may include any suitable number of additional operations.

[0092] It should be understood that although this disclosure includes a detailed description of cloud computing, the implementation of the teachings set forth herein is not limited to a cloud computing environment. Rather, embodiments of the invention can be implemented in conjunction with any other type of computing environment now known or developed hereafter.

[0093] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with service providers. This cloud model may include at least five features, at least three service models, and at least four deployment models.

[0094] The characteristics are as follows:

[0095] On-demand self-service: Cloud consumers can unilaterally and automatically provide computing power, such as server time and network storage, as needed, without requiring manual interaction with the service provider.

[0096] Extensive network access: Capabilities are available on the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

[0097] Resource pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically allocated and reallocated based on demand. There is a sense of location independence because consumers typically do not have control or knowledge of the exact location of the resources provided, but may be able to specify the location at a higher level of abstraction (e.g., country, state, or data center).

[0098] Rapid and flexible: Capable of providing capacity quickly and flexibly, automatically in some cases to rapidly expand outward and rapidly release capacity to rapidly expand inward. For consumers, the capacity available for supply often appears unlimited and can be purchased in any quantity at any time.

[0099] Measuring services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the service type (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both the providers and consumers of the services being utilized.

[0100] The service model is as follows:

[0101] Software as a Service (SaaS): This provides consumers with the ability to use the provider's applications running on cloud infrastructure. The applications can be accessed from various client devices through a thin client interface such as a web browser (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating system, storage, or even individual application capabilities, with possible exceptions such as limited user-specific application configuration settings.

[0102] Platform as a Service (PaaS): This provides consumers with the ability to deploy applications created or acquired by the consumer onto cloud infrastructure. These applications are created using programming languages ​​and tools supported by the provider. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but they have control over the deployed applications and the configuration of possible application hosting environments.

[0103] Infrastructure as a Service (IaaS): The capabilities offered to consumers are the provision of processing, storage, networking, and other basic computing resources that enable consumers to deploy and run any software (which may include operating systems and applications). Consumers do not manage or control the underlying cloud infrastructure, but rather have control over the operating system, storage, deployed applications, and potentially limited control over chosen networking components (e.g., host firewalls).

[0104] The deployment model is as follows:

[0105] Private cloud: Cloud infrastructure operated solely by an organization. It can be managed by the organization or a third party and can exist on-site or off-site.

[0106] Community cloud: Cloud infrastructure shared by several organizations and supporting a specific community with shared concerns (e.g., tasks, security requirements, policies, and compliance considerations). It can be managed by an organization or a third party and can exist on-site or off-site.

[0107] Public cloud: Cloud infrastructure available to the general public or large industrial groups and owned by organizations that sell cloud services.

[0108] Hybrid cloud: A cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain a single entity but are bound together by standardized or proprietary technologies that enable data and applications to be ported (e.g., cloud bursting for load balancing between clouds).

[0109] Cloud computing environments are service-oriented, focusing on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is the infrastructure of a network of interconnected nodes.

[0110] Now for reference Figure 8 The diagram illustrates an illustrative cloud computing environment 50. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 to which local computing devices used by cloud consumers can communicate. These local computing devices are, for example, personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C, and / or automotive computer systems 54N. The nodes 10 can communicate with each other. They can be physically or virtually grouped (not shown) in one or more networks, such as private clouds, community clouds, public clouds, or hybrid clouds, or combinations thereof, as described above. This allows the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service, without requiring cloud consumers to maintain resources on their local computing devices. It should be understood that... Figure 8The types of computing devices 54A-N shown are for illustrative purposes only, and computing node 10 and cloud computing environment 50 can communicate with any type of computerized device on any type of network and / or network-addressable connection (e.g., using a web browser).

[0111] Now for reference Figure 9 This demonstrates a cloud computing environment of 50 ( Figure 8 This provides a set of functional abstractions. It should be understood beforehand that... Figure 9 The components, layers, and functions shown are for illustrative purposes only, and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:

[0112] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: a host 61; a server 62 based on a RISC (Reduced Instruction Set Computer) architecture; a server 63; a blade server 64; a storage device 65; and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0113] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual server 71; virtual storage 72; virtual network 73, including virtual private network; virtual application and operating system 74; and virtual client 75.

[0114] In one example, management layer 80 may provide the following functionalities: Resource Provisioning 81 provides dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. Metering and Pricing 82 provides cost tracking when utilizing resources in the cloud computing environment, as well as billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud consumers and tasks, and protection for data and other resources. User Portal 83 provides access to the cloud computing environment for consumers and system administrators. Service Level Management 84 provides cloud resource allocation and management to ensure that required service levels are met. Service Level Agreement (SLA) Planning and Fulfillment 85 provides pre-scheduling and procurement of cloud resources, where future needs are anticipated according to the SLA.

[0115] Workload tier 90 provides examples of functionalities that can be leveraged in a cloud computing environment. Examples of workloads and functionalities that can be provided from this tier include: mapping and navigation 91; software development and lifecycle management 92; virtual classroom education delivery 93; data analytics and processing 94; transaction processing 95; and data encryption / decryption 96.

[0116] It is understood that one or more embodiments of the present invention can be implemented in conjunction with any type of computing environment now known or developed in the future.

[0117] Turn now Figure 10 According to one or more embodiments of the present invention, a computer system for distributing encrypted data objects having encrypted information as metadata is generally shown. The methods described herein can be implemented in hardware, software (e.g., firmware), or a combination thereof. In one or more exemplary embodiments of the invention, the methods described herein are implemented in hardware as part of a microprocessor of a dedicated or general-purpose digital computer, such as a personal computer, workstation, minicomputer, or mainframe computer. Therefore, system 1000 may include a general-purpose computer or mainframe 1001 capable of running multiple instances of O / S simultaneously.

[0118] In one or more exemplary embodiments of the present invention, in terms of hardware architecture, such as Figure 10 As shown, computer 1001 includes one or more processors 1005, memory 1010 coupled to memory controller 1015, and one or more input and / or output (I / O) devices 1040, 1045 (or peripheral devices) communicatively coupled via local input / output controller 1035. Input / output controller 1035 may be, for example, but not limited to, one or more buses or other wired or wireless connections, as known in the art. Input / output controller 1035 may have additional elements omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communication. Furthermore, the local interface may include address, control, and / or data connections to enable proper communication between the aforementioned components. Input / output controller 1035 may include multiple sub-channels configured to access output devices 1040 and 1045. Sub-channels may include fiber optic communication ports.

[0119] Processor 1005 is a hardware device for executing software, particularly software stored in storage 1020 such as cache memory or memory 1010. Processor 1005 can be any custom or commercially available processor, central processing unit (CPU), auxiliary processor among several processors associated with computer 1001, semiconductor-based microprocessor (in the form of a microchip or chipset), macroprocessor, or any device generally used for executing instructions.

[0120] Memory 1010 may include any one or a combination of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and non-volatile memory elements (e.g., ROM, erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), programmable read-only memory (PROM), magnetic tape, compact disc read-only memory (CD-ROM), disk, magnetic disk, cassette tape, etc.). Furthermore, memory 1010 may include electrical, magnetic, optical, and / or other types of storage media. Note that memory 1010 may have a distributed architecture, where various components are geographically separated but accessible by processor 1005.

[0121] The instructions in memory 1010 may include one or more separate programs, each program comprising an ordered list of executable instructions for implementing logical functions. Figure 10 In the example, the instructions in memory 1010 are a suitable operating system (OS) 1011. Operating system 1011 essentially controls the execution of other computer programs and provides scheduling, input-output control, file and data management, memory management, and communication control and related services.

[0122] According to one or more embodiments of the present invention, memory 1010 may include multiple logical partitions (LPARs), each running an instance of an operating system. The LPARs may be managed by a system administrator, which may be a program stored in memory 1010 and executed by processor 1005.

[0123] In one or more exemplary embodiments of the present invention, a conventional keyboard 1050 and mouse 1055 may be coupled to an input / output controller 1035. Other output devices, such as I / O devices 1040, 1045, may include input devices, such as, but not limited to, printers, scanners, microphones, etc. Finally, I / O devices 1040, 1045 may also include devices that communicate with both input and output, such as, but not limited to, network interface cards (NICs) or modulators / demodulators (for accessing other files, devices, systems, or networks), radio frequency (RF) or other transceivers, telephone interfaces, bridges, routers, etc. System 1000 may further include a display controller 1025 coupled to a display 1030.

[0124] In one or more exemplary embodiments of the present invention, system 1000 may further include a network interface 1060 for coupling to network 1065. Network 1065 may be an IP-based network for communication between computer 1001 and any external server, client, etc., via a broadband connection. Network 1065 sends and receives data between computer 1001 and external systems. In exemplary embodiments, network 1065 may be a managed IP network managed by a service provider. Network 1065 may be implemented wirelessly, for example using wireless protocols and technologies such as WiFi, WiMax, etc. Network 1065 may also be a packet-switched network, such as a local area network, wide area network, metropolitan area network, the Internet, or other similar network environments. Network 1065 may be a fixed wireless network, wireless local area network (LAN), wireless wide area network (WAN), personal area network (PAN), virtual private network (VPN), intranet, or other suitable network system, and includes equipment for receiving and transmitting signals.

[0125] If computer 1001 is a PC, workstation, intelligent device, etc., the instructions in memory 1010 may also include the Basic Input / Output System (BIOS) (omitted for simplicity). The BIOS is a set of basic software routines that initialize and test the hardware at startup, boot the OS 1011, and support data transfer between hardware devices. The BIOS is stored in ROM so that it can be executed when computer 1001 is activated.

[0126] When the computer 1001 is operating, the processor 1005 is configured to execute instructions stored in the memory 1010 to transfer data to and from the memory 1010, and generally control the operation of the computer 1001 according to the instructions. According to one or more embodiments of the present invention, the computer 1001 is... Figure 8 Example of cloud computing node 10.

[0127] Various embodiments of the invention are described herein with reference to the accompanying drawings. Alternative embodiments of the invention may be designed without departing from the scope thereof. Various connections and positional relationships (e.g., above, below, adjacent, etc.) between elements are illustrated in the following description and drawings. Unless otherwise stated, these connections and / or positional relationships may be direct or indirect, and the invention is not intended to be limiting in this respect. Therefore, coupling of entities may refer to direct or indirect coupling, and positional relationships between entities may be direct or indirect positional relationships. Furthermore, the various tasks and process steps described herein may be incorporated into a more comprehensive procedure or process having additional steps or functions not described in detail herein.

[0128] One or more methods described herein can be implemented using any one or a combination of the following techniques known in the art: discrete logic circuits having logic gates for implementing logic functions based on data signals, application-specific integrated circuits (ASICs) having appropriately combined logic gates, programmable gate arrays (PGAs), field-programmable gate arrays (FPGAs), etc.

[0129] For the sake of brevity, conventional techniques related to the manufacture and use of aspects of the present invention may or may not be described in detail herein. Specifically, various aspects of the computing systems and specific computer programs used to implement the various technical features described herein are well known. Therefore, for the sake of brevity, many conventional implementation details are only briefly mentioned or omitted entirely herein, without providing well-known system and / or process details.

[0130] In some embodiments, various functions or actions may occur at a given location and / or in combination with the operation of one or more devices or systems. In some embodiments, a portion of a given function or action may be performed at a first device or location, and the remainder of the function or action may be performed at one or more additional devices or locations.

[0131] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting. As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the terms “comprising” and / or “including” as used in this specification designate the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof.

[0132] All components or steps plus functional elements in the following claims are intended to include corresponding structures, materials, actions, and equivalents for performing functions in combination with other claimed elements, as specifically claimed. This disclosure is presented for illustrative and descriptive purposes and is not intended to be exhaustive or limited to the forms disclosed. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of this disclosure. The embodiments were chosen and described in order to best explain the principles and practical application of this disclosure and to enable others skilled in the art to understand this disclosure with various embodiments having various modifications suitable for the particular purpose contemplated.

[0133] The diagrams described herein are illustrative. Many variations may be made of the diagrams or steps (or operations) described herein. For example, actions may be performed in different orders, or actions may be added, deleted, or modified. Furthermore, the term "coupled" describes a signal path between two elements and does not imply a direct connection between elements without any intermediate elements / connections. All such variations are considered part of this disclosure.

[0134] The following definitions and abbreviations are used to interpret the claims and specification. As used herein, the terms “comprising,” “including,” “having,” “containing,” “having,” or any other variation thereof are intended to cover a non-exclusive inclusion. For example, a composition, mixture, process, method, article, or apparatus that includes a list of elements is not necessarily limited to those elements, but may include other elements not expressly listed or inherent to such composition, mixture, process, method, article, or apparatus.

[0135] Additionally, the term "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs. The terms "at least one" and "one or more" are understood to include any integer greater than or equal to one, i.e., one, two, three, four, etc. The term "multiple" should be understood to include any integer greater than or equal to two, i.e., two, three, four, five, etc. The term "connection" can include both indirect "connection" and direct "connection."

[0136] The terms “about,” “substantially,” “approximately,” and variations thereof are intended to include the degree of error associated with a measurement based on a specific quantity of equipment available at the time of filing of this application. For example, “about” may include a range of ±8%, 5%, or 2% of a given value.

[0137] This invention can be a system, method, and / or computer program product at any possible level of technical detail integration. The computer program product may include a computer-readable storage medium having computer-readable program instructions thereon for causing a processor to perform aspects of the invention.

[0138] Computer-readable storage media can be tangible devices capable of retaining and storing instructions for use by an instruction execution device. Computer-readable storage media can be, for example, but not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable optical disc read-only memory (CD-ROM), digital multifunction disc (DVD), memory sticks, floppy disks, mechanical encoding devices such as punch cards or recessed structures with instructions recorded thereon, and any suitable combination of the foregoing. As used herein, computer-readable storage media should not be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through fiber optic cables), or electrical signals transmitted through wires.

[0139] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a suitable computing / processing device, or via a network, such as the Internet, a local area network (LAN), a wide area network (WAN), and / or a wireless network, to an external computer or external storage device. The network may include copper cables, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to a computer-readable storage medium within the respective computing / processing device.

[0140] Computer-readable program instructions used to perform the operations of this invention may be assembly instructions, instruction set architecture (ISA) instructions, machine-dependent instructions, microcode, firmware instructions, status setting data, integrated circuit configuration data, or source code or object code written in any combination of one or more programming languages ​​(including object-oriented programming languages ​​such as Smalltalk, C++, etc.) and procedural programming languages ​​(such as the "C" programming language or similar programming languages). The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, to perform aspects of this invention, electronic circuits, including, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may be personalized by executing computer-readable program instructions using status information from the computer-readable program instructions.

[0141] Various aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0142] These computer-readable program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create parts for implementing the functions / actions specified in one or more blocks of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can instruct a computer, programmable data processing apparatus, and / or other device to operate in a particular manner, such that the computer-readable storage medium in which the instructions are stored includes an article of writing comprising instructions for implementing aspects of the functions / actions specified in one or more blocks of a flowchart and / or block diagram.

[0143] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer-implemented process, such that the instructions, which execute on the computer, other programmable apparatus or other device, perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.

[0144] The flowcharts and block diagrams in the accompanying drawings illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions comprising one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions indicated in the blocks may occur in a different order than indicated in the figures. For example, two blocks shown consecutively may actually be executed substantially simultaneously, or these blocks may sometimes be executed in reverse order, depending on the functions involved. It will also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented by a dedicated hardware-based system that performs the specified function or action or executes a combination of dedicated hardware and computer instructions.

[0145] Various embodiments of the invention have been described for illustrative purposes, but are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, their practical application, or technical improvements to existing technologies on the market, or to enable others skilled in the art to understand the embodiments described herein.

Claims

1. A method for distributing encrypted data objects, executed by a sender's computer, comprising: Data is encrypted by one or more processors, at least in part, based on a session key, to generate encrypted data; The session key is encrypted by the one or more processors, at least in part, based on a sender key previously obtained from a key management system (KMS) to generate an encrypted session key. The one or more processors send a request to the KMS for an encrypted sender key index, the request including an index of the sender key and an index of each of a plurality of additional keys, each of the plurality of additional keys being accessible to a defined user group, wherein the sender key index is encrypted by the KMS using a combined key derived from a combination of the plurality of additional keys obtained based on the index of the plurality of additional keys; The encrypted sender key index is received from the KMS by the one or more processors; An object is generated by the one or more processors, comprising the encrypted data, the encrypted session key, the index of each of the plurality of additional keys, and the index of the encrypted sender key, wherein access to the data via the object is controlled at least in part based on whether the receiver has permission to access the sender key and each of the plurality of additional keys, wherein access to each of the plurality of additional keys is based on user metadata indicating that the receiver is defined in each user group associated with each of the plurality of additional keys, wherein the user metadata is updated based on changes in user state.

2. The method of claim 1, wherein access to the data via the object is controlled at least in part based on whether the sender key and the plurality of additional keys are valid.

3. The method of claim 2, further comprising preventing the receiver from accessing the data via the object, the prevention comprising sending a request to the KMS to invalidate the sender's key.

4. The method of claim 2, further comprising preventing the recipient from accessing the data via the object, the prevention comprising sending a request to the KMS to invalidate at least one of the plurality of additional keys.

5. The method of claim 1, wherein access to the data via the object is modified in response to the KMS adding or removing the receiver from the list of users authorized to access the sender's key.

6. The method of claim 1, wherein the access to the data via the object is modified in response to the KMS adding or removing the recipient from a list of users entitled to access the plurality of additional keys.

7. The method according to any one of claims 1-6, further comprising sending the object to the recipient.

8. The method of claim 7, wherein the transmission is via a network.

9. A sending system for distributing a transmitter of encrypted data objects, comprising: A memory for storing computer-readable instructions and one or more processors for executing the computer-readable instructions, the computer-readable instructions controlling the one or more processors to perform operations, the operations including: Data is encrypted at least in part based on the session key to generate encrypted data; The session key is encrypted at least in part based on the sender key, which was previously obtained from a key management system (KMS). Send a request to the KMS for an encrypted sender key index, the request including the index of the sender key and the index of each of a plurality of additional keys, each of the plurality of additional keys being accessible to a defined user group, wherein the sender key index is encrypted by the KMS using a combined key derived from the combination of the plurality of additional keys; Receive the encrypted sender key index from the KMS; and An object is generated that includes the encrypted data, the encrypted session key, the index of each of the plurality of additional keys, and the index of the encrypted sender key, wherein access to the data via the object is controlled at least in part based on whether the receiver has permission to access the sender key and each of the plurality of additional keys, wherein access to each of the plurality of additional keys is based on user metadata indicating that the receiver is defined in each user group associated with each of the plurality of additional keys, wherein the user metadata is updated based on changes in user state.

10. The system of claim 9, wherein access to the data via the object is controlled at least in part based on whether the sender key and the plurality of additional keys are valid.

11. The system of claim 10, wherein the operation further includes preventing the receiver from accessing the data via the object, the prevention comprising sending a request to the KMS to invalidate the sender's key.

12. The system of claim 10, wherein the operation further includes preventing the receiver from accessing the data via the object, the prevention comprising sending a request to the KMS to invalidate at least one of the plurality of additional keys.

13. The system of claim 9, wherein access to the data via the object is modified in response to the KMS adding or removing the receiver from a list of users authorized to access the sender's key.

14. The system of claim 9, wherein the access to the data via the object is modified in response to the KMS adding or removing the recipient from a list of users entitled to access one of the plurality of additional keys.

15. A sender computer program product for distributing encrypted data objects to a sender, comprising a computer-readable storage medium having program instructions embodied therein, the program instructions being executable by one or more processors to cause the one or more processors to perform operations, the operations including: Data is encrypted at least in part based on the session key to generate encrypted data; The session key is encrypted at least in part based on the sender key, which was previously obtained from a key management system (KMS). Send a request to the KMS for an encrypted sender key index, the request including the index of the sender key and the index of each of a plurality of additional keys, each of the plurality of additional keys being accessible to a defined user group, wherein the sender key index is encrypted by the KMS using a combined key derived from the combination of the plurality of additional keys; Receive the encrypted sender key index from the KMS; as well as An object is generated that includes the encrypted data, the encrypted session key, the index of each of the plurality of additional keys, and the index of the encrypted sender key, wherein access to the data via the object is controlled at least in part based on whether the receiver has permission to access the sender key and each of the plurality of additional keys, wherein access to each of the plurality of additional keys is based on user metadata indicating that the receiver is defined in each user group associated with each of the plurality of additional keys, wherein the user metadata is updated based on changes in user state.

16. A method for decrypting a data object, executed by a receiving computer of a receiving party, comprising: One or more processors receive a data object from the sender that includes encrypted data, an encrypted session key, an index of each of a plurality of additional keys, and an encrypted sender key index, each of the plurality of additional keys being accessible to a defined user group; The one or more processors send a request to the key management system (KMS) for a sender key corresponding to the encrypted sender key index. The request from the receiver includes the encrypted sender key index and the index of each of the plurality of additional keys. In response to the request, the KMS obtains each of the plurality of additional keys based on each corresponding index, decrypts the encrypted sender key index using a combined key derived from the combination of the obtained plurality of additional keys, and sends the sender key to the receiver based on the sender key index; and In response to receiving the sender key from the KMS: At least in part based on the sender's key, the encrypted session key is decrypted to generate a session key; and The encrypted data is decrypted at least in part based on the session key to generate unencrypted data, wherein in response to the KMS determining that the recipient has the right to access the sender key and each of the plurality of additional keys, the KMS sends the sender key to the recipient, wherein access to each of the plurality of additional keys is based on user metadata indicating that the recipient is defined in each user group associated with each of the plurality of additional keys, wherein the user metadata is updated based on changes in user state.

17. The method of claim 16, further comprising receiving an error message from the KMS in response to the KMS determining that the receiver does not have permission to access the sender's key.

18. The method of claim 17, wherein when the sender key is invalid, it is determined that the receiver has no right to access the sender key.

19. The method of claim 16, further comprising receiving an error message from the KMS in response to the KMS determining that the recipient does not have permission to access all of the at least plurality of additional keys.

20. The method of claim 19, wherein when at least one of the plurality of additional keys is invalid, it is determined that the recipient has no right to access all keys among the plurality of additional keys.

Citation Information

Patent Citations

  • Pluggable cipher suite negotiation

    US10033703B1

  • Method and system for protecting data using data passports

    US20150372991A1