Concurrent master key rotation for redundant HSMs

The method and system for updating master keys within HSMs while software components are active address the complexity of key synchronization, allowing for continuous operation and improved security and efficiency in managing master keys.

JP2025509046APending Publication Date: 2025-04-11INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024545161
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-03-16
Filing Date
2023-02-20
Publication Date
2025-04-11

AI Technical Summary

Technical Problem

Existing technologies face challenges in efficiently updating the current master key with a new master key protected by hardware security modules (HSMs) while software components are active, due to the complexity of synchronizing master keys across multiple HSMs and software components.

Method used

A method and system for updating the current master key with a new master key, both protected by one or more HSMs, while a software component is active. This involves signaling the new master key to the software component, re-encrypting keys encrypted with the current master key, and storing the re-encrypted keys in newKey components of key objects, allowing the software component to continue running without interruption.

Benefits of technology

Enables seamless updating of master keys without disrupting active software components, reducing the need for manual intervention and improving the reliability and efficiency of master key management in secure computing environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025509046000001_ABST
    Figure 2025509046000001_ABST
Patent Text Reader

Abstract

A method is disclosed for updating a current master key (MK) protected by an HSM with a new MK while software components that use the key are active. The method includes signaling that the new master key has been loaded into the HSMs, re-encrypting the keys encrypted with the current MK, storing the re-encrypted keys as respective newKey components of key objects, where the current keys are stored in the curKey component of the key object, setting the new MK in a first HSM, and signaling active software components that the new MK has been set in at least one of the HSMs. Upon determining that the new MK has been set in the HSMs, restricting use of the HSM to the selected HSM, and upon determining that the new MK has been set in all HSMs, moving the value of newKey to the curKey component.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present disclosure relates to computer security, and more particularly, to updating a current master key with a new master key that is protected by a Hardware Security Module (HSM). [Background technology]

[0002] The security of data and communication channels is a high priority for the management of corporate IT (information technology). This is necessary not only due to government regulations (e.g. GDPR, EU General Data Protection Regulation) but also due to the loss of trust with the company in being able to reliably protect customer data at all times, thereby avoiding loss of sales and profits even if customer data records are compromised. Furthermore, data protection and the provision of a secure computing platform is not only related to software issues, but also to hardware modules. In a highly reliable enterprise-class computing environment, such as those used in the financial, insurance or government industries, it is essential to be able to demonstrate, from a technical point of view, that a data leak is likely to be prevented. This may require additional high-tech components and support processes. However, any additional efforts and / or costs that may be required pale in comparison to the associated success in terms of data security.

[0003] Although hardware security modules (HSMs) have been around for some time, synchronizing master keys across multiple HSMs and software components that use the services of HSMs is not trivial. Nevertheless, there are some disclosures regarding computer-implemented methods for changing master keys of HSMs. For example, the document U.S. Patent Application Publication No. 2020 / 0169401(A1) describes a system and technique for changing cryptographic keys in a high-frequency transaction environment to mitigate service interruptions or loss of transactions related to key maintenance. This allows a server device to employ a working key encrypted with a first master key to decrypt messages communicated from a client device, whereby each message is encrypted with a first cipher generated based on the working key encrypted with the first master key. Furthermore, the document U.S. Patent Application Publication No. 2020 / 0053065(A1) describes a set of hardware security modules in a database system implementing a key management system having a database that stores cryptographic keys or other secrets. The set of HSMs may identify a first key encryption key (KEK) and a second key encryption key stored in the set of HSMs. The set of HSMs may retrieve from the database a set of encryption keys encrypted with the first KEK and decrypt each encryption key in the set of encryption keys using the first KEK. The set of HSMs may then re-encrypt each encryption key in the set of encryption keys with the second KEK and send the set of encrypted encryption keys encrypted with the second KEK to the database for storage.

[0004] HSM key changes require special attention because they affect active software components that use the services of multiple HSMs. A master key protected in one or more HSMs may be used by software components to protect local keys. Therefore, whenever the master key on an HSM needs to be changed, also called a "key roll", all local keys encrypted with the actual master key must be re-encrypted with the new master key protected by the HSM. This is typically a multi-step process, and the steps of setting up the new master key in the HSMs and re-encrypting the already encrypted keys must be carefully coordinated.

[0005] Known problems in such environments can be identified in the context of performing master key rolls and local key re-encryptions while the software components using the encryption keys continue to run. One solution can be that the encrypted local key can be stored in a file and shared by multiple processes. Furthermore, the encrypted key can be a temporary object in the address space of the process related to the running software component. Furthermore, the master key used to encrypt the local key can be stored in multiple redundant HSMs accessible by the software components. However, technologies like openCryptoki or CCA (Common Cryptographic Architecture) are not yet able to elegantly meet this requirement.

[0006] Therefore, all of the potential solutions require special handling and often administrative support. Therefore, there may be a need to overcome the cumbersome process of this master key roll activity and prepare it for better automation characteristics that do not require special handling or human interaction. Summary of the Invention

[0007] According to one aspect of the disclosure, a method may be provided for updating a current master key with a new master key, both protected by one or more hardware security modules (HSMs), while a software component is active that uses one or more keys each protected by an encrypted current master key. The method may include signaling to the active software component that the new master key has been loaded into the one or more HSMs, re-encrypting, by the software component, one or more keys encrypted with the current MK, and storing, respectively, the re-encrypted one or more keys in respective newKey components of respective key objects used by the active software component, where each current key encrypted by the current MK is stored in a respective curKey component of the respective key object. The method may further include setting the new master key in a first HSM of the HSMs, and signaling to the active software component that the new master key has been set in at least one of the HSMs. The method also includes, when the software component determines that the new master key has been set in at least one HSM, restricting usage of the HSMs to a selected single one of the HSMs using a respective value stored in a key component selected from a group consisting of a respective curKey component and a respective newKey component, and, when the software component determines that the new master key has been set in all HSMs, moving the respective values ​​of the respective newKey components to respective curKey components for all key objects.

[0008] According to another aspect of the present disclosure, a concurrent master key change system for updating a current master key with a new master key may be provided, the system comprising: a processor; and a memory communicatively coupled to the processor, the memory storing program code portions that, when executed, enable the processor to: signal an active software component that a new master key has been loaded into one or more HSMs; re-encrypt, by the software component, one or more keys encrypted with the current master key; store, respectively, the re-encrypted one or more keys in respective newKey components of respective key objects used by the active software component, where each current key encrypted by the current MK is stored in a respective curKey component of the respective key object; set the new master key in a first HSM of the HSMs; and signal the active software component that the new master key has been set in at least one of the HSMs. The processor may be further enabled, when the software component determines that the new master key is set in at least one HSM, to restrict usage of the HSMs to a selected single one of the HSMs using a respective value stored in a key component selected from a group consisting of a respective curKey component and a respective newKey component, and, when the processor determines that the new master key is set in all HSMs, to move values ​​of the respective newKey components to respective curKey components in all key objects.

