Distributing Encrypted Data Objects

By distributing the encrypted session key as metadata and managing the encryption key with KMS, the difficulties in key transmission and management in the prior art are solved, and the security and flexibility of data sharing and access control are realized.

JP7649607B2Active Publication Date: 2025-03-21INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2023501301
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-07-10
Filing Date
2021-06-23
Publication Date
2025-03-21
Estimated Expiration
2041-06-23

AI Technical Summary

Technical Problem

The prior art has problems such as difficulty in establishing direct relationships in data encryption and key management, key transmission time-consuming, and easy to break through, especially in multi-user systems or when keys expire.

Method used

Secure storage and access control of keys by distributing the encryption session keys in the encrypted data object as metadata and generating and managing encryption keys using the Key Management System (KMS).

Benefits of technology

It realizes that while sharing data between multiple users, protects encryption keys and key indexes from being widely distributed, improving the security and flexibility of data access control.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007649607000001
    Figure 0007649607000001
  • Figure 0007649607000002
    Figure 0007649607000002
  • Figure 0007649607000003
    Figure 0007649607000003
Patent Text Reader

Abstract

Distribution of encrypted data objects is disclosed. Aspects include encrypting data based at least in part on a session key to generate encrypted data. The session key is encrypted based at least in part on a sender key to generate an encrypted session key. A request for an encrypted sender key index is transmitted to a KMS, the request including an index of the sender key and an index for each of one or more additional keys. The encrypted sender key index is received from the KMS. An object is generated that includes the encrypted data, the encrypted session key, an index for each of the one or more additional keys, and the encrypted sender key index. Access to the data via the object is controlled based at least in part on whether a recipient has access to the sender key and the one or more additional keys.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates generally to data security, and more particularly to distributing encrypted data objects that include, as metadata for the data object, the encryption key used to encrypt it. [Background technology]

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

[0003] Data security in networks and cloud solutions continues to become a growing concern as the amount of data stored online increases. One method of protecting data is cryptography. Cryptography is the technique of encrypting and decrypting data as it is transmitted between two or more systems using encryption keys and encryption algorithms. Data protection with network and cloud solutions may take two basic forms: in-flight protection and at-rest protection. In-flight protection protects data on the network, while at-rest 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 under a second symmetric key before sending it to the other side, or by distributing the symmetric key using paper. Each of these common methods has various problems. One of the most difficult problems is that a direct relationship must be established between the two parties in order for the symmetric key to be exchanged. This direct relationship is difficult to establish and manage, and is even more difficult when keys have short life spans or many users are using the system, or a combination of both. Other problems include the time it takes to transfer the key, or the security of the key being exchanged being compromised, or a combination of both.

[0005] Even if the key exchange is successfully performed, the keys must be managed and stored securely so that it can be tracked which key was used for which data. Typically, a given key can be selected to protect data based on business logic. Both the sender and the receiver must know what the business logic is to successfully determine that a particular key should be for a given data. This requires both sides to have a pre-defined relationship to exchange the necessary information about how to select the key and the business logic.

[0006] In an attempt to avoid the need for a direct relationship between the parties providing secure keys and exchanging encrypted data, different approaches to key management have been used. Key management can be performed by a Key Management System (KMS) that generates, distributes and more generally manages encryption keys for clients (devices, applications, etc.). A KMS can handle several aspects of security, from secure generation of keys to secure handling and storage of keys on the client system. A KMS typically includes back-end functionality for key generation, distribution and exchange. Additionally, it may integrate specific client functionality for key deployment, key storage and management on the client device.

[0007] Current KMS has shortcomings. For example, it does not support the ability for multiple parties to independently control access to an encrypted data object after it has been created without requiring them to share multiple keys with the recipient of the object. Additionally, current approaches require the recipient of an encrypted data object to send an index, or other identifier, of an encryption key stored in the KMS to obtain the encryption key and send it to the recipient. This can lead to a breach if multiple data objects are encrypted with the same key and the recipient's access to the key is revoked. Thus, while KMS offers benefits for encryption key management, security and access control can be improved. Summary of the Invention

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

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

[0010] One or more embodiments of the present invention are directed to a computer program product for distributing encrypted data objects having cryptographic information as metadata, and a computer readable storage medium having program instructions embodied therein, the program instructions being executable by a processor to cause the processor to perform the method described above.

[0011] In this manner, data can be advantageously easily shared among multiple parties while protecting the encryption keys and encryption key indexes from distribution to all parties. Furthermore, the sender of the data and other parties control access to the data by revoking their keys to render the encrypted data unusable.

[0012] Additionally or alternatively, in one or more embodiments of the present invention, access to the data via the object is further controlled based at least in part on whether the sender key and one or more further keys are valid. Thus, advantageously, access to the data can be revoked by the sender revoking the sender key or by an authorized party revoking one of the further keys.

[0013] Additionally or alternatively, in one or more embodiments of the invention, the receiver prevents access to the data via the object by transmitting a request to the KMS to revoke the sender key, thus advantageously centralizing sender key management.

[0014] Additionally or alternatively, in one or more embodiments of the present invention, the receiver prevents access to the data via the object by transmitting a request to the KMS to revoke at least one of the one or more additional keys. In this manner, sender key management and access to the data can be advantageously centralized.

[0015] Additionally or alternatively, in one or more embodiments of the present invention, access to data via an object is modified in response to the KMS adding or removing a requestor from a list of users having access to the sender's key. Thus, access to data may be advantageously managed based on whether a user is in a group of users that have been given access to the sender's key.

[0016] Additionally or alternatively, in one or more embodiments of the present invention, access to data via an object is modified in response to the KMS adding or removing a recipient from a list of users having access to one or more further keys. Thus, advantageously, access to data may be managed based on whether a user is in a group of users who have been given access to the further key.

[0017] Additionally or alternatively, in one or more embodiments of the invention, the object is transmitted to the recipient, thus advantageously distributing data and access management.

[0018] Additionally or alternatively, in one or more embodiments of the invention, the objects are transmitted to recipients over a network, thus advantageously distributing data and access management.

