Key circulation in a publish-subscribe system

KR103004287B1Active Publication Date: 2026-08-12INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 5 Cites 0 Cited by

Patent Information

Authority / Receiving Office
KR · KR
Patent Type
Patents
Current Assignee / Owner
Filing Date
2021-12-01
Publication Date
2026-08-12

Smart Images

  • Figure 112023062751819-PCT00003_ABST
    Figure 112023062751819-PCT00003_ABST
Patent Text Reader

Abstract

Key Rotation on a PUBLISH-SUBSCRIBE SYSTEM The present invention relates to a method for a cryptographic key rotation in a publish-subscribe system that provides a broker service for routing stored encrypted messages to one or more subscribers of a topic to which the routed messages are assigned. The routing step includes decrypting the stored encrypted messages. The cryptographic key rotation includes a re-encryption of the stored messages using a cryptographic replacement key. The re-encryption is executed as a background process by a cryptographic module of the publish-subscribe system, and during the execution, the broker service continues.
Need to check novelty before this filing date? Find Prior Art

Description

Technology Field

[0001] The present invention relates to the field of publish-subscribe systems, and more specifically, to a method, a computer program product, and a computer system for a cryptographic key rotation in a publish-subscribe system. Background Technology

[0002] Distributed data streaming systems, such as publish-subscribe systems, play an increasingly significant role in the distribution of data within, for example, enterprises and other types of organizations. Publish-subscribe systems allow messages provided by publishers to be broadcast asynchronously to various parts of the system, namely subscribers. Messages published to a topic are broadcast to the subscribers of that topic. To protect messages stored within a publish-subscribe system, the stored messages can be encrypted. means of solving the problem

[0003] According to one embodiment of the present invention, a method for performing cryptographic key rotation in a publish-subscribe system is provided. The publish-subscribe system stores a plurality of messages, and each of the stored messages is assigned to one topic from a group of topics, and each of the stored messages is assigned a cryptographic key from one or more groups of cryptographic keys and is encrypted with said assigned cryptographic key. The publish-subscribe system provides a broker service for routing the stored messages to one or more subscribers of said topics to which the routed messages are assigned. The routing includes the steps of decrypting the message to be routed using the cryptographic key assigned to each message and sending the decrypted messages to one or more subscribers of said assigned topic.

[0004] The above cryptographic key rotation includes a re-encryption of each message in a first set of one or more first messages among the stored messages. Each of the first messages is assigned to a common first topic from the group of topics, assigned to a first cryptographic key of a first set of one or more first cryptographic keys among the group of cryptographic keys, and encrypted with the assigned first cryptographic key. The re-encryption is executed as a background process by the cryptographic module of the publish-subscribe system and continues to route the first messages during the re-encryption and receive additional first messages for the common first topic by the broker service.

[0005] The re-encryption includes the step of adding a second set of one or more second cryptographic keys to the group of cryptographic keys. Each of the second cryptographic keys is a replacement key for one of the first cryptographic keys. The method further includes the step of decrypting the encrypted first message for each of the first messages using a first cryptographic key assigned to each of the first messages. The decrypted first message is re-encrypted using a replacement key for the assigned first cryptographic key, and the replacement key used for the re-encrypted first message is assigned to each re-encrypted first message. For routing, a switching step is performed from using the encrypted first message and the assigned first cryptographic key to using the re-encrypted first message and the assigned replacement key.

[0006] According to other embodiments of the present invention, a computer program product for performing cryptographic key rotation in a publish-subscribe system is provided. The computer program product comprises a computer-readable storage medium having implemented program instructions. The program instructions are executable by a processor of a computer system of the publish-subscribe system and cause the computer system to perform the cryptographic key rotation.

[0007] The above-described publish-subscribe system stores a plurality of messages, and each of the stored messages is assigned to a topic from a group of topics, and each of the stored messages is assigned a cryptographic key from one or more groups of cryptographic keys and encrypted with said assigned cryptographic key. The above-described publish-subscribe system provides a broker service for routing the stored messages to one or more subscribers of said topics to which the routed messages are assigned. The routing includes the steps of decrypting the message to be routed using the cryptographic key assigned to each message and sending the decrypted messages to one or more subscribers of said assigned topics.

[0008] The above cryptographic key rotation includes a re-encryption of each message in a first set of one or more first messages among the stored messages. Each of the first messages is assigned to a common first topic from the group of topics, assigned to a first cryptographic key of a first set of one or more first cryptographic keys among the group of cryptographic keys, and encrypted with the assigned first cryptographic key. The re-encryption is executed as a background process by the cryptographic module of the publish-subscribe system and continues to route the first messages during the re-encryption and receive additional first messages for the common first topic by the broker service.

[0009] The re-encryption includes the step of adding a second set of one or more second cryptographic keys to the group of cryptographic keys. Each of the second cryptographic keys is a replacement key for one of the first cryptographic keys. The method further includes the step of decrypting the encrypted first message for each of the first messages using a first cryptographic key assigned to each of the first messages. The decrypted first message is re-encrypted using a replacement key for the assigned first cryptographic key, and the replacement key used for the re-encrypted first message is assigned to each re-encrypted first message. For routing, a switching step is performed from using the encrypted first message and the assigned first cryptographic key to using the re-encrypted first message and the assigned replacement key.

[0010] According to other embodiments of the present invention, a computer system for performing cryptographic key rotation in a publish-subscribe system is provided. The publish-subscribe system stores a plurality of messages, each of which is assigned to a topic from a group of topics, and each of which is assigned a cryptographic key from one or more groups of cryptographic keys and is encrypted with said assigned cryptographic key. The publish-subscribe system provides a broker service for routing the stored messages to one or more subscribers of said topics to which the routed messages are assigned. The routing includes the steps of decrypting the message to be routed using the cryptographic key assigned to each message and sending the decrypted messages to one or more subscribers of said assigned topics.

[0011] The above cryptographic key rotation includes a re-encryption of each message in a first set of one or more first messages among the stored messages. Each of the first messages is assigned to a common first topic from the group of topics, assigned to a first cryptographic key of a first set of one or more first cryptographic keys among the group of cryptographic keys, and encrypted with the assigned first cryptographic key. The re-encryption is executed as a background process by the cryptographic module of the publish-subscribe system and continues to route the first messages during the re-encryption and receive additional first messages for the common first topic by the broker service.

[0012] The computer system comprises a processor and memory for storing program instructions executable by the processor. Execution of the program by the processor causes the computer system to perform the re-encryption. The re-encryption includes the step of adding a second set of one or more second cryptographic keys to a group of cryptographic keys. Each of the second cryptographic keys is a replacement key for one of the first cryptographic keys. The method further includes the step of decrypting the encrypted first message for each of the first messages using a first cryptographic key assigned to each of the first messages. The decrypted first message is re-encrypted using a replacement key for the assigned first cryptographic key, and the replacement key used for the re-encrypted first message is assigned to each re-encrypted first message. For the above routing, a switching step is performed from using the encrypted first message and the assigned first encryption key to using the re-encrypted first message and the assigned replacement key. Brief explanation of the drawing

[0013] The embodiments of the present invention that follow are described in more detail, only by example, with reference to the following drawings:

[0014] FIG. 1 illustrates a schematic diagram illustrating an example computer system;

[0015] FIG. 2 illustrates a schematic diagram illustrating an example publish-subscribe system;

[0016] FIG. 3 illustrates a schematic diagram illustrating an example publish-subscribe system;

[0017] FIG. 4 illustrates a schematic diagram illustrating an example publish-subscribe system having topic encryption implemented in a broker;

[0018] FIG. 5 illustrates a schematic diagram illustrating an example publish-subscribe system having topic encryption implemented in a proxy;

[0019] Figure 6 illustrates an example method for cryptographic key circulation as a schematic flowchart;

[0020] FIG. 7 illustrates a schematic diagram illustrating an example publish-subscribe system having a topic alias implemented in a broker;

[0021] FIG. 8 illustrates a schematic diagram illustrating an example publish-subscribe system having topic aliases implemented in a broker;

[0022] FIG. 9 illustrates a schematic diagram illustrating an example publish-subscribe system having topic aliases implemented in a broker;

[0023] FIG. 10 illustrates a schematic diagram illustrating an example publish-subscribe system having topic aliases implemented in a broker;

[0024] FIG. 11 illustrates a schematic diagram illustrating an example publish-subscribe system having topic aliases implemented in a proxy;

[0025] FIG. 12 illustrates a schematic diagram illustrating an example publish-subscribe system having topic aliases implemented in a proxy;

[0026] FIG. 13 illustrates a schematic diagram illustrating an example publish-subscribe system having topic aliases implemented in a proxy;

[0027] Figure 14 illustrates an example method for cryptographic key circulation as a schematic flowchart;

[0028] FIG. 15 illustrates a schematic diagram illustrating an implementation of re-encryption using a broker re-encryption service;

[0029] Figure 16 illustrates an example method for cryptographic key circulation as a schematic flowchart;

[0030] FIG. 17 illustrates a schematic diagram illustrating a cloud computing environment; and

[0031] FIG. 18 illustrates a block diagram illustrating a set of functional abstraction model layers provided by a cloud computing environment. Specific details for implementing the invention

[0032] The descriptions of various embodiments of the present invention are provided for illustrative purposes only, but are not intended to imply that the disclosed embodiments are all or limited thereto. 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 herein have been chosen to best describe the principles of the embodiments, practical applications or technical improvements to technologies found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.

[0033] The messages of multiple messages stored by the publish-subscribe system may be ordered messages, for example, time-ordered messages. The step of switching from using the encrypted first message and the assigned first cryptographic key for routing to using the re-encrypted first message and the assigned replacement key may be performed automatically so as not to interrupt service to the brokers and / or clients and not to require reconfiguration of the brokers and / or clients.