[0009] The proposed method for updating a current master key with a new master key while a software component is active may provide multiple advantages, technical effects, contributions, or improvements, or a combination thereof. In the context of secure master key management using HSMs, a master key change may represent a challenging situation where other keys encrypted with the master key cannot be used continuously. That is, typically, using known techniques, one should stop using "good keys" encrypted by the master key until the master key change or master key roll is over. However, for many high availability applications, this is a heavy burden in terms of application and system uptime guarantees. This dilemma may be successfully addressed by the concepts proposed in this disclosure.

[0010] More specifically, the distinction between a current key (curKey) and a new key (newKey), which may be encrypted by the current and new master keys, may resolve the dilemma mentioned above. Hence, a software component or application that uses the services of one or more HSMs to encrypt local keys may remain active, i.e. continue its execution. It does not need to be stopped until the key roll of the HSM's master key is completed. This may represent a major advantage for continuously running applications, for example, banking applications, transaction systems in online sales operations, and continuous manufacturing processes. Other examples may exist.

[0011] The proposed concept may also address the case where the software components actually executed include multiple (sub)processes or services sharing secure keys stored in a key repository. It may also include multiple HSMs that may all be configured to use the same MK to increase redundancy and / or throughput. Thus, the proposed concept may allow reducing the requirements for synchronization between multiple processes, services or application components by choosing the use of a single HSM during critical MK roll phases. At the same time, it may reduce the requirements or impacts of redundancy and / or throughput by allowing as many operations as possible outside of critical MK roll phases.

[0012] Below, additional embodiments of the present disclosure are described that are applicable to systems as well as methods.

[0013] According to an advantageous embodiment, the method may also include, upon determining by the HSM event signaling tool that a master key load or master key set operation has occurred in one of the HSMs, signaling the respective event to an active software component. This may permit or enable the active software component to respond appropriately, for example, by employing a local or temporary key associated with the software component. Thus, key handling may be organized in a manner that does not interfere with business or other technical processes supported by the software component. That is, the master key roll process is in effect outside the HSM and the associated software component.

[0014] According to another advantageous embodiment, the method may also include re-encrypting key objects persistently stored in the key repository when the HSM event signaling determines that a master key load operation has occurred on one or more HSMs. This means that the software components, in particular one or more of them, may take over the proper handling of local keys, i.e. keys local to the software, by decrypting the existing encrypted key and re-encrypting it with the new master key. In this way, seamless operation may be achieved. Additionally, keys stored in the key repository and that are not ephemeral may also be re-encrypted in the manner described above.

[0015] According to yet another advantageous embodiment, the method may include, if the HSM event signaling tool determines that a master key configuration operation has been performed on all HSMs, moving the value of the newKey component of the key object to the curKey component of the key object persistently stored in the key repository, whereby the newKey component and the curKey component must be part of the same key object. Thus, the curKey component of the key object now holds the old "real key", encrypted using the old, i.e., not real, master key.

[0016] According to another advantageous embodiment of the method, determining by the software component that a new master key is set in at least one HSM may also include (i) receiving by the software component a new-MK-set signal (new-master-key-set signal) or (ii) determining by the software component that an error code indicating the use of an outdated master key, i.e., the curKey component of a local key encrypted with a previous master key. Thus, determining that a new master key is set in at least one HSM may be performed using different indicators and is not limited to using only the new-MK-set signal.

[0017] According to another advantageous embodiment, the method may also include, when it is determined that all key objects encrypted with the current master key are re-encrypted with the new master key, sending an all-keys-re-ciphered signal to the HSM-set-new-MK component in order to trigger the setting of all new master keys on all HSMs, in particular by the software component. This activity may end the setting phase of the new master keys in the HSMs. Thus, the loading phase for the new master key in one or more HSMs may be merely a transition state of the process of making the new master key available, i.e. a temporary phase of the master key roll operation.

[0018] According to another advantageous embodiment, the method may also include, inter alia, upon receiving a signal by the software component that a new master key is being loaded, generating, by the active software component, a new key (i.e., a new key value) using the HSM, storing, by the active software component, the new key in a curKey component of a key object, re-encrypting the new key, and, if the re-encryption is successful, storing the re-encrypted key in a newKey component of the key object.

[0019] In other words, when a new master key is loaded and not specifically activated, i.e., configured, multiple activities may occur under the control of the software components to prepare local keys under the control of the software components for subsequent configuration of the new master key in one or more HSMs.

[0020] According to another embodiment, the method may also include, upon determining by the software component that a new master key has been set in at least one HSM and that a key object without the newKey component cannot be used in the HSM, delaying use of the key object until a new master key has been set in the HSM, e.g., if an error is triggered. After a delay of a predetermined time, this part of the process may be triggered until an error is no longer triggered.

[0021] Such error triggers may also be used by other software components, and can only occur for persistent keys where the movement of newKey would conflict with HSM synchronization, i.e. persistent key objects being processed by another software component that has already moved the previous key into the curKey component of the respective key object.

[0022] According to another embodiment, the method may also include writing the value of the curKey component of the key object before moving the value of the newKey component of the key object to the curKey component. Thus, the key object may include not only a newKey component and a curKey component, but also an oldKey component. As a result, the value of the curKey component may be written to the oldKey component before moving the value of the newKey component to curKey. Thus, the keys of the software components may be maintained for two generations of new master keys.

[0023] According to another advantageous embodiment, the method may further include, upon initiation of the software component, i.e., activation or start of execution, and upon determining that a master key change process is in progress, determining the stage of the ongoing master key change process. In this way, the newly initiated software component may integrate itself in the key roll process of the other software components and the HSM to change to a new master key.

[0024] Also, additional embodiments of the proposed concept may be possible. For example, the HSM may also contain a register for the current master key and a register for the new master key. In this way, the history of master key changes may be managed by the HSM's controller.

[0025] As another example, signaling between one or more HSMs and the software component may be coordinated and performed by an HSM management tool. As yet another example, the HSM management tool may communicate with an HSM event signaling tool that may execute on a computer system on which the software component is also active. In yet another example, when a new HSM master key is set in one or more HSMs, each new HSM master key signal may be sent to the HSM event signaling tool.