[0019] One or more embodiments of the present invention are directed to a computer-implemented method for distributing encrypted data objects having encryption information as metadata. A non-limiting example of a computer-implemented method comprises receiving an object including encrypted data, an encrypted session key, a respective index 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 transmitted to a KMS. The request is from a requestor, the request including the encrypted sender key index and a respective index of the one or more additional keys. In response to receiving the sender key from the KMS, the encrypted session key is decrypted based at least in part on the sender key to generate a session key, and the encrypted data is decrypted based at least in part on the session key to generate unencrypted data. In response to a determination by the KMS that the requestor has access to the sender key and each of the one or more additional keys, the sender key is transmitted by the KMS to the requestor.

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

[0021] One or more embodiments of the present invention are directed to a computer program product for distributing encrypted data objects having cryptographic information as metadata, and a computer readable storage medium having program instructions embodied therein, the program instructions being executable by a processor to cause the processor to perform the method described above.

[0022] In this manner, data can be advantageously easily shared among multiple parties while protecting the encryption keys and encryption key indexes from distribution to all parties. Furthermore, the sender of the data and other parties control access to the data by revoking their keys to render the encrypted data unusable.

[0023] Additionally or alternatively, in one or more embodiments of the invention, an error message is received from the KMS in response to a determination by the KMS that the requestor does not have access to the sender's key. In this manner, the requestor is advantageously notified if access to an object is denied.

[0024] Additionally or alternatively, in one or more embodiments of the present invention, it is determined that the requestor does not have access to the sender's key if the sender's key is invalid. Thus, access to the data may be advantageously revoked by the sender revoking the sender's key.

[0025] Additionally or alternatively, in one or more embodiments of the invention, an error message is received from the KMS in response to a determination by the KMS that the requestor does not have access to at least one or more additional keys. In this manner, the requestor is advantageously notified if access to an object is denied.

[0026] Additionally or alternatively, in one or more embodiments of the present invention, if at least one of the one or more further keys is invalid, it is determined that the requestor does not have access to all of the one or more keys. Thus, advantageously, access to the data can be revoked by an authorized party by invalidating one of the further keys.

[0027] One or more embodiments of the present invention are directed to a computer-implemented method for distributing encrypted data objects having encryption 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 requestor, the request including an encrypted sender key index and a respective index of one or more additional keys. Determining whether the requestor has access to one or more additional keys identified by the respective indexes of the one or more additional keys. In response to determining that the requestor has access to the one or more additional keys, the encrypted sender key index is decrypted to generate a sender key index, and the sender key is located based at least in part on the sender key index. Further, determining whether the requestor has access to the sender key. The sender key is transmitted to the requestor based on the determination that the requestor has access to the sender key.

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

[0029] One or more embodiments of the present invention are directed to a computer program product for distributing encrypted data objects having cryptographic information as metadata, and a computer readable storage medium having program instructions embodied therein, the program instructions being executable by a processor to cause the processor to perform the method described above.

[0030] In this manner, data can be advantageously easily shared among multiple parties while protecting the encryption keys and encryption key indexes from distribution to all parties. Furthermore, the sender of the data and other parties control access to the data by revoking their keys to render the encrypted data unusable.

[0031] Additionally or alternatively, in one or more embodiments of the present invention, the encrypted sender key index is generated based at least in part on the sender key index and on a respective index of one or more further keys. Thus, access to data may advantageously be protected by multiple keys, each of which may be controlled by a different authorized user.

[0032] Additionally or alternatively, in one or more embodiments of the present invention, generating the encrypted sender key index includes arranging the one or more further keys based at least in part on the index of each of the one or more further keys and combining them into a combined further key. The sender key index is encrypted based at least in part on the combined further key. Thus, advantageously, access to the data is protected by multiple keys, each of which may be controlled by a different authorized user.

[0033] Further technical features and advantages are realized through the techniques of the present invention. Embodiments and aspects of the present invention are described in detail herein and are considered a part of the claimed subject matter. For a better understanding, reference should be made to the detailed description and drawings. [Brief description of the drawings]

[0034] The particulars of the exclusive rights set forth herein are particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The above and other features and advantages of embodiments of the present invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings.

[0035] [Figure 1] FIG. 1 illustrates a block diagram of an environment for distributing encrypted data objects having cryptographic information as metadata in accordance with one or more embodiments of the present invention.

[0036] [Diagram 2] FIG. 2 illustrates a block diagram of an encryption scheme utilized by one or more embodiments of the present invention.

[0037] [Diagram 3] FIG. 2 illustrates a flow diagram of a method for creating an encrypted data object in accordance with one or more embodiments of the present invention.

[0038] [Figure 4] FIG. 2 illustrates an encrypted data object in accordance with one or more embodiments of the present invention.

[0039] [Diagram 5] FIG. 2 illustrates a flow diagram of a method for generating an encrypted sender key index in accordance with one or more embodiments of the present invention.

[0040] [Figure 6] FIG. 2 illustrates a flow diagram of a method for decrypting data contained in an encrypted data object in accordance with one or more embodiments of the present invention.

[0041] [Figure 7] FIG. 2 illustrates a flow diagram of a method for generating sender keys in accordance with one or more embodiments of the present invention.

[0042] [Figure 8]FIG. 1 illustrates a cloud computing environment in accordance with one or more embodiments of the present invention.

[0043] [Figure 9] FIG. 2 illustrates abstraction model layers in accordance with one or more embodiments of the present invention.

[0044] [Figure 10] FIG. 1 illustrates a system for encrypting an object such that the creator of the encrypted object may be identified in accordance with one or more embodiments of the present invention.

[0045] The drawings illustrated herein are exemplary. There may be many variations in the drawings, or in the operations described therein, without departing from the scope of the invention. For example, operations may be performed in a different order, or operations may be added, deleted, or modified. Additionally, the term "coupled" and variations thereof are intended to describe having a communication path between two elements, and do not imply that the elements are directly connected with no intervening elements / connections between them. All of these variations are considered part of the specification. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0046] One or more embodiments of the present invention provide an encrypted data object in which the encryption key used to encrypt the data object is available as metadata within the encrypted data object. In accordance with one or more embodiments of the present invention, one party, the sender, encrypts data with the sender key and one or more further encryption keys belonging to one or more parties, allowing the sender and any other parties to revoke the keys and render the encrypted data unusable.