[0034] Embodiments can implement a temporal continuity of an encrypted data stream provided by a publish-subscribe system during key rotation. Embodiments can allow data producers / consumers, i.e., publishers / subscribers, to write / read to the encrypted data stream without interruption during key rotation, i.e., while the encryption / decryption keys are being updated. Thus, key rotation can be implemented without interruption of service in a distributed data streaming system in the form of a publish-subscribe system.

[0035] A publish-subscribe system is a system that implements a publish-subscribe messaging pattern, in which senders of messages, referred to as publishers or producers, do not send messages directly to all recipients, referred to as subscribers or consumers, but instead categorize messages to be published into categories referred to as topics. Subscribers subscribe to one or more topics and receive only messages from the topics they subscribe to. Therefore, publishers may not know, for example, which subscribers may exist, and at the same time, subscribers may not know, for example, which publishers may exist. Both publishers and subscribers can refer only to topics when sending requests to the publish-subscribe system. The publish-subscribe messaging pattern can have beneficial effects in enabling network scalability and dynamic network topologies.

[0036] In a publish-subscribe system, a subscriber can receive only a subset of the total amount of published messages. The process of selecting published messages for reception and processing is called filtering. Such filtering can be, for example, topic-based. In a topic-based publish-subscribe system, messages are published to topics. A subscriber in a topic-based system can receive all messages published to the topics they subscribe to. For example, the publisher is responsible for defining the topics that subscribers can subscribe to.

[0037] In a publish-subscribe system, a publisher can post messages, for example, to an intermediary message broker, while subscribers can register subscriptions with the broker to allow the broker to perform filtering. The broker can perform a store and forward function to route messages received from publishers to subscribers. Additionally, the broker can, for example, prioritize messages in a queue before routing. Subscribers can register for specific messages, for example, at build time, initialization time, or runtime. For example, in GUI systems, subscribers can be coded to handle user commands, such as button clicks, that correspond to build time registration. For example, XML configuration files can be used to register subscribers. These configuration files can be read at initialization time. For example, subscribers can be added or removed at runtime. At runtime, such registrations may be used, for example, in database triggers, mailing lists, or RSS ("Really Simple Syndication" or "Rich Site Summary").

[0038] An advantage of publish-subscribe systems can be the loose coupling between publishers and subscribers. Publishers may not even need to know of the subscribers' existence. For example, if topics become the focus, publishers and subscribers may not need to know the system topology. Publishers and subscribers can operate independently of each other. Publish-subscribe systems can not only separate the locations of publishers and subscribers but also separate them in time. A subscriber can subscribe to a first topic and receive messages from topics that have already been published previously.

[0039] Another advantage of publish-subscribe systems is their scalability. Scalability can be improved, for example, through parallel operation, message caching, tree-based or network-based routing, etc. Publish-subscribe systems can provide distributed messaging across the Internet-wide, for example, through web syndication protocols.

[0040] Server nodes, generally referred to as message brokers, act as intermediary hubs that record received data in storage and transmit it to clients upon request. As is common in publish-subscribe systems, data is organized into categories called topics. Since message brokers support the so-called streaming paradigm, data can arrive at any topic at any time, and data flows can be continuous for a bounded or unbounded duration. Clients of a broker can subscribe to one or more topics and receive data as a stream.

[0041] Topic data can be stored in one or more topic partitions distributed across a cluster of brokers. Each topic partition can be an ordered sequence of messages. The entire data in the topic is the union of these partitions. The publish-subscribe system can support strict ordering within a single partition but not between partitions. Partitions can be replicated to support fault tolerance. The publish-subscribe system can maintain the following information regarding a topic: the set of active partitions of the topic and the lead broker, i.e., the leader processing them; the offsets within the partition for the oldest and newest messages; a last read offset for each partition for each consumer group; and the broker processing the replicas of the partitions.

[0042] The consumer connects to a bootstrap broker to retrieve the locations of the partitions of the topic it wishes to consume and the offset of the last message read from that partition by the consumer group to which it belongs. Then, the consumer requests the next offset from each of these partitions. If the broker is unavailable, the consumer can organize itself to nominate leaders for all unavailable partitions. The follower selected to be the leader must have an In-Sync Replica (ISR) for that partition. Followers retrieve messages from the leader by consuming through the same leader as the normal consumer.

[0043] Next, clients can switch their connections to these new leaders. Producers perform a similar function, but there is no need to worry about recent offsets. In summary, the publish-subscribe system can be designed to scale to very high loads through the concept of distributed partitions and to smoothly handle failures through the concept of replicated partitions.

[0044] Regulations and security best practices may require key rotation, which generally involves periodically re-encrypting data with a new key as a risk-reduction measure or in response to the exposure of an active cryptographic key. Key rotation poses a challenge to publish-subscribe messaging systems due to their continuous "live" nature. In principle, to rotate keys, the system must be suspended during re-encryption and resumed only after the re-encryption process is complete. However, messaging systems must be available for continuous use to receive and service data without interruption. The present invention describes various methods for a messaging system to rotate keys without interrupting its services.

[0045] According to embodiments, the publish-subscribe system may include a message broker that stores topic messages in an encrypted form. This can be accomplished by encrypting incoming data, i.e., messages, and decrypting the same data when responding to client requests.

[0046] The encryption and decryption of messages can be performed by the broker's cryptographic module or a proxy of the publish-subscribe system. The cryptographic module can access topic cryptographic keys and can be configured to send and / or receive notifications regarding key rotation events.

[0047] For example, key rotation via re-encryption can be used in a publish-subscribe system utilizing topic aliases. A topic alias sends requests to other topics and receives requests from other topics. From the client's perspective, the topic alias appears and functions like a normal topic. The key rotation process can use the alias to generate a new, re-encrypted copy of the topic log of the topic to which the topic alias is currently sending requests. This new, re-encrypted copy of the topic log is created as a new topic in the background. Once this re-encryption process is complete, the topic alias is sent back to the re-encrypted new topic. The previous topic logs can be securely deleted or archived. For clients of the alias topic, nothing changes: the topic name—that is, the alias—remains the same, the connections remain the same, and the service continues without interruption. For example, key rotation via re-encryption can be implemented as an internal broker service in a publish-subscribe system. Internal topic management services can be extended, for example, to include a new re-encryption service. Such a re-encryption service can progressively replace stored messages with their respective re-encrypted versions in the background. For large topic logs, parallelization can be used to optimize the re-encryption process. The lead broker of a publish-subscribe system can coordinate other brokers within the cluster to share the re-encryption workload, thereby parallelizing computations.

[0048] According to one embodiment, the cryptographic keys used to encrypt and decrypt messages within a publish-subscribe system may be symmetric cryptographic keys.

[0049] According to one embodiment, the encryption module is included in the broker of the publish-subscribe system. The embodiments may have the beneficial effect that the re-encryption of the key cycle can be executed by the broker.

[0050] According to one embodiment, the encryption module is included in a proxy of the publish-subscribe system, through which the broker of the publish-subscribe system communicates with the clients of the publish-subscribe system. The embodiments may have the beneficial effect that the re-encryption of the key cycle can be executed by the proxy. Thus, only the proxy can be coordinated to execute the re-encryption, and the brokers of the publish-subscribe system do not need to be coordinated to execute the re-encryption.

[0051] Both message decryption and re-encryption processes may require means to know which key encrypted a given message. Such means may include indexes that map message IDs to keys or key IDs. An alternative strategy may involve storing encryption keys in an encrypted form along with the encrypted messages. Encryption keys may be encrypted with another key or "wrapped" using a technique known as envelope encryption. During decryption, the encryption module may request that the encryption keys be unwrapped and use the unwrapped keys to decrypt the message. Since encryption keys are always stored with the message, there is no need to maintain indexes, which significantly simplifies implementation.

[0052] One embodiment may support wrap and unwrap operations using a Key Management Service (KMS). It is assumed that the KMS stores the wrapping key in a very secure fashion so that it never leaves the KMS. In a publish-subscribe setting, the cryptographic module may store the wrapped key in the message header when the message is encrypted and remove the header during message decryption before responding to client requests.

[0053] According to one embodiment, each of the encrypted messages stored in a publish-subscribe system is provided with a header identifying an assigned encryption key from a group of encryption keys. The embodiments may have the beneficial effect that the encrypted messages themselves can identify the encryption key to be used to decrypt each of the messages.

[0054] According to one embodiment, a header identifying an assigned cryptographic key is removed during routing before transmitting the routed decrypted message to a subscriber. The embodiments may have the beneficial effect of preventing information regarding the encryption and / or decryption of messages stored in a publish-subscribe system from being shared with clients, such as subscribers.

[0055] According to one embodiment, each of the headers of the encrypted messages includes a cryptographic key identified in an encrypted form using envelope encryption by an envelope cryptographic key. The decryption of each of the encrypted first messages further includes the step of decrypting an assigned first cryptographic key provided by the header of each first message using the envelope cryptographic key. The re-encryption of each of the decrypted first messages further includes the step of encrypting an assigned replacement key used to re-encrypt each re-encrypted first message with the envelope cryptographic key, and the step of replacing the encrypted first cryptographic key in the header of each re-encrypted first message with the encrypted replacement key.

[0056] The embodiments may have the beneficial effect of being able to provide the encryption key to be used to decrypt each of the encrypted messages themselves.

[0057] According to one embodiment, a publish-subscribe system includes an index that identifies an assigned cryptographic key of a group of cryptographic keys for each of the stored messages. Embodiments may have the beneficial effect of the index being able to identify a cryptographic key to be used to decrypt each message for each of the stored messages. For example, the index may identify individual messages or, for example, identify topic segment files in which messages are stored. For example, the index may include identifiers of the stored messages, and each of these may be assigned an identifier of the cryptographic key to be used to decrypt each message. For example, the index may include identifiers of the stored messages, and each of these may be assigned a cryptographic key to be used to decrypt each message.