[0026] Additionally, the proposed concept may utilize an HSM event signaling tool to transmit a corresponding new HSM master key signal to processes using one or more keys upon receipt of each new master key signal from the HSM event signaling tool. Finally, multiple key objects may be persisted, i.e., permanently stored, in a repository.

[0027] It may also be considered that not only permanent keys but also temporary keys of a software component may be managed by the software component. In some embodiments, for these temporary keys, a key object may be used, including a curKey component and a newKey component. Thereby, the temporary keys may be active only as long as the software component may be activated, i.e., they do not survive a restart of the software component. For this reason, permanent keys may be used by the software component.

[0028] Additionally, the embodiments may take the form of an associated computer program product accessible from a computer usable or computer readable medium that provides program code for use by or in connection with a computer or any instruction execution system. For purposes of this description, a computer usable or computer readable medium may be any apparatus that may include hardware for storing, communicating, propagating, or transmitting a program for use by or in connection with an instruction execution system, apparatus, or device. Such embodiments may be capable of performing functions similar to those described above with respect to the methods and systems, and may thereby achieve the same advantages as those described above with respect to the methods and systems.

[0029] This summary is not intended to describe every aspect of every implementation and / or embodiment of the present disclosure.

[0030] The drawings included in this application are incorporated in and form a part of the specification. They illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the disclosure. The drawings are only illustrative of certain embodiments and are not intended to limit the disclosure.

[0031] It should be noted that the embodiments of the present disclosure are described in relation to different subject matters. In particular, some embodiments are described in relation to method type claims, and other embodiments are described in relation to device type claims. However, a person skilled in the art will infer from the above and following description that, unless otherwise stated, any combination of features belonging to one type of subject matter, as well as any combination between features relating to different subject matters, in particular between features of a method type claim and a device type claim, is also considered to be disclosed in this document.

[0032] The above defined aspects and further aspects of the present disclosure will be apparent from and will be explained with reference to the example embodiments described hereinafter, to which the present disclosure is not limited. Various embodiments of the present disclosure are described, by way of example only, and with reference to the following drawings, in which: [Brief description of the drawings]

[0033] [Figure 1] FIG. 1 is a block diagram of one embodiment of a method for updating a current master key with a new master key, both protected by one or more Hardware Security Modules (HSMs), while software components that use one or more keys, each encrypted by the current MK, are active, in accordance with an embodiment of the present disclosure. [Diagram 2] FIG. 1 is a block diagram of an embodiment in which aspects of the present disclosure may be implemented, in accordance with an embodiment of the present disclosure. [Diagram 3] 1 is a flow chart of one embodiment of a proposed concept reflecting stage III of Table 1, according to an embodiment of the present disclosure. [Figure 4] 1 is a flowchart of one embodiment of a proposed concept reflecting stage V of Table 1, according to an embodiment of the present disclosure. [Diagram 5] 1 is another flowchart of an embodiment of the proposed concept reflecting another portion of Stage V of Table 1, according to an embodiment of the present disclosure. [Figure 6] FIG. 2 is a block diagram of one embodiment of a concurrent master key change system that updates a current master key with a new master key in accordance with an embodiment of the present disclosure. [Figure 7] FIG. 7 illustrates an embodiment of a computing system including a system according to FIG. 6, in accordance with an embodiment of the present disclosure. [Figure 8] FIG. 1 illustrates a cloud computing environment in which at least a portion of the present disclosure may be deployed, according to an embodiment of the present disclosure. [Figure 9] FIG. 1 illustrates components of a cloud computing environment in accordance with an embodiment of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0034] While the present disclosure is amenable to various modifications and alternative forms, specifics thereof have been shown by way of example in the drawings and will be described in detail. It is to be understood, however, that there is no intention to limit the disclosure to the particular embodiments described. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present disclosure.

[0035] Aspects of the present disclosure are directed to computer security, and more specifically, to updating a current master key with a new master key protected by a Hardware Security Module (HSM). Although not limited to such applications, embodiments of the present disclosure may be better understood in light of the foregoing context.

[0036] The present disclosure relates generally to a method for updating a current master key with a new master key protected by a Hardware Security Module (HSM) while software components using one or more local keys are active, and more specifically to a method for updating a current master key with a new master key, both protected by one or more Hardware Security Modules (HSM), while software components using one or more keys, each encrypted by the current master key (MK), are active. The present disclosure further relates to an associated concurrent master key change system, and computer program product for updating the current master key with the new master key.

[0037] In the context of this description, the following conventions, terms, or expressions, or combinations thereof, may be used.

[0038] The term "current master key" may refer to a key used by a software component for encryption purposes. A master key may be used to encrypt a persistent or permanent key or a temporary key used by the software component. A temporary key may only exist as long as the software component is running. A permanent key may survive the end of the software component's execution by storing the key in a key repository. In this way, the key may be used by different software components. The key itself is typically encrypted by a master key. This encryption may be performed with the help of an HSM that may hold the encryption master key. The current master key may be the one actually in use.

[0039] The term "new master key" may refer to the master key to be used from a particular time, especially after a master key roll process, which may refer to the change of the master key in an HSM (or multiple HSMs). The new master key may be activated in different steps. The first step may refer to loading the new master key, and the actual activation of the new master key may refer to setting the new master key.

[0040] The term "hardware security module (HSM)" may refer to a physical computing device that safeguards and manages digital keys and performs digital signature encryption and decryption functions, strong authentication, or other cryptographic functions, or a combination thereof. These modules traditionally appear in the form of plug-in cards or external devices that attach directly to a computer or network server. They also contain one or more secure crypto-processor chips. HSMs are typically used to manage, control, and protect master keys used by other components of a computer or network system. Although securely stored in the HSM, security protocols also require that such master keys be replaced from time to time with new ones, i.e., undergo a master key roll process.

[0041] The term "software component" may refer to any form of executable code, for example, in the form of an application, a service, a Docker container, a virtual machine, etc. A software component may manage its own keys, which may themselves be encrypted with master keys from one or more HSMs.

[0042] The term "active" may refer to the state of a software component during which the software component is running or waiting but has not been explicitly terminated or started.

[0043] The term "one or more keys" may refer to the fact that a software component may manage and organize its own keys for different purposes. They may be persistent / permanent keys or temporary keys.