[0047] One or more embodiments of the present invention facilitate sharing of data between multiple parties (e.g., sender and receiver) while protecting against distribution of encryption keys 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 the data by either allowing or denying access to the sender key index. Furthermore, because the sender controls the specific sender key, the sender has the final decision to allow or deny access.

[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 data to be encrypted into an encrypted data object. In accordance with 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 indexes, 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 that is encrypted by a sender, such as a transmission processor. One or more embodiments of the present invention allow the sender to determine the best way to generate a session key. The session key can be obtained from a key management system (KMS) or it can be dynamically generated by the sender at some interval (e.g., per object, per day, every 10,000 objects, etc.). One or more embodiments of the present invention allow the session key (packaged with the object) to be generated by the KMS but not stored by the KMS.

[0050] As used herein, the term "encrypted session key" refers to the session key after it has been encrypted with the sender's key.

[0051] As used herein, the term "sender key" refers to an encryption key used by an encryption algorithm to encrypt a session key. A sender key is an encryption key used by a sender for data transfer. In accordance with one or more embodiments of the present invention, access to the sender key is controlled by the KMS. The KMS stores sender keys that are accessible via a sender key index. A sender key index is an identifier (e.g., label, 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., receivers) that can access data. Examples of groups include, but are not limited to, users in the United States or users in the human resources department, or a specific user identifier. Peripheral keys provide a way for users interested in being able to open data. Access to the periphery can be granted, modified, or revoked, or a combination, by parties other than the sender, allowing control over access to the data by other parties. In accordance with one or more embodiments of the present invention, access to the periphery keys is controlled by the KMS. The KMS has stored one or more periphery keys. A periphery key index is an identifier (e.g., label, handle) used by the KMS to locate the corresponding periphery key.

[0053] As used herein, the term "combined peripheral key" refers to a composite encryption key derived from one or more peripheral keys. In accordance with one or more embodiments of the present invention, the combined peripheral key is derived by performing an exclusive-or (XOR) operation on one or more peripheral key values. The combined peripheral key provides the ability to use multiple key parts to create a composite key. The composite key is created when a package or encrypted data object is created, and then regenerated when the encrypted data object is opened or decrypted. If any key parts required to create the combined peripheral key are not available at the time of opening, the encrypted data cannot be decrypted, and from that point on, the encrypted data becomes unavailable.

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

[0055] According to one or more embodiments of the present invention, when an encrypted data object is being created, the sender uses the sender's sender key to encrypt the session key. As explained above, the sender's keys are controlled by the KMS, and the sender requests the KMS to encrypt their sender key index with the combined peripheral key. The combined peripheral key includes at least one key (e.g., an organization's key), but it may also include more keys (e.g., the receiver's key, additional keys with other owners, random key portions, etc.).

[0056] According to one or more embodiments of the present invention, when a receiver of an Encrypted Data Object (referred to as the "Receiver") wishes to open the Encrypted Data Object, it must send the Peripheral Key Index and the Encrypted Sender Key Index to the KMS, and the KMS will provide the Receiver 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 first recombines the combined peripheral keys, and if any component of the combined peripheral key is not available to the requestor, the operation will fail and the Receiver will not be able to decrypt the encrypted data in the Encrypted Data Object.

[0057] If all components of the combined peripheral key are available, they will be used by the KMS to decrypt the sender key index. The sender key index is then used by the KMS to find the sender key in the KMS. If the sender key is not available to the requestor, the operation will fail and the receiver will not be able to decrypt the encrypted data. If all key material is available and accessible to the requestor, the sender key is returned by the KMS to the requesting receiver of the encrypted data object. In accordance with one or more embodiments of the present invention, the key is accessible by the requestor if the requestor has been granted permission to access the key.

[0058] The above aspects of one or more embodiments of the present invention address one or more shortcomings of the prior art by facilitating sharing of data while protecting against distribution of encryption keys and encryption key indexes to all parties. Furthermore, the use of a peripheral set of keys to protect sender key information allows multiple parties to control access to the data by either allowing or denying access to the sender key index. Because the sender controls access to its corresponding sender key, the sender ultimately determines the requester's ability to access the data.

[0059] Furthermore, one or more embodiments of the present invention provide a clear (unencrypted) sender key to the receiver, but the receiver will not be able to link the sender key back to its corresponding sender key index. Access to the data can be revoked by the sender revoking the sender's key (the sender key), or by the sender or other party with the authority to revoke any keys that are part of the surrounding key, or a combination thereof.

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

[0061] Additionally, one or more embodiments of the present invention provide for scaling of key usage such that the same session key can be used for a significant amount of data that is entirely local to the sending system. The final wrapping operation of the session key, which is a small operation (e.g., using a relatively small amount of computing resources), can then be performed by the KMS.

[0062] One or more embodiments of the present invention can utilize peripheral keys to define a group of one or more users that have access to a corresponding peripheral key, and the intersection of users in the group that corresponds to the peripheral key used to encrypt the data object is given access to the data object (unless the sender has revoked the sender key). An authorized administrator can update the users in each group.

[0063] In one example, the data may be personnel data including data regarding United States (US) employees. In this example, a first peripheral key may require the user to be located in the US and a second peripheral key may require the user to be in a human resources department. These determinations regarding the user may be made based on metadata associated with a computer user identifier. For example, when a user identifier is set up for a user, the metadata may specify the user's geographic location and department of employment. This metadata may be updated based on changes to the user's status. If a recipient of an encrypted data object has access to both the first peripheral key and the second peripheral key (and the sender key), the recipient is located in the US and in a human resources department and therefore can access or decrypt the data in the encrypted data object. If the recipient does not have access to any of the first peripheral key, the second peripheral key, or the sender key, the recipient cannot access the data in the encrypted data object. As embodiments of the present invention are operable with any type of data, this example is intended to illustrate aspects of one or more embodiments of the present invention and is not intended to limit the embodiments to personnel data.

[0064] To control access to data in an encrypted data object, a data owner (e.g., sender) or other authorized party can instruct the KMS to revoke a particular user's access to a peripheral key. To prevent all future access to data in an encrypted data object, a data owner or other authorized party can also instruct the KMS to revoke a particular peripheral key. Additionally, to prevent all future access to data in an encrypted data object, a data owner (e.g., sender of data) or other authorized party can also instruct the KMS to revoke a sender key.

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

[0066] The sending system 104 may be implemented by computer hardware, or software instructions, or a combination thereof, executing, for example, on a processor 1005 located in the computer 1001 of FIG. 10, or on a processor located in the cloud computing node 10 of FIG. 8, or a combination thereof, as further described herein. In accordance with one or more embodiments of the present invention, and referring now to FIG. 3, for example, the sending system 104 performs sending-side processing, as described. As shown in FIG. 1, the sending system 104 receives data 108a to be transmitted to the receiving system 106 in a secure manner. The data 108a may be in any digital format known in the art. The sending system 104 creates an encrypted data object 102 that includes the data 108 in an encrypted format and metadata used by the receiving system 106 to decrypt the encrypted data object 102.

[0067] In accordance with one or more embodiments of the present invention, the sending system 104 stores or has access to the data 108a to be transmitted in a secure manner, the encrypted data, the encrypted sender key index for the encrypted data object 102, the session key, the sender key index, the sender key, and one or more peripheral key indexes.

[0068] As shown in the embodiment of Figure 1, the sender system 104 interacts with the KMS 110 to generate the encrypted data object 102. As shown in Figure 1, the KMS 110 controls access to sender keys and indexes 112, which include sender keys and their corresponding indexes or identifiers. The KMS 110 uses the sender key's index to access the corresponding sender key. As shown in Figure 1, the KMS 110 also controls access to peripheral keys and indexes 114, which include peripheral keys and their corresponding indexes or identifiers. The KMS 110 uses the peripheral key's index to access the corresponding peripheral key.

[0069] The key management system (KMS) 110 may be implemented by computer hardware, or software instructions, or a combination thereof, executed, for example, on a processor 1005 located in the computer 1001 of FIG. 10, or on a processor located in the cloud computing node 10 of FIG. 8, or a combination thereof, as further described herein. In accordance with one or more embodiments of the present invention, the KMS 110 performs key management processing, as described below with reference to FIGS. 5 and 7. As shown in FIG. 1, the KMS 110 interacts with the sending system 104, for example, by receiving a sender key index and one or more peripheral key indexes from the sending system 104 and returning an encrypted sender key index to the requesting sending system 104 in response. The KMS 110 may also interact with the receiving system 106, for example, by receiving an encrypted sender key index and one or more peripheral key indexes from the receiving system 106 and returning a sender key to the requesting receiving system 106 in response. Additionally, the KMS may receive commands from the owner of the data 108 or another authorized party to update the contents of the sender key index 112 and the surrounding keys and indexes 114 .

[0070] The receiving system 106 may be implemented by computer hardware, or software instructions, or a combination thereof, executing, for example, on a processor 1005 located in the computer 1001 of FIG. 10, or on a processor located in the cloud computing node 10 of FIG. 8, or a combination thereof, as further described herein. In accordance with one or more embodiments of the present invention, and referring now to FIG. 6, for example, the receiving system 106 performs receiving processing, as described. As shown in FIG. 1, the receiving system 106 receives the encrypted data object 102 from the sending system 104. If the receiving system 106 has access to the data, the receiving system 106 decrypts the encrypted data object 102 to generate data 108b in an unencrypted format.

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

[0072] Although Figure 1 illustrates one embodiment including a single KMS 110, a single sending system 104, and a single receiving system 106, the invention is not limited to the embodiment illustrated in Figure 1. For example, one or more other embodiments may include multiple sending systems 104, multiple receiving systems 106, or multiple KMSs 110, or a combination thereof.

[0073] All or a subset of the components shown in Figure 1 may communicate with one another over one or more networks formed by one or more communicative processors that are coupled or connected using wired or wireless components. In accordance with one or more embodiments of the present invention, all or a subset of the components shown in Figure 1 may be communicatively coupled over a cloud network, or the Internet, or a combination thereof.

[0074] The embodiments described herein in connection with block diagram 100 of FIG. 1 may be implemented with any suitable logic, and logic as referred to herein may, in various embodiments, include any suitable hardware (e.g., a processor, embedded controller, or application specific integrated circuit, among others), software (e.g., an application, among others), firmware, or any suitable combination of hardware, software, and firmware.

[0075] Turning now to FIG. 2, a block diagram 200 of an encryption scheme utilized by one or more embodiments of the present invention is generally shown. As shown in FIG. 2, in block 202, data, such as data 108a of FIG. 1, is encrypted with a session key, which is encrypted with a sender key. As shown in FIG. 2, block 204, the peripheral keys are combined to generate a combined peripheral key. The peripheral keys may be combined, for example, by XORing their values, or in some other repeatable manner, such as, but not limited to, using a key derivation function. As shown in FIG. 2, block 206, the combined peripheral key is used to encrypt an index of the sender key used to encrypt the session key, which is then encrypted with the combined peripheral key. Use of the embodiment of the encryption scheme shown in FIG. 2 provides the sender, as well as multiple other parties or organizations, with the ability to monitor access to open data via the KMS.

[0076] Turning now to FIG. 3, a flow diagram of a method 300 for creating an encrypted data object is generally shown in accordance with one or more embodiments of the present invention. All or a portion of the process shown in FIG. 3 may be performed, for example, by computer hardware instructions, or software instructions, or a combination thereof, executed on the sending system 104 of FIG. 1. At block 302, data, such as data 108a of FIG. 1, is received by the sending system and encrypted by the sending system using a session key. At block 304, the session key is encrypted with the sender key. Any encryption algorithm known in the art may be utilized to perform the encryption at blocks 302 and 304, such as, but not limited to, Advanced Encryption Standard (AES) in any available mode (e.g., Cipher Block Chaining (CBC)), Galois / Counter Mode (GCM) with key lengths of any size (e.g., 128, 196, 256).

[0077] At block 306 of Figure 3, the sending system sends a request to a KMS, such as KMS 110 of Figure 1, to encrypt the sender key index with the combined peripheral key, and at block 308, the encrypted sender key index is received from the KMS. At block 310, the sending system constructs an encrypted data object, such as encrypted data object 102 of Figures 1 and 4. Once the encrypted data object is created at block 310 of Figure 3, processing continues at block 312. At block 312, the encrypted data object is transmitted to a recipient, such as receiving system 106 of Figure 1.

[0078] 3 is not intended to imply that the operations of method 300 are performed in any particular order or that all operations of method 300 are included in all instances. Additionally, method 300 may include any suitable number of additional operations.

[0079] Turning now to Figure 4, one embodiment of an encrypted data object 102 or protected data is generally shown in accordance with one or more embodiments of the present invention. The encrypted data object 102 shown in Figure 4 includes data encrypted with a session key 402, a session key encrypted with a sender key 404, one or more peripheral key indexes 406, and a sender key index encrypted with a combined peripheral key 408.

[0080] Turning now to Figure 5, a flow diagram of a method 500 for creating an encrypted sender key index, such as the sender key index encrypted with the combined peripheral key 408 of Figure 4, is generally shown in accordance with one or more embodiments of the present invention. All or a portion of the process shown in Figure 5 may be performed, for example, by computer hardware instructions, or software instructions, or a combination thereof, executed on the KMS 110 of Figure 1. At block 502, a sender key index and one or more peripheral key indexes, such as the peripheral key index 404 of Figure 4, are received from a requester, such as the sender system 104 of Figure 1. Processing continues at block 504 with obtaining one or more peripheral keys corresponding to the received peripheral key indexes. The corresponding peripheral keys may be obtained, for example, from the peripheral keys and indexes 114 of Figure 1.

[0081] In block 506 of FIG. 5, the peripheral keys are combined, and in block 508, the sender key index received in block 502 is encrypted with the combined peripheral keys. Any method of combining the keys can be used, such as, but not limited to, performing an exclusive-or (XOR) with the keys, or using a key derivation function (e.g., HMAC-based Extract-and-Expand (HKDF), or Password Based Key Derivation Function 2 (PBKDF2), or a combination thereof). Any encryption scheme known in the art may be used to encrypt the sender key index, such as, but not limited to, Advanced Encryption Standard (AES) in any available mode (e.g., Cipher Block Chaining (CBC)), Galois / Counter Mode (GCM) with any size key length (e.g., 128, 196, 256). In block 510, the encrypted sender key index is transmitted to the requestor.

[0082] 5 is not intended to imply that the operations of method 500 are performed in any particular order or that all operations of method 500 are included in all instances. Additionally, method 500 may include any suitable number of additional operations.

[0083] Turning now to Figure 6, a flow diagram of a method 600 for decrypting data contained in an encrypted data object is generally shown in accordance with one or more embodiments of the present invention. All or a portion of the process illustrated in Figure 6 may be performed, for example, by computer hardware instructions, or software instructions, or a combination thereof, executed on the receiving system 106 of Figure 1. At block 602, an object, such as the encrypted data object 102 of Figures 1 and 4, is received. In accordance with 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 indexes, and a sender key index encrypted with the combined peripheral keys.

[0084] In block 604, a request is sent to a KMS, such as KMS 110 of Figure 1, to derive a sender key from the encrypted sender key index and one or more peripheral key indexes included in the received object. If the receiving system has been given access to all peripheral keys corresponding to the one or more peripheral key indexes in the received object, and to the sender key, in block 606, the sender key is received from the KMS, and the one or more peripheral keys and the sender key are valid keys in the KMS, meaning they have not been deleted from the KMS prior to this request.

[0085] If the receiving system has not been given access to all peripheral keys corresponding to one or more peripheral key indexes in the received object and to the sending key, or if one or more of the peripheral keys or the sending key are invalid keys, then the sending key is not received from the KMS in block 606. If this occurs, in one or more embodiments of the invention, the KMS sends an error message to the requestor, and in other embodiments, the KMS simply does not respond to the request.

[0086] Block 608 is performed in response to the sender key received in block 606. At block 608, the encrypted session key is decrypted using the received sender key. Processing continues at block 610 with decrypting the session key encrypted data in the object using the session key to generate unencrypted data, such as data 108b of Figure 1. Data 108b may then be stored or input into a computer program.

[0087] 6 is not intended to imply that the operations of method 600 are performed in any particular order or that all operations of method 600 are included in all instances. Additionally, method 600 may include any suitable number of additional operations.

[0088] Turning now to Figure 7, a flow diagram of a method 700 for generating sender keys is generally shown in accordance with one or more embodiments of the present invention. All or a portion of the process shown in Figure 7 may be performed by, for example, computer hardware instructions, or software instructions, or a combination thereof, executed on the KMS 110 of Figure 1. At block 702, an encrypted sender key index and one or more peripheral key indexes are received from a requester, such as the receiving system 106 of Figure 1. At block 704, peripheral keys corresponding to the one or more peripheral key indexes are obtained, for example, from the peripheral keys and indexes 114 of Figure 1.

[0089] At block 706, if all peripheral keys corresponding to one or more peripheral key indexes are valid and the requestor has access to all of them, then the peripheral keys are combined in a manner similar to how they were combined at block 506 of Figure 5, and processing continues at block 708. If all peripheral keys corresponding to one or more peripheral key indexes are not valid, or the requestor does not have access to all of them, or a combination thereof, the processing illustrated in Figure 7 ends. In some embodiments, an error message is sent to the requestor, and in other embodiments, no error message is sent.

[0090] If the sender key is valid and the requestor has access to the sender key, at block 708, the sender key index is decrypted using the combined parameter key and block 710 is executed to transmit the sender key to the requestor. If the sender key is not valid at block 708, or the requestor does not have access to the sender key, or a combination thereof, the process illustrated in Figure 7 ends. In some embodiments, an error message is sent to the requestor, and in other embodiments, no error message is sent.

[0091] 7 is not intended to imply that the operations of method 700 are performed in any particular order or that all operations of method 700 are included in all instances. Additionally, method 700 may include any suitable number of additional operations.

[0092] Although this disclosure includes a detailed description of cloud computing, it is understood that implementation of the teachings described 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 later developed.

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

[0094] Its features are as follows.

[0095] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed without the need for human interaction with the service provider.

[0096] Broad Network Access: Functionality is available over the network and is accessed through standard mechanisms that facilitate use by heterogeneous thin-client or thick-client platforms (eg, cell phones, laptops, and PDAs).

[0097] Resource Pooling: Provider computing resources are pooled to serve multiple consumers using a multi-tenant model. Different physical and virtual resources are dynamically allocated and reallocated according to demand. There is location independence in that consumers generally have no control or knowledge over the exact location of the provided resources, but it may be possible to specify the location at a higher level of abstraction (e.g., country, state, or data center).

[0098] Rapid Elasticity: Capabilities can be provisioned quickly and adaptively, in some cases automatically, to quickly scale out and quickly de-provision and quickly scale in. To the consumer, it often feels like there is an unlimited amount of capacity available to provision, and any amount can be purchased at any time.

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

[0100] The service model is as follows:

[0101] Software as a Service (SaaS): The functionality offered to the consumer is the use of a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application functions, with the possible exception of limited user-specific application configuration settings.

[0102] Platform as a Service (PaaS): The capability offered to a consumer is to deploy applications that the consumer creates or acquires, written using programming languages ​​and tools supported by the provider, on a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the configuration of the environment that hosts the applications.

[0103] Infrastructure as a Service (IaaS): The functionality provided to consumers is to provision processing, storage, networking, and other underlying computing resources on which the consumer can deploy and run any software (which may include operating systems and applications). The consumer does not manage or control the underlying cloud infrastructure, but does have control over the operating systems, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).