[0058] According to one embodiment, re-encryption further comprises the steps of identifying a first encryption key assigned to each of the first messages using an index for each of the first messages, and assigning a replacement key for the identified first encryption key to the re-encrypted first encryption key in the index. For example, the index may identify not only the original first messages encrypted using the first encryption keys but also the re-encrypted first messages encrypted using replacement encryption keys. In this case, the identifiers of the re-encrypted first messages may be added to the index in addition to the identifiers of the original first messages, and the identifiers of the re-encrypted first messages may be assigned identifiers of replacement keys to be used to decrypt the re-encrypted first messages. For example, the identifiers of the re-encrypted first messages may be assigned replacement keys to be used to decrypt the re-encrypted first messages. For example, the original first messages may be replaced in the index by the re-encrypted first messages. In this case, the identifiers of the original first messages may be replaced by the identifiers of the re-encrypted first messages, and the identifiers of the first encryption keys may be replaced by the identifiers of the replacement keys to be used to decrypt the re-encrypted first messages. For example, the first encryption keys included in the index may be replaced by the replacement keys to be used to decrypt the re-encrypted first messages.

[0059] Various techniques for re-encrypting topic data without interrupting service to the broker are provided below.

[0060] The first technology introduces the concept of a topic alias, which sends requests to and from a different topic. From the client's perspective, the topic alias appears and functions as a normal topic. A key rotation process uses the alias to generate new, encrypted copies of the topic logs in the background. Once this re-encryption process is complete, the topic alias is retransmitted to the new, re-encrypted topic. The previous topic logs can be securely deleted or archived. For the topic's clients, nothing changes: the topic name (i.e., the alias) remains the same, connections are maintained, and service continues without interruption.

[0061] The embodiments may have several beneficial effects: For the topic's clients, namely producers and consumers, the topic may behave exactly like a traditional topic. Labels to which requests can be sent may also remain unchanged. Clients may not be required to have special awareness regarding the types of topic aliases or changes. Clients may not be aware of the re-encryption process. Re-encrypted data may preserve all metadata, such as timestamps, headers, etc. Uninterrupted publish-subscribe services may be provided to clients. Technology including aliases implemented in the proxy can implement re-encryption without changes to the broker.

[0062] According to one embodiment, each of the stored messages is stored as a member of the topic to which each message is assigned. The method further includes the step of providing a first topic alias pointing to a common first topic from a first set of messages. One or more subscribers of the common first topic subscribe to the first topic alias. An additional common second topic is added to a group of topics, and the re-encrypted first messages are stored as members of the common second topic. The switching step includes re-assigning the first topic alias to the common second topic so that one or more subscribers of the first topic alias become subscribers of the common second topic.

[0063] The embodiments may have the beneficial effect that a topic alias can be used to implement re-encryption. The step of switching from the encrypted first messages to the re-encrypted first messages can be implemented by reassigning the topic alias. As long as the topic alias is assigned to the common first topic, the broker service can be provided continuously using the encrypted first messages. By reassigning the topic alias to the common second topic, the broker service continues using the encrypted first message.

[0064] According to one embodiment, the switching step further includes the step of deleting a common first topic having the first encrypted messages. The embodiments may have the beneficial effect of saving storage space. According to an alternative embodiment, the switching step further includes the step of archiving a common first topic having the first encrypted messages.

[0065] According to one embodiment, the switching step further includes the step of deleting the first encryption keys. The embodiments may have the beneficial effect of saving storage space. According to an alternative embodiment, the switching step further includes the step of archiving the first encryption keys.

[0066] According to one embodiment, each of the additional first messages received from the publisher for a topic alias by the publish-subscribe system is assigned to a common second topic, one of the second encryption keys of a second set of second encryption keys is assigned, and is encrypted using the assigned second encryption keys.

[0067] The embodiments may have the beneficial effect that additional first messages, particularly first messages received during re-encryption, can be directly encrypted with second encryption keys and assigned to a common second topic.

[0068] Topic aliases can be used to implement key rotation. To clients of a publish-subscribe system, such topic aliases appear as normal topics but are actually intermediaries for other topics. Topic aliases can be managed through administrative actions. The minimum administrative actions supporting the existence and management of topic aliases may include the following: creating an alias; assigning the created alias to a topic; detaching the alias from the topic; and deleting the detached alias.

[0069] Existing but unassigned topic aliases can be treated by the broker as either non-existent or inactive. This may be an implementation option and affects the error messages returned when clients attempt to address with unassigned aliases. Using a configurable option allows for the automatic cancellation of a topic's visibility after an alias is assigned. This forces clients to access the underlying data exclusively through the topic alias.

[0070] Topic aliases can be consistently integrated across all facilities of each broker. For example, brokers integrating a schema registry can support the registration and updating of aliases in the registry. Similarly, security policies can be applied to topic aliases in the same way they are applied to normal topics.

[0071] A general workflow for cycling a topic encryption key using a topic alias includes the following: creating a topic and a topic alias; and may include assigning an alias to said topic and configuring said topic alias for encryption. Clients may begin sending and receiving messages through the alias. When key cycling begins, it includes the following steps: adding a new topic and generating a new encryption key for the new topic. The encryption key used by the topic encryption module may be updated with the new encryption key, and as a result, new messages received by the publish-subscribe system may be encrypted with the new encryption key. When the re-encryption process begins, it includes the following steps: copying data, i.e., messages, from the old topic to the newly created topic and re-encrypting said copied data with the new encryption key. The re-encryption process may add new messages that arrive during re-encryption to the new topic. When all data contained in the previous topic is copied to the new topic and re-encrypted, the re-encryption process is terminated and the alias is reassigned to the new topic. Optionally, the previous active topic logs of the previous topic may be deleted. The aforementioned workflow may be performed as a transaction.

[0072] Topic aliases can be implemented, for example, in a proxy or directly in the broker of a publish-subscribe system. For example, a publish-subscribe system may include a proxy. If a proxy is implemented in the publish-subscribe system, clients can communicate through the proxy rather than communicating directly with the broker of the publish-subscribe system. Similarly, the broker can also communicate with clients through the proxy. Proxies can be used for tasks such as introducing a specific access control model into the publish-subscribe system.

[0073] Proxy capabilities can be extended to support topic aliases. In this approach, one or more independent topics can be associated together into the same alias group. The creation and management of these alias groups are handled outside the broker. An alias group is specified in the same way as topics, for example, by the number of partitions, the number of replicas, etc. Topics can be added to or removed from an alias group, which leads to the creation of corresponding topics on the cluster of the publish-subscribe system using the alias group's configuration. For example, all topics in the same group can have the same configuration. At any given time, zero or one topic is designated as an active topic.

[0074] Clients can communicate with topic aliases as if they were normal topics using the standard protocols of the publish-subscribe system. In particular, program commands controlling the brokers of the publish-subscribe system may not need to be modified. Producers can send messages to topic aliases using standard protocols, and consumers can receive messages using standard protocols. However, there is no topic log with an alias name on any single broker or cluster of the publish-subscribe system. Instead, a proxy can map the alias name provided by the topic alias to the topic name on the broker or cluster of the publish-subscribe system. Each topic referenced by a topic alias acts as the actual active topic, and thus the topic alias can appear to be the actual active topic.

[0075] As the encryption module is integrated into the proxy, the proxy can encrypt messages transmitted to the topic alias and decrypt messages received from the topic alias. To achieve this, the proxy, or more precisely, the encryption module integrated into the proxy, may use the current encryption key. As previously mentioned, the current encryption key used for encryption may be appended in a wrapper form to the message header of the encrypted message for storage and may be removed from the message header upon decryption in response to client requests.

[0076] Alternatively, topic aliases can be implemented in the brokers of the publish-subscribe system. Such an implementation may require modifying the program commands controlling the brokers of the publish-subscribe system. If the brokers' program commands can be modified, topic aliases can be implemented in the brokers without requiring additional proxies. An implementation that does not require proxies can have the beneficial effect of eliminating one additional architectural component from the system. However, proxies may still be used for other advantages, such as introducing specific access control models into the publish-subscribe system. The concepts of aliases and alias groups remain the same as described above, but are integrated directly into the broker along with the cryptographic module.

[0077] The second technology implements a new re-encryption service. Such a new re-encryption service can extend, for example, the broker's internal topic management services. Similar to a log cleaner in a publish-subscribe system, the re-encryption service can progressively replace stored messages with re-encrypted versions in the background. For very large topic logs, optimization is provided so that the lead broker coordinates other brokers in the cluster to share the re-encryption workload, thereby parallelizing the computation. This second technology also runs without interrupting broker services.

[0078] According to one embodiment, the step of switching first messages encrypted with assigned first encryption keys to first messages re-encrypted with assigned replacement keys includes the step of replacing each of the encrypted first messages with the corresponding re-encrypted first message. The embodiments may have the beneficial effect of implementing re-encryption using a re-encryption service of, for example, a broker of a publish-subscribe system.

[0079] According to one embodiment, the steps of re-encrypting the first messages and replacing the encrypted first message with the corresponding re-encrypted first message may be performed sequentially. The encrypted first message may be stored, for example, in segment files, which are re-encrypted sequentially. For example, the sequential re-encryption may begin with the latest file of the segment files, i.e., a timewise youngest segment file.

[0080] According to one embodiment, encrypted first messages are stored in a set of segment files. One of the segment files in the set of segment files is used to store the currently encrypted first messages, while the remaining segment files in the set of segment files that are already full of encrypted first messages are closed. If the open segment file is full, the open segment file is also closed, and an additional segment file is added to the set of segment files and the additional segment file is used to store the encrypted first messages.