[0044] The term "re-encryption" may refer to a multi-step process in which an encrypted term, e.g., a key managed by a software component, may be decrypted with an actual decryption key and newly encrypted with a new encryption key. In the case of a symmetric key design, the actual decryption key and the original encryption key may be identical. However, the new encryption key may be different compared to the old or current encryption key.

[0045] The term "key object" may refer to a data or storage structure that can distinguish between the data value of the current key, curKey, and the data value of the new key, newKey. Thus, a key object may be capable of storing two different key values. In an alternative embodiment, it may be possible to store three different versions of the key: curKey, newKey, and oldKey.

[0046] The term "configuring", as used here in the context of HSMs, can refer to a new master key being activated for use by the HSM. However, in order for a new master key to be activated, it must also be preloaded. Similarly, configuring a new master key requires that the new master key be preloaded.

[0047] The term "curKey component" may refer to a key that a software component is currently using and that may soon be replaced by a new key. Both of these key versions may be protected by a master key provided by the HSM. However, the newKey used by the software component may be encrypted with the new master key from the HSM. Additionally, the software component may use a new key value before it can also be encrypted with the new master key.

[0048] The term "newKey component" may refer to a field or portion of a key object where the new encrypted key value (encrypted with the HSM's new master key) can be stored.

[0049] The term "oldKey component" refers to a 0 The current key at time t 1 (t 1 >t 0 ), or better its encrypted equivalent.

[0050] Because this disclosure may also be implemented in the context of cloud computing, several additional terms are defined.

[0051] The term "cloud computing", and equivalently the more specific term "cloud service environment", in this context may be interpreted as a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with a service provider. This cloud model promotes availability and consists of at least five essential characteristics, three service models, and four deployment models:

[0052] The essential characteristics of cloud computing are:

[0053] On-demand self-service. Consumers may unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without the need for human interaction with the service provider.

[0054] Broad network access. Capabilities are available over the network and can be accessed using standard mechanisms, facilitating use by heterogeneous thin-client or thick-client platforms (e.g., cell phones, laptops, and PDAs).

[0055] Resource Pools. A provider's computing resources are pooled and offered to multiple consumers using a multi-tenant model, with various physical and virtual resources dynamically allocated and reallocated according to consumer demand. There is a sense of location independence in that consumers typically have no control or knowledge regarding the exact location of the resources offered, although at a higher level of abstraction a location (e.g., country, state, or data center) may be specified. Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.

[0056] Rapid Elasticity. Capacity is provisioned quickly and elastically, sometimes automatically, and can be quickly scaled out and quickly released to quickly scale in. Capacity available for provisioning often appears to the consumer as unlimited, available for purchase in any quantity at any time.

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

[0058] Service models using cloud computing include:

[0059] Cloud Software as a Service (SaaS). The customer is provided with the ability to use the provider's applications running on a cloud infrastructure. Those applications can be accessed from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The customer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or individual application functionality, except for the possibility of limited user-specific application configuration settings.

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

[0061] Cloud Infrastructure as a Service (IaaS). The capability provided to a customer is the provisioning of processing, storage, network, and other basic computing resources over which the customer can deploy and run any software, which may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but has control over the operating systems, storage, deployed applications, and in some cases limited control over selected networking components (e.g., host firewalls).

[0062] The deployment models for cloud computing are as follows:

[0063] Private Cloud. The cloud infrastructure is operated solely by the organization. It may be managed by the organization or a third party and may exist on-premise or off-premise.

[0064] Community Cloud. The cloud infrastructure is shared by multiple organizations to support a particular community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). It may be managed by the organizations or a third party and may exist on-premise or off-premise.

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

[0066] Hybrid Cloud: The cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain a unique entity but are joined by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0067] Note that cloud software takes full advantage of the cloud paradigm by being service-oriented with a focus on statelessness (with exceptions), low coupling, modularity, and semantic interoperability.

[0068] In the following a detailed description of the figures is given. All indications in the figures are schematic. First a block diagram of an embodiment of a method for updating a current master key with a new master key while software components are active is shown. Then an embodiment of a parallel master key change system for updating a current master key with a new master key as well as further embodiments are described.

[0069] 1 illustrates a block diagram of a method 100 for updating a current master key (MK) with a new master key, both protected by one or more Hardware Security Modules (HSMs), while software components that use one or more keys, each encrypted by the current master key, are active. That is, both the current master key and the new MK may be stored on / in the HSM in encrypted form.

[0070] A software component, e.g. a software service, an application program, a virtual machine, a Docker container, etc., may use one or more keys for its operation. These keys may be protected by a master key, the current MK, i.e. curKey, or a new MK, i.e. newKey. The keys used by the software component may be either persistent / permanent, i.e. stored in persistent storage, or only ephemeral, i.e. valid only until the software component finishes execution. However, the protection options are the same.

[0071] At issue is that updating the master key while the software components are running is handled by method 100 as follows: First, active software components are signaled 102 (typically on an event-based basis) that a new master key has been loaded into one or more HSMs. There are various ways to accomplish this, which will be understood by those skilled in the art and need not be described.

[0072] The software component then re-encrypts 104 one or more keys encrypted with the current MK, which may also be triggered by signaling 102. The re-encryption includes at least the steps of decrypting with the current master key and encrypting again with the new master key.

[0073] Each of the re-encrypted key or keys shall be stored 106 in a respective newKey component of a respective key object used by the active software component. Such a key object shall exist for each key used by the software component. The key object shall have storage locations for at least the current key, i.e. curKey (the key encrypted with the previous master key) and the new key, i.e. newKey (the key already encrypted with the new master key). Both key parts shall be stored in encrypted form in the respective key object.

[0074] The method 100 then includes setting 108 a new master key in a first one of the HSMs, i.e., activating / replacing the curMK with newMK, and signaling 110 to an active software component that the new master key has been set in at least one of the HSMs.

[0075] Once the software component determines 112 that a new master key has been set in at least one HSM (e.g., on an event basis or an error activated by the software component if, for example, a used key does not work), the software component restricts 114 the use of the HSMs to a selected single one of the HSMs using the respective values ​​stored in a key component selected from the group consisting of the curKey component and the newKey component of the respective key object depending on the selected HSM. The single one of the HSMs is typically the HSM that holds the new master key, but it may also be the HSM with the old master key if, for example, an HSM with the new master key set is not accessible at the time of selection.

[0076] Additionally, the method 100 includes, upon determining 116 that the new master key has been set in all HSMs, moving 118 the value of the newKey component to the curKey component in all key objects. In this manner, a complete master key change cycle is performed without stopping the execution of software components as current master key roll approaches typically require. Thus, it is no longer necessary to restrict the use of the HSMs to a selected single one of the HSMs, as referred to by reference numeral 114. Thus, the restriction can be lifted.