[0104] The deployment model is as follows:

[0105] Private Cloud: The cloud infrastructure is operated exclusively for the organization. It can be managed by the organization or a third party and can exist on-premise or off-premise.

[0106] Community Cloud: Cloud infrastructure is shared by several organizations to support a specific community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). It can be managed by the organization or a third party and can exist on-premise or off-premise.

[0107] Public Cloud: The cloud infrastructure is made available to the general public or large industry entities and is owned by organizations that sell cloud services.

[0108] Hybrid Cloud: A cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are tied together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0109] Cloud computing environments are service-oriented with an emphasis on statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0110] Referring now to FIG. 8, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers (e.g., a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or a combination thereof) can communicate. The nodes 10 may communicate with each other. They may be physically or virtually grouped in one or more networks (not shown), such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or a combination thereof, as described herein above. This enables the cloud computing environment 50 to provide infrastructure, platform, or software, or a combination thereof, as a service, without the need for the cloud consumer to maintain resources on the local computing device. It will be understood that the types of computing devices 54A-54N shown in FIG. 8 are intended to be examples only, and that the computing node 10 and cloud computing environment 50 can communicate with any type of computerized device by any type of network or network addressable connection or both (e.g., using a web browser).

[0111] 9, a set of functional abstraction layers provided by cloud computing environment 50 (FIG. 8) is shown. It should be understood in advance that the components, layers, and functions shown in FIG. 9 are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0112] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (reduced instruction set computer) architecture based servers 62, servers 63, blade servers 64, storage devices 65, and networks 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 within which the following examples of virtual entities may be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.