[0081] When re-encryption is initiated, the segment file currently used to store the encrypted first message is closed, and another additional segment file is added to the set of segment files to store additional encrypted first messages received by the publish-subscribe system from publishers for a common first topic.

[0082] The re-encryption of the encrypted first messages is performed segmentally. The segmental re-encryption includes the steps of selecting the remaining closed segment files in sequence, generating a replacement segment file for each of the selected segment files that includes the encrypted first messages of the selected segment files in an encrypted form, and replacing the selected segment files with the replacement segment files.

[0083] The embodiments may have the beneficial effect of the first messages being sequentially re-encrypted in an ordered manner.

[0084] According to one embodiment, the segmental re-encryption begins with the newest segment file among the set of segment files. The most recent, i.e., the earliest in time, segment may be the most recently closed segment file, which may contain the most recently received messages. The offsets of these most recent messages have the smallest differences from the offsets of messages in which encryption using the second encryption key begins within the storage of the publish-subscribe system. The embodiments may further have the beneficial effect that the most recent messages, i.e., the most up-to-date messages, may be the messages that can be used first in a re-encrypted form. According to the embodiments, the segment files may be deleted, for example, when the maximum retention time of the messages contained in each of the segment files expires. The embodiments may further have the beneficial effect that the oldest messages may be re-encrypted, and as a result, the publish-subscribe system may prevent unnecessary re-encryption of messages that might be deleted later during key rotation due to the expiration of their maximum retention time.

[0085] According to one embodiment, an offset value is determined, and this offset value identifies the offset of additional first messages, and encryption using a second encryption key with this offset is determined to be initiated within the storage of the publish-subscribe system. According to one embodiment, the determined offset value is stored. The embodiments may have the beneficial effect of enabling the publish-subscribe system, for example, a broker of the publish-subscribe system, to use the offset value to determine when re-encryption is completed.

[0086] According to one embodiment, each of the additional first messages received from publishers by the publish-subscribe system for a common first topic is assigned to the common first topic and assigned to one of the second cryptographic keys of a second set of second cryptographic keys, and is encrypted using the assigned second cryptographic key.

[0087] The embodiments may have the beneficial effect that additional first messages, particularly first messages received during re-encryption, can be directly encrypted with second encryption keys and assigned to a common first topic.

[0088] According to one embodiment, the publish-subscribe system includes a plurality of additional brokers. The publish-subscribe system also includes a plurality of additional replicas of a set of segment files. Each of the additional replicas is assigned to one of the additional brokers. The re-encryption of the segment files is distributed among the brokers of the publish-subscribe system, which implement the parallelization of the re-encryption. The re-encrypted first messages are distributed among other replicas of the set of segment files.

[0089] The embodiments can have the beneficial effect of implementing parallelization of re-encryption. This enables re-encryption to be performed more efficiently.

[0090] Key rotation through re-encryption can be implemented, for example, using an internal broker service. Thus, instead of introducing topic aliases, topic management within the broker can be extended rather by additional features. Such an approach may require changes and / or extensions to known protocols used to control brokers in publish-subscribe systems. Such embodiments may have the beneficial effect of being more efficient compared, for example, introducing additional topic aliases and / or using additional proxies.

[0091] The publish-subscribe system may store data, such as messages associated with a topic partition, in a directory that may contain log segment files containing actual messages as well as some files containing metadata, the name of which may be the topic partition name. Log segment files may have a fixed maximum size, for example, 100 MB. When a log segment is full, a new log segment file is created, and subsequent messages can be appended to the newly created log segment file. The publish-subscribe system may run background threads to delete log segment files, for example, when the maximum retention time of messages expires. For compacted topics without a maximum retention time, compression processes may be used to compress these topics. For example, only the final valid value for a given key may be available in the topic, and keys mapped to null values ​​may be removed.

[0092] Similar to so-called log cleaner services, such as the aforementioned compression and expiration services, a re-encryption process may be added. This re-encryption process may be added as an encryption service for the broker of the publish-subscribe system, which re-encrypts the data of segment files using new encryption keys as replacement keys for the current encryption keys. As soon as the re-encryption process begins, all new messages may be encrypted using the new encryption keys. The broker may store an offset value indicating the offset of the stored messages, and at this offset, the broker may begin using the new encryption keys to encrypt the new messages. The actual re-encryption of old messages already stored in the publish-subscribe system and encrypted with the old cryptographic key may be initiated. The broker may re-encrypt all old messages, starting from a determined offset value and continuing until the oldest messages are reached and re-encrypted. Once the final old message is re-encrypted, the re-encryption process is completed, and the old key may be deleted.

[0093] For example, assuming the maximum log segment size is 100 MB, for a 1 TB topic partition, the number of log segment files of that size is as many as 10,000. Re-encryption may include the steps of decrypting and encrypting all these segment files. According to embodiments, re-encryption may be performed by a single broker, e.g., a leader broker, alone, and the re-encrypted log segment files may be distributed to followers. According to embodiments, re-encryption may be performed by multiple brokers of a publish-subscribe system, thereby enabling parallelization of re-encryption. For example, internal protocols controlling the brokers of a publish-subscribe system may be modified so that all brokers with replicas of a partition can coordinate among themselves, each of which re-encrypts some subset of the log segment files contained in the replica and then exchanges the re-encrypted segment files with all other brokers that have replicas of the same partition.

[0094] The embodiments may have the beneficial effect that only the broker-to-broker interaction changes due to the parallelization of re-encryption, while clients of the publish-subscribe system may remain unaware that the brokers are performing this. Therefore, such parallelization may be suitable as an optimization in a publish-subscribe system including a managed server offering.

[0095] One example algorithm used to re-encrypt a topic using segment files is as follows:

[0096] For example, the computer program product may further include program instructions executable by a processor of a computer system of a publish-subscribe system configured to implement any one of the embodiments of the method for cryptographic key circulation in the publish-subscribe system described herein.

[0097] For example, the computer system is further configured to execute any one of the embodiments of the method for cryptographic key circulation in the publish-subscribe system described herein.

[0098] FIG. 1 illustrates an example computer system (100) configured for cryptographic key circulation in a publish-subscribe system. The example computer system (100) may be, for example, a broker or proxy of the publish-subscribe system. It will be understood that the computer system (100) described herein may be any type of computerized system comprising a plurality of processor chips, a plurality of memory buffer chips, and memory. The computer system (100) may be implemented in the form of a general-purpose digital computer, such as, for example, a personal computer, a workstation, or a minicomputer. The computer system (100) may be implemented in the form of, for example, a server.

[0099] In exemplary embodiments, in terms of hardware architecture, as illustrated in FIG. 1, the computer system (100) comprises a processor (105), memory (main memory) (110) coupled to a memory controller (115), and one or more input and / or output (I / O) devices (or peripheral devices) (140, 145 (illustrated as peripheral storage media)) coupled to communicate via a local input / output controller (135). The input / output controller (135) may be one or more buses or other wired or wireless connections as is known in the art, but is not limited thereto. The input / output controller (135) may have additional elements, omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications. In addition, the local interface can enable appropriate communication between the aforementioned components, including addresses, controls, and / or data connections.

[0100] A processor (105) is a hardware device for executing software, particularly software stored in memory (110). The processor (105) can be any custom-made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with a computer system (100), a semiconductor-based microprocessor (in the form of a microchip or chipset), a macroprocessor, or any device for executing software instructions in general.