[0077] FIG. 2 illustrates a block diagram of components of an embodiment 200 in which aspects of the present disclosure may be advantageously employed and in which context are described herein. A computer system 202 may be configured to execute a software component 204 or process. The software component 204 may use or manage one or more keys, represented here as a key object 206 having at least two entries or portions for a current key, i.e., curKey 208. The curKey 208 is typically encrypted with a current or actual master key (MK) 212 managed in an HSM 216. The key object 206 also includes another portion for storing a newKey 210, which is typically a newly generated key of the software component 204 encrypted with a new master key 214 (newMK) of the HSM 216. As illustrated, multiple HSMs 216-n (HSM-n) may be used, where n may represent any positive integer.

[0078] It should also be noted that each HSM 216 may have a current master key 212 (curMK) register that stores the currently set master key. In addition, there is also a new master key 214 (newMK) register to store a new master key that may be currently loaded but has not yet been set as the current master key 212.

[0079] The HSM 216 is typically managed by an HSM management tool 218 supported by an HSM event signaling tool 220. The key repository 222 may store persistent key objects that contain the curKey and newKey elements or portions of keys used by one or more software components or applications or services. In the case of ephemeral keys, the key object 206 exists only as long as the software component 204 is executing. The communication paths between the different components of the illustrated embodiment 200 can be understood in the context of the flowcharts described in the following sections.

[0080] Several stages in the master key roll process can be distinguished, as shown in Table 1 below.

[0081] [Table 1]

[0082] The following three diagrams refer to the different stages in Table 1.

[0083] FIG. 3 illustrates a method 300 for re-encryption stage 3 of Table 1. Each key used by the software components i But the key object i Field curKey i The actual key used has been or will be moved 302 to i is then re-encrypted 304, i.e., decrypted with the old master key and newly encrypted with the new master key of each HSM. The re-encrypted key i is the key object i New Key i Then, all the keys used by the software component are stored in the i It is determined 308 whether all keys (either permanent / permanent or temporary keys or both) have been through this process. If not, i.e. "N", then the method 300 loops back to the beginning: if all keys have been re-encrypted, the process continues 310 with newKey.

[0084] 4 illustrates a method 400 for step 5 of Table 1, i.e., when a new master key has been set on at least one HSM. If this is determined 402, and if it is determined 404 that a new master key has been set on the selected HSMs that are currently in use (i.e., are of limited use), then a key is generated 406 within the software component, and the software component's actual used key is stored 408 in the curKey portion of the respective key object by the software component. A persistent key is then stored 410 in the associated key repository.

[0085] If during decision 404 it is determined that the new master key is not set on the single HSM currently being used, i.e., "N", then also in this branch a key is generated 412 by the software component and re-encrypted 414 with the new master key of each HSM as newKey. As an additional step, the newly generated key may also be used by the software component. The encryption with the new master key may fail because the new master key has been set, i.e., activated, and thus the new MK register is already empty and re-encryption is not possible. If this part of the process was not successful (decision 416), i.e., "N", then the process returns to decision 404. Otherwise, i.e., "Y", then the process continues with storing 418 the actually used key in the curKey field of the respective key object and storing 420 the re-encrypted key in the newKey field of the respective key object. The process then continues with storing 410 the persistent key in the key repository and continuing 422 the ongoing process of the software component.

[0086] FIG. 5 illustrates another method 500 of step 5 of Table 1. Again, the starting point is a determination 502 that a new master key has been set on at least one HSM. If so, "Y", the method 500 may determine 504 whether use of the key fails due to a master key mismatch. If so, "Y", it is determined 506 whether newKey exists for each key object. If so, "Y", a retry 508 is performed using newKey. Also, for temporary keys, the contents of the curKey field of the respective key component are set 510 to the newKey field. The software component may then continue 514 with its normal operation.

[0087] Alternatively, if newKey is not present during decision 506, 'N', the process may wait 512 until a new master key is set on all HSMs. The process may then continue 514 with its normal operation.

[0088] FIG. 6 illustrates a block diagram of one embodiment of a concurrent master key change system 600 for updating a current master key with a new master key, both protected by one or more hardware security modules (HSMs) 606 (compare also 216, 216-n in FIG. 2) while software components executed on execution hardware 608 (compare also 202 in FIG. 2; such correspondence may also be used for other components between FIG. 2 and FIG. 6) are active, each of which uses one or more keys (i.e., key objects) encrypted by a current MK. The concurrent master key change system 600 includes a processor 602 and a memory 604 communicatively coupled to the processor 602. The memory 604 thereby stores program code portions that, when executed, enable the processor 602 to signal to an HSM management tool, and in particular to a signaling module 610, active software components executed on the execution hardware 608 that a new master key has been loaded into the one or more HSMs 606.

[0089] Processor 602 is also enabled to support re-encrypting one or more keys encrypted with the current master key by a re-encryption unit 612 controlled by execution of active software components executing on execution hardware 608 to enable re-encryption within HSM 606. Processor 602 is also enabled to support storing, using key object storage module 614, the re-encrypted one or more keys in respective newKey components of respective key objects used by the active software components, and each current key encrypted with the current MK is stored in a respective curKey component of the respective key object.

[0090] The processor 602 may also support setting a new master key in a first HSM of the HSMs, in particular by the setting unit 616, and signaling to active software components, in particular by the signaling module 610 or the second signaling module, that a new master key has been set in at least one of the HSMs.

[0091] Furthermore, when the processor 602 determines, inter alia, by the first determination unit 618 controlled by the software component, that a new master key has been set in at least one HSM 606, the processor 602 is also enabled, inter alia, by the restriction module 620 controlled by the software component, to restrict the usage of the HSM to a selected single one of the HSMs using the respective values ​​stored in a key component selected from the group consisting of the curKey component and the newKey component of the respective key object depending on the selected HSM.

[0092] Furthermore, the processor 602 is also enabled to move, particularly by a key movement unit 622, the value of the newKey component to the curKey component in all key objects once it determines, particularly by a second determination unit (not shown) or the same determination unit 618, that the new master key has been set in all HSMs.

[0093] It should also be mentioned that all the functional units, modules, and functional blocks, in particular the processor 602, memory 604, HSM 606, software component execution hardware 608, signaling module 610, re-encryption unit 612, storage module 614, configuration unit 616, determination unit 618, restriction module 620, and transfer unit 622, may be communicatively coupled to each other for selective one-to-one signal or message exchange, or may be linked to a system internal bus system 624 for selective signal or message exchange.