[0114] In one example, management layer 80 may provide the functions described below: Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 tracks costs as resources are utilized within the cloud computing environment and provides billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification 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 allocation and management of cloud computing resources such that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance provisioning and procurement of cloud computing resources where future requirements are predicted according to SLAs.

[0115] The workload tier 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this tier include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instructional delivery 93, data analytics 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 other type of computing environment now known or later developed.

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

[0118] In one or more exemplary embodiments of the present invention, with respect to the hardware architecture, as shown in FIG. 10, a computer 1001 includes one or more processors 1005, a memory 1010 coupled to a memory controller 1015, and one or more input and / or output (I / O) devices 1040, 1045 (or peripherals) communicatively coupled via a local input / output controller 1035. The 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. The input / output controller 1035 may have additional elements such as controllers, buffers (caches), drivers, repeaters, and receivers that enable communication, which are omitted for brevity. Furthermore, the local interface may include address, control, or data connections, or combinations thereof, that enable appropriate communication between the above components. The input / output controller 1035 may include multiple sub-channels configured to access the output devices 1040 and 1045. The sub-channels may include fiber optic communication ports.

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

[0120] The memory 1010 may include any one or 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), tape, Compact Disc Read Only Memory (CD-ROM), disk, diskette, cartridge, cassette, etc. The memory 1010 may also incorporate electronic, magnetic, optical, or other types of storage media, or combinations thereof. It should be noted that the memory 1010 may have a distributed architecture, where various components are located remotely from one another, but can be accessed by the processor 1005.

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