[0101] The memory (110) may include any one or a combination of volatile memory modules (e.g., random access memory (random access memory: RAM (such as DRAM, SRAM, SDRAM, etc.)) and non-volatile memory modules (e.g., ROM, eraseable and programmable read-only memory (EPROM), electrically eraseable and programmable read-only memory (EEPROM), or programmable read-only memory (PROM)). It should be noted that the memory (110) may have a distributed architecture in which additional modules are far apart from each other, but can be accessed by the processor (105).

[0102] The software of the memory (110) may include one or more individual programs, each of which includes an ordered list of executable commands to implement logical functions, among which functions included in embodiments of the present invention. The executable commands may be further configured for cryptographic key rotation in a publish-subscribe system. In particular, the executable commands may be configured to re-encrypt messages of the publish-subscribe system using a cryptographic module provided by the computer system (100), for example, in the form of executable commands. The software of the memory (110) may further include a suitable operating system (OS) (111). The OS (111) primarily controls the execution of other computer programs, such as software (112).

[0103] If the computer system (100) is a PC, workstation, intelligent device, etc., the software in the memory (110) may further include a Basic Input Output System (BIOS) (122). The BIOS is a set of essential software routines that initialize and test the hardware at startup, start the OS (111), and support the transfer of data between hardware devices. The BIOS is stored in ROM so that the BIOS can be executed when the computer system (100) is activated.

[0104] When the computer system (100) is in operation, the processor (105) is configured to execute software (112) stored in memory (110), transfers data from and to memory (110), and generally controls the operations of the computer system (100) according to the software. The methods and OS (111) described herein are read by the processor (105), in whole or in part, but generally the latter are read by the processor (105), buffered within the processor (105), and then executed.

[0105] Software (112) is provided and stored on any computer-readable medium, such as storage (120), and can be used by or connected to any computer-related system or method. Storage (120) may include disk storage (127), such as HDD storage. Messages of the publish-subscribe system may be stored in the computer system (100) using internal storage, such as storage (120), or peripheral storage, such as storage media (145). Alternatively, or additionally, messages of the publish-subscribe system may be stored in another computer system, such as computer system (170), and may be accessed from the computer system (100) via a network, such as a network (160), for example. Alternatively, or additionally, cryptographic keys used to encrypt and decrypt messages of the publish-subscribe system may be stored in or accessed from the computer system (100).

[0106] For example, a conventional keyboard (150) and mouse (155) may be coupled to the input / output controller (135). Other output devices, such as I / O devices (140), may include, for example, printers, scanners, microphones, etc., but are not limited thereto. Finally, I / O devices (140, 145) may further include devices that communicate both inputs and outputs, for example, a network interface card (NIC) or a modulator / demodulator (for accessing other files, devices, systems, or networks), a radio frequency (RF) or other transceiver, a telephone interface, a bridge, a router, etc., but are not limited thereto. I / O devices (140, 145) may include any generalized cryptographic card or smart card known in the art. The computer system (100) may further include a display controller (125) coupled to a display (130). For example, the computer system (100) may further include a network interface for coupling to a network (160), such as an intranet or the Internet. The network may be an IP-based network for communication between the computer system (100) and any external server, such as the computer system (170) and other clients, via broadband access. The computer system (170) may be, for example, a publisher computer system, a subscriber computer system, a broker server, for example, a server of a cluster of brokers, or a proxy of a publish-subscribe system. The network (160) transmits and receives data, for example, messages, between the computer system (100) and the computer system (170).For example, the network (160) may be a managed IP network managed by a service provider. The network (160) may be implemented using wireless protocols and technologies, such as wireless methods, e.g., Wi-Fi, WiMAX, etc. The network (160) 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 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 may include equipment for receiving and transmitting signals.

[0107] FIG. 2 illustrates an example publish-subscribe system (200). The publish-subscribe system (200) includes one or more brokers (202) configured to receive messages (204) from one or more producers (206), i.e., publishers (204), of the received messages (204). The messages (204) are assigned to topics (210). The broker (202) stores the regenerated messages (204) in the message logs of the topics (210). Consumers (208), i.e., subscribers, may subscribe to one or more of the topics (210). The messages (204) stored in the topics (210) are transmitted by the broker (202) to the consumers (208) who subscribe to each topic (210).

[0108] The broker (202) included in the publish-subscribe system (200) may be configured as an encryption broker including an encryption module. The encryption module may be implemented in the form of an internal component of the encryption broker (202) configured to handle cryptographic operations, such as the encryption and decryption of messages. The encryption broker (202) may encrypt messages (204) received from the creator (206) to generate encrypted messages (205), which are stored in the message log of the topic (210) to which the message (204) is assigned. The encryption broker (202) may decrypt the encrypted messages (205) stored in the message logs of the topic (210) to return the original messages (204), i.e., messages in an unencrypted form, to the consumer (208) who has subscribed to each of the topics (210) provided by the publish-subscribe system (200).

[0109] Such a publish-subscribe system (200) uses a publish-subscribe architecture, which is also referred to as a publish-subscribe pattern. The publish-subscribe system (200) of the broker (202) can persist all received messages (204) as logs in a file system. The messages (204) are written to categories called so-called topics (210) and read from them. The publish-subscribe system (200) can provide a large-scale, scalable publish-subscribe message queue designed as a transaction log. For example, multiple brokers (202) forming a cluster may be provided, and the transaction log may be implemented as a distributed transaction log distributed across the cluster.

[0110] FIG. 3 illustrates an additional example of a publish-subscribe system (200). The publish-subscribe system (200) of FIG. 3 corresponds to the publish-subscribe system (200) of FIG. 2, but additionally includes a proxy (203). Clients of the publish-subscribe system (200), namely producers (206) and consumers (208), do not communicate directly with the broker (202) of the publish-subscribe system (200), but rather communicate through the proxy (203). Likewise, the broker (202) can communicate with the clients (206, 208) through the proxy (203). The proxy (203) may be configured to implement access control means, for example, in the publish-subscribe system (200).

[0111] FIG. 4 illustrates in more detail an example of an encrypted message broker (202). The encrypted message broker (202) includes an encryption module (201). The encryption module (201) is configured to encrypt messages m received from a producer (206) using an encryption key k. Encryption of messages m by the encryption module (201) using the encryption key k can generate a ciphertext c = E(k,m), i.e., an encrypted message, which is stored in the message log of topic t (210). The encryption module (201) uses an encryption function E to generate the ciphertext c = E(k,m). The message log of topic (210) may contain a plurality of encrypted messages (205) stored in segment files (211). When an encrypted message (205) stored in a segment file (211) of topic t (211) needs to be transmitted to a consumer (208) subscribed to topic t (210), the encrypted message (205) is read from the storage of the broker (202) and provided to the encryption module (201) in the form of ciphertext c. The encryption module (201) uses a decryption function D to recover the original unencrypted message m = D(k,c) from ciphertext c with encryption key k.

[0112] Examples can have beneficial effects in enhancing security by enabling the rotation of cryptographic keys. Key rotations can be performed, for example, periodically as a measure of risk management. For example, security regulations may require periodic key rotation. Key rotations can be performed, for example, in response to an event that challenges the security of a cryptographic key in use. Key rotation involves changing keys and may entail re-encrypting existing encrypted data with new key(s).

[0113] FIG. 5 illustrates an additional example of a publish-subscribe system (200) having a message broker (202) and a proxy (203). Clients (206, 208) of the publish-subscribe system (200) can communicate with the broker (202) through the proxy (203). Likewise, the broker (202) can communicate with the clients (206, 208) through the proxy (203). In the case of FIG. 5, an encryption module (201) for encrypting and decrypting messages is included in the proxy (203). Thus, the proxy (203) can be configured to encrypt and decrypt messages. The proxy (203) can be further configured, for example, to implement access control measures in the publish-subscribe system (200). The above proxy can encrypt incoming messages m to generate ciphertexts c = E(k,m), which are transmitted by the broker (202) to be stored in topic t (210), and the above proxy can decrypt ciphertexts c to generate outgoing messages m = D(k,c), which are transmitted to consumers (208) subscribed to topic t.

[0114] A publish-subscribe system (200), such as the publish-subscribe system illustrated in FIGS. 2 through 5, may be continuously online, that is, continuously receive and send messages. Such a publish-subscribe system (200) is increasingly relied upon, for example, within an organization, for storing and distributing data. The following examples may describe a key rotation that causes the encryption keys k used by the publish-subscribe systems (200) to be rotated to encrypt and decrypt messages with replacement keys. These examples may have the beneficial effect of enabling effective and efficient re-encryption of a high volume of data as large as the data volumes contained in the publish-subscribe systems (200). This example may not require the publish-subscribe system (200) to be taken offline to re-encrypt the messages stored by the publish-subscribe system (200). In the following different approaches, re-encrypting topic data, i.e., messages of the topic, stored in the broker (202) of the publish-subscribe system (200) without interrupting the publish-subscribe system (200) is described.

[0115] One approach may be based on the creation of a topic alias used to enable re-encryption without interrupting the publish-subscribe system (200). An additional approach may be based on the extension of a broker (202) equipped with a re-encryption service that enables re-encryption without interrupting the publish-subscribe system (200). Both approaches may have the beneficial effect of allowing the broker (202) to continue running without interruption. Thus, the clients (206, 208) of the broker (202) may not be aware of the re-encryption of the broker (202). Additionally, a proxy (203) may be used for re-encryption. The above approach may have the additional beneficial effect of preserving message metadata by the re-encryption process.

[0116] FIG. 6 illustrates a schematic flowchart of an example method for cryptographic key rotation in a publish-subscribe system, such as the publish-subscribe system (200) of FIG. 4 or FIG. 5. The publish-subscribe system stores a plurality of messages. Each of the stored messages is assigned to one topic from a group of one or more topics. Each of the stored messages is assigned one cryptographic key from a group of one or more cryptographic keys and is encrypted with said assigned cryptographic key. The publish-subscribe system provides a broker service to route the stored messages to one or more subscribers of the topics to which the routed messages are assigned. The routing step includes the step of decrypting the message to be routed using the assigned cryptographic key of each message and the step of transmitting the decrypted messages to one or more subscribers of the assigned topic.

[0117] The cryptographic key rotation includes the re-encryption of each message of a first set of one or more first messages from the stored messages. Each of the first messages is assigned to a common first topic from a group of topics, assigned to first cryptographic keys of a first set of one or more first cryptographic keys from a group of cryptographic keys, and encrypted with the assigned first cryptographic keys. The re-encryption is executed as a background process by the cryptographic module of the publish-subscribe system, and during the execution, the steps of routing the first messages from the broker service and receiving additional first messages for the common first topic by the broker service continue.

[0118] In block (300), one or more second encryption keys are added as replacement keys for one or more first encryption keys used to encrypt first messages of the first topic. For example, a single first encryption key may be assigned to the first topic, and all messages assigned to the first topic may be encrypted using each of the single first encryption keys. In this case, a single second encryption key may be added to the first topic to replace, for example, a previously used first encryption key. For example, multiple first encryption keys may be assigned to the first topic, and other messages assigned to the first topic may be encrypted using different first encryption keys. In this case, multiple second encryption keys may be added to the first topic, for example, including replacement keys for each of the previously used first encryption keys.

[0119] In block (302), each of the first messages assigned to the first topic can be decrypted using a first encryption key assigned to each of the first messages. In block (304), each of the decrypted first messages can be re-encrypted using one of the replacement keys added in block (300). For example, the replacement keys are assigned as replacement keys for the previously used first encryption key. In block (306), the replacement keys used to re-encrypt the re-encrypted first messages can be assigned to each of the re-encrypted first messages. In block (308), the publish-subscribe system switches from using the encrypted first messages and assigned first encryption keys for routing to using the re-encrypted first messages and assigned replacement keys. Additionally, the previously used encrypted first messages and / or previously used first encryption keys can be deleted.

[0120] FIG. 7 illustrates an example publish-subscribe system (200) that implements cryptographic key rotation using a topic alias ta (212). To the clients (206, 208) of the publish-subscribe system (200), the topic alias ta (212) appears to be a normal topic, but is actually an intermediary for another topic t1 (210). Messages may be received from a producer (206) assigned to the topic alias ta (212). The topic alias ta (212) may point to topic t1 (210) so that the received message is also assigned to topic t1 (210) and stored in the segment file (211) of the message log of topic t1 (210). For this purpose, the received message m is cryptographic key k 1,For example, a ciphertext c1 = E(k1, m) can be generated by encrypting using a cryptographic key k1 assigned to topic t1 (201). This ciphertext c1 can be stored as an encrypted message (205) in the message log of topic t1 (210). A consumer (208) can subscribe to a topic alias ta (212) so that the encrypted messages (205) stored in the message log of topic t1 (210) are transmitted to the consumer (208). For this purpose, the encrypted message (205) to be transmitted can be read from the message log of topic t1 (210) in the form of ciphertext c1 and can be decrypted using the cryptographic key k1 to recover the original unencrypted message m = D(k1, c1) from the ciphertext c1. Then, the original unencrypted message m can be transmitted to the consumer (208) by the broker (202). For encryption and decryption, the broker (202) may use an encryption module as illustrated in FIG. 4.

[0121] Topic aliases, such as topic alias ta (212), may be implemented in the broker (202) or additional proxy as illustrated in FIG. 11. Topic aliases, such as topic alias ta (212), may be integrated with all facilities of the broker (202), such as policies, registry, etc. Such topic aliases may be created and / or deleted by an administrator of the broker (202) or proxy. Additionally, administrator actions may include attaching topic aliases, such as topic alias ta (212), to a specific topic (a concrete topic), such as topic t1 (210), and / or detaching topic aliases, such as topic alias ta (212), from a specific topic (a concrete topic), such as topic t1 (210). A topic alias attached to, that is, assigned to, a specific topic is an intermediary pointer that points to each specific topic. When a topic alias is attached to a specific topic, each specific topic can optionally be hidden from the clients of the publish-subscribe system (200). Therefore, clients, such as producers (206) and consumers (208), can communicate only with logical, aliased topics, that is, topic aliases such as topic alias ta (212).

[0122] For example, the publish-subscribe system may include only topic aliases assigned to topics. For example, the publish-subscribe system may also include one or more unassigned topic aliases that are not assigned to any topics. Such unassigned topic aliases may be visible to clients, but return an error when used to send or receive messages. Alternatively, unassigned topic aliases may be hidden from clients (206, 208) until they are assigned to a topic.

[0123] The re-encryption of an encrypted message (205) stored in the message log of topic t1 (210) can be performed by the broker (202) in the background, for example, using a re-encryption process (214) running on a background thread. The re-encryption process (214) can be executed, for example, by the encryption module of the broker (202).

[0124] FIG. 8 illustrates a publish-subscribe system (200) that performs re-encryption using a re-encryption process (214). The initial situation for re-encryption may be the arrangement shown in FIG. 7. For re-encryption, the step of using a topic alias, such as topic alias ta (212), may include the step of providing a topic, such as topic t1 (210). Each topic t1 (210) may be generated, for example. Additionally, a topic alias ta (212) may be provided. A topic alias ta (212) may be generated, for example. The provided topic alias ta (212) may be assigned to the provided topic t1 (210). Topic alias ta (212) may be configured to encrypt messages m received from a producer (206) to be stored in the message log of topic t1 (210), for example, using the encryption module of a broker (202). The producer (206) may send messages m to topic alias ta (212). Additionally, topic alias ta (212) may be configured to decrypt encrypted messages stored in the message log of topic t1 (210), for example, using the encryption module of a broker (202), to restore the original messages m to be sent to a consumer (208) subscribing to topic alias ta (212). Each message m may be encrypted and decrypted using an encryption key k1 assigned to topic t1 (210). Clients (206, 208) of the publish-subscribe system (200) can start sending and receiving messages through the topic alias ta (212).

[0125] To perform key rotation, that is, to replace the existing encryption key (k1) used to encrypt encrypted messages (205) assigned to and stored in the message log of topic t1 (210), re-encryption may be performed. For example, the re-encryption workflow may be executed by including the step of adding an additional topic t2 (220). Key rotation may be initiated, for example, by generating an additional encryption key k2 for the additional topic t2 (220). The encryption module may be updated to encrypt new messages, i.e., messages received by the broker (202) or proxy, using the additional key k2. The re-encryption process of the messages (205) stored in the message log of the existing topic t1 (210) may be initiated and includes the step of copying data from the existing topic t1 (210) to the additional topic t2 (220). The above copying step may include a step of re-encrypting the copied messages (205) with an additional key k2. For the re-encryption, each data included in the form encrypted by the existing topic may be decrypted using the existing encryption key k1 of the existing topic t1 (210) and encrypted using the additional encryption key k2 of the additional topic t2 (220). The re-encryption may include, for example, the recovery of the original messages m = D(k1, c1) using the ciphertext c1 stored in the topic t1 (210) and the existing encryption key k1. The recovered original messages may be re-encrypted using the additional key k2 and the final ciphertext c2 = E(k2, m) may be stored as an encrypted message (225) in a segment file (221) within the message log of the additional topic t2 (220).

[0126] The re-encryption process (214) can add all new messages m that arrive during re-encryption to the additional topic t2 (220). These new messages m can be encrypted using an additional encryption key k2 to generate ciphertext c2 = E(k2, m), which can be stored in the message log of the additional topic t2 (220). When the copying step is completed, the topic alias ta (212) can be reassigned to the additional topic t2 (220). The additional topic t2 (220) may contain new messages encrypted with the additional encryption key k2 as well as re-encrypted data copied from the existing topic t1 (210). Thus, the existing topic t1 (210) can be inactive, while the additional topic t2 (220) is active. Optionally, the previous active topic log, i.e., the message log of the existing topic t1 (210), may be deleted as illustrated in FIG. 9, and as a result, a situation as illustrated in FIG. 10 may occur. The creation of additional topic t2 (220) and the step of switching from the existing topic t1 (210) to additional topic t2 (220) may not be visible to the clients (206, 208) of the publish-subscribe system (200). The clients (206, 208) may continue to communicate with the topic alias ta (212). Messages m received from the producer (206) may be encrypted using an additional encryption key k2 to generate ciphertexts c2 = E(k2, m), and these ciphertexts may be stored as encrypted messages (225) in the message log of the additional topic t2 (220). Additionally, encrypted messages (225) stored in the message log of additional topic t2 (220) can be decrypted using additional encryption key k2 to recover the original message m = D(k2, c2), and this message can be sent to consumers (208) who are subscribed to the topic alias ta (212).During the entire execution of the re-encryption process (214), the publish-subscribe system (200) can continue its service, that is, receive messages m from the producers (206) and transmit the received messages m to the consumers (208).

[0127] FIGS. 11, FIGS. 12, and FIGS. 13 illustrate alternative embodiments of FIGS. 7, FIGS. 8, and FIGS. 10, respectively, in which the topic alias ta (212) and the re-encryption process (214) are implemented in a proxy (203) instead of a broker (202).

[0128] FIG. 14 illustrates a schematic flowchart of an example method for cryptographic key rotation in a publish-subscribe system, such as the publish-subscribe system (200) of FIG. 7 through 13. The method of FIG. 14 corresponds to the method of FIG. 6 and is adapted to use a topic alias for cryptographic key rotation. The topic alias refers to a first topic from the first messages. Subscribers of the common first topic subscribe to the first topic alias. Additionally, a publisher, i.e., a producer, capable of transmitting messages can assign messages to the first topic alias. Messages assigned to the first topic alias can be automatically reassigned to the common first topic.

[0129] In block (320), additional common second topics may be added. Blocks (322 to 328) may correspond to blocks (300 to 306) of FIG. 6. In block (330), re-encrypted messages are stored in the message log of the additional common second topic added to block (320). In block (332), the publish-subscribe system may switch from a step of using encrypted first messages and assigned first encryption keys to a step of using re-encrypted first messages and assigned replacement keys for routing. The switching step may include a step of re-assigning a topic alias from a common first topic containing encrypted first messages to a common second topic containing re-encrypted first messages. Additionally, previously used encrypted first messages and / or previously used first encryption keys may be deleted. The deletion may include, for example, the deletion of the common first topic.

[0130] FIG. 15 illustrates a schematic block diagram illustrating an alternative implementation of re-encryption using a broker re-encryption service. The broker re-encryption service may be implemented in a broker (202) as illustrated in FIG. 4. The broker re-encryption service does not involve topic aliases, but rather may extend topic management within the broker (202), for example, of topic t (210). For example, the broker's log cleaner service, which performs compaction and handles expiration through background threads, may be extended to include re-encryption features to provide the re-encryption service.

[0131] Topic t (210) may be composed of multiple partitions, each of which may be composed of multiple segment files (211). A write process for adding an additional message, i.e., a new message, to topic t (210) may include the step of adding the additional message to the last open segment file (211), e.g., segment file “segment 3”. Closed segment files may be exchanged or deleted by a log cleaner service, e.g., when a maximum retention time of the messages stored in each of the segment files has expired.

[0132] A re-encryption workflow having a broker re-encryption service may include the step of issuing a command to re-encrypt an existing topic encrypted with a first encryption key using a second, i.e., a new encryption key. In response to issuing said command, a re-encryption process may be initiated. The re-encryption process may be implemented as background threads. Incoming new messages may be encrypted using the second key. The broker (202) may close the current segment file "Segment 3" and open a new segment file (222) "Segment 4". The broker (202) may further determine and store an offset value of the message offset, and encryption may be initiated using the second key with this offset value.

[0133] Re-encryption of previously received messages, that is, messages stored in closed segment files (211) "Segment 1", "Segment 2", and "Segment 3", can be initiated by background threads. All previous messages starting at a determined offset, that is, all messages encrypted with a previous encryption key, can be re-encrypted, for example, on a file-by-file basis. For example, re-encryption can start at the latest segment file (211) "Segment 3". When segment file (211) "Segment 3" is re-encrypted, that is, decrypted using a previous first encryption key and encrypted using a current second encryption key, the final re-encrypted segment file (221) "Segment 3" is exchanged for the previous segment file (211) "Segment 3". For example, previous segment files (211) "Segment 2" and "Segment 3" containing messages encrypted using a previous encryption key may be replaced with segment files (221) "Segment 2" and "Segment 3" containing the same messages as previous segment files (211) "Segment 2" and "Segment 3" and currently re-encrypted using a second encryption key. When the final message of the final segment file (211), for example, the oldest segment file "Segment 2", is re-encrypted, the re-encryption process may be completed and the previous first encryption key, i.e., discarded. For example, segment file "Segment 1" may be deleted during key rotation, as the maximum retention time of the messages contained in each segment file "Segment 1" has expired. Therefore, by starting re-encryption with the latest "segment 3," the publish-subscribe system can prevent unnecessary re-encryption of segment files, such as "segment 1," which are later deleted during key rotation.

[0134] As illustrated in FIG. 15, re-encryption using the re-encryption service at the broker (202) can be optimized by implementing parallelization. The re-encryption workload can be parallelized, that is, distributed across multiple brokers in a cluster of brokers included in the publish-subscribe system. Examples may have beneficial effects, such as increasing the speed of re-encryption, for instance, optimizing it. The publish-subscribe system may include multiple brokers. The internal protocol of the publish-subscribe system may be coordinated among itself so that each of the brokers in the publish-subscribe system that has a replica of a partition re-encrypts only a subset of the segment fields of each partition. Then, each of the brokers exchanges the subset of the re-encrypted segment fields with all other brokers that also have a replica.

[0135] FIG. 16 illustrates a schematic flowchart of an example method for cryptographic key circulation in a publish-subscribe system, such as the publish-subscribe system (200) of FIG. 7 through 13. The method of FIG. 16 corresponds to the method of FIG. 6 and is adapted to use a re-encryption service provided by a broker of the publish-subscribe system. Segment files can be used to store messages. When a segment file is full, the storing step continues using a subsequent segment file.

[0136] In block (340), the segment file currently used to store messages is closed, and in block (342), an additional segment file is opened to store messages. Messages stored in the additional segment file are encrypted using replacement keys provided in block (346). For example, replacement keys may be provided prior to any one of blocks (340, 342, or 344). In block (344), an offset value identifying the offset at which the step of storing messages encrypted with replacement keys begins may be determined, for example, and may be stored. Blocks (346 to 352) may correspond to blocks (300 to 306) of FIG. 6. Re-encrypting messages in segment files may generate re-encrypted segment files. Segment files stored in block (354) may be replaced by the re-encrypted segment files. For example, re-encryption can start with the latest stored segment file and be completed when it reaches the oldest remaining stored segment file and re-encrypts it.

[0137] The present invention may be a system, a method, and / or a computer program product in integration at any possible level of technical detail. A computer program product may include a computer-readable storage medium comprising computer-readable program instructions for a processor to perform embodiments of the present invention.

[0138] A computer-readable storage medium may be a tangible device capable of storing and storing instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, 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, but is not limited thereto. Specific examples of a computer-readable storage medium include a portable computer diskette, a hard disk, 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 multi-purpose disk (DVD), a memory stick, a floppy disk, a punch card, or mechanically encoded devices such as raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage media as used in this specification are not interpreted as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., optical pulses passing through fiber optic cables), or electrical signals transmitted through wires.