[0094] The embodiments of the present disclosure may be implemented with virtually any kind of computer, regardless of whether the platform is suitable for storing and / or executing program code.

[0095] FIG. 7 illustrates, by way of example, a computing system 700 suitable for executing program code relating to the proposed method.

[0096] Computing system 700 is merely one example of a suitable computer system, and whether computer system 700 is capable of implementing and / or performing any of the functions described above is not intended to suggest any limitation as to the scope of use or functionality of the embodiments of the present disclosure described herein. Computer system 700 has components that operate in many other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, or configurations, or combinations thereof, that may be suitable for use with computer system / server 700 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable appliances, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices. Computer system / server 700 may be described in the general context of computer system executable instructions, such as program modules, executed by computer system 700. Generally, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer system / server 700 may be practiced in a distributed cloud computing environment where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.

[0097] As shown, computer system / server 700 is shown in the form of a general purpose computing device. Components of computer system / server 700 may include, but are not limited to, one or more processing units or processors 702, a system memory 704, and a bus 706 coupling various system components including the system memory 704 to the processor 702. Bus 706 represents one or more of any of several types of bus structures including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnects (PCI) bus. Computer system / server 700 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system / server 700 and includes both volatile and nonvolatile media, removable and non-removable media.

[0098] The system memory 704 may include computer system readable media in the form of volatile memory, such as random access memory (RAM) 708 and / or cache memory 710. The computer system / server 700 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, a storage system 712 may be provided for reading from and writing to a non-removable non-volatile magnetic medium (not shown, typically referred to as a "hard drive"). Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable non-volatile magnetic disk (e.g., a "floppy disk"), as well as an optical disk drive for reading from or writing to a removable non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media. In such a case, each may be connected to the bus 706 by one or more data media interfaces. As further illustrated and described below, memory 704 may include at least one program product having a set (e.g., at least one) of program modules configured to perform functions of embodiments of the present disclosure.

[0099] By way of example and not limitation, a program / utility having a set (at least one) of program modules 716 may be stored in memory 704, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or any combination thereof, may include an implementation of a networking environment. The program modules 716 generally perform the functions and / or methodologies of embodiments of the present disclosure as described herein.

[0100] The computer system / server 700 may also communicate with one or more external devices 718, such as a keyboard, pointing device, display 720, one or more devices that allow a user to interact with the computer system / server 700, or any device that allows the computer system / server 700 to communicate with one or more other computing devices (e.g., network cards, modems, etc.), or combinations thereof. Such communication may occur through an input / output (I / O) interface 714. The computer system / server 700 may nevertheless communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), or a public network (e.g., the Internet), or combinations thereof, through a network adapter 722. As shown, the network adapter 722 may communicate with other components of the computer system / server 700 through a bus 706. Although not shown, it should be understood that other hardware and / or software components may be used in conjunction with the computer system / server 700. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.

[0101] Additionally, a parallel master key change system 600 for updating a current master key with a new master key may be attached to the bus 706 .

[0102] FIG. 8 illustrates a cloud computing environment 800 in which at least a portion of the present disclosure may be deployed. A set of functional abstraction layers provided by the cloud computing environment is illustrated. It should be understood in advance that the components, layers, and functions illustrated in FIG. 8 are intended to be merely exemplary, and that embodiments of the present disclosure are not limited thereto. As illustrated, the following layers and corresponding functions are provided: Hardware and software layer 802 includes hardware and software components. Examples of hardware components include mainframe 804, server 806, Reduced Instruction Set Computer (RISC) architecture-based server 808, blade server 810, storage device 812, and network and networking components 814. In some embodiments, the software components include network application server software 816 and / or database software 818.

[0103] The virtualization layer 820 comprises an abstraction layer at which virtual entities such as virtual servers 822, virtual storage 824, virtual networks 826 including virtual private networks, virtual applications and operating systems 828, and virtual clients 830 may be provided. In one example, the management layer 832 may provide the functions described below. Resource provisioning 834 provides dynamic procurement of computing and other resources utilized to perform tasks within the cloud computing environment. Metering and pricing 836 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the utilization of those resources. In one example, those resources may include application software licenses. Security provides identity verification of cloud users and tasks as well as protection of data and other resources. A user portal 838 provides access to the cloud computing environment to users and system administrators. Service level management 840 provides allocation and management of cloud computing resources to meet required service levels. Service Level Agreement (SLA) Planning and Execution 842 involves the advance preparation and procurement of cloud computing resources in accordance with SLAs in anticipation of future demand.

[0104] The workload layer 844 provides examples of functionality for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this layer include mapping and navigation 846, software development and lifecycle management 848, virtual classroom instructional delivery 850, data analytics processing 652, transaction processing 854, and a concurrent master key change system 856 (also compare 600 in FIG. 6).

[0105] FIG. 9 illustrates components 900 of a cloud computing environment 902. As illustrated, the cloud computing environment 902 includes one or more cloud computing nodes 904 with which local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or cell phone 906, a desktop computer 908, a laptop computer 910, or an automobile computer system 912, or combinations thereof, may communicate. The nodes 904 may communicate with each other. They may be physically or virtually grouped in one or more networks, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as previously described (not shown). This allows the cloud computing environment 902 to provide an infrastructure, platform, and / or SaaS that does not require the cloud consumer to maintain resources on a local computing device. It will be understood that the types of computing nodes 904 illustrated in FIG. 9 are intended to be exemplary only, and that the computing nodes 904 and cloud computing environment 902 may communicate with any type of computer-controlled device via any type of network and / or network-addressable connection (e.g., a connection using a web browser).

[0106] The description of various embodiments of the present disclosure is presented for illustrative purposes, but is not intended to be exhaustive and is not limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used in this specification are selected to best explain the principles of the embodiments, practical applications, or technical improvements to the technology found in the market, or to allow other skilled in the art to understand the embodiments disclosed herein.

[0107] The present disclosure may be embodied as a system, method, or computer program product, or a combination thereof. The computer program product may include a computer-readable storage medium (or multiple computer-readable storage media) having computer-readable program instructions for causing a processor to perform aspects of the present disclosure.

[0108] The medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system for a propagation medium. Examples of a computer-readable medium may include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include compact disk-read-only memory (CD-ROM), compact disk-read / write (CD R / W), DVD, and Blu-ray Disc(R).