[0122] In accordance with one or more embodiments of the invention, memory 1010 may include multiple logical partitions (LPARs), each running an instance of an operating system. The LPARs may be managed by a hypervisor, 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 can be coupled to the input / output controller 1035. Other output devices, such as I / O devices 1040, 1045, may include, for example, but are not limited to, input devices such as printers, scanners, microphones, and the like. Finally, I / O devices 1040, 1045 may further include devices that communicate both input and output, such as, for example, but are 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, and the like. 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, the system 1000 may further include a network interface 1060 for coupling to a network 1065. The network 1065 may be an IP-based network for communication between the computer 1001, any external servers, clients, and the like, via a broadband connection. The network 1065 transmits and receives data between the computer 1001 and the external system. In an exemplary embodiment, the network 1065 may be a managed IP network managed by a service provider. The network 1065 may be implemented in a wireless manner, for example, using wireless protocols and technologies such as WiFi, WiMax, and the like. The network 1065 may also be a packet-switched network, such as a local area network, a wide area network, a metropolitan area network, an Internet network, or other similar types of network environments. The network 1065 may be a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN), a personal area network (PAN), a virtual private network (VPN), an intranet, or other suitable network system, and includes equipment for receiving and transmitting signals.

[0125] If the computer 1001 is a PC, a workstation, an intelligent device, etc., the instructions in the memory 1010 may further include a Basic Input Output System (BIOS) (omitted for brevity). The BIOS is a set of basic software routines that initializes and tests the hardware at power-on, starts the OS 1011, and supports the transfer of data between hardware devices. The BIOS is stored in ROM so that the BIOS can be executed when the computer 1001 is powered on.