[0139] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device, or downloaded to an external computer or external storage device via a network, e.g., the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface of each computing / processing device receives computer-readable program instructions from the network and transmits the computer-readable program instructions to be stored on a computer-readable storage medium within each computing / processing device.

[0140] Computer-readable program instructions for carrying out the method of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, condition setting data, configuration data for integrated circuits, or source code or object code written in a combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk, C++, etc., and procedural programming languages ​​such as the "C" programming language or similar programming languages. Computer-readable program instructions may be executed entirely on a user's computer, partially on a user's computer, as a standalone software package, partially on a 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 through any type of network, including a LAN (local area network) or a WAN (wide area network), and may be connected to an external computer (e.g., the Internet using an Internet service provider). In some embodiments, for example, an electronic circuit comprising a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer-readable program instructions by utilizing condition information of computer-readable program instructions for the purpose of personalizing the electronic circuit to perform embodiments of the present invention.

[0141] Embodiments of the present invention are described with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present invention. It should be understood that each block of the flowcharts and / or block diagrams, and combinations of blocks of the flowcharts and / or block diagrams, may be implemented by computer-readable program instructions.

[0142] These computer-readable program instructions may be provided to a processor of a computer, or to another programmable data processing device that produces a machine, and instructions executed through the processor of the computer or other programmable data processing device produce means for implementing functions / operations specified in blocks or blocks of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium capable of instructing a computer, a programmable data processing device and / or other devices to operate in a particular manner, and the computer-readable storage medium in which the instructions are stored comprises a manufactured article containing instructions that implement embodiments of functions / operations specified in blocks or blocks of a flowchart and / or block diagram.