[0109] A computer-readable storage medium may be a tangible device capable of holding and storing instructions for use by an instruction execution device. A computer-readable storage medium may 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 foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes: portable computer diskettes, 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 compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded devices such as punch cards or grooved structures on which instructions are recorded, and any suitable combination of the foregoing. As used herein, computer-readable storage media should not be construed as ephemeral signals themselves, 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 over electrical wires.

[0110] The computer readable program instructions described herein may be downloaded from a computer readable storage medium to an individual computing / processing device or to an external computer or storage device over 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 include copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface of each computing / processing device receives the computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the individual computing / processing device.

[0111] The computer readable program instructions for carrying out the operations of the present disclosure may be assembler instructions, instruction set architecture (ISA) instructions, machine language instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or source or object code written in any combination of one or more programming languages, including object oriented programming languages ​​such as Smalltalk®, C++, and traditional 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, partly on the user's computer as a standalone software package, partly on the user's computer and partly 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 wide area network (WAN), or a connection may be made 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 present disclosure.

[0112] Aspects of the present disclosure 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 present disclosure. 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.

[0113] 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 produce a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, produce means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer readable program instructions may also be stored in a computer readable storage medium having instructions stored thereon to 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 comprises an article of manufacture including instructions for implementing aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

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

[0115] The flowcharts and / or block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block of the flowcharts or block diagrams may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. 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 and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or actions, or execute a combination of special purpose hardware and computer instructions.

[0116] The terms used herein are for the purpose of describing particular embodiments only and are not intended to be limiting of the disclosure. 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 the terms "comprises" and / or "comprising", as used herein, indicate the presence of stated features, integers, steps, operations, elements, or components, or combinations thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups thereof, or combinations thereof.

[0117] The corresponding structures, materials, acts, and equivalents of all means-plus-function or step-plus-function elements within the scope of the appended claims are intended to include any structure, material, or act for performing a function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or to limit the present disclosure to the disclosed form. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit 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 uses contemplated.

[0118] A non-limiting list of examples is now described. Example 1 is a method for updating a current master key with a new master key, both protected by one or more Hardware Security Modules (HSMs), while an active software component using one or more keys, each encrypted with a current master key, is active, comprising: signaling to the active software component that the new master key has been loaded into the one or more HSMs; re-encrypting, by the software component, one or more keys encrypted with the current master key; and storing, respectively, the re-encrypted one or more keys in a respective newKey component of a respective key object used by the active software component, wherein each current key encrypted with the current master key is stored in a respective curK of the respective key object. setting a new master key in a first HSM of the HSMs; signaling to the active software component that the new master key has been set in at least one of the HSMs; restricting usage of the HSMs to the selected single one of the HSMs using the respective values ​​stored in a key component selected from a group consisting of a respective curKey component and a respective newKey component, if the software component determines that the new master key has been set in at least one HSM; and moving the respective values ​​of the respective newKey components to respective curKey components in all key objects if the software component determines that the new master key has been set in all HSMs.

[0119] Example 2 includes the features of example 1. In this example, the method further includes, upon determining, by the HSM event signaling tool, a selection from a group consisting of a master key load operation and a master key set operation on the one or more HSMs, signaling a respective event to the active software component.

[0120] Example 3 includes the features of any one of examples 1 to 2. In this example, the method further includes, upon determining, by the HSM event signaling tool, a master key load operation on the one or more HSMs, re-encrypting key objects persistently stored in the key repository.

[0121] Example 4 includes the features of any one of examples 1 to 3. In this example, the method further includes, upon determining, by the HSM event signaling tool, that a master key configuration operation has been performed on all HSMs, moving a value of the newKey component of the key object to a curKey component of the key object persistently stored in the key repository.

[0122] Example 5 includes the features of any one of examples 1-4. In this example, determining, by the software component, that a new master key is set in the at least one HSM further includes at least one selected from the group consisting of: receiving, by the software component, a new-MK-set signal; and determining, by the software component, receiving an error code indicating use of a curKey component of a local key encrypted with a key that is not the actual master key.

[0123] Example 6 includes the features of any one of examples 1 to 5. In this example, the method further includes, upon determining that all key objects encrypted with the current master key have been re-encrypted, sending an all-keys-re-ciphered signal to the HSM-set-new-MK component to trigger the setting of all new master keys on all HSMs.

[0124] Example 7 includes the features of any one of examples 1-6. In this example, the method further includes, upon receiving a signal that a new master key is loaded, generating, by the active software component, a new key using the HSM, storing, by the active software component, the new key in a curKey component of a key object, re-encrypting the new key, and storing the re-encrypted key in a newKey component of the key object.

[0125] Example 8 includes the features of any one of examples 1 to 7. In this example, the method further includes, upon determining, by the software component, that a new master key has been configured on the at least one HSM and that the key object without the newKey component cannot be used on the at least one HSM, delaying use of the key object until a new master key has been configured on the at least one HSM.

[0126] Example 9 includes the features of any one of examples 1 to 8. In this example, the method further includes writing the value of the curKey component of the key object before moving the value of the newKey component of the key object to the curKey component.

[0127] Example 10 includes the features of any one of examples 1 to 9. In this example, the method further includes initiating the active software component and, upon determining that a master key change process is in progress, determining a stage of the ongoing master key change process.

[0128] Example 11 is a parallel master key change system for updating a current master key with a new master key, both protected by one or more hardware security modules (HSMs), while an active software component is active that uses one or more keys, each encrypted by the current master key, the parallel master key change system comprising a processor and a memory communicatively coupled to the processor, the memory storing program code portions that, when executed, enable the processor to perform a method according to any one of examples 1 to 10.

[0129] Example 12 is a computer program product for updating a current master key with a new master key, both protected by one or more hardware security modules (HSMs), while an active software component that uses one or more keys, each encrypted by the current master key, is active, the computer program product including a computer-readable storage medium having program instructions embodied therein, the program instructions being executable by one or more computing systems to cause the one or more computing systems to perform a method according to any one of Examples 1 to 10.

Claims

1. 1. A method for updating a current master key with a new master key, both protected by one or more Hardware Security Modules (HSMs), while an active software component using one or more keys, each encrypted by the current master key, is active, comprising: signaling the active software component that the new master key has been loaded into the one or more HSMs; re-encrypting, by said software component, said one or more keys encrypted with said current master key; storing the re-encrypted key or keys in respective newKey components of respective key objects used by the active software components, wherein each current key encrypted by the current master key is stored in a respective curKey component of the respective key object; establishing the new master key in a first one of the HSMs; signaling the active software component that the new master key has been established in at least one of the HSMs; when said software component determines that said new master key has been established in at least one HSM, restricting usage of said HSMs to a selected single one of said HSMs using respective values ​​stored in key components selected from a group consisting of said respective curKey components and said respective newKey components; upon determining that the new master key is set in all HSMs, moving the respective values ​​of the respective newKey components to the respective curKey components in all key objects.