[0126] When computer 1001 is operating, processor 1005 is configured to execute instructions stored in memory 1010, to communicate data to and from memory 1010, and to generally control the operation of computer 1001 in accordance with the instructions. In accordance with one or more embodiments of the present invention, computer 1001 is an example of cloud computing node 10 of FIG.

[0127] Various embodiments of the present invention are described herein with reference to the associated drawings. Alternative embodiments of the present invention may be devised without departing from the scope of the present invention. Various connection and positional relationships (e.g., above, below, adjacent, etc.) are described between elements in the following description and drawings. These connection or positional relationships or combinations thereof may be direct or indirect unless otherwise specified, and the present invention is not intended to be limited in this respect. Thus, connections between entities may refer to direct or indirect connections, and positional relationships between entities may be direct or indirect positional relationships. Furthermore, various tasks and process steps described herein may be incorporated into a broader procedure or process having additional steps or functions not described in detail herein.

[0128] One or more of the methods described herein may be implemented by any one or combination of technologies, such as discrete logic circuits having logic gates that perform logical functions responsive to data signals, application specific integrated circuits (ASICs) having appropriate combinatorial logic gates, programmable gate arrays (PGAs), field programmable gate arrays (FPGAs), or the like, all well known in the art.

[0129] For the sake of brevity, conventional techniques related to making and using aspects of the present invention may or may not be described in detail herein. In particular, various aspects of computing systems and specific computer programs for implementing various technical features described herein are well known. Thus, for the sake of brevity, many conventional implementation details are mentioned only briefly herein or omitted entirely without providing details of well-known systems and / or processes.

[0130] In some embodiments, various functions or operations may be performed at a given location or in conjunction with the operation of one or more devices or systems, or combinations thereof. In some embodiments, a portion of a given function or operation may be performed at a first device or location, and the remainder of the function or operation 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 unless the context clearly indicates otherwise. It will be further understood that as used herein, the terms "comprise" and / or "comprising" specify the presence of stated features, integers, steps, operations, elements, or components, or combinations thereof, but do not preclude the presence or addition of one or more other features, integers, steps, operations, components of elements, or groups thereof, or combinations thereof.

[0132] The corresponding structures, materials, acts, and equivalents of all means or step-plus-function elements in the following claims are intended to include any structures, materials, or acts for performing functions in combination with elements of other claims that are specifically claimed. The present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosed form. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the present disclosure. The embodiments have been selected and described in order to best explain the principles and practical applications of the present disclosure, and to enable those skilled in the art to understand the present disclosure in various embodiments with various modifications as suited to the particular use contemplated.

[0133] The drawings illustrated herein are exemplary. There may be many variations to this diagram or the steps (or operations) described therein. For example, operations may be performed in a different order, or operations may be added, deleted, or modified. Also, the term "coupled" describes having a signal path between two elements, and does not imply a direct connection between the elements without an intervening element / connection therebetween. All of these variations are considered part of this disclosure.

[0134] The following definitions and abbreviations are used in interpreting the claims and the specification. As used herein, the terms "comprises," "comprising," "includes," "including," "has," "having," "contains," or "containing," or other variations thereof, are intended to cover a non-exclusive inclusion. For example, a composition, mixture, process, method, article, or device that includes a list of elements is not necessarily limited to only those elements and may include a list of other elements not expressly listed or inherent to such composition, mixture, process, method, article, or device.

[0135] Moreover, 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 number greater than or equal to one, i.e., 1, 2, 3, 4, etc. The term "multiple" is understood to include any integer number greater than or equal to two, i.e., 2, 3, 4, 5, etc. The term "connected" can include both indirect and direct "connections."

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

[0137] The present invention may be a system, method, or computer program product, or combination thereof, at any possible level of technical detail integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions that cause a processor to perform aspects of the present invention.

[0138] A computer-readable storage medium can be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium can be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the above. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memories (RAMs), read-only memories (ROMs), erasable programmable read-only memories (EPROMs or flash memories), static random access memories (SRAMs), portable compact disk read-only memories (CD-ROMs), digital versatile disks (DVDs), memory sticks, floppy disks, punch cards or mechanically encoded devices such as raised structures in grooves with instructions recorded therein, and any suitable combination of the above. Computer-readable storage medium, as used herein, should not be construed as a transitory signal per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or electrical signals transmitted through wires.

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

[0140] The computer readable program instructions for carrying out the operations of the present invention may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object oriented programming languages ​​such as Smalltalk® or C++, 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 stand-alone 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 scenario, 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 the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA), may execute computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry to perform aspects of the invention.

[0141] 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, special purpose computer or other programmable data processing apparatus to generate a machine such that the instructions executed by the processor of the computer or other programmable data processing apparatus create means for implementing the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams. These computer readable program instructions may also be stored on a computer readable storage medium, such that the instructions can instruct a computer, programmable data processing apparatus or other device, or combination thereof, to function in a particular manner, such that the computer readable storage medium having the instructions stored thereon includes an article of manufacture including instructions that implement aspects of the functions / operations specified in one or more blocks of the flowcharts and / or block diagrams.

[0143] The computer readable program instructions may also be loaded onto a computer, other programmable apparatus, or other device to cause the computer, other programmable data processing apparatus, or other device to execute a series of operational steps to generate a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0144] The flowcharts and block diagrams in the 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 the flowcharts or block diagrams may represent a module, segment, or portion of instructions that includes one or more executable instructions that implement a specified logical function. In some alternative implementations, the functions noted in the blocks may be performed in a different order than that noted in the drawings. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams or flowchart diagrams or combinations thereof, and combinations of blocks in the block diagrams or flowchart diagrams or combinations thereof, may be implemented by a special-purpose hardware-based system that executes the specified functions or operations, or executes a combination of special-purpose hardware and computer instructions.