[0143] Computer-readable program instructions may also be applied to a computer, another programmable data processing device, or another device to generate processes implemented in the computer, whereby a series of operational steps performed on the computer, other programmable device, or other device, thereby enabling the instructions executed on the computer, other programmable device, or other device to implement functions / operations specified in blocks or blocks of a flowchart and / or block diagram.

[0144] In the drawings, flowcharts and block diagrams illustrate the structure, function, 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 of a flowchart or block diagram may represent a module, vector, or part of an instruction, which includes one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions indicated in the blocks may occur in the order shown in the drawings. For example, two consecutively indicated blocks may actually be executed as a single step, or executed simultaneously, substantially simultaneously, partially or entirely in a temporally overlapping manner, or the blocks may sometimes be executed in reverse order according to the related functions. Additionally, it should be noted that each block of a block diagram and / or flowchart, and combinations of blocks of a block diagram and / or flowchart, may be implemented by a special-purpose hardware-based system that performs a specific function or performs or operates a combination of special-purpose hardware and computer instructions.

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

[0146] The characteristics are as follows:

[0147] On-demand self-service: Cloud consumers can unilaterally provision computing capacities, such as server time and network storage, automatically as needed without requiring human interaction with the service provider.

[0148] Broad network access: Functions accessed through standard mechanisms that encourage use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs) can be utilized through the network.

[0149] Resource Pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, which dynamically allocates and reallocates different physical and virtual resources according to demand. Consumers generally cannot control or have knowledge of the exact location of the provided resources, but there is location independence in that they can specify the location at a higher level of abstraction (e.g., country, state, or data center).

[0150] Rapid elasticity: Capabilities are provided agilely and elastically, allowing for rapid scale-out (sometimes automatically) and elastic release to rapid scale-in. The potential to be provided to consumers is often unlimited, and it appears as though any desired quantity can be purchased at any time.

[0151] Measured service: Cloud systems automatically control and optimize resource usage by utilizing metering capabilities at some 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, thereby providing transparency to both service providers and users.

[0152] The service models are as follows:

[0153] Software as a Service (SaaS): The service provided to consumers enables the use of a provider's applications running on cloud infrastructure. Applications are accessible from multiple client devices through thin client interfaces, such as web browsers (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or individual application capabilities, except for limited user-specific application configuration settings.

[0154] Platform as a Service (PaaS): The service provided to consumers enables the deployment of consumer-generated or acquired applications, created using programming languages ​​and tools supported by the provider, onto cloud infrastructure. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage. However, they can control the deployed applications and, where possible, the configurations of the application hosting environment.

[0155] Infrastructure as a Service (IaaS): The service provided to the consumer offers processing, storage, networking, and other basic computing resources, whereby 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 can exercise limited control over operating systems, storage, deployed applications, and, where possible, selected networking components (e.g., host firewalls).

[0156] The deployment models are as follows:

[0157] Private cloud: Cloud infrastructure operates for only one organization, can be managed by that organization or a third party, and can be located on-premises or off-premises.

[0158] Community Cloud: The cloud infrastructure is shared by multiple organizations and supports specific communities that share common interests (e.g., missions, security requirements, policies, and compliance audits); it can be managed by multiple organizations or third parties and can be located on-premises or off-premises.

[0159] Public cloud: Cloud infrastructure is available for use by the general public or large industry groups and is owned by organizations that sell cloud services.

[0160] Hybrid cloud: A cloud infrastructure is a mixed configuration of two or more clouds (private, community, or public), which are distinct entities but are coupled together by standardized or proprietary technologies (e.g., cloud bursting for load balancing between clouds) that enable data and application portability.

[0161] Cloud computing environments aim for services focused on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes.

[0162] Now, referring to FIG. 17, an exemplary cloud computing environment (50) is illustrated to enable use cases of the invention. As illustrated, the cloud computing environment (50) includes one or more cloud computing nodes (10) used by a local computing device used by a cloud consumer, such as being able to communicate with, for example, a personal digital assistant (PDA) or mobile phone (54A), a desktop computer (54B), a laptop computer (54C), and / or a computer system for a vehicle (54N). The nodes (10) can communicate with each other. They may be physically or virtually grouped in one or more networks, such as private, community, public, or hybrid clouds or combinations thereof, as described herein (not illustrated). This enables the cloud computing environment (50) to provide infrastructure, platforms, and / or software as a service so that the cloud consumer does not need to maintain resources on the local computing device. It should be understood that the types of computing devices (54A-N) are described for illustrative purposes only, and that computing nodes (10) and the cloud computing environment (50) can communicate with all types of computerized devices through all types of networks and / or network addressable connections (e.g., using a web browser).

[0163] Referring now to FIG. 18, a set of functional abstraction layers provided by the cloud computing environment (50) (Fig. 17) is illustrated. It should be understood in advance that the components, layers, and functions illustrated in FIG. 18 are for illustrative purposes only and preferred embodiments of the invention are not limited thereto. As illustrated, the following layers and corresponding functions are provided:

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