2. 2. The method of claim 1, further comprising, upon determining, by an HSM event signaling tool, a selection from a group consisting of a master key load operation and a master key set operation on the one or more HSMs, signaling a respective event to the active software component.

3. 3. The method of claim 1, further comprising: upon determining, by an HSM event signaling tool, a master key load operation on the one or more HSMs, re-encrypting key objects persistently stored in a key repository.

4. 4. The method of claim 1, further comprising, upon determining by an HSM event signaling tool that a master key setting operation has been performed on all HSMs, moving a value of the newKey component of the key object to the curKey component of the key object persistently stored in a key repository.

5. determining, by the software component, that the new master key is established in at least one HSM; receiving, by said software component, a new-MK-set signal; and determining, by the software component, that an error code has been received indicating use of a curKey component of a local key encrypted with a key that is not the actual master key.

6. 6. The method of claim 1, further comprising, upon determining that all key objects encrypted with the current master key have been re-encrypted, sending an all-keys-re-ciphered signal to an HSM-set-new-MK component to trigger the setting of all new master keys on all HSMs.

7. Upon receiving a signal that the new master key has been loaded, generating, by the active software component, a new key using the HSM; storing, by the active software component, the new key in the curKey component of a key object; re-encrypting the new key; and The method of claim 1 , further comprising: storing the re-encrypted key in the newKey component of the key object.

8. Upon determining by the software component that the new master key has been set in at least one HSM and that key objects without a newKey component cannot be used in the at least one HSM, 8. The method of claim 1, further comprising delaying use of the key object until the new master key is established on the at least one HSM.

9. 9. The method of claim 1, further comprising writing a value of the curKey component of the key object before moving a value of the newKey component of the key object to the curKey component.

10. initiating said active software component and determining that a master key change process is in progress; The method of claim 1 , further comprising determining a stage of the ongoing master key change process.

11. 1. A concurrent master key change system for updating a current master key with a new master key, both protected by one or more Hardware Security Modules (HSMs), while active software components using one or more keys, each encrypted by a current master key, are active, the concurrent master key change system comprising: a processor and a memory communicatively coupled to the processor, the memory storing program code portions that, when executed, enable the processor to perform a method, the method comprising: signaling the active software component that the new master key has been loaded into the one or more HSMs; re-encrypting, by said software component, said one or more keys encrypted with said current master key; storing the re-encrypted key or keys in respective newKey components of respective key objects used by the active software components, wherein each current key encrypted by the current master key is stored in a respective curKey component of the respective key object; establishing the new master key in a first one of the HSMs; signaling the active software component that the new master key has been set in at least one of the HSMs; when said software component determines that the new master key is set in at least one HSM, restricting usage of said HSM to a selected single one of said HSMs using respective values ​​stored in key components selected from a group consisting of said respective curKey components and said respective newKey components; upon determining that the new master key is set in all HSMs, moving the respective values ​​of the respective newKey components to the respective curKey components in all key objects.

12. when the processor determines, by an HSM event signaling tool, a selection from a group consisting of a master key load operation and a master key set operation on the one or more HSMs; 12. The concurrent master key changing system of claim 11, further enabled to signal respective events to the active software component.

13. when the processor determines, via an HSM event signaling tool, a master key load operation on the one or more HSMs; 13. A concurrent master key change system as claimed in claim 11 or 12, further enabled to re-encrypt key objects persistently stored in the key repository.

14. When the processor determines, via an HSM event signaling tool, that a master key setting operation has been performed on all HSMs, 14. The concurrent master key change system of claim 11, further enabled to move a value of the newKey component of the key object to the curKey component of the key object persistently stored in a key repository.

15. When the software component determines that the new master key has been set in at least one HSM, the processor: receiving, by said software component, a new-MK-set signal; and determining that an error code has been received indicating use of a curKey component of a local key encrypted with a key that is not the actual master key.

16. upon determining that all key objects encrypted with the current master key have been re-encrypted, said processor:

16. The concurrent master key change system of claim 11, further enabled to send an all-keys-re-ciphered signal to the HSM-set-new-MK component to trigger setting of all new master keys on all HSMs.

17. Upon receiving a signal that the new master key is being loaded, the processor: generating, by the active software component, a new key using the HSM; storing, by the active software component, the new key in the curKey component of a key object; re-encrypting the new key; and 20. The concurrent master key change system of claim 19, further enabled to perform the method further comprising: storing the re-encrypted key in the newKey component of the key object.

18. When the software component determines that the new master key has been set in at least one HSM and determines that a key object without a newKey component cannot be used in the HSM, the processor:

18. The concurrent master key change system of claim 11, further enabled to perform the method further comprising delaying use of the key object until the new master key is set on the HSM.

19. The processor, 19. The concurrent master key change system of claim 11, further enabled to perform the method further comprising writing a value of the curKey component of the key object before moving a value of the newKey component of the key object to the curKey component.

20. 1. A computer program product for updating a current master key with a new master key, both protected by one or more Hardware Security Modules (HSMs), while active software components using one or more keys, each encrypted by the current master key, are active, the computer program product comprising a computer readable storage medium having embodied program instructions, the program instructions including: signaling the active software component that the new master key has been loaded into the one or more HSMs; causing said software component to re-encrypt said one or more keys encrypted with said current master key; storing said re-encrypted key or keys in respective newKey components of respective key objects used by said active software components, and each current key encrypted by said current master key being stored in a respective curKey component of said respective key object; establishing the new master key in a first one of the HSMs; signaling the active software component that the new master key has been set in at least one of the HSMs; when the software component determines that the new master key is established in at least one HSM, causing the software component to restrict usage of the HSM to a selected single one of the HSMs using respective values ​​stored in key components selected from a group consisting of the respective curKey component and the respective newKey component; and a computer program product executable by the one or more computing systems to, upon determining that the new master key is set in all HSMs, move the respective values ​​of the respective newKey components to the respective curKey components in all key objects.

Citation Information

Patent Citations

  • Data storage key rotation

    US10523434B1

  • Key encryption key rotation

    US20200053065A1

  • Key rotation techniques

    US9608813B1