[0145] The description of various embodiments of the present invention has been presented for illustrative purposes, but is not intended to be exhaustive or limiting of 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 terms used in this specification have been selected to best explain the principles of the embodiments, practical applications, or technical improvements to the technology found in the market, or to enable other skilled in the art to understand the embodiments described herein.

Claims

1. encrypting data by the one or more processors based at least in part on the session key to generate encrypted data; encrypting, by the one or more processors, the session key based at least in part on a sender key to generate an encrypted session key, the sender key having been previously obtained from a Key Management System (KMS); transmitting, by the one or more processors, a request for an encrypted sender key index to the KMS, the request including an index of the sender key and an index for each of one or more additional keys; receiving, by the one or more processors, the encrypted sender key index from the KMS, the encrypted sender key index generated by the KMS based at least in part on the sender key index and the one or more additional keys; generating, by the one or more processors, an object including the encrypted data, the encrypted session key, the index for each of the one or more further keys, and the encrypted sender key index, wherein access to the data via the object is controlled based at least in part on whether a receiver includes access to the sender key and the one or more further keys; A method for providing the above.

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

3. 3. The method of claim 2, further comprising preventing the receiver from accessing the data through the object, the preventing comprising transmitting a request to the KMS to revoke the sender key.

4. 3. The method of claim 2, further comprising preventing the recipient from accessing the data via the object, the preventing comprising transmitting a request to the KMS to revoke at least one of the one or more 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 recipient from a list of users having access to the sender's key.

6. 2. The method of claim 1, wherein access to the data via the object is modified in response to the KMS adding or removing the recipient from a list of users having access to an additional key of the one or more additional keys.

7. The method of claim 1 , further comprising the step of transmitting the object to the recipient.

8. The method of claim 7 , wherein the transmitting step occurs over a network.

9. A system comprising one or more processors for executing computer readable instructions, the computer readable instructions controlling the one or more processors to encrypting data based at least in part on the session key to generate encrypted data; encrypting the session key based at least in part on a sender key to generate an encrypted session key, the sender key being previously obtained from a key management system (KMS); transmitting a request to the KMS for an encryption sender key index, the request including an index of the sender key and an index of each of one or more additional keys; receiving the encrypted sender key index from the KMS, the encrypted sender key index being generated by the KMS based at least in part on the sender key index and the one or more additional keys; generating an object including the encrypted data, the encrypted session key, the index for each of the one or more further keys, and the encrypted sender key index, wherein access to the data via the object is controlled based at least in part on whether a receiver includes access to the sender key and the one or more further keys; Causes a system to perform operations including

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

11. 11. The system of claim 10, wherein the operations further include preventing the receiver from accessing the data through the object, the preventing including transmitting a request to the KMS to revoke the sender key.

12. 11. The system of claim 10, wherein the operations further include preventing the recipient from accessing the data via the object, the preventing including transmitting a request to the KMS to revoke at least one of the one or more additional keys.

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

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

15. 1. A computer program comprising program instructions executable by one or more processors, the program instructions causing the one or more processors to: encrypting data based at least in part on the session key to generate encrypted data; encrypting the session key based at least in part on a sender key to generate an encrypted session key, the sender key being previously obtained from a key management system (KMS); transmitting a request to the KMS for an encryption sender key index, the request including an index of the sender key and an index of each of one or more additional keys; receiving the encrypted sender key index from the KMS, the encrypted sender key index being generated by the KMS based at least in part on the sender key index and the one or more additional keys; generating an object including the encrypted data, the encrypted session key, the index for each of the one or more further keys, and the encrypted sender key index, wherein access to the data via the object is controlled based at least in part on whether a receiver includes access to the sender key and the one or more further keys; A computer program that causes a computer to perform operations including:

16. receiving, by one or more processors, an object including the encrypted data, the encrypted session key, an index for each of the one or more further keys, and an encrypted sender key index; transmitting, by the one or more processors, to a Key Management System (KMS) a request for a sender key corresponding to the encrypted sender key index, the request being from a requestor, the request including the encrypted sender key index and the index for each of the one or more additional keys; In response to receiving the sender key from the KMS, decrypting the encrypted session key based at least in part on the sender key to generate a session key; decrypting the encrypted data based at least in part on the session key to generate unencrypted data, the sender key being sent by the KMS to the requestor in response to a determination by the KMS that the requestor has access to the sender key and each of the one or more additional keys; A method for providing the above.

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

18. 20. The method of claim 17, wherein if the sender key is invalid, it is determined that the requestor does not have access to the sender key.

19. 17. The method of claim 16, further comprising receiving an error message from the KMS in response to a determination by the KMS that the requestor does not have access to all of the at least one or more additional keys.

20. 20. The method of claim 19, wherein if at least one of the one or more additional keys is invalid, it is determined that the requestor does not have access to all of the one or more additional keys.

21. receiving, by one or more processors, a request for a sender key from a requestor, said request including an encrypted sender key index and an index for each of one or more additional keys; determining whether the requestor has access to one or more additional keys identified by the index of each of the one or more additional keys; in response to determining that the requestor has access to the one or more additional keys, decrypting the encrypted sender key index to generate a sender key index; locating the sender key based at least in part on the sender key index; determining whether the requestor has access to the sender key; transmitting the sender key to the requestor based on a determination that the requestor has access to the sender key; A method for providing the above.

22. 22. The method of claim 21, further comprising generating the encrypted sender key index based at least in part on the sender key index and the index for each of the one or more additional keys.

23. The generating step includes: locating the one or more additional keys based at least in part on an index of each of the one or more additional keys; combining said one or more further keys into a combined further key; encrypting the sender key index based at least in part on the combined further key; 23. The method of claim 22, comprising:

Citation Information

Patent Citations

  • Key control system for multicast distribution

    JP2004166154A

  • Pluggable cipher suite negotiation

    US10033703B1

  • Method and system for protecting data using data passports

    US20150372991A1

  • Systems and methods for securely managing data in distributed systems

    WO2019204487A1