[0165] The virtualization layer (70) provides an abstraction layer from which examples of the following virtual subjects may be provided: virtual servers (71); virtual storage (72); virtual networks (73), including virtual private networks; virtual applications and operating systems (74); and virtual clients (75).

[0166] In one example, the management layer (80) provides the functions described below. Resource provisioning (81) provides the dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. Metering and pricing (82) provides cost tracking when resources are used within the cloud computing environment, and billing or invoices for the consumption of these resources. In one example, these resources may include application software licenses. Security provides protection for data and other resources, as well as identity verification for cloud consumers and tasks. The user portal (83) provides access to the cloud computing environment to consumers and system administrators. Service level management (84) provides the allocation and management of cloud computing resources to ensure that the required service level is met. Service level agreement (SLA) planning and fulfillment (85) provides the pre-arrangement and procurement of cloud computing resources to meet anticipated future requirements that comply with the SLA.

[0167] The workload layer (90) provides examples of functions for which the cloud computing environment can be utilized. Examples of workloads and functions that can be provided in this layer include: mapping and navigation (91); software development and lifecycle management (92); virtual classroom training delivery (93); data analysis processing (94); transaction processing (95); and cryptographic key rotation in a publish-subscribe system (96).

Claims

Claim 1 A method for performing a cryptographic key rotation in a publish-subscribe system comprises: a step of storing a plurality of messages by the publish-subscribe system, wherein the stored messages are assigned to a topic from a group of topics, and the stored messages are encrypted with a first cryptographic key among a group of one or more cryptographic keys assigned to each stored message; and a step of routing the stored messages by the publish-subscribe system to one or more subscribers of the topics to which the stored messages are assigned, wherein the routing step includes decrypting a message within the plurality of messages to be routed using the cryptographic key assigned to each message and sending the message to one or more subscribers who have subscribed to the topic assigned to the message. The method comprises the step of performing the encryption key rotation by the publish-subscribe system, wherein the re-encryption includes the re-encryption of one or more first messages among the stored messages, wherein the re-encryption comprises: assigning the one or more first messages to a common first topic from a group of topics; adding a second encryption key to the group of the one or more encryption keys, wherein the second encryption key is a replacement key for the first encryption key; decrypting the one or more first messages using the first encryption key assigned to the one or more first messages; re-encrypting the one or more first messages using the second encryption key to form one or more re-encrypted first messages; and assigning the second encryption key to the one or more re-encrypted first messages.A method comprising switching from using the one or more first messages and the first encryption key for routing to using the one or more re-encrypted first messages and the second encryption key for routing. Claim 2 A method in which, while continuing to route one or more first messages and receive additional first messages for the common first topic, the re-encryption is executed as a background process. Claim 3 In claim 2, a method in which a broker of the publish-subscribe system communicates with clients of the publish-subscribe system through a proxy of the publish-subscribe system. Claim 4 A method according to claim 1, wherein the stored messages are provided with a header identifying an assigned cryptographic key, and the header identifying the assigned cryptographic key is removed during routing before the stored messages are transmitted to one or more subscribers. Claim 5 A method according to claim 4, wherein the decryption of one or more first messages further comprises decrypting the first encryption key provided by the header of each first message using an envelope encryption key, and the re-encryption further comprises encrypting the second encryption key having the envelope encryption key and replacing the first encryption key with an encrypted replacement key in the header of each first message. Claim 6 In claim 1, the publish-subscribe system comprises an index that identifies an assigned cryptographic key of a group of one or more cryptographic keys for each of the stored messages. Claim 7 A method according to claim 6, wherein the re-encryption further comprises, for each of the one or more first messages: identifying the first encryption key assigned to each first message using the index; and assigning a second encryption key for the identified first encryption key in the index to the re-encrypted first message corresponding to each first message. Claim 8 In claim 1, each of the stored messages is stored as a member of a topic to which each message is assigned, and the method further comprises: providing a first topic alias pointing to the common first topic—one or more subscribers of the common first topic subscribe to the first topic alias—; adding an additional common second topic to the group of topics; and storing one or more re-encrypted first messages as members of the common second topic, wherein the switching comprises re-assigning the first topic alias to the common second topic so that one or more subscribers of the first topic alias become subscribers of the common second topic. Claim 9 In claim 8, the switching method further comprises deleting the common first topic having one or more first messages. Claim 10 In claim 8, the switching method further includes deleting the first encryption key. Claim 11 In claim 8, a method wherein each of the additional first messages received from the publisher by the publish-subscribe system for the first topic alias is assigned to the common second topic, assigned to the second encryption key, and encrypted using the second encryption key. Claim 12 A method according to claim 1, wherein the switching further comprises replacing each of the one or more first messages with a corresponding re-encrypted first message. Claim 13 In paragraph 12, the one or more first messages are stored in a set of segment files, one of the segment files in the set of segment files is currently used to store the encrypted first messages, and the remaining segment files in the set of segment files that are already filled with the encrypted first messages are closed, and if an open segment file is full, the open segment file is closed, and an additional segment file is added to the set of segment files, and the additional segment file is used to store the encrypted first messages; when the re-encryption is initiated, the segment file currently used to store the encrypted first messages is closed, and an additional segment file is added to the set of segment files and is used to store additional encrypted first messages received by the publish-subscribe system from publishers for the common first topic; A method wherein the re-encryption of one or more first messages is performed segmentally, and the segment-by-segment re-encryption comprises selecting the remaining closed segment files one after another, generating a replacement segment file for each of the remaining closed segment files that includes the first messages in an encrypted form obtained from each of the remaining closed segment files, and replacing each of the remaining closed segment files with the replacement segment file. Claim 14 In paragraph 13, the segment re-encryption method begins with the latest segment file of a set of segment files. Claim 15 In claim 13, a method for identifying an offset of an additional first message in which encryption using the second encryption key is initiated within the storage of the publish-subscribe system, wherein an offset value is determined. Claim 16 In paragraph 13, a method wherein each of the additional first messages received by the publish-subscribe system from the publishers for the common first topic is assigned to the common first topic, assigned to the second encryption key, and encrypted using the second encryption key. Claim 17 In claim 13, the publish-subscribe system comprises a plurality of additional brokers, the publish-subscribe system comprises a plurality of additional replicas of a set of segment files, each of the additional replicas is assigned to one of the additional brokers, the re-encryption of the segment files is distributed among the brokers of the publish-subscribe system implementing a parallelization of the re-encryption, and the re-encrypted first messages are distributed among other replicas of the set of segment files. Claim 18 In a computer-readable storage medium storing program instructions for performing a cryptographic key rotation in a publish-subscribe system, said program instructions are executable by a processor of the computer system of the publish-subscribe system, so as to enable the computer system to: store a plurality of messages—said that the stored messages are assigned to a topic from a group of topics, said stored messages are encrypted with a first cryptographic key among a group of one or more cryptographic keys assigned to each stored message—; route said stored messages to one or more subscribers of the topics to which said stored messages are assigned—said that the routing includes decrypting a message within said plurality of messages to be routed using the cryptographic key assigned to each message and transmitting said message to one or more subscribers who have subscribed to the topic assigned to said message—; Performing the cryptographic key rotation including a re-encryption of one or more first messages among the stored messages, wherein the re-encryption comprises: assigning the one or more first messages to a common first topic from a group of topics; adding a second cryptographic key to the group of the one or more cryptographic keys, wherein the second cryptographic key is a replacement key for the first cryptographic key; decrypting the one or more first messages using the first cryptographic key assigned to the one or more first messages; re-encrypting the one or more first messages using the second cryptographic key to form one or more re-encrypted first messages; and assigning the second cryptographic key to the one or more re-encrypted first messages.A computer-readable storage medium comprising switching from using the one or more first messages and the first encryption key for routing to using the one or more re-encrypted first messages and the second encryption key for routing. Claim 19 A computer system for performing cryptographic key rotation in a publish-subscribe system comprises one or more computer-readable storage media storing program instructions and one or more processors, wherein the one or more processors, in response to executing the program instructions: the publish-subscribe system stores a plurality of messages - the stored messages are assigned to a topic from a group of topics, and the stored messages are encrypted with a first cryptographic key among a group of one or more cryptographic keys assigned to each stored message -; the publish-subscribe system routes the stored messages to one or more subscribers of the topics to which the stored messages are assigned - the routing includes decrypting a message within the plurality of messages to be routed using the cryptographic key assigned to each message and transmitting the message to one or more subscribers who have subscribed to the topic assigned to the message -; The above-described publish-subscribe system is configured to perform the cryptographic key cycle, which includes a re-encryption of one or more first messages among the stored messages, wherein the re-encryption comprises: assigning the one or more first messages to a common first topic from a group of topics; adding a second cryptographic key to the group of the one or more cryptographic keys, wherein the second cryptographic key is a replacement key for the first cryptographic key; decrypting the one or more first messages using the first cryptographic key assigned to the one or more first messages; re-encrypting the one or more first messages using the second cryptographic key to form one or more re-encrypted first messages; and assigning the second cryptographic key to the one or more re-encrypted first messages.A computer system comprising switching from using the one or more first messages and the first encryption key for routing to using the one or more re-encrypted first messages and the second encryption key for routing. Claim 20 delete

Citation Information

Patent Citations

  • Encryption, authentication, and key management formultimedia content pre-encryption

    KR1020040089120A

  • Storage system configured for encryption of data items using multidimensional keys having corresponding class keys

    US9659190B1

  • Authenticated encryption with multiple contexts

    US10623186B1

  • Key rotation and selective re-encryption for data security

    US20120321078A1

  • High-performance access management and data protection for distributed messaging applications

    US20180254892A1