KR20230109660A - 발행-구독 시스템에서의 키 순환 - Google Patents

발행-구독 시스템에서의 키 순환 Download PDF

Info

Publication number
KR20230109660A
KR20230109660A KR1020237019245A KR20237019245A KR20230109660A KR 20230109660 A KR20230109660 A KR 20230109660A KR 1020237019245 A KR1020237019245 A KR 1020237019245A KR 20237019245 A KR20237019245 A KR 20237019245A KR 20230109660 A KR20230109660 A KR 20230109660A
Authority
KR
South Korea
Prior art keywords
messages
encryption
assigned
topic
encrypted
Prior art date
Application number
KR1020237019245A
Other languages
English (en)
Inventor
크리스토퍼 기블린
존 루니
플로리안 프로이스
파스칼 베치
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20230109660A publication Critical patent/KR20230109660A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Storage Device Security (AREA)
  • Lock And Its Accessories (AREA)

Abstract

발행-구독 시스템에서의 키 순환(KEY ROTATION ON A PUBLISH-SUBSCRIBE SYSTEM)
본 발명은 저장된 암호화된 메시지들을 라우팅된 메시지들이 할당되는 토픽의 하나 또는 그 이상의 구독자들로 라우팅하기 위한 브로커 서비스를 제공하는 발행-구독 시스템에서의 암호 키 순환(a cryptographic key rotation)을 위한 방법에 관한 것이다. 상기 라우팅하는 단계(routing)는 상기 저장된 암호화된 메시지들을 복호화하는 단계(decrypting)를 포함한다. 상기 암호 키 순환은 암호 교체 키(a cryptographic replacement key)를 사용하는 상기 저장된 메시지들의 재-암호화(a re-encryption)를 포함한다. 상기 재-암호화는 상기 발행-구독 시스템의 암호화 모듈에 의해서 백그라운드 프로세스(a background process)로 실행되고, 상기 실행 동안, 상기 브로커 서비스는 계속된다.

Description

발행-구독 시스템에서의 키 순환
[0001] 본 발명은 발행-구독 시스템들의 분야(the field of publish-subscribe systems)에 관한 것으로, 더욱 상세하게는, 발행-구독 시스템에서 암호 키 순환(a cryptographic key rotation)을 위한 방법, 컴퓨터 프로그램 제품, 및 컴퓨터 시스템에 관한 것이다.
[0002] 발행-구독 시스템들과 같은 분산 데이터 스트리밍 시스템들(Distributed data streaming systems)은 예를 들어, 기업들(enterprises) 및 기타 유형들의 조직들(organizations) 내의 데이터의 보급(the distribution of data)에서 점점 더 많은 역할을 수행한다. 발행-구독 시스템은, 발행자들(publishers)에 의해 제공된, 메시지들이 시스템의 다양한 부분들, 즉 구독자들(subscribers)에게, 비동기적으로 브로드캐스트될 수 있게 한다. 토픽에 발행된 메시지들은 각각의 토픽의 구독자들에게 브로드캐스트된다. 발행-구독 시스템 내에 저장된 메시지들을 보호하기 위해서, 저장된 메시지들은 암호화될 수 있다.
[0003] 본 발명의 일 실시예에 따르면, 발행-구독 시스템에서 암호 키 순환을 하기 위한 방법이 제공된다. 상기 발행-구독 시스템은 상기 발행-구독 시스템은 복수의 메시지들을 저장하고, 상기 저장된 메시지 각각은 토픽들 그룹(a group of topics)으로부터의 하나의 토픽에 할당되며, 상기 저장된 메시지들 각각은 하나 또는 그 이상의 암호 키들 그룹 중 하나의 암호 키가 할당되고 상기 할당된 암호 키로 암호화된다. 상기 발행-구독 시스템은 상기 저장된 메시지들을 라우팅된 메시지들이 할당되는 상기 토픽들의 하나 또는 그 이상의 구독자들로 라우팅하는 브로커 서비스를 제공한다. 상기 라우팅은 상기 각 메시지의 할당된 암호 키를 사용하여 라우팅될 메시지를 복호화하는 단계(decrypting) 및 상기 복호화된 메시지들을 상기 할당된 토픽의 하나 또는 그 이상의 구독자들에게 전송하는 단계(sending)를 포함한다.
[0004] 상기 암호 키 순환은 상기 저장된 메시지들 중 하나 또는 그 이상의 제1 메시지들의 제1 세트의 각 메시지의 재-암호화(a re-encryption)를 포함한다. 상기 제1 메시지들 각각은 상기 토픽들 그룹으로부터의 공통 제1 토픽(a common first topic)에 할당되고, 상기 암호화 키들 그룹 중 하나 또는 그 이상의 제1 암호 키들의 제1 세트의 제1 암호 키에 할당되며, 그리고 상기 할당된 제1 암호 키로 암호화된다. 상기 재-암호화는 상기 발행-구독 시스템의 암호화 모듈에 의해서 백그라운드 프로세스로 실행되며, 상기 재 암호화 동안 제1 메시지들을 라우팅하는 것과 상기 브로커 서비스에 의해 추가의 제1 메시지들을 상기 공통 제1 토픽에 대해 수신하는 것을 계속한다.
[0005] 상기 재-암호화는 하나 또는 그 이상의 제2 암호 키들의 제2 세트를 상기 암호 키들의 그룹에 추가하는 단계(adding)를 포함한다. 상기 제2 암호 키들 각각은 상기 제1 암호 키들 중 하나에 대한 교체 키(a replacement key for one of the first cryptographic keys)이다. 상기 방법은 상기 제1 메시지들 각각에 대해 상기 각각의 제1 메시지에 할당된 제1 암호 키를 사용하여 상기 암호화된 제1 메시지를 복호화하는 단계(decrypting)를 더 포함한다. 상기 복호화된 제1 메시지는 상기 할당된 제1 암호 키에 대한 교체 키를 사용하여 재-암호화된다(re-encrypted), 상기 재-암호화된 제1 메시지에 사용되는 상기 교체 키는 상기 각 재-암호화된 제1 메시지에 할당된다. 상기 라우팅을 위해서 상기 암호화된 제1 메시지와 상기 할당된 제1 암호 키를 사용하는 것으로부터 상기 재-암호화된 제1 메시지와 상기 할당된 교체 키를 사용하는 것으로 스위칭하는 단계(switching)가 수행된다.
[0006] 본 발명의 다른 실시예들에 따르면, 발행-구독 시스템에서 암호 키 순환을 하기 위한 컴퓨터 프로그램 제품이 제공된다. 상기 컴퓨터 프로그램 제품은 구현된 프로그램 명령들을 갖는 컴퓨터 판독 가능한 스토리지 매체를 포함한다. 상기 프로그램 명령들은 상기 발행-구독 시스템의 컴퓨터 시스템의 프로세서에 의해 실행 가능하고, 상기 컴퓨터 시스템이 상기 암호 키 순환을 수행하도록 한다.
[0007] 상기 발행-구독 시스템은 상기 발행-구독 시스템은 복수의 메시지들을 저장하고, 상기 저장된 메시지 각각은 토픽들 그룹(a group of topics)으로부터의 하나의 토픽에 할당되며, 상기 저장된 메시지들 각각은 하나 또는 그 이상의 암호 키들 그룹 중 하나의 암호 키가 할당되고 상기 할당된 암호 키로 암호화된다. 상기 발행-구독 시스템은 상기 저장된 메시지들을 라우팅된 메시지들이 할당되는 상기 토픽들의 하나 또는 그 이상의 구독자들로 라우팅하는 브로커 서비스를 제공한다. 상기 라우팅은 상기 각 메시지의 할당된 암호 키를 사용하여 라우팅될 메시지를 복호화하는 단계(decrypting) 및 상기 복호화된 메시지들을 상기 할당된 토픽의 하나 또는 그 이상의 구독자들에게 전송하는 단계(sending)를 포함한다.
[0008] 상기 암호 키 순환은 상기 저장된 메시지들 중 하나 또는 그 이상의 제1 메시지들의 제1 세트의 각 메시지의 재-암호화(a re-encryption)를 포함한다. 상기 제1 메시지들 각각은 상기 토픽들 그룹으로부터의 공통 제1 토픽(a common first topic)에 할당되고, 상기 암호화 키들 그룹 중 하나 또는 그 이상의 제1 암호 키들의 제1 세트의 제1 암호 키에 할당되며, 그리고 상기 할당된 제1 암호 키로 암호화된다. 상기 재-암호화는 상기 발행-구독 시스템의 암호화 모듈에 의해서 백그라운드 프로세스로 실행되며, 상기 재 암호화 동안 제1 메시지들을 라우팅하는 것과 상기 브로커 서비스에 의해 추가의 제1 메시지들을 상기 공통 제1 토픽에 대해 수신하는 것을 계속한다.
[0009] 상기 재-암호화는 하나 또는 그 이상의 제2 암호 키들의 제2 세트를 상기 암호 키들의 그룹에 추가하는 단계(adding)를 포함한다. 상기 제2 암호 키들 각각은 상기 제1 암호 키들 중 하나에 대한 교체 키(a replacement key for one of the first cryptographic keys)이다. 상기 방법은 상기 제1 메시지들 각각에 대해 상기 각각의 제1 메시지에 할당된 제1 암호 키를 사용하여 상기 암호화된 제1 메시지를 복호화하는 단계(decrypting)를 더 포함한다. 상기 복호화된 제1 메시지는 상기 할당된 제1 암호 키에 대한 교체 키를 사용하여 재-암호화된다(re-encrypted), 상기 재-암호화된 제1 메시지에 사용되는 상기 교체 키는 상기 각 재-암호화된 제1 메시지에 할당된다. 상기 라우팅을 위해서 상기 암호화된 제1 메시지와 상기 할당된 제1 암호 키를 사용하는 것으로부터 상기 재-암호화된 제1 메시지와 상기 할당된 교체 키를 사용하는 것으로 스위칭하는 단계(switching)가 수행된다.
[0010] 본 발명의 또 다른 실시예들에 따르면, 발행-구독 시스템에서 암호 키 순환을 하기 위한 컴퓨터 시스템이 제공된다. 상기 발행-구독 시스템은 상기 발행-구독 시스템은 복수의 메시지들을 저장하고, 상기 저장된 메시지 각각은 토픽들 그룹(a group of topics)으로부터의 하나의 토픽에 할당되며, 상기 저장된 메시지들 각각은 하나 또는 그 이상의 암호 키들 그룹 중 하나의 암호 키가 할당되고 상기 할당된 암호 키로 암호화된다. 상기 발행-구독 시스템은 상기 저장된 메시지들을 라우팅된 메시지들이 할당되는 상기 토픽들의 하나 또는 그 이상의 구독자들로 라우팅하는 브로커 서비스를 제공한다. 상기 라우팅은 상기 각 메시지의 할당된 암호 키를 사용하여 라우팅될 메시지를 복호화하는 단계(decrypting) 및 상기 복호화된 메시지들을 상기 할당된 토픽의 하나 또는 그 이상의 구독자들에게 전송하는 단계(sending)를 포함한다.
[0011] 상기 암호 키 순환은 상기 저장된 메시지들 중 하나 또는 그 이상의 제1 메시지들의 제1 세트의 각 메시지의 재-암호화(a re-encryption)를 포함한다. 상기 제1 메시지들 각각은 상기 토픽들 그룹으로부터의 공통 제1 토픽(a common first topic)에 할당되고, 상기 암호화 키들 그룹 중 하나 또는 그 이상의 제1 암호 키들의 제1 세트의 제1 암호 키에 할당되며, 그리고 상기 할당된 제1 암호 키로 암호화된다. 상기 재-암호화는 상기 발행-구독 시스템의 암호화 모듈에 의해서 백그라운드 프로세스로 실행되며, 상기 재 암호화 동안 제1 메시지들을 라우팅하는 것과 상기 브로커 서비스에 의해 추가의 제1 메시지들을 상기 공통 제1 토픽에 대해 수신하는 것을 계속한다.
[0012] 상기 컴퓨터 시스템은 프로세서 및 상기 프로세서에 의해 실행 가능한 프로그램 명령들을 저장하는 메모리를 포함한다. 상기 프로세서에 의한 상기 프로그램의 실행은 상기 컴퓨터 시스템이 상기 재-암호화를 수행하도록 한다. 상기 재-암호화는 하나 또는 그 이상의 제2 암호 키들의 제2 세트를 상기 암호 키들의 그룹에 추가하는 단계(adding)를 포함한다. 상기 제2 암호 키들 각각은 상기 제1 암호 키들 중 하나에 대한 교체 키(a replacement key for one of the first cryptographic keys)이다. 상기 방법은 상기 제1 메시지들 각각에 대해 상기 각각의 제1 메시지에 할당된 제1 암호 키를 사용하여 상기 암호화된 제1 메시지를 복호화하는 단계(decrypting)를 더 포함한다. 상기 복호화된 제1 메시지는 상기 할당된 제1 암호 키에 대한 교체 키를 사용하여 재-암호화된다(re-encrypted), 상기 재-암호화된 제1 메시지에 사용되는 상기 교체 키는 상기 각 재-암호화된 제1 메시지에 할당된다. 상기 라우팅을 위해서 상기 암호화된 제1 메시지와 상기 할당된 제1 암호 키를 사용하는 것으로부터 상기 재-암호화된 제1 메시지와 상기 할당된 교체 키를 사용하는 것으로 스위칭하는 단계(switching)가 수행된다.
[0013] 이 다음에 나오는, 본 발명의 실시예들은 다음과 같은 도면들을 참조하여, 오직 예를 통해서만, 더 상세히 설명된다:
[0014] 도 1은 일 예의 컴퓨터 시스템을 예시하는 개략도(a schematic diagram)를 도시한다;
[0015] 도 2는 일 예의 발행-구독 시스템(publish-subscribe system)을 예시하는 개략도를 도시한다;
[0016] 도 3은 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0017] 도 4는 브로커에서 구현되는 토픽 암호화(topic encryption)를 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0018] 도 5는 프록시에서 구현되는 토픽 암호화를 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0019] 도 6은 암호 키 순환에 대한 일 예의 방법을 개략적인 플로 차트로 도시한다;
[0020] 도 7은 브로커에서 구현되는 토픽 별명(a topic alias)을 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0021] 도 8은 브로커에서 구현되는 토픽 별명을 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0022] 도 9는 브로커에서 구현되는 토픽 별명을 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0023] 도 10은 브로커에서 구현되는 토픽 별명을 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0024] 도 11은 프록시에서 구현되는 토픽 별명을 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0025] 도 12는 프록시에서 구현되는 토픽 별명을 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0026] 도 13은 프록시에서 구현되는 토픽 별명을 갖는 일 예의 발행-구독 시스템을 예시하는 개략도를 도시한다;
[0027] 도 14는 암호 키 순환에 대한 일 예의 방법을 개략적인 플로 차트로 도시한다;
[0028] 도 15는 브로커 재-암호화 서비스(a broker re-encryption service)를 사용하는 재-암호화(a re-encryption)의 구현을 예시하는 개략도를 도시한다;
[0029] 도 16은 암호 키 순환에 대한 일 예의 방법을 개략적인 플로 차트로 도시한다;
[0030] 도 17은 클라우드 컴퓨터 환경을 예시하는 개략도를 도시한다; 및
[0031] 도 18은 클라우드 컴퓨팅 환경이 제공하는 기능적 추상화 모델 계층들의 세트를 예시하는 블록도를 도시한다.
[0032] 본 발명의 다양한 실시예들에 대한 설명들은 예시의 목적들로 제시되었지만, 개시된 실시예들이 전부라거나 또는 이들에 제한된다는 것을 의도하지는 않는다. 많은 수정들 및 변형들은 기술된 실시예들의 범위 및 정신에서 벗어나지 않고 당 업계의 통상적인 기술을 가진 사람들에게 분명할 것이다. 여기서 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실용적인 적용 또는 기술적 개선을 가장 잘 설명하기 위해, 또는 여기서 개시된 실시예들을 당 업계의 통상적인 기술을 가진 다른 사람들이 이해할 수 있도록 하기 위해 선택되었다.
[0033] 발행-구독 시스템(the publish-subscribe system)에 의해 저장된 복수의 메시지들의 메시지들은 순서화된 메시지들, 예를 들어 시간 순서화된 메시지들(time ordered messages)일 수 있다. 라우팅을 위해 암호화된 제1 메시지(the encrypted first message) 및 할당된 제1 암호 키(the assigned first cryptographic key)를 사용하는 것에서 재-암호화된 제1 메시지(the re-encrypted first message) 및 할당된 교체 키(the assigned replacement key)를 사용하는 것으로 스위칭하는 단계는 브로커들 및/또는 클라이언트들(brokers and/or clients)에 대한 서비스가 중단되지 않고 브로커들 및/또는 클라이언트들의 재-구성(re-configuration of the brokers and/or clients)을 필요로 하지 않도록 자동으로 수행될 수 있다.
[0034] 실시예들은 키 순환(key rotation) 동안 발행-구독 시스템에 의해 제공된 암호화된 데이터 스트림의 시간적 연속성(a temporal continuity)을 구현할 수 있다. 실시예들은 데이터 생산자들/소비자들(data producers/consumers), 즉, 발행자들/구독자들(publishers/subscribers)이 키 순환 동안, 즉, 암호화/복호화 키들(the encryption/decryption keys)이 업데이트되고 있는 동안 중단 없이 암호화된 데이터 스트림에 쓰기/읽기(write/read)를 하는 것을 허용할 수 있다. 따라서, 발행-구독 시스템 형태의 분산 데이터 스트리밍 시스템(a distributed data streaming system)에서 서비스의 중단 없이 키 순환이 구현될 수 있다.
[0035] 발행-구독 시스템은 발행-구독 메시징 패턴(a publish-subscribe messaging pattern)을 구현하는 시스템이며, 이 시스템에서, 발행자들 또는 생산자들로 지칭되는, 메시지들의 송신자들은, 구독자들 또는 소비자들로 지칭되는, 모든 수신자들에게 직접 메시지들을 전송하지 않고, 대신에, 토픽들(topics)로 지칭되는, 카테고리들로 발행되도록 메시지들을 분류한다(categorize). 구독자들은 하나 또는 그 이상의 토픽들을 구독하고 그들이 구독한 토픽들의 메시지들만 수신한다. 따라서, 발행자들은, 예를 들어, 어떤 구독자들이 있을 수 있는지 알지 못할 수 있고, 한편, 동시에 구독자들도, 예를 들어, 어떤 발행자들이 있을 수 있는지 알지 못할 수 있다. 발행자 및 구독자 모두는 발행-구독 시스템에 요청들을 전송할 때, 토픽들만 참조할 수 있다. 발행-구독 메시징 패턴은 네트워크 확장성 및 동적 네트워크 토폴로지들을 활성화하는 유익한 효과를 가질 수 있다.
[0036] 발행-구독 시스템에서, 구독자는 발행된 총 메시지들의 양 중 일부(a subset)만 수신할 수 있다. 수신(reception) 및 처리를 위해 발행된 메시지들을 선택하는 프로세스를 필터링이라고 한다. 상기 필터링은, 예를 들어, 토픽-기반(topic-based)일 수 있다. 토픽-기반의 발행-구독 시스템에서, 메시지들은 토픽들로 발행된다. 토픽-기반 시스템의 구독자는 자신이 구독하는 토픽들로 발행되는 모든 메시지들을 수신할 수 있다. 예를 들어, 발행자는 구독자들이 구독할 수 있는 토픽들을 정의할 책임이 있다.
[0037] 발행-구독 시스템에서, 발행자는, 예를 들어, 중간 메시지 브로커(an intermediary message broker)에게 메시지들을 포스트(post)할 수 있고, 한편 구독자들은 브로커에게 구독들(subscriptions)을 등록하여, 브로커가 필터링을 수행하도록 할 수 있다. 브로커는 발행자들로부터 수신한 메시지들을 구독자들로 라우트(route)하기 위해 저장 및 전달 기능(a store and forward function)을 수행할 수 있다. 또한, 브로커는, 예들 들어, 라우팅하기 전에 큐(a que)에 있는 메시지들의 우선순위를 지정할 수 있다. 구독자들은 특정 메시지들에 대해, 예를 들어, 빌드 시간(build time), 초기화 시간 또는 실행 시간(runtime)에 등록할 수 있다. 예를 들어, GUI 시스템들에서, 구독자들은, 빌드 시간 등록에 대응할 수 있는, 버튼의 클릭과 같은, 사용자 명령들을 처리하도록 코딩될 수 있다. 예를 들어, XML 구성 파일들이 구독자들을 등록하는데 사용될 수 있다. 이들 구성 파일들은 초기화 시간에 읽혀 질 수 있다. 예를 들어, 구독자들은 실행 시간에 추가되거나 제거될 수 있다. 실행 시간에 그러한 등록이, 예를 들어, 데이터베이스 트리거들, 메일링 목록들, 또는 RSS("Really Simple Syndication" 또는 "Rich Site Summary")에서 사용될 수 있다.
[0038] 발행-구독 시스템들의 장점은 발행자들과 구독자들 사이의 느슨한 결합일 수 있다. 발행자들은 구독자들의 존재를 알 필요조차 없을 수도 있다. 예를 들어, 토픽들이 초점이 되면, 발행자들 및 구독자들은 시스템 토폴로지를 알 필요가 없을 수 있다. 발행자들 및 구독자들은 서로 독립적으로 운영될 수 있다. 발행-구독 시스템은 발행자들 및 구독자들의 위치들을 분리할 수 있을 뿐만 아니라, 발행자들과 구독자들을 시간적으로도 또한 분리할 수 있다. 구독자는 제1 토픽을 구독하고 이전에 이미 발행된 토픽의 메시지들을 수신할 수 있다.
[0039] 발행-구독 시스템들의 또 다른 장점들은 그들의 확장성이다. 확장성은, 예를 들어, 병렬 운영(parallel operation), 메시지 캐싱, 트리-기반(tree-based) 또는 네트워크-기반 라우팅(network-based routing), 등을 통해서 개선될 수 있다. 발행-구독 시스템은 예를 들어, 웹 신디케이션 프로토콜들(web syndication protocols)을 통해서 인터넷-전체(Internet-wide)에 분산된 메시징을 제공할 수 있다.
[0040] 일반적으로 메시지 브로커들이라고 하는, 서버 노드들은 수신된 데이터를 스토리지에 기록하고 요청 시 클라이언트들에게 이 데이터를 전송하는, 중간 허브들(intermediary hubs)의 역할을 한다. 발행-구독 시스템들에서 흔히 볼 수 있듯이, 데이터는 토픽들이라는 카테고리들로 정리된다(organized). 메시지 브로커들이 소위 스트리밍 패러다임이라는 것을 지원함에 따라, 이에 의해서 데이터는 언제든지, 어떤 토픽에도 도착할 수 있고, 데이터 흐름들(data flows)은 제한된 또는 제한되지 않은 시간 동안(a bounded or unbounded duration) 연속적일 수 있다. 브로커의 클라이언트들은 하나 또는 그 이상의 토픽들을 구독하고 스트림으로 데이터를 수신할 수 있다.
[0041] 토픽의 데이터는 브로커들의 클러스터에 걸쳐 분산된 하나 또는 그 이상의 토픽 파티션들에 저장될 수 있다. 각 토픽 파티션은 순서화된 메시지들의 시퀀스(an ordered sequence of messages)일 수 있다. 토픽에서의 전체 데이터는 이들 파티션들의 조합(the union of these partitions)이다. 발행-구독 시스템은 하나의 파티션 내에서 엄격한 순서를 지원할 수 있지만, 파티션들 간에는 지원하지 않다. 내고장성(fault tolerance)을 지원하기 위해서 파티션들이 복제될 수 있다. 발행자-구독 시스템은 토픽에 관한 다음 정보를 유지할 수 있다: 토픽의 활성 파티션들의 세트 및 리드 브로커(the lead broker), 즉, 그것들을 처리하는, 리더; 가장 오래된 메시지 및 가장 새로운 메시지의 파티션 내의 오프셋; 각 소비자 그룹에 대한 각 파티션의 최종 읽기 오프셋(a last read offset); 및 파티션의 복제본들을 처리하는 브로커.
[0042] 소비자는 부트스트랩 브로커(a bootstrap broker)에 접속하여, 소비자가 소비하고자 하는 토픽의 파티션들의 위치들을 가져오고 소비자가 속한 소비자 그룹에 의해 해당 파티션으로부터 읽혀진 최종 메시지의 오프셋을 가져온다. 그 다음, 소비자는 이들 파티션들 각각으로부터 다음 오프셋을 요청한다. 브로커가 이용 가능하지 않다면, 소비자는 이용 가능하지 않은 모든 파티션들에 대한 리더들을 지명하도록 스스로 조직할 수 있다. 리더가 되도록 선택된 팔로워(the follower)는 해당 파티션에 대한 ISR(In-Sync Replica)를 가져야 한다. 팔로워들은 정상 소비자와 같은 리더를 통해 소비함으로써 리더로부터 메시지들을 가져온다.
[0043] 그 다음, 클라이언트들은 그들 자신의 접속들을 이들 신규 리더들로 스위치할 수 있다. 생산자들(Producers)이 비슷한 일을 하고 있지만, 최근의 오프셋에 관해 걱정할 필요는 없다. 요약하자면, 발행-구독 시스템은 분산 파티션들의 개념을 통해 매우 높은 부하들로 확장될 수 있고 복제 파티션들의 개념을 통해 장애(failure)를 원활하게 처리하도록 설계될 수 있다.
[0044] 규정들 및 보안 최고 관행(Regulations and security best practice)은 키 순환을 필요로 할 수 있으며, 이는 일반적으로 위험-감소 조치(a risk-reduction measure)로서 또는 활성 암호 키의 노출에 대한 대응으로서 주기적으로 신규 키로 데이터를 재-암호화하는 것을 수반한다. 키 순환은 발행-구독 메시징 시스템들의 연속적인 "라이브(live)" 특성으로 인해 발행-구독 메시징 시스템들에 대해 도전(a challenge)을 부과한다. 키를 순환시키려면 원칙적으로, 재-암호화하는 동안 시스템을 일시 중단시켜야 하고 재-암호화 프로세스가 완료된 이후에만 다시 재개해야 한다. 그러나 메시징 시스템들은 중단 없이 데이터를 수신하고 서비스하기 위해서 연속적으로 이용될 수 있어야 한다. 본 발명은 메시징 시스템이 자신의 서비스를 중단시키지 않고 키들을 순환시킬 수 있는 다양한 방법들을 기술한다.
[0045] 실시예들에 따르면, 발행-구독 시스템은 토픽 메시지들을 암호화된 형태로 저장하는 메시지 브로커를 포함할 수 있다. 이것은 유입 데이터, 즉, 메시지들을 암호화하고 클라이언트 요청들에 응답할 때 동일 데이터를 복호화함으로써 완수될 수 있다.
[0046] 메시지들의 암호화 및 복호화는 브로커의 암호화 모듈 또는 발행-구독 시스템의 프록시에 의해서 수행될 수 있다. 암호화 모듈은 토픽 암호 키들에 액세스할 수 있으며 키 순환 이벤트들에 관한 알림들을 전송하거나 및/또는 수신하도록 구성될 수 있다.
[0047] 예를 들어, 토픽 별명을 사용하는 발행-구독 시스템에서 재-암호화를 통한 키 순환이 사용될 수 있다. 토픽 별명은 다른 토픽에 요청들을 보내고 다른 토픽으로부터 요청들을 받는다. 클라이언트의 관점에서, 토픽 별명은 정상 토픽처럼 보여지고 작동한다. 키 순환 프로세스는 별명을 이용하여, 토픽 별명이 현재 요청들을 보내는 토픽의 토픽 로그의 새로운, 재-암호화된, 사본을 생성할 수 있다. 토픽 로그의 새로운, 재-암호화된 사본이 백그라운드에서 새로운 토픽으로 생성된다. 이 재-암호화 프로세스가 완료되면, 토픽 별명은 재-암호화된, 새로운 토픽으로 다시 보내진다. 이전 토픽 로그들은 안전하게 삭제되거나 아카이브될 수 있다. 별명 토픽의 클라이언트들의 경우, 달라질 것이 없다: 토픽 이름, 즉, 별명은 그대로 유지되고, 접속들도 그대로 유지되며, 서비스도 중단 없이 계속된다. 예를 들어, 재-암호화에 의한 키 순환은 발행-구독 시스템에서 내부 브로커 서비스로 구현될 수 있다. 내부 토픽 관리 서비스들은, 예를 들어, 신규 재-암호화 서비스를 포함하도록 확장될 수 있다. 그러한 재-암호화 서비스는 점진적으로 저장된 메시지들을 백그라운드에서 각가의 메시지들의 재-암호화 버전들로 교체할 수 있다. 대규모 토픽 로그들의 경우, 병렬화를 사용하여 재-암호화 프로세스를 최적화할 수 있다. 발행-구독 시스템의 리드 브로커는 클러스터 내의 다른 브로커들을 조정하여 재-암호화 워크로드(the re-encryption workload)을 공유할 수 있고, 이에 의해 계산을 병렬화할 수 있다.
[0048] 일 실시예에 따르면, 발행-구독 시스템 내에서 메시지들을 암호화 및 복호화하기 위해 사용되는 암호 키들은 대칭 암호 키들일 수 있다.
[0049] 일 실시예에 따르면, 암호화 모듈은 발행-구독 시스템의 브로커에 포함된다. 실시예들은 키 순환의 재-암호화가 브로커에 의해서 실행될 수 있다는 유익한 효과를 가질 수 있다.
[0050] 일 실시예에 따르면, 암호화 모듈은 발행-구독 시스템의 프록시에 포함되고, 이를 통해 발행-구독 시스템의 브로커는 발행-구독 시스템의 클라이언트들과 통신한다. 실시예들은 키 순환의 재-암호화가 프록시에 의해서 실행될 수 있다는 유익한 효과를 가질 수 있다. 따라서, 오직 프록시만 재-암호화를 실행하도록 조정될 수 있고, 발행-구독 시스템의 브로커들 재-암호화를 실행하도록 조정될 필요가 없다.
[0051] 메시지 복호화 및 재-암호화 프로세스 모두는 어느 키가 주어진 메시지를 암호화했는지를 알고 있는 수단들을 필요로 할 수 있다. 그러한 수단들은 메시지 ID들을 키들 또는 키 ID들에 매핑하는 인덱스를 포함할 수 있다. 대안 전략은 암호화된 메시지들과 함께, 암호 키들을 암호화된 형태로 저장하는 것을 포함할 수 있다. 암호 키들은 봉투 암호화라고 알려진 기술의로 다른 키로 암호화되거나 "랩(wrapped)"될 수 있다. 복호화 동안, 암호화 모듈은 암호 키가 언랩(unwrapped) 되도록 요청할 수 있고 그 언랩된 암호 키를 사용하여 메시지를 복호화할 수 있다. 암호 키는 항상 메시지와 함께 저장되기 때문에, 인덱스들을 유지 관리할 필요가 없으므로 구현이 크게 간소화된다.
[0052] 일 실시예는 키 유지 관리 서비스(Key Management Service: KMS)를 사용하여 랩 및 언랩 작업들(operations)을 지원할 수 있다. KMS는 래핑 키(the wrapping key)가 KMS를 절대 벗어나지 않도록 매우 안전한 방식(fashion)으로 저장한다고 가정한다. 발행-구독 셋팅에서, 암호화 모듈은 메시지가 암호화될 때 랩된 키를 메시지 헤더에 저장하고, 클라이언트 요청들에 응답하기 전에 메시지 복호화 동안 그 헤더를 제거할 수 있다.
[0053] 일 실시예에 따르면, 발행-구독 시스템에서 저장된 암호화된 메시지들 각각에는 암호 키들의 그룹 중에서 할당된 암호 키를 식별하는 헤더를 제공한다. 실시예들은 암호화된 메시지들 스스로 메시지들 각각을 복호화하는 데 사용될 암호 키를 식별할 수 있다는 유익한 효과를 가질 수 있다.
[0054] 일 실시예에 따르면, 할당된 암호 키를 식별하는 헤더는 라우팅된 복호화된 메시지를 구독자에게 전송하기 전에 라우팅 동안에 제거된다. 실시예들은 발행-구독 시스템에서 저장된 메시지들의 암호화 및/또는 복호화에 관한 정보가, 구독자들과 같은, 클라이언트들과 공유되는 것을 방지하는 유익한 효과를 가질 수 있다.
[0055] 일 실시예에 따르면, 암호화된 메시지들의 헤더들 각각은 봉투 암호 키에 의한 봉투 암호화를 사용하여 암호화된 형태로 식별된 암호 키를 포함한다. 암호화된 제1 메시지들 각각의 복호화는 봉투 암호 키를 사용하여 각각의 제1 메시지의 헤더에 의해서 제공된 할당된 제1 암호 키를 복호화하는 단계를 더 포함한다. 복호화된 제1 메시지들 각각의 재-암호화는 각각의 재-암호화된 제1 메시지를 봉투 암호 키로 재-암호화하기 위해 사용되는 할당된 교체 키를 암호화하는 단계 및 각각의 재-암호화된 제1 메시지의 헤더에 있는 암호화된 제1 암호 키를 암호화된 교체 키로 교체하는 단계를 더 포함한다.
[0056] 실시예들은 암호화된 메시지들 스스로 메시지들 각각을 복호화하는 데 사용될 암호 키를 제공할 수 있다는 유익한 효과를 가질 수 있다.
[0057] 일 실시예에 따르면, 발행-구독 시스템은 암호 키들 그룹의 할당된 암호 키를 저장된 메시지들 각각에 대해 식별하는 인덱스를 포함한다. 실시예들은 인덱스가 각각의 메시지를 복호화하는 데 사용될 암호 키를 저장된 메시지들 각각에 대해 식별할 수 있는 유익한 효과를 가질 수 있다. 예를 들어, 상기 인덱스는 개별 메시지들을 식별하거나 또는, 예를 들어, 메시지들이 저장된, 토픽 세그먼트 파일들을 식별할 수 있다. 예를 들어, 상기 인덱스는 저장된 메시지들의 식별자들을 포함할 수 있고, 이들 각각에는 각 메시지를 복호화하는 데 사용될 암호 키의 식별자가 할당될 수 있다. 예를 들어, 상기 인덱스는 저장된 메시지들의 식별자들을 포함할 수 있고, 이들 각각에는 각 메시지를 복호화하는 데 사용될 암호 키가 할당될 수 있다.
[0058] 일 실시예에 따르면, 재-암호화는 인덱스를 사용하여 상기 제1 메시지들 각각에 할당된 제1 암호 키를 제1 메시지들 각각에 대해 식별하는 단계와 재-암호화된 제1 암호 키에 상기 식별된 제1 암호 키를 위한 교체 키를 상기 인덱스에서 할당하는 단계를 더 포함한다. 예를 들어, 상기 인덱스는 제1 암호 키들을 사용하여 암호화된 원래의 제1 메시지들뿐만아니라 교체 암호 키들을 사용하여 암호화된 재-암호화된 제1 메시지들도 식별할 수 있다. 이 경우, 상기 재-암호화된 제1 메시지들의 식별자들은 원래의 제1 메시지들의 식별자들에 더하여 상기 인덱스에 추가될 수 있고, 상기 재-암호화된 제1 메시지의 식별자들은 상기 재-암호화된 제1 메시지를 복호화하는 데 사용될 교체 키들의 식별자들이 할당될 수 있다. 예를 들어, 상기 재-암호화된 제1 메시지들의 식별자들에는 재-암호화된 제1 메시지를 복호화하는 데 사용될 교체 키들이 할당될 수 있다. 예를 들어, 상기 원래의 제1 메시지들은 상기 재-암호화된 제1 메시지들에 의해 인덱스에서 교체될 수 있다. 이 경우, 상기 원래의 제1 메시지들의 식별자들은 상기 재-암호화된 제1 메시지들의 식별자들에 의해 교체될 수 있고 상기 제1 암호 키들의 식별자들은 재-암호화된 제1 메시지들을 복호화하는 데 사용될 상기 교체 키의 식별자에 의해 교체될 수 있다. 예를 들어, 상기 인덱스에 포함된 제1 암호 키들은 재-암호화된 제1 메시지들을 복호화하는 데 사용될 교체 키들에 의해 교체될 수 있다.
[0059] 브로커에 대한 서비스 중단 없이 토픽 데이터를 재-암호화하기 위한 다양한 기술들이 다음에 제공된다.
[0060] 제1 기술은 요청들을 다른 토픽으로 보내고 다른 토픽으로부터 받는 토픽 별명의 개념을 도입한다. 토픽 별명은 클라이언트의 관점에서 정상 토픽처럼 보이고 작동한다. 키 순환 프로세스는 별명을 이용하여, 백그라운드에서 토픽 로그들의 새로운, 암호화된 사본을 생성한다. 이 재-암호화 프로세스가 완료되면, 상기 토픽 별명은 새로운, 재-암호화된 토픽으로 재전송된다. 이전 토픽 로그들은 안전하게 삭제되거나 아카이브될 수 있다. 토픽의 클라이언트들의 경우, 달라질 것이 없다: 토픽 이름(즉, 별명)은 동일하고, 접속들이 그대로 유지되며, 서비스가 중단 없이 계속된다.
[0061] 실시예들은 몇 가지 유익한 효과들을 가질 수 있다: 토픽의 클라이언트들, 즉 생산자들과 소비자들의 경우, 상기 토픽은 전통적인 토픽과 동일하게 작동할 수 있다(behave). 요청들이 보내질 수 있는 라벨도 그대로 남아 있을 수 있다. 클라이언트들에 의해 토픽 별명 또는 변경들의 유형에 대한 특별한 인식이 요구되지 않을 수 있다. 클라이언트들은 재-암호화 프로세스에 대해 인지하지 못할 수 있다. 재-암호화된 데이터는 타임스탬프들, 헤더들, 등과 같은 모든 메타데이터를 보존할 수 있다. 클라이언트들에게 중단 없는 발행-구독 서비스가 제공될 수 있다. 프록시에 구현된 별명을 포함하는 기술은 브로커에 대한 변경 없이 재-암호화를 구현할 수 있다.
[0062] 일 실시예에 따르면, 상기 저장된 메시지들 각각은 각각의 메시지가 할당된 토픽의 구성원으로 저장된다. 상기 방법은 메시지들의 제1 세트로부터 공통 제1 토픽을 가리키는 제1 토픽 별명을 제공하는 단계를 더 포함한다. 상기 공통 제1 토픽의 하나 또는 그 이상의 구독자들은 제1 토픽 별명을 구독한다. 추가 공통 제2 토픽이 토픽들의 그룹에 추가되고 재-암호화된 제1 메시지들은 상기 공통 제2 토픽의 구성원들로 저장된다. 상기 스위칭하는 단계는 상기 제1 토픽 별명을 구독하는 하나 또는 그 이상의 구독자들이 상기 공통 제2 토픽의 구독자들이 되도록 상기 제1 토픽 별명을 상기 공통 제2 토픽에 재-할당하는 단계(re-assigning)를 포함한다.
[0063] 실시예들은 토픽 별명이 재-암호화를 구현하기 위해 사용될 수 있다는 유익한 효과를 가질 수 있다. 상기 암호화된 제1 메시지들로부터 상기 재-암호화된 제1 메시지들로 스위칭하는 단계는 토픽 별명을 재-할당함으로써 구현될 수 있다. 상기 토픽 별명이 상기 공통 제1 토픽에 할당되는 한, 상기 브로커 서비스는 암호화된 제1 메시지들을 사용하여 연속적으로 제공될 수 있다. 상기 토픽 별명을 상기 공통 제2 토픽에 재-할당함으로써, 상기 브로커 서비스는 상기 암호화된 제1 메시지를 사용하여 계속된다.
[0064] 일 실시예에 따르면, 상기 스위칭하는 단계는 상기 제1 암호화된 메시지들을 갖는 공통 제1 토픽을 삭제하는 단계를 더 포함한다. 실시예들은 스토리지 공간을 절약하는 유익한 효과를 가질 수 있다. 대안적인 일 실시예에 따르면, 상기 스위칭하는 단계는 상기 제1 암호화된 메시지들을 갖는 공통 제1 토픽을 아카이브하는 단계를 더 포함한다.
[0065] 일 실시예에 따르면, 상기 스위칭하는 단계는 상기 제1 암호 키들을 삭제하는 단계를 더 포함한다. 실시예들은 스토리지 공간을 절약하는 유익한 효과를 가질 수 있다. 대안적인 일 실시예에 따르면, 상기 스위칭하는 단계는 상기 제1 암호 키를 아카이브 하는 단계를 더 포함한다.
[0066] 일 실시예에 따르면, 발행-구독 시스템에 의해 토픽 별명에 대해 발행자로부터 수신된 추가 제1 메시지들 각각은 공통 제2 토픽에 할당되고, 제2 암호 키들의 제2 세트의 제2 암호 키들 중 하나가 할당되며, 상기 할당된 제2 암호 키들을 사용하여 암호화된다.
[0067] 실시예들은 추가 제1 메시지들, 특히 재-암호화하는 동안 수신된 제1 메시지들이, 제2 암호 키들로 직접 암호화되어 공통 제2 토픽에 할당될 수 있는 유익한 효과를 가질 수 있다.
[0068] 키 순환을 구현하기 위해서 토픽 별명이 사용될 수 있다. 발행-구독 시스템의 클라이언트들에서, 그러한 토픽 별명은 정상 토픽으로 보이지만, 실제로는 다른 토픽의 매개체(intermediary)이다. 관리 액션들(administrative actions)을 통해서 토픽 별명들이 관리될 수 있다. 토픽 별명들의 존재 및 관리를 지원하는 최소한의 관리 액션들은 다음을 포함할 수 있다: 별명을 생성하는 단계; 토픽에 생성된 별명을 할당하는 단계; 토픽으로부터 별명 분리하는 단계; 및 분리된 별명을 삭제하는 단계.
[0069] 존재하지만 할당되지 않은 토픽 별명은 브로커에 의해서 존재하지 않거나 비활성, 둘 중 하나로 취급될 수 있다. 이것은 구현의 선택사항일 수 있으며 클라이언트들이 할당되지 않은 별명들로 주소지정하려고 할 때 반환되는 오류 메시지들에 영향을 미친다. 구성 가능한 선택을 사용하면 별명이 할당된 후 토픽의 가시성의 자동적인 취소를 가능하게 할 수 있다. 이것은 클라이언트들이 토픽 별명을 통해서 기본 데이터(the underlying data)에 배타적으로 액세스하도록 강제한다(force).
[0070] 토픽 별명은 각각의 브로커의 모든 퍼실리티들과 일관되게 통합될 수 있다. 예를 들어, 스키마 등기소(a schema registry)를 통합하는 브로커들이 등기소에 별명들의 등록 및 업데이트하는 것을 지원할 수 있다. 마찬가지로, 보안 정책들은 정상 토픽들에 적용하는 것과 동일하게 토픽 별명들에도 적용될 수 있다.
[0071] 토픽 별명을 사용하여 토픽 암호 키를 순환시키는 일반적인 워크플로우는 다음을 포함한다: 토픽 및 토픽 별명을 생성하는 단계; 및 상기 토픽에 별명을 할당하고 암호화를 위해서 상기 토픽 별명을 구성하는 단계를 포함할 수 있다. 클라이언트들은 별명을 통해서 메시지들을 전송하고 수신하도록 시작할 수 있다. 키 순환이 시작되면 다음 단계들을 포함한다: 신규 토픽을 추가하는 단계 및 신규 토픽에 대한 신규 암호 키를 생성하는 단계. 토픽 암호화 모듈에 의해서 사용되는 암호 키는 신규 암호 키로 업데이트될 수 있고, 그 결과 발행-구독 시스템에 의해서 수신되는 신규 메시지들이 신규 암호 키로 암호화될 수 있다. 재-암호화 프로세스가 시작되면 다음 단계들을 포함한다: 데이터, 즉 메시지들을 이전 토픽(the old topic)으로부터 새로이 생성된 토픽으로 복사하는 단계 및 상기 복사된 데이터를 신규 암호 키로 재-암호화하는 단계. 재-암호화 프로세스는, 재-암호화하는 동안 도착한, 신규 메시지들을, 신규 토픽에 추가할 수 있다. 이전 토픽에 포함된 모든 데이터가 신규 토픽으로 복사되고 재-암호화되었을 때, 상기 재-암호화 프로세스는 종료되고 상기 별명은 신규 토픽에 재-할당된다. 선택적으로, 이전 토픽의 이전 활성 토픽 로그들이 삭제될 수 있다. 전술한 워크플로우는 트랜잭션으로 수행될 수 있다.
[0072] 토픽 별명은 예를 들어 프록시에서 구현되거나 또는 발행-구독 시스템의 브로커에서 직접 구현될 수 있다. 예를 들어, 발행-구독 시스템은 프록시를 포함할 수 있다. 발행-구독 시스템에서 프록시가 구현되는 경우, 클라이언트들은 발행-구독 시스템의 브로커와 직접 통신하지 않고, 프록시를 통해 통신할 수 있다. 마찬가지로, 브로커도 프록시를 통해 클라이언트들과 통신할 수 있다. 프록시들은, 예를 들어, 발행-구독 시스템에 특정 액세스 컨트롤 모델을 도입하는 것과 같은 작업들에 사용될 수 있다.
[0073] 프록시의 기능들은 토픽 별명을 지원하기 위해 확장될 수 있다. 이 접근법에서, 하나 또는 그 이상의 독립적인 토픽들은 동일 별명 그룹으로 함께 연관될 수 있다. 이 별명 그룹의 생성 및 관리는 브로커 외부에서 처리된다. 별명 그룹은 토픽과 동일 방식으로, 예를 들어 파티션들의 수, 복제본들의 수, 등에서 동일 방식으로 특정된다. 토픽들은 별명 그룹에 추가/제거될 수 있으며, 이는 별명 그룹의 구성을 사용하여 발행-구독 시스템의 클러스터 상에 대응하는 토픽의 생성을 가져온다. 예를 들어, 동일 그룹의 모든 토픽들은 동일 구성을 가질 수 있다. 임의의 주어진 시기에 0개 또는 한 개의 토픽이 활성 토픽으로 지정된다.
[0074] 클라이언트들은 발행-구독 시스템의 표준 프로토콜을 사용하여 토픽 별명이 정상 토픽인 것처럼 토픽 별명과 통신할 수 있다. 특히, 발행-구독 시스템의 브로커들을 컨트롤하는 프로그램 명령들은 변경될 필요가 없을 수 있다. 생산자들은 표준 프로토콜을 사용하여 토픽 별명으로 메시지들을 전송할 수 있으며 소비자는 표준 프로토콜을 사용하여 메시지들을 수신할 수 있다. 그러나, 발행-구독 시스템의 브로커들 중 하나의 브로커 또는 하나의 클러스터 상에서 별명 이름을 가진 토픽 로그는 없다. 대신 프록시가 토픽 별명에 의해 제공된 별명 이름을 발행-구독 시스템의 브로커 또는 클러스터 상의 토픽 이름으로 매핑할 수 있다. 토픽 별명이 참조하는 각각의 토픽은 실제 활성 토픽(the actual active topic)의 역할을 수행하며, 따라서 토픽 별명이 실제 활성 토픽인 것처럼 보일 수 있다.
[0075] 암호화 모듈이 프록시에 통합됨에 따라, 상기 프록시는 토픽 별명으로 전송된 메시지들을 암호화하고 토픽 별명으로부터 수신되는 메시지를 복호화할 수 있다. 이를 달성하기 위해, 프록시 또는 보다 정확하게는 프록시에 통합된 암호화 모듈은 현재 암호 키를 사용할 수 있다. 이전에 언급한 바와 같이, 암호화에 사용되는 현재 암호 키는 저장을 위해서 암호화된 메시지의 메시지 헤더에 랩 형태로 추가될 수 있고, 클라이언트 요청들에 응답하여 복호화 시 메시지 헤더로부터 제거될 수 있다.
[0076] 대안으로, 토픽 별명은 발행-구독 시스템의 브로커에서 구현될 수 있다. 그러한 구현은 발행-구독 시스템의 브로커들을 컨트롤하는 프로그램 명령들을 변경하는 단계를 필요로 할 수 있다. 만일 브로커들의 프로그램 명령들이 변경될 수 있다면, 토픽 별명은 추가 프록시를 필요로 함이 없이 브로커에서 구현될 수 있다. 프록시를 필요로 하지 않는 구현은 시스템에서 하나의 추가 아키텍처 컴포넌트를 제거할 수 있는 유익한 효과를 가질 수 있다. 그러나, 프록시는, 예를 들어, 발행-구독 시스템에 특정 액세스 컨트롤 모델들을 도입하는 등의 다른 장점들을 위해서 여전히 사용될 수 있다. 별명 및 별명 그룹들의 개념은 위에서 기술한 것과 동일하게 유지되지만, 다만 암호화 모듈과 함께 브로커에 직접적으로 통합된다.
[0077] 제2 기술은 신규 재-암호화 서비스를 구현한다. 그러한 신규 재-암호화 서비스는, 예를 들어, 브로커의 내부 토픽 관리 서비스들을 확장할 수 있다. 발행-구독 시스템의 로그 클리너와 유사하게, 재-암호화 서비스는 저장된 메시지들을 백그라운드에서 재-암호화된 버전들로 점진적으로 교체할 수 있다. 매우 큰 토픽 로그들의 경우, 최적화가 제공되고 이에 의해 리드 브로커가 클러스터 내의 다른 브로커들을 조정하여 재-암호화 워크로드를 공유하며, 이에 의해 계산을 병렬화 한다. 이 제2 기술은 또한 브로커 서비스의 중단 없이 실행된다.
[0078] 일 실시예에 따르면, 할당된 제1 암호 키들로 암호화된 제1 메시지들을 할당된 교체 키들로 재-암호화된 제1 메시지들로 스위칭하는 단계는 상기 암호화된 제1 메시지 각각을 상기 대응하는 재-암호화된 제1 메시지로 교체하는 단계를 포함한다. 실시예들은, 예를 들어, 발행-구독 시스템의 브로커의, 재-암호화 서비스를 사용하여 재-암호화를 구현하는 유익한 효과를 가질 수 있다.
[0079] 일 실시예에 따르면, 상기 제1 메시지들의 재-암호화 및 상기 암호화된 제1 메시지를 상기 대응하는 재-암호화된 제1 메시지로 교체하는 단계는 연속적으로 수행될 수 있다. 상기 암호화된 제1 메시지는, 예를 들어, 세그먼트 파일들에 저장될 수 있으며, 이는 연속적으로 재-암호화된다. 예를 들어, 상기 연속적인 재-암호화는 세그먼트 파일의 최신 파일, 즉 시간적으로 가장 빠른 세그먼트 파일(a timewise youngest segment file)로 시작될 수 있다.
[0080] 일 실시예에 따르면, 암호화된 제1 메시지들은 세그먼트 파일들의 세트에 저장된다. 세그먼트 파일들 세트의 세그먼트 파일들 중 하나는 현재 암호화된 제1 메시지들을 저장하는 데 사용되고, 한편 암호화된 제1 메시지들로 이미 가득 찬 세그먼트 파일들 세트의 나머지 세그먼트 파일들은 닫힌다. 만일 열린 세그먼트 파일(the open segment file)이 가득 차 있다면(full), 상기 열린 세그먼트 파일도 닫히고, 추가 세그먼트 파일이 세그먼트 파일들 세트에 추가되며 상기 추가 세그먼트 파일이 암호화된 제1 메시지들을 저장하는 데 사용된다.
[0081] 재-암호화를 시작하면, 암호화된 제1 메시지를 저장하는 데 현재 사용된 세그먼트 파일은 닫히고 다른 추가 세그먼트 파일이 세그먼트 파일들 세트에 더 추가되어, 공통 제1 토픽위해 발행자들로부터 발행-구독 시스템에 의해서 수신되는 추가의 암호화된 제1 메시지들을 저장하는 데 사용된다.
[0082] 암호화된 제1 메시지들의 재-암호화는 세그먼트적으로 수행된다. 상기 세그먼트적인 재-암호화는 나머지 닫힌 세그먼트 파일들(closed segment files)을 차례로 선택하는 단계, 암호화된 형태로 상기 선택된 세그먼트 파일의 암호화된 제1 메시지들을 포함하는 교체 세그먼트 파일을 상기 선택된 세그먼트 파일들 각각에 대해 생성하는 단계, 그리고 상기 선택된 세그먼트 파일을 상기 교체 세그먼트 파일로 교체하는 단계를 포함한다.
[0083] 실시예들은 제1 메시지들이 순서화된 방식으로 연속적으로 재-암호화되는 유익한 효과를 가질 수 있다.
[0084] 일 실시예에 따르면, 상기 세그먼트적인 재-암호화는 세그먼트 파일들 세트 중 최신 세그먼트 파일로 시작된다. 가장 최근, 즉 시간적으로 가장 빠른, 세그먼트는 가장 최근에 닫힌 세그멘트 파일일 수 있으며, 이는 가장 최근에 수신된 메시지들을 포함할 수 있다. 이들 가장 최근 메시지들의 오프셋들은 제2 암호 키를 사용하는 암호화가 발행-구독 시스템의 스토리지 내에서 시작되는 메시지들의 오프셋에 대해 가장 작은 차이들을 갖는다. 실시예들은 가장 최근 메시지들, 즉 가장 최신의(most up-to-date) 메시지들이, 재-암호화된 형태로 처음 이용될 수 있는 메시지들일 수 있다는 유익한 효과를 더 가질 수 있다. 실시예들에 따르면, 예를 들어, 세그먼트 파일들 각각에 포함된 메시지들의 최대 보존 시간이 만료될 때, 세그먼트 파일들이 삭제될 수 있다. 실시예들은 가장 오래된 메시지들이 재-암호화될 수 있는 유익한 효과를 더 가질 수 있고, 그 결과 발행-구독 시스템이 그것들의 최대 보존 시간의 만료로 인해 나중에 키 순환 중에 삭제될 수 있는 메시지들의 불필요한 재-암호화를 방지할 수 있다.
[0085] 일 실시예에 따라, 오프셋 값이 결정되고, 이 오프셋 값은 추가의 제1 메시지들의 오프셋을 식별하며, 이 오프셋으로 제2 암호 키를 사용하는 암호화는 발행-구독 시스템의 스토리지 내에서 시작되는 위해 결정된다. 일 실시예에 따르면, 상기 결정된 오프셋 값은 저장된다. 실시예들은 발행-구독 시스템, 예를 들어, 발행-구독 시스템의 브로커가, 재-암호화가 완료되었을 때, 오프셋 값을 사용하여 결정할 수 있도록 하는 유익한 효과를 가질 수 있다.
[0086] 일 실시예에 따르면, 공통 제1 토픽에 대해서 발행자들로부터 발행-구독 시스템에 의해 수신된 추가의 제1 메시지들 각각은 공통 제1 토픽에 할당되고, 제2 암호 키들 제2 세트의 제2 암호 키들 중 하나에 할당되며, 할당된 제2 암호 키를 사용하여 암호화된다.
[0087] 실시예들은 추가의 제1 메시지들, 특히 재-암호화 동안 수신된 제1 메시지들이, 제2 암호 키들로 직접 암호화되어 공통 제1 토픽에 할당될 수 있는 유익한 효과를 가질 수 있다.
[0088] 일 실시예에 따르면, 발행-구독 시스템은 복수의 추가 브로커들을 포함한다. 상기 발행-구독 시스템은 세그먼트 파일들 세트의 복수의 추가 복제본들도 포함한다. 상기 추가 복제본들 각각은 추가 브로커들 중 하나에 할당된다. 상기 세그먼트 파일들의 재-암호화는 상기 재-암호화의 병렬화를 구현하는 발행-구독 시스템의 브로커들 사이에서 분산된다. 재-암호화된 제1 메시지들은 세그먼트 파일들 세트의 다른 복제본들로 분산된다.
[0089] 실시예들은 재-암호화의 병렬화를 구현하는 유익한 효과를 가질 수 있다. 이것은, 재-암호화가 보다 효율적으로 수행될 수 있게 한다.
[0090] 재-암호화를 통한 키 순환은, 예를 들어, 내부 브로커 서비스를 사용하여 구현될 수 있다. 따라서, 토픽 별명을 도입하는 대신, 브로커 내의 토픽 관리는 오히려 추가 특징들에 의해서 확장될 수 있다. 그러한 접근법은 발행-구독 시스템에서 브로커들을 컨트롤하는 데 사용되는 알려진 프로토콜들의 변경 및/또는 확장을 요구할 수도 있다. 그러한 실시예들은, 예를 들어, 추가 토픽 별명들을 도입하는 것 및/또는 추가 프록시를 사용하는 것에 비해, 더 효율적이라는 유익한 효과를 가질 수 있다.
[0091] 발행-구독 시스템은, 이름이 토픽 파티션 이름일 수 있고, 내용이 메타데이터를 포함하는 일부 파일들뿐만 아니라 실제 메시지들을 포함하는 로그 세그먼트 파일들을 포함할 수 있는 디렉토리(directory)에서 토픽 파티션과 관련된, 메시지들과 같은, 데이터를 저장할 수 있다. 로그 세그먼트 파일들은 고정된 최대 크기, 예를 들어, 100 MB를 가질 수 있다. 로그 세그먼트가 가득 찼을 때, 신규 로그 세그먼트 파일이 생성되고 그 다음 메시지들이 새로 생성된 로그 세그먼트 파일에 추가될 수 있다. 발행-구독 시스템은, 예를 들어, 메시지들의 최대 보존 시간이 만료될 때, 로그 세그먼트 파일들을 삭제하는 백그라운드 스레드들을 실행할 수 있다. 최대 보존 시간이 없는 압축된 토픽들(compacted topics)의 경우, 이들 토픽들을 압축하기 위해 압축 프로세스들이 사용될 수 있다. 예를 들어, 주어진 키에 대한 최종 유효 값만 토픽에서 이용 가능하게 될 수 있으며 널(null) 값에 매핑된 키들은 제거될 수 있다.
[0092] 전술한 압축 및 만료 서비스들과 같은 소위 로그 클리너 서비스들과 유사하게, 재-암호화 프로세스가 추가될 수 있는데, 상기 재-암호화 프로세스는 현재 암호 키들에 대한 교체 키들로서 신규 암호 키들을 사용하여 세그먼트 파일들의 데이터를 재-암호화하는 발행-구독 시스템의 브로커에 대한 암호화 서비스로써 추가될 수 있다. 재-암호화 프로세스가 시작되는 즉시, 모든 신규 메시지들이 신규 암호 키를 사용하여 암호화될 수 있다. 브로커는 저장된 메시지들의 오프셋을 나타내는 오프셋 값을 저장할 수 있고, 이 오프셋에서 브로커는 신규 메시지들을 암호화하기 위해 신규 암호 키를 사용하는 것을 시작할 수 있다. 발행-구독 시스템에 이미 저장되어 있고 오래된 암호 키(the old cryptographic key)로 암호화된 오래된 메시지들(old messages)의 실제 재-암호화가 개시될 수 있다. 브로커는 모든 오래된 메시지들을 재-암호화할 수 있는데, 결정된 오프세트 값으로 시작하여 가장 오래된 메시지들이 도달되고 또한 재-암호화될 때까지 계속될 수 있다. 최종의 오래된 메시지가 재-암호화되면, 재-암호화 프로세스는 완료되고 오래된 키는 삭제될 수 있다.
[0093] 예를 들어 최대 로그 세그먼트 크기가100 MB라고 가정하면, 1 TB 토픽 파티션의 경우, 그 크기의 로그 세그먼트 파일들의 수는 10,000개나 된다. 재-암호화는 이들 모든 세그먼트 파일들을 복호화하는 단계 및 암호화하는 단계를 포함할 수 있다. 실시예들에 따르면, 재-암호화는 단일 브로커, 예를 들어, 리더 브로커, 단독으로 수행될 수 있고 재-암호화된 로그 세그먼트 파일들은 팔로워들에게 분산될 수 있다. 실시예들에 따르면, 재-암호화는 발행-구독 시스템의 복수의 브로커들에 의해서 수행될 수 있고, 따라서 재-암호화의 병렬화를 구현할 수 있다. 예를 들어, 발행-구독 시스템의 브로커들을 컨트롤하는 내부 프로토콜들은 파티션의 복제본을 가진 모든 브로커들이 그들 사이에서 조정할 수 있도록 변경될 수 있는데, 그들 각각이 복제본에 포함된 로그 세그먼트 파일들의 일부 서브세트(some subset)를 재-암호화한 다음, 그 재-암호화된 세그먼트 파일들을 동일 파티션의 복제본을 갖는 다른 모든 브로커들과 교환하도록 변경될 수 있다.
[0094] 실시예들은 브로커-브로커(the broker-to-broker)의 상호작용만이 재-암호화의 병렬화로 인해 변화할 수 있지만, 발행-구독 시스템의 클라이언트들은 브로커들이 이를 수행하고 있다는 것을 알지 못하는 채로 남아 있을 수 있다는 유익한 효과를 가질 수 있다. 따라서, 그러한 병렬화는 관리된 서버 오퍼링(a managed server offering)을 포함하는 발행-구독 시스템에서 최적화로 적합할 수 있다.
[0095] 세그먼트 파일들을 사용하여 토픽을 재-암호화하는 데 사용되는 일 예의 알고리즘은 다음과 같다:
[0096] 예를 들어, 컴퓨터 프로그램 제품은 여기서 기술된 발행-구독 시스템에서 암호 키 순환을 위한 방법의 실시예들 중 어느 하나를 구현하도록 구성된 발행-구독 시스템의 컴퓨터 시스템의 프로세서에 의해 실행 가능한 프로그램 명령들을 더 포함할 수 있다.
[0097] 예를 들어, 상기 컴퓨터 시스템은 여기서 기술된 발행-구독 시스템에서 암호 키 순환을 위한 방법의 실시예들 중 어느 하나를 실행하도록 더 구성된다.
[0098] 도 1은 발행-구독 시스템에서 암호 키 순환을 위해서 구성된 일 예의 컴퓨터 시스템(100)을 도시한다. 상기 예의 컴퓨터 시스템(100)은, 예를 들어, 발행-구독 시스템의 브로커 또는 프록시(proxy)일 수 있다. 여기서 기술되는 컴퓨터 시스템(100)은 복수의 프로세서 칩들, 복수의 메모리 버퍼 칩들 및 메모리를 포함하는 모든 유형의 컴퓨터화된 시스템일 수 있다는 것을 이해할 것이다. 컴퓨터 시스템(100)은, 예를 들어, 개인용 컴퓨터, 워크스테이션, 또는 미니 컴퓨터와 같은, 범용 디지털 컴퓨터(a general-purpose digital computer)의 형태로 구현될 수 있다. 컴퓨터 시스템(100)은 예를 들어, 서버의 형태로 구현될 수 있다.
[0099] 예시적인 실시예들에서, 하드웨어 아키텍처의 관점에서, 도 1에서 도시된 바와 같이, 컴퓨터 시스템(100)은 프로세서(105), 메모리 컨트롤러(115)에 결합된 메모리(메인 메모리)(110), 및 로컬 입/출력 컨트롤러(135)를 통해 통신 가능하게 결합되는 하나 또는 그 이상의 입력 및/또는 출력(input and/or output: I/O) 디바이스들(또는 주변 디바이스들)(140, 145(주변 스토리지 매체로 도시됨))을 포함한다. 입/출력 컨트롤러(135)는 당 업계에 알려진 바와 같이, 하나 또는 그 이상의 버스들 또는 기타 유선 또는 무선 접속들일 수 있으나, 이에 한정되지는 않는다. 입/출력 컨트롤러(135)는 통신들을 가능하게 하기 위해, 컨트롤러들, 버퍼들(캐시들), 드라이버들, 중계기들(repeaters), 및 수신기들과 같은, 단순성을 위해서 생략된, 추가 엘리멘트들을 가질 수 있다. 또한, 로컬 인터페이스는 주소, 컨트롤, 및/또는 데이터 접속들을 포함하여 상기 전술한 컴포넌트들 간의 적절한 통신들을 가능하게 할 수 있다.
[0100] 프로세서(105)는 소프트웨어, 특히 메모리(110)에 저장된 소프트웨어를 실행하기 위한 하드웨어 디바이스이다. 프로세서(105)는 모든 커스텀으로 만들어지거나 또는 상업적으로 이용 가능한 프로세서, 중앙 처리 유닛(CPU), 컴퓨터 시스템(100)과 관련된 여러 프로세서들 사이에서의 보조 프로세서, 반도체-기반 마이크로프로세서(마이크로칩 또는 칩 세트의 형태에 있음), 매크로프로세서(macroprocessor), 또는 일반적으로 소프트웨어 명령들을 실행하기 위한 모든 디바이스가 될 수 있다.
[0101] 메모리(110)는 휘발성 메모리 모듈들(예: 랜덤 액세스 메모리(random access memory: RAM(DRAM, SRAM, SDRAM, 등과 같음)) 및 비휘발성 메모리 모듈들(예: ROM, 소거 및 프로그램 가능 읽기전용 기억 장치(EPROM), 전기적으로 소거 및 프로그램 가능 읽기전용 기억 장치(EEPROM), 또는 프로그램 가능 읽기전용 기억 장치(PROM)) 중 어느 하나 또는 이들의 조합을 포함할 수 있다. 메모리(110)는 추가 모듈들이 서로 멀리 떨어져 있는, 분산 아키텍처를 가질 수 있지만, 프로세서(105)에 의해서 액세스될 수 있다는 것을 주목해야 한다.
[0102] 메모리(110)의 소프트웨어는 하나 또는 그 이상의 개별 프로그램들을 포함할 수 있으며, 이들 각각은 논리적 기능들, 그 중에서도 본 발명의 실시예들에 포함되는 기능들을 구현하기 위해서 실행 가능한 명령들의 정렬된 목록을 포함한다. 실행 가능한 명령들은 발행-구독 시스템에서 암호 키 순환을 위해서 추가로 구성될 수 있다. 특히, 실행 가능한 명령들은, 예를 들어, 실행 가능한 명령들의 형태로, 컴퓨터 시스템(100)에 의해서 제공되는 암호화 모듈을 사용하여, 발행-구독 시스템의 메시지들을 재-암호화하도록 구성될 수 있다. 메모리(110)의 소프트웨어는 적절한 운영 시스템(OS)(111)을 더 포함할 수 있다. OS(111)는 아마도 소프트웨어(112)와 같은, 다른 컴퓨터 프로그램들의 실행을 기본적으로 컨트롤한다.
[0103] 컴퓨터 시스템(100)이 PC, 워크스테이션, 지능형 디바이스 등인 경우, 상기 메모리(110) 내의 소프트웨어는 기본 입출력 시스템(Basic Input Output System: BIOS)(122)을 더 포함할 수 있다. BIOS는 시작 시 하드웨어를 초기화 및 테스트하고, OS(111)를 시작하며, 하드웨어 디바이스들 간의 데이터의 전송을 지원하는 필수 소프트웨어 루틴들의 세트이다. BIOS는 컴퓨터 시스템(100)이 활성화될 때 BIOS가 실행될 수 있도록 ROM에 저장된다.
[0104] 컴퓨터 시스템(100)이 작동 중에 있을 때, 프로세서(105)는 메모리(110) 내에 저장된 소프트웨어(112)를 실행하도록 구성되고, 메모리(110)로부터 그리고 메모리로 데이터를 주고받으며, 소프트웨어에 따라 컴퓨터 시스템(100)의 작동들을 일반적으로 컨트롤한다. 여기서 기술되는 방법들과 OS(111)는, 전체 또는 부분적으로, 프로세서(105)에 의해 읽혀 지지만, 그러나 일반적으로 후자는, 프로세서(105)에 의해 읽혀 져서, 프로세서(105) 내에서 버퍼링 되고, 그 다음에 실행된다.
[0105] 소프트웨어(112)는, 스토리지(120)와 같은, 모든 컴퓨터 판독 가능한 매체에 저장되어, 제공되고, 모든 컴퓨터 관련 시스템 또는 방법에 의해 또는 연결하여 사용할 수 있다. 스토리지(120)는 HDD 스토리지와 같은 디스크 스토리지(127)를 포함할 수 있다. 발행-구독 시스템의 메시지들은 스토리지(120)와 같은, 내부 스토리지, 또는 스토리지 매체(145)와 같은, 주변 스토리지를 사용하여 컴퓨터 시스템(100)에 저장될 수 있다. 대안으로, 또는 추가적으로, 발행-구독 시스템의 메시지들은 컴퓨터 시스템(170)과 같은, 다른 컴퓨터 시스템에 저장될 수 있고, 예를 들어, 네트워크(160)와 같은, 네트워크를 통해 컴퓨터 시스템(100)에 액세스할 수 있다. 대안으로, 또는 추가적으로, 발행-구독 시스템의 메시지들을 암호화 및 복호화하는 데 사용되는 암호 키들은 컴퓨터 시스템(100)에 저장되거나 또는 액세스될 수 있다.
[0106] 예를 들어, 종래의 키보드(150) 및 마우스(155)가 입/출력 컨트롤러(135)에 결합될 수 있다. I/O 디바이스들(140)과 같은, 기타 출력 디바이스들은, 예를 들어 프린터, 스캐너, 마이크, 등에, 그러나 이에 한정되지는 않는, 출력 디바이스들을 포함할 수 있다. 마지막으로, I/O 디바이스들(140, 145)은 입력들과 출력들 모두를 통신하는 디바이스들, 예를 들어, 네트워크 인터페이스 카드(a network interface card: NIC) 또는 변조기/복조기(modulator/demodulator)(기타 파일들, 디바이스들, 시스템들, 또는 네트워크에 액세스하기 위함), 무선 주파수(a radio frequency: RF) 또는 기타 송수신기(other transceiver), 전화 인터페이스, 브릿지(a bridge), 라우터, 등을 더 포함할 수 있지만, 그러나 이에 한정되지는 않는다. I/O 디바이스들(140, 145)은 당 업계에 알려진 일반화된 모든 암호 카드 또는 스마트 카드를 포함할 수 있다. 컴퓨터 시스템(100)은 디스플레이(130)에 결합된 디스플레이 컨트롤러(125)를 더 포함할 수 있다. 예를 들어, 컴퓨터 시스템(100)은 인트라넷 또는 인터넷과 같은, 네트워크(160)에 결합하기 위한 네트워크 인터페이스를 더 포함할 수 있다. 네트워크는 광대역 접속을 통해 컴퓨터 시스템(170), 기타 클라이언트 등과 같은, 컴퓨터 시스템(100) 및 외부 모든 서버 간의 통신을 위한 IP-기반 네트워크(an IP-based network)일 수 있다. 컴퓨터 시스템(170)은, 예를 들어, 발행자 컴퓨터 시스템, 구독자 컴퓨터 시스템, 브로커 서버, 예를 들어 브로커들의 클러스터의 서버, 또는 발행-구독 시스템의 프록시일 수 있다. 네트워크(160)는 컴퓨터 시스템(100)과 컴퓨터 시스템(170) 사이에서 데이터, 예를 들어, 메시지를 전송하고 수신한다. 예를 들어, 네트워크(160)는 서비스 공급자가 관리하는 관리 IP 네트워크(a managed IP network)일 수 있다. 네트워크(160)는 무선 방식, 예를 들어, Wi-Fi, WiMAX, 등과 같은, 무선 프로토콜들 및 기술들을 사용함으로 구현될 수 있다. 네트워크(160)는 또한 근거리 통신망(a local area network), 광역 통신망(wide area network), 대도시 통신망(metropolitan area network), 인터넷망(Internet network), 또는 기타 유사한 유형의 네트워크 환경과 같은 패킷-교환 네트워크(a packet-switched network)일 수 있다. 네트워크는 고정 무선 네트워크, 무선 근거리 통신망(local area network: LAN), 무선 광역 통신망(wide area network: WAN), 개인 영역 네트워크(a personal area network: PAN), 가상 사설 통신망(a virtual private network: VPN), 인트라넷 또는 기타 적합한 네트워크 시스템일 수 있으며, 신호들을 수신하고 전송하는 장비를 포함할 수 있다.
[0107] 도 2는 일 예의 발행-구독 시스템(200)을 도시한다. 발행-구독 시스템(200)은 수신된 메시지들(204) 중 하나 또는 그 이상의 생산자들(206), 즉 발행자들(204)로부터, 메시지들(204)을 수신하도록 구성된 하나 또는 그 이상의 브로커들(202)을 포함한다. 메시지들(204)은 토픽들(210)에 할당된다. 브로커(202)는 재생된 메시지들(204)을 토픽들(210)의 메시지 로그들에 저장한다. 소비자들(208), 즉 구독자들은, 토픽들(210) 중 하나 또는 그 이상의 토픽들을 구독할 수 있다. 토픽들(210)에 저장된 메시지들(204)은 브로커(202)에 의해서 각각의 토픽들(210)을 구독하는 소비자들(208)에게 전송된다.
[0108] 발행-구독 시스템(200)이 포함하는 브로커(202)는 암호화 모듈을 포함하는 암호화 브로커로 구성될 수 있다. 암호화 모듈은 메시지들의 암호화 및 복호화와 같은, 암호 연산들을 처리하도록 구성된 암호화 브로커(202)의 내부 컴포넌트의 형태로 구현될 수 있다. 암호화 브로커(202)는 생성자(206)로부터 수신된 메시지들(204)을 암호화하여 암호화된 메시지들(205)을 생성할 수 있고, 이는 메시지(204)가 할당되는 토픽(210)의 메시지 로그에 저장된다. 암호화 브로커(202)는 발행-구독 시스템(200)에 의해서 제공된 토픽들(210) 각각을 구독한 소비자(208)에게 원래의 메시지들(204), 즉 암호화되지 않은 형태의 메시지들을, 반환하기 위해서 토픽(210)의 메시지 로그들에 저장되는 암호화된 메시지들(205)을 다시 복호화할 수 있다.
[0109] 그러한 발행-구독 시스템(200)은 발행-구독 아키텍처를 사용하는데, 이를 또한 발행-구독 패턴이라 한다. 브로커(202)의 발행-구독 시스템(200)은 로그들로서 수신된 모든 메시지들(204)을 파일 시스템에 존속시킬 수 있다. 메시지들(204)은, 소위 토픽들(210)이라 하는, 카테고리들에 기록되고, 이들로부터 읽혀진다. 발행-구독 시스템(200)은 트랜잭션 로그로 디자인된 대규모 확장 가능한 발행-구독 메시지 큐를 제공할 수 있다. 예를 들어, 클러스터를 형성하는 복수의 브로커들(202)이 제공될 수 있으며 트랜잭션 로그는 클러스터에서 분산된 분산 트랜잭션 로그로서 구현될 수 있다.
[0110] 도 3은 추가의 일 예의 발행-구독 시스템(200)을 도시한다. 도 3의 발행-구독 시스템(200)은 도 2의 발행-구독 시스템(200)에 대응하지만, 추가로 프록시(203)를 포함한다. 발행-구독 시스템(200)의 클라이언트들, 즉 생산자들(206) 및 소비자들(208)은, 발행-구독 시스템(200)의 브로커(202)와 직접 통신하지 않지만, 오히려 프록시(203)를 통해 통신한다. 마찬가지로, 브로커(202)는 프록시(203)를 통해, 클라이언트들(206, 208)과 통신할 수 있다. 프록시(203)는, 예를 들어, 발행-구독 시스템(200)에 액세스 컨트롤 수단들을 구현하도록 구성될 수 있다.
[0111] 도 4는 일 예의 암호화 메시지 브로커(202)를 더 상세히 예시한 것이다. 암호화 메시지 브로커(202)는 암호화 모듈(201)을 포함한다. 암호화 모듈(201)은 암호 키 k를 사용하여 생산자(206)로부터 수신되는 메시지들 m을 암호화하도록 구성된다. 암호 키 k를 사용하여 암호화 모듈(201)에 의한 메시지들 m의 암호화는 암호문 c = E(k,m), 즉 암호화된 메시지를 생성할 수 있으며, 이는 토픽 t(210)의 메시지 로그에 저장된다. 암호화 모듈(201)은 암호문 c = E(k,m)를 생성하기 위해서 암호화 함수 E를 사용한다. 토픽(210)의 메시지 로그는 세그먼트 파일들(211)에 저장된 복수의 암호화된 메시지들(205)을 포함할 수 있다. 토픽 t(211)의 세그먼트 파일(211)에 저장된 암호화된 메시지(205)가 토픽 t(210)에 구독 중인 소비자(208)에게로 전송되어야 하는 경우, 암호화된 메시지(205)는 브로커(202)의 스토리지로부터 읽혀지고 암호문 c의 형태로 암호화 모듈(201)에 제공된다. 암호화 모듈(201)은 암호 키 k로 암호문 c로부터 암호화되지 않은 원래의 메시지 m = D(k,c)를 복구하기 위해서 복호화 함수 D를 사용한다.
[0112] 예들은 암호 키들의 순환을 가능하게 함으로써 보안을 향상시키는 유익한 효과를 가질 수 있다. 키 순환들은, 예를 들어, 위험 관리의 조치(a measure of risk management)로써, 예를 들어, 정기적으로 수행될 수 있다. 예를 들어, 보안 규정들은 주기적으로 키 순환을 요청할 수 있다. 키 순환들은, 예를 들어, 사용 중인 암호 키의 보안에 도전하는 사건에 대응하여 수행될 수 있다. 키 순환은 키들의 변경을 포함하며 기존 암호화된 데이터를 신규 키(들)로 재-암호화하는 것을 수반할 수 있다.
[0113] 도 5는 메시지 브로커(202) 및 프록시(proxy)(203)를 갖는 추가 일 예의 발행-구독 시스템(200)을 예시한다. 발행-구독 시스템(200)의 클라이언트들(206, 208)은 프록시(203)를 통해 브로커(202)와 통신할 수 있다. 마찬가지로, 브로커(202)는 프록시(203)를 통해 클라이언트들(206, 208)과 통신할 수 있다. 도 5의 경우, 메시지들을 암호화 및 복호화하기 위한 암호화 모듈(201)은 프록시(203)에 포함된다. 따라서, 프록시(203)는 메시지들을 암호화하고 복호화 하도록 구성될 수 있다. 프록시(203)는, 예를 들어, 발행-구독 시스템(200)에 액세스 컨트롤 조치들(access control measures)을 구현하도록 더 구성될 수 있다. 상기 프록시는 유입 메시지들 m을 암호화하여, 암호문들 c = E(k,m)을 생성할 수 있고, 이는 토픽 t(210)에 저장하기 위해 브로커(202)에 의해 전송되며, 상기 프록시는 암호문들 c를 복호화 하여, 유출 메시지들 m = D(k,c)를 생성할 수 있고, 이는 토픽 t를 구독 중인 소비자들(208)에 전송된다.
[0114] 도 2 내지 도 5에서 도시된 발행-구독 시스템과 같은 발행-구독 시스템(200)은 연속적으로 온라인 상태(continuously online)일 수 있으며, 즉 메시지들을 연속적으로 수신하고 전송(continuously receive and send)할 수 있다. 그러한 발행-구독 시스템(200)은, 예를 들어, 조직 내에서, 데이터를 저장하고 분산하는 데 점진적으로 의존되고 있다. 다음 예들에서는 교체 키들로 메시지들을 암호화하고 복호화 하기 위해 발행-구독 시스템들(200)에 의해서 사용되는 암호 키들 k를 교체하게 하는 키 순환에 대해 기술될 수 있다. 이들 예들은 발행-구독 시스템들(200)에 포함된 데이터 볼륨들만큼 큰 대용량(a high volume) 데이터의 효과적이고 효율적인 재-암호화를 가능하게 하는 유익한 효과를 가질 수 있다. 이 예는 발행-구독 시스템(200)이 저장하는 메시지들을 재-암호화하기 위해서 발행-구독 시스템(200)을 오프라인으로 가져오는 것을 요구하지 않을 수 있다. 다음의 서로 다른 접근법들에서는 발행-구독 시스템(200)을 중단함이 없이 발행-구독 시스템(200)의 브로커(202)에 저장된, 토픽 데이터, 즉 토픽의 메시지들을 재-암호화하는 것이 기술된다.
[0115] 하나의 접근법은 발행-구독 시스템(200)을 중단함이 없이 재-암호화를 가능하게 하기 위해서 사용되는 토픽 별명의 생성(a creation of a topic alias)에 기초할 수 있다. 추가 접근법은 발행-구독 시스템(200)을 중단함이 없이 재-암호화를 가능하게 하는 재-암호화 서비스를 갖춘 브로커(202)의 확장에 기초할 수 있다. 두 가지 모두의 접근법들은 브로커(202)가 중단함이 없이 계속 실행될 수 있도록 하는 유익한 효과를 가질 수 있다. 따라서, 브로커(202)의 클라이언트들(206, 208)은 브로커(202)의 재-암호화를 인식하지 못할 수 있다(oblivious). 재-암호화를 위해서, 추가로, 프록시(203)가 사용될 수 있다. 상기 접근법은 재-암호화 프로세스에 의해서 메시지 메타데이터를 보존하는 유익한 효과를 더 가질 수 있다.
[0116] 도 6은, 도 4 또는 도 5의 발행-구독 시스템(200)과 같은, 발행-구독 시스템에서의 암호 키 순환을 위한 일 예의 방법의 개략적인 플로 차트를 도시한다. 상기 발행-구독 시스템은 복수의 메시지들을 저장한다. 저장된 메시지들 각각은 하나 또는 그 이상의 토픽들의 그룹으로부터의 하나의 토픽에 할당된다. 상기 저장된 메시지들 각각에는 하나 또는 그 이상의 암호 키들 그룹의 하나의 암호 키가 할당되고 상기 할당된 암호 키로 암호화된다. 상기 발행-구독 시스템은 저장된 메시지들을 라우팅된 메시지들이 할당되는 토픽들의 하나 또는 그 이상의 구독자들에게 라우팅하기 위해서 브로커 서비스를 제공한다. 라우팅하는 단계는 각각의 메시지의 할당된 암호 키를 사용하여 라우팅될 메시지를 복호화하는 단계를 포함하고 복호화된 메시지들을 할당된 토픽의 하나 또는 그 이상의 구독자들에게 전송하는 단계를 포함한다.
[0117] 암호 키 순환은 저장된 메시지들의 하나 또는 그 이상의 제1 메시지들의 제1 세트의 각 메시지의 재-암호화를 포함한다. 상기 제1 메시지들 각각은 토픽들의 그룹으로부터 공통 제1 토픽(a common first topic)에 할당되고, 암호 키들의 그룹의 하나 또는 그 이상의 제1 암호 키들의 제1 세트의 제1 암호 키들에 할당되며, 그리고 할당된 제1 암호 키로 암호화된다. 상기 재-암호화는 발행-구독 시스템의 암호화 모듈에 의해서 백그라운드 프로세스로 실행되며, 상기 실행 동안, 브로커 서비스로부터 제1 메시지들을 라우팅하는 단계와 브로커 서비스에 의해 공통 제1 토픽을 위해 추가의 제1 메시지들을 수신하는 단계는 계속된다.
[0118] 블록(300)에서, 하나 또는 그 이상의 제2 암호 키들은 제1 토픽의 제1 메시지들을 암호화하기 위해서 사용되는 하나 또는 그 이상의 제1 암호 키들에 대한 교체 키들로써 추가된다. 예를 들어, 단일 제1 암호 키가 제1 토픽에 할당되고 제1 토픽에 할당된 모든 메시지들은 각각의 단일 제1 암호 키를 사용하여 암호화될 수 있다. 이 경우, 단일 제2 암호 키가, 예를 들어, 이전에 사용된 제1 암호 키를 교체하기 위해서 제1 토픽에 대해서 추가될 수 있다. 예를 들어, 복수의 제1 암호 키들이 제1 토픽에 할당될 수 있고 제1 토픽에 할당된 다른 메시지들이 다른 제1 암호 키들을 사용하여 암호화될 수 있다. 이 경우, 복수의 제2 암호 키들이 예를 들어, 이전에 사용된 제1 암호 키들 각각에 대한 교체 키를 포함하는 제1 토픽에 대해서 추가될 수 있다.
[0119] 블록(302)에서, 제1 토픽에 할당된 제1 메시지들 각각은 각각의 제1 메시지들에 할당된 제1 암호 키를 사용하여 복호화될 수 있다. 블록(304)에서, 복호화된 제1 메시지들 각각은 블록(300)에서 추가된 교체 키들 중 하나를 사용하여 재-암호화될 수 있다. 예를 들어, 교체 키들은 이전에 사용된 제1 암호 키에 대해서 교체 키들로 할당된다. 블록(306)에서, 재-암호화된 제1 메시지들을 재-암호화하기 위해 사용되는 교체 키들은 각각의 재-암호화된 제1 메시지들에 할당될 수 있다. 블록(308)에서, 발행-구독 시스템은 라우팅을 위해 암호화된 제1 메시지들 및 할당된 제1 암호 키들을 사용하는 것으로부터 재-암호화된 제1 메시지들 및 할당된 교체 키들을 사용하는 것으로 스위치한다. 또한, 이전에 사용된 암호화된 제1 메시지들 및/또는 이전에 사용된 제1 암호 키들은 삭제될 수 있다.
[0120] 도 7은 토픽 별명 ta(212)를 사용하여 암호 키 순환을 구현하는 일 예의 발행-구독 시스템(200)을 도시한다. 발행-구독 시스템(200)의 클라이언트들(206, 208)에 대해서, 토픽 별명 ta(212)는 정상 토픽(a normal topic)으로 보이지만, 실제로 다른 토픽 t1(210)에 대한 중간자(an intermediary)이다. 메시지들은 토픽 별명 ta(212)에 할당된 생산자(206)로부터 수신될 수 있다. 토픽 별명 ta(212)는, 수신된 메시지가 토픽 t1(210)에도 또한 할당되고 토픽 t1(210)의 메시지 로그의 세그먼트 파일(211)에 저장되도록, 토픽 t1(210)을 가리킬 수 있다. 이 목적을 위해, 수신된 메시지 m은 암호 키 k1, 예를 들어, 토픽 t1(201)에 할당된 암호 키 k1을 사용하여 암호화될 수 있고, 암호문 c1 = E(k1, m)를 생성할 수 있다. 이 암호문 c1은 토픽 t1(210)의 메시지 로그에 암호화된 메시지(205)로 저장될 수 있다. 소비자(208)는 토픽 t1(210)의 메시지 로그에 저장된 암호화된 메시지들(205)이 소비자(208)로 전송되도록 토픽 별명 ta(212)를 구독할 수 있다. 이 목적을 위해, 전송될 암호화된 메시지(205)는 암호문 c1의 형태로 토픽 t1(210)의 메시지 로그로부터 읽혀질 수 있고 암호 키 k1를 사용하여 암호문 c1로부터 암호화되지 않은 원래의 메시지m = D(k1,c1)를 복구하도록 복호화될 수 있다. 그 다음에, 암호화되지 않은 원래의 메시지 m이 브로커(202)에 의해서 소비자(208)로 전송될 수 있다. 암호화 및 복호화를 위해, 브로커(202)는 도 4에서 도시된 바와 같은 암호화 모듈을 사용할 수 있다.
[0121] 토픽 별명 ta(212)와 같은, 토픽 별명들(Topic aliases)은, 도 11에서 도시된 바와 같이 브로커(202) 또는 추가 프록시에서 구현될 수 있다. 토픽 별명 ta(212)와 같은, 토픽 별명은, 예를 들어, 정책들(policies), 등록(registry), 등과 같은, 브로커(202)의 모든 퍼실리티들과 통합될 수 있다. 그러한 토픽 별명들은 브로커(202) 또는 프록시의 관리자가 생성 및/또는 삭제할 수 있다. 또한, 관리자의 액션들은 토픽 t1(210)과 같은, 특정 토픽(a concrete topic)에 대해, 토픽 별명 ta(212)와 같은, 토픽 별명들을 첨부하거나 및/또는 토픽 t1(210)과 같은, 특정 토픽(a concrete topic)으로부터, 토픽 별명 ta(212)와 같은, 토픽 별명들을 분리시키는 것을 포함할 수 있다. 특정 토픽에 첨부된, 즉, 할당된 토픽 별명은 각각의 특정 토픽을 가리키는 중간자 포인터(an intermediary pointer)이다. 토픽 별명이 특정 토픽에 첨부될 때, 각각의 특정 토픽은 선택적으로 발행-구독 시스템(200)의 클라이언트들로부터 숨겨질 수 있다. 그러므로, 생산자(206) 및 소비자(208)와 같은, 클라이언트들은 논리적이고, 별명이 있는 토픽, 즉, 토픽 별명 ta(212)와 같은, 토픽 별명들과만 통신할 수 있다.
[0122] 예를 들어, 발행-구독 시스템은 토픽들에 할당된 토픽 별명들만 포함할 수 있다. 예를 들어, 발행-구독 시스템은 또한 어떤 토픽들에도 할당되지 않은 하나 또는 그 이상의 할당되지 않은 토픽의 별명들을 포함할 수 있다. 그러한 할당되지 않은 토픽 별명들은 클라이언트들에게 보여 질 수 있지만, 메시지들을 전송하거나 수신하는 데 사용될 때, 오류를 반환한다. 대안으로, 할당되지 않은 토픽 별명들은 토픽에 할당될 때까지, 클라이언트들(206, 208)로부터 숨겨질 수 있다.
[0123] 토픽 t1(210)의 메시지 로그에 저장된 암호화된 메시지(205)의 재-암호화는 백그라운드에서, 예를 들어, 백그라운드 스레드에서 실행되는 재-암호화 프로세스(214)를 사용하여 브로커(202)에 의해 수행될 수 있다. 재-암호화 프로세스(214)는, 예를 들어, 브로커(202)의 암호화 모듈에 의해 실행될 수 있다.
[0124] 도 8은 재-암호화 프로세스(214)을 사용하여 재-암호화를 실행하는 발행-구독 시스템(200)을 도시한다. 재-암호화를 위한 초기 상황은 도 7에 도시된 배열일 수 있다. 재-암호화를 위해, 토픽 별명 ta(212)와 같은, 토픽 별명을 사용하는 단계는, 토픽 t1(210)과 같은, 토픽을 제공하는 단계를 포함할 수 있다. 각각의 토픽 t1(210)이, 예를 들어, 생성될 수 있다. 또한, 토픽 별명 ta(212)가 제공될 수 있다. 토픽 별명 ta(212)가, 예를 들어, 생성될 수 있다. 제공된 토픽 별명 ta(212)가 제공된 토픽 t1(210)에 할당될 수 있다. 토픽 별명 ta(212)는, 예를 들어, 브로커(202)의 암호화 모듈을 사용하여, 토픽 t1(210)의 메시지 로그에 저장하기 위해서 생산자(206)로부터 수신된 메시지들 m을 암호화하도록 구성될 수 있다. 생산자(206)는 메시지들 m을 토픽 별명 ta(212)로 전송할 수 있다. 또한, 토픽 별명 ta(212)는 토픽 별명 ta(212)를 구독하는 소비자(208)에게 전송될 원래의 메시지들 m을 복원하기 위해서, 예를 들어, 브로커(202)의 암호화 모듈을 사용하여, 토픽 t1(210)의 메시지 로그에 저장된 암호화된 메시지들을 복호화하도록 구성될 수 있다. 각각의 메시지들 m은 토픽 t1(210)에 할당된 암호 키 k1을 사용하여 암호화 및 복호화할 수 있다. 발행-구독 시스템(200)의 클라이언트들(206, 208)은 토픽 별명 ta(212)를 통해서 메시지들을 전송하고 수신하는 것을 시작할 수 있다.
[0125] 키 순환을 수행하기 위해서, 즉 기존 토픽 t1(210)에 할당된 그리고 토픽 t1(210)의 메시지 로그에 저장된 암호화된 메시지들(205)을 암호화하는 데 사용된 기존 암호 키(k1)를 교체하기 위해서, 재-암호화가 수행될 수 있다. 예를 들어, 재-암호화 워크플로우는 추가 토픽 t2(220)를 추가하는 단계를 포함하여 실행될 수 있다. 키 순환은, 예를 들어, 추가 토픽 t2(220)에 대한 추가 암호 키 k2를 생성함으로써 시작될 수 있다. 암호화 모듈은, 추가 키 k2를 사용하여, 신규 메시지들, 즉, 브로커(202) 또는 프록시에 의해 수신된 메시지들을 암호화하도록 업데이트될 수 있다. 기존 토픽 t1(210)의 메시지 로그에 저장된 메시지들(205)의 재-암호화 프로세스가 시작될 수 있으며, 기존 토픽 t1(210)으로부터 추가 토픽 t2(220)로 데이터를 복사하는 단계를 포함한다. 상기 복사하는 단계는 추가 키 k2로 복사된 메시지들(205)을 재-암호화하는 단계를 포함할 수 있다. 상기 재-암호화를 위해, 기존 토픽에 의해서 암호화된 형태로 포함된 각각의 데이터가 기존 토픽 t1(210)의 기존 암호 키 k1을 사용하여 복호화되고 추가 토픽 t2(220)의 추가 암호 키 k2를 사용하여 암호화될 수 있다. 상기 재-암호화는, 예를 들어, 토픽 t1(210)에 저장된 암호문 c1 및 기존 암호 키 k1을 사용하여 원래의 메시지들 m = D(k1, c1)의 복구를 포함할 수 있다. 복구된 원래의 메시지들은 추가 키 k2를 사용하여 재-암호화될 수 있고 최종 암호문 c2 = E(k2, m)를 암호화된 메시지(225)로서 추가 토픽 t2(220)의 메시지 로그 내의 세그먼트 파일(221)에 저장할 수 있다.
[0126] 재-암호화 프로세스(214)는, 재-암호화하는 동안 도착한, 신규의 모든 메시지들 m을 추가 토픽 t2(220)에, 추가할 수 있다. 이들 신규의 메시지들 m은 추가 암호 키 k2를 사용하여 암호화되어 암호문 c2 = E(k2, m)를 생성할 수 있고, 이는 추가 토픽 t2(220)의 메시지 로그에 저장 될 수 있다. 상기 복사하는 단계가 완료되면, 토픽 별명 ta(212)는 추가 토픽 t2(220)에 재-할당될 수 있다. 추가 토픽 t2(220)는 추가 암호 키 k2로 암호화된 신규 메시지들뿐만아니라 기존 토픽 t1(210)로부터 복사된 재-암호화된 데이터를 포함할 수 있다. 따라서, 기존 토픽 t1(210)은 비활성화(inactive)될 수 있고, 한편 추가 토픽 t2(220)는 활성화(active)된다. 선택적으로, 이전 활성화 토픽 로그, 즉, 기존 토픽 t1(210)의 메시지 로그가, 도 9에서 도시된 바와 같이, 삭제될 수 있고, 그 결과, 도 10에서 도시된 바와 같은, 상황이 발생할 수 있다. 발행-구독 시스템(200)의 클라이언트들(206, 208)에게, 추가 토픽 t2(220)의 생성과 기존 토픽 t1(210)으로부터 추가 토픽 t2(220)로 스위치하는 단계는 보이지 않을 수 있다. 클라이언트들(206, 208)은 토픽 별명 ta(212)와 계속 통신할 수 있다. 생산자(206)로부터 수신된 메시지들 m은 추가 암호 키 k2를 사용하여 암호문들 c2 = E(k2, m)를 생성하도록 암호화될 수 있으며, 이 암호문들은 추가 토픽 t2(220)의 메시지 로그에서 암호화된 메시지들(225)로 저장될 수 있다. 또한, 추가 토픽 t2(220)의 메시지 로그에 저장된 암호화된 메시지들(225)은 추가 암호 키 k2를 사용하여 복호화되어 원래의 메시지 m = D(k2, c2)를 복구할 수 있고 이 메세지는 토픽 별명 ta(212)을 구독 중인 소비자들(208)에게 전송될 수 있다. 재-암호화 프로세스(214)의 전체 실행 동안, 발행-구독 시스템(200)은 자신의 서비스를 계속할 수 있는데, 즉, 생산자들(206)로부터의 메시지들 m을 수신하고 수신된 메시지들 m을 소비자들(208)에게 전송할 수 있다.
[0127] 도 11, 도 12, 및 도 13은 도 7, 도 8, 및 도 10의 대안적인 실시예들을, 각각, 도시하며, 이들에서 토픽 별명 ta(212) 및 재-암호화 프로세스(214)가 브로커(202) 대신 프록시(203)에서 구현된다.
[0128] 도 14는, 도 7 내지 도 13의 발행-구독 시스템(200)과 같은, 발행-구독 시스템에서 암호 키 순환에 대한 일 예의 방법의 개략적인 플로 차트를 도시한다. 도 14의 방법은 도 6의 방법에 대응되며, 암호 키 순환을 위해 토픽 별명(a topic alias)을 사용하도록 조정된다. 토픽 별명은 제1 메시지들로부터의 제1 토픽을 가리킨다. 공통 제1 토픽의 구독자들은 제1 토픽 별명을 구독한다. 또한, 메시지를 전송할 수 있는, 발행자, 즉, 생산자는 제1 토픽 별명에 메시지들을 할당할 수 있다. 제1 토픽 별명에 할당된 메시지들은 공통 제1 토픽에 자동으로 재-할당될 수 있다.
[0129] 블록(320)에서, 추가 공통 제2 토픽이 추가될 수 있다. 블록들(322 내지 328)은 도 6의 블록들(300 내지 306)에 대응할 수 있다. 블록(330)에서, 재-암호화된 메시지들이 블록(320)에 추가된 추가 공통 제2 토픽의 메시지 로그에 저장된다. 블록(332)에서, 발행-구독 시스템은 라우팅하기 위해서 암호화된 제1 메시지들 및 할당된 제1 암호 키들을 사용하는 단계로부터 재-암호화된 제1 메시지들 및 할당된 교체 키들을 사용하는 단계로 스위치할 수 있다. 상기 스위치하는 단계는 암호화된 제1 메시지들을 포함하는 공통 제1 토픽으로부터 재-암호화된 제1 메시지들을 포함하는 공통 제2 토픽으로 토픽 별명을 재-할당하는 단계를 포함할 수 있다. 또한, 이전에 사용된 암호화된 제1 메시지들 및/또는 이전에 사용된 제1 암호 키들이 삭제될 수 있다. 상기 삭제는, 예를 들어, 공통 제1 토픽의 삭제를 포함할 수 있다.
[0130] 도 15는 브로커 재-암호화 서비스를 사용하는 재-암호화의 대안적인 구현을 예시하는 개략적인 블록도를 도시한다. 브로커 재-암호화 서비스는 도 4에 도시된 바와 같이 브로커(202)에서 구현될 수 있다. 브로커 재-암호화 서비스는 토픽 별명들을 수반하지 않지만, 오히려, 예를 들어 토픽t(210)의, 토픽 관리를 브로커(202) 내에서 확장할 수 있다. 예를 들어, 백그라운드 스레드들을 통해 압축을 수행하고(performing compaction) 만료를 처리하는(handling expiration) 브로커의 로그 클리너 서비스가 재-암호화 서비스를 제공하기 위해 재-암호화 특징들(re-encryption features)을 포함하도록 확장될 수 있다.
[0131] 토픽 t(210)는 복수의 파티션들로 구성될 수 있고, 이들 각각은 복수의 세그먼트 파일들(211)로 구성될 수 있다. 추가 메시지, 즉, 신규 메시지를 토픽t(210)에 추가하기 위한 쓰기 프로세스는 추가 메시지를 최종 열린 세그먼트 파일(the last open segment file)(211), 예를 들어, 세그먼트 파일"세그먼트 3"에 추가하는 단계를 포함할 수 있다. 닫힌 세그먼트 파일들(Closed segment files)은, 예를 들어, 세그먼트 파일들 각각에 저장된 메시지들의 최대 보존 시간(a maximum retention time)이 만료한 때에 로그 클리너 서비스(a log cleaner service)에 의해서 교환되거나 삭제될 수 있다.
[0132] 브로커 재-암호화 서비스를 갖는 재-암호화 워크플로우는 제1 암호 키로 암호화된 기존 토픽을 제2, 즉, 신규의 암호 키로 재-암호화하도록 커맨드를 발행하는 단계를 포함할 수 있다. 상기 커맨드를 발행하는 것에 응답하여, 재-암호화 프로세스가 시작될 수 있다. 재-암호화 프로세스는 백그라운드 스레드들로 구현될 수 있다. 유입 신규 메시지들은 제2 키를 사용하여 암호화될 수 있다. 브로커(202)는 현재 세그먼트 파일 "세그먼트 3"을 닫을 수 있고 신규 세그먼트 파일(222) "세그먼트 4"를 열 수 있다. 브로커(202)는 메시지의 오프셋의 오프셋 값을 더 결정하고 저장할 수 있으며, 이 오프셋 값으로 제2 키를 사용하여 암호화가 시작될 수 있다.
[0133] 이전에 수신된 메시지들, 즉, 닫힌 세그먼트 파일들(211) "세그먼트 1", "세그먼트 2", 및 "세그먼트 3"에 저장된 메시지들의 재-암호화는 백그라운드 스레드들에 의해서 시작될 수 있다. 결정된 오프셋으로 시작하는 모든 이전 메시지들, 즉, 이전 암호 키로 암호화된 모든 메시지들은, 예를 들어, 파일 바이 파일 기반(file by file basis)으로, 재-암호화될 수 있다. 예를 들어, 재-암호화는 최신 세그먼트 파일(211) "세그먼트 3"에서 시작할 수 있다. 세그먼트 파일(211) "세그먼트 3"이 재-암호화되면, 즉, 이전의 제1 암호 키를 사용하여 복호화되고 현재 제2 암호 키를 사용하여 암호화되면, 최종 재-암호화된 세그먼트 파일(221) "세그먼트 3"은 이전의 세그먼트 파일(211) "세그먼트 3"과 교환된다. 예를 들어, 이전 암호 키를 사용하여 암호화된 메시지들을 포함하는 이전 세그먼트 파일들(211) "세그먼트 2" 및 "세그먼트 3"은 이전 세그먼트 파일들(211) "세그먼트 2" 및 "세그먼트 3"과 동일한 메시지를 포함하고, 현재 제2 암호 키를 사용하여 재-암호화된, 세그먼트 파일들(221) "세그먼트 2" 및 "세그먼트 3"으로 교체될 수 있다. 최종 세그먼트 파일(211), 예를 들어, 가장 오래된 세그먼트 파일 "세그먼트 2"의 최종 메시지가 재-암호화되면, 재-암호화 프로세스는 완료될 수 있고 이전 제1 암호 키는, 즉, 폐기될 수 있다. 예를 들어, 세그먼트 파일 "세그먼트 1"은 키 순환 중에 삭제될 수 있는데, 이는 각각의 세그먼트 파일 "세그먼트 1"이 포함하는 메시지들의 최대 보존 시간이 만료됨으로 인함이다. 따라서, 최신 "세그먼트 3"으로 재-암호화를 시작하면 발행-구독 시스템이, 나중에 키 순환 중에 삭제되는, "세그먼트 1"과 같은, 세그먼트 파일을 불필요하게 재-암호화하는 것을 방지할 수 있다.
[0134] 도 15에서 예시된 바와 같이, 브로커(202)에서의 재-암호화 서비스를 사용하는 재-암호화는 병렬화를 구현함으로써 최적화될 수 있다. 재-암호화 워크로드는 병렬화될 수 있는데, 즉, 발행-구독 시스템이 포함하는 브로커들의 클러스터의 복수의 브로커들에 걸쳐 분산될 수 있다. 예들은 재-암호화 속도를 증가시키는, 예를 들어 최적화하는 유익한 효과를 가질 수 있다. 발행-구독 시스템은 복수의 브로커들을 포함할 수 있다. 발행-구독 시스템의 내부 프로토콜은 파티션의 복제본이 있는 발행-구독 시스템의 모든 브로커들 각각이 각각의 파티션의 세그먼트 필드들의 일부 서브세트만 재-암호화하도록 그들 자체 사이에서 조정될 수 있도록 조정될 수 있다. 그 다음에, 브로커들 각각은 복제본을 또한 가지고 있는 다른 모든 브로커들과 재-암호화된 세그먼트 필드들의 서브세트를 교환한다.
[0135] 도 16은 도 7 내지 도 13의 발행-구독 시스템(200)과 같은, 발행-구독 시스템에서 암호 키 순환에 대한 일 예의 방법의 개략적인 플로 차트를 도시한다. 도 16의 방법은 도 6의 방법에 대응하며 발행-구독 시스템의 브로커가 제공하는 재-암호화 서비스를 사용하도록 조정된다. 세그먼트 파일들은 메시지들을 저장하는 데 사용될 수 있다. 세그먼트 파일이 가득 차면, 상기 저장하는 단계는 후속 세그먼트 파일을 사용하여 계속된다.
[0136] 블록(340)에서, 메시지들을 저장하는 데 현재 사용되는 세그먼트 파일이 닫혀지고 블록(342)에서 추가 세그먼트 파일이 메시지들을 저장하기 위해 열려진다. 추가 세그먼트 파일에 저장된 메시지들은 블록(346)에서 제공된 교체 키들을 사용하여 암호화된다. 예를 들어, 교체 키는 블록들(340, 342, 또는 344) 중 어느 하나 이전에 제공될 수 있다. 블록(344)에서 교체 키들로 암호화된 메시지들을 저장하는 단계가 시작되는 오프셋을 식별하는 오프셋 값이 결정될 수 있고, 예를 들어 저장될 수 있다. 블록들(346 내지 352)은 도 6의 블록들(300 내지 306)에 대응할 수 있다. 세그먼트 파일들의 메시지들을 재-암호화는 재-암호화된 세그먼트 파일들을 생성할 수 있다. 블록(354)에서 저장된 세그먼트 파일들은 재-암호화된 세그먼트 파일들에 의해서 교체될 수 있다. 예를 들어, 재-암호화는 저장된 최신 세그먼트 파일로 시작될 수 있으며, 저장된 가장 오래된 남아있는 세그먼트 파일에 도달하여 재-암호화할 때 완료될 수 있다.
[0137] 본 발명은 임의의 가능한 기술적 세부 수준의 통합에서 시스템, 방법 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은 프로세서가 본 발명의 실시예를 수행하도록 하기 위한 컴퓨터 판독 가능한 프로그램 명령들을 포함하는 컴퓨터 판독 가능한 스토리지 매체를 포함할 수 있다.
[0138] 컴퓨터 판독 가능한 스토리지 매체는 명령 실행 디바이스에 의해 사용하기 위한 명령을 보관 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 컴퓨터 판독 가능한 스토리지 매체는, 예를 들어, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 임의의 적절한 조합일 수 있으나, 이에 한정되는 것은 아니다. 컴퓨터 판독 가능한 스토리지 매체의 구체적인 예는 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 소거 가능한 프로그램 가능 읽기 전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 콤팩트 디스크 읽기 전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱(memory stick), 플로피 디스크, 펀치 카드 또는 명령이 기록된 그루브 내의 상승된 구조(raised structures in a groove having instructions recorded thereon)와 같은 기계적으로 인코딩된 디바이스, 및 전술한 임의의 적절한 조합을 포함한다. 본 명세서에서 사용되는 컴퓨터 판독 가능한 스토리지 매체는, 전파 또는 자유롭게 전파되는 다른 전자기파, 도파관 또는 다른 전송 매체를 통해 전파되는 전자기파(예를 들어, 광섬유 케이블을 통과하는 광 펄스) 또는 전선을 통해 전송되는 전기 신호와 같은 일시적인 신호 그 자체로 해석되지 않는다.
[0139] 본 명세서에 설명된 컴퓨터 판독 가능한 프로그램 명령들은 컴퓨터 판독 가능한 스토리지 매체로부터 각각의 컴퓨팅/프로세싱 디바이스들로 다운로드 되거나, 네트워크, 예를 들어, 인터넷, 로컬 영역 네트워크, 광역 네트워크 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 스토리지 디바이스로 다운로드될 수 있다. 네트워크는 구리 전송 케이블, 광전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 에지 서버들(edge servers)을 포함할 수 있다. 각 컴퓨팅/프로세싱 디바이스의 네트워크 어댑터 카드 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 판독 가능한 프로그램 명령을 수신하고, 각각의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터 판독 가능한 스토리지 매체에 저장하기 위하여 컴퓨터 판독 가능한 프로그램 명령을 전달한다.
[0140] 본 발명의 방법을 수행하기 위한 컴퓨터 판독 가능한 프로그램 명령은 어셈블러 명령, 명령-조합-아키텍처(instruction-set-architecture : ISA) 명령, 머신 명령, 머신 종속 명령(machine dependent instructions), 마이크로코드, 펌웨어 명령, 조건 설정 데이터, 집적 회로용 구성 데이터, 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 절차적 프로그래밍 언어를 포함하여 하나 이상의 프로그래밍 언어의 조합으로 작성된 소스 코드 또는 객체 코드일 수 있다. 컴퓨터 판독 가능한 프로그램 명령들은 완전히 사용자의 컴퓨터에서, 부분적으로 사용자의 컴퓨터에서, 독립 실행형 소프트웨어 패키지로, 부분적으로 사용자의 컴퓨터와 부분적으로 원격 컴퓨터에서, 또는 완전히 원격 컴퓨터나 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 LAN(local area network) 또는 WAN(wide area network)을 포함한 모든 유형의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있으며, 외부 컴퓨터(예를 들어, 인터넷 서비스 공급자를 이용한 인터넷)에 연결될 수 있다. 일부 실시예에서, 예를 들어, 프로그래머블 논리 회로, 필드 프로그래머블 게이트 배열(FPGA) 또는 프로그래머블 논리 배열(PLA)을 포함하는 전자 회로는 본 발명의 실시예를 수행하기 위해 전자 회로를 개인화할 목적으로 컴퓨터 판독 가능한 프로그램 명령들의 조건 정보를 이용함으로써 컴퓨터 판독 가능한 프로그램 명령들을 실행할 수 있다.
[0141] 본 발명의 실시예들에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도들 및/또는 블록도들을 참조하여 본 발명의 실시예들을 설명한다. 흐름도들 및/또는 블록도들의 각 블록, 및 흐름도 및/또는 블록도들의 블록 조합은 컴퓨터 판독 가능한 프로그램 명령에 의해 구현될 수 있음을 이해해야 한다.
[0142] 이들 컴퓨터 판독 가능한 프로그램 명령들은 컴퓨터의 프로세서, 또는 머신을 생산하는 다른 프로그램 가능한 데이터 처리 장치에 제공될 수 있으며, 컴퓨터의 프로세서 또는 다른 프로그램 가능한 데이터 처리 장치를 통해 실행되는 명령은 흐름도 및/또는 블록도의 블록 또는 블록들에 지정된 기능/동작을 구현하기 위한 수단을 생성한다. 이들 컴퓨터 판독 가능한 프로그램 명령들은 또한 컴퓨터, 프로그램 가능한 데이터 처리 장치 및/또는 다른 장치들이 특정한 방식으로 작동하도록 지시할 수 있는 컴퓨터 판독 가능한 스토리지 매체에 저장될 수 있으며, 명령들이 저장된 컴퓨터 판독 가능한 스토리지 매체는 흐름도 및/또는 블록도의 블록 또는 블록들에 지정된 기능/동작의 실시예를 구현하는 명령들을 포함하는 제조 물품을 포함한다.
[0143] 컴퓨터 판독 가능한 프로그램 명령들은 또한 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치 또는 다른 장치에 막대 되어 컴퓨터, 다른 프로그램 가능한 장치 또는 다른 장치상에서 수행되는 일련의 동작 단계들이 컴퓨터에서 구현된 프로세스들을 생성하도록 할 수 있으며, 이로써 컴퓨터, 다른 프로그램 가능한 장치 또는 다른 디바이스에서 실행되는 명령은 흐름도 및/또는 블록도의 블록 또는 블록들에 지정된 기능들/동작들을 구현한다.
[0144] 도면들에서 흐름도 및 블록도들은 본 발명의 다양한 실시예들에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 구조, 기능 및 동작을 도시하고 있다. 이와 관련하여, 흐름도 또는 블록도의 각 블록은 모듈, 벡터 또는 명령의 일부를 나타낼 수 있으며, 이는 지정된 논리 함수를 구현하기 위한 하나 이상의 실행 가능한 명령들을 포함한다. 일부 대체 구현에서는 블록에 표시된 기능이 도면에 표시된 순서대로 발생할 수 있다. 예를 들어, 연속적으로 표시된 두 개의 블록은 실제로 한 단계로 수행될 수 있으며, 동시에, 실질적으로 동시에, 부분적으로 또는 전체적으로 시간적으로 중첩되는 방식으로 실행되거나, 때때로 관련된 기능에 따라 역순으로 블록들이 실행될 수 있다. 또한, 블록도 및/또는 흐름도의 각 블록, 및 블록도 및/또는 흐름도의 블록 조합은 특정 기능을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령의 조합을 수행하거나 작동하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다는 점에 유의해야 한다.
[0145] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0146] 특성들은 다음과 같다:
[0147] 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 용량들을 일방적으로 제공(provision)할 수 있다.
[0148] 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
[0149] 자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하는, 멀티-테넌트 모델(a multi-tenant model)을 사용하는 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
[0150] 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 원하는 수량으로 구매할 수 있는 것처럼 보인다.
[0151] 측정 가능한 서비스(Measured service): 클라우드 시스템들은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0152] 서비스 모델들(Service Models)은 다음과 같다:
[0153] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서 가능하다.
[0154] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
[0155] 하부구조 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0156] 배치 모델들(Deployment Models)은 다음과 같다:
[0157] 사설 클라우드(Private cloud): 클라우드 하부구조는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0158] 커뮤니티 클라우드(Community cloud): 클라우드 하부구조는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0159] 공공 클라우드(Public cloud): 클라우드 하부구조는 일반 대중 또는 대규모 산업 그룹이 사용할 수 있으며 클라우드 서비스들을 판매하는 조직에 의해 소유된다.
[0160] 하이브리드 클라우드(Hybrid cloud): 클라우드 하부구조는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다
[0161] 클라우드 컴퓨팅 환경은 상태비보존(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 하부구조가 있다.
[0162] 이제 도17을 참조하면, 예시적인 클라우드 컴퓨팅 환경(50)이 보 발명의 사용 케이스들을 인에이블하기 위해 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(50)은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(54A), 데스크탑 컴퓨터(54B), 랩탑 컴퓨터(54C), 및/또는 자동차용 컴퓨터 시스템(54N)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(10)을 포함한다. 노드들(10)은 서로 통신할 수 있다. 그들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 디바이스 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(50)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 컴퓨팅 디바이스들(54A-N)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(10)과 클라우드 컴퓨팅 환경(50)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0163] 도 18을 이제 참조하면, 클라우드 컴퓨팅 환경(50)(도 17)에 의해 제공된 기능 추상화 층들 세트가 도시된다. 도 18에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다:
[0164] 하드웨어 및 소프트웨어 층(60)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(61); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(62); 서버들(63); 블레이드 서버들(64); 스토리지 디바이스들(65); 그리고 네트워크 및 네트워킹 컴포넌트들(66)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(67) 및 데이터베이스 소프트웨어(68)를 포함한다.
[0165] 가상화 층(70)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(71); 가상 스토리지(72); 가상 사설 네트워크를 포함하는, 가상 네트워크들(73); 가상 애플리케이션들 및 운영 체제들(74); 및 가상 클라이언트들(75).
[0166] 한 예에서, 관리 층(80)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(81)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(82)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(83)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(84)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(85)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0167] 워크로드 층(90)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한다: 맵핑 및 네비게이션(91); 소프트웨어 개발 및 라이프사이클 관리(92); 가상 교실 훈련 전달(93); 데이터 분석 처리(94); 트랜잭션 처리(95); 및 발행-구독 시스템에서의 키 순환(cryptographic key rotation in a publish-subscribe system) (96).

Claims (20)

  1. 발행-구독 시스템(a publish-subscribe system)에서 암호 키 순환(a cryptographic key rotation)을 하기 위한 방법에 있어서,
    상기 발행-구독 시스템은 복수의 메시지들을 저장하고, 상기 복수의 저장된 메시지들의 저장된 메시지 각각은 토픽들 그룹(a group of topics)으로부터의 하나의 토픽에 할당되며, 상기 저장된 메시지들 각각은 하나 또는 그 이상의 암호 키들 그룹 중 하나의 암호 키가 할당되고 상기 할당된 암호 키로 암호화되며;
    상기 발행-구독 시스템은 상기 저장된 메시지들을 라우팅된 메시지들이 할당되는 상기 토픽들의 하나 또는 그 이상의 구독자들로 라우팅하는 브로커 서비스를 제공하고, 상기 라우팅은 상기 각 메시지의 할당된 암호 키를 사용하여 라우팅될 메시지를 복호화하는 단계(decrypting) 및 상기 복호화된 메시지들을 상기 할당된 토픽의 하나 또는 그 이상의 구독자들에게 전송하는 단계(sending)를 포함하고; 그리고
    상기 암호 키 순환은 상기 저장된 메시지들 중 하나 또는 그 이상의 제1 메시지들의 제1 세트의 각 메시지의 재-암호화(a re-encryption)를 포함하며, 상기 제1 메시지들 각각은 상기 토픽들 그룹으로부터의 공통 제1 토픽(a common first topic)에 할당되고, 상기 암호화 키들 그룹 중 하나 또는 그 이상의 제1 암호 키들의 제1 세트의 제1 암호 키에 할당되며, 그리고 상기 할당된 제1 암호 키로 암호화되고, 상기 재-암호화는 상기 발행-구독 시스템의 암호화 모듈에 의해서 백그라운드 프로세스로 실행되며, 상기 재 암호화 동안 제1 메시지들을 라우팅하는 것과 상기 브로커 서비스에 의해 추가의 제1 메시지들을 상기 공통 제1 토픽에 대해 수신하는 것을 계속하고;
    상기 재-암호화는:
    하나 또는 그 이상의 제2 암호 키들의 제2 세트를 상기 암호 키들의 그룹에 추가하는 단계(adding)- 상기 제2 암호 키들 각각은 상기 제1 암호 키들 중 하나에 대한 교체 키(a replacement key for one of the first cryptographic keys)임-; 및
    상기 제1 메시지들 각각에 대해:
    상기 각각의 제1 메시지에 할당된 제1 암호 키를 사용하여 상기 암호화된 제1 메시지를 복호화하는 단계(decrypting);
    상기 할당된 제1 암호 키에 대한 교체 키를 사용하여 상기 복호화된 제1 메시지를 재-암호화하는 단계(re-encrypting);
    상기 재-암호화된 제1 메시지에 사용되는 상기 교체 키를 할당하는 단계(assigning); 및
    상기 라우팅을 위해서 상기 암호화된 제1 메시지와 상기 할당된 제1 암호 키를 사용하는 것으로부터 상기 재-암호화된 제1 메시지와 상기 할당된 교체 키를 사용하는 것으로 스위칭하는 단계(switching)를 포함하는
    방법.
  2. 제 1항에 있어서, 상기 암호화 모듈은 발행-구독 시스템의 브로커에 의해 구성되는
    방법.
  3. 제 1항에 있어서, 상기 암호화 모듈은 상기 발행-구독 시스템의 프록시(a proxy)에 의해 구성되고, 이를 통해 상기 발행-구독 시스템의 브로커는 상기 발행-구독 시스템의 클라이언트들과 통신하는
    방법.
  4. 제 1항에 있어서, 상기 발행-구독 시스템에 저장된 암호화된 메시지들 각각은 상기 암호 키들의 그룹 중 상기 할당된 암호 키를 식별하는 헤더(a header)가 제공되는
    방법.
  5. 제 4항에 있어서, 상기 할당된 암호 키를 식별하는 헤더는 상기 라우팅되고 복호화된 메시지(the routed decrypted message)가 상기 구독자에게 전송되기 전에 상기 라우팅 동안 제거되는
    방법.
  6. 제 4항에 있어서, 상기 암호화된 메시지들 각각의 헤더들은 봉투 암호화 키(an envelope encryption key)를 갖는 봉투 암호화를 사용하여 암호화된 형태의 식별된 암호 키를 포함하고,
    상기 암호화된 제1 메시지들 각각의 복호화는 상기 봉투 암호 키를 사용하여 상기 각각의 제1 메시지의 헤더에 의해 제공된 상기 할당된 제1 암호 키를 복호화하는 단계를 더 포함하며,
    상기 복호화된 제1 메시지들 각각의 재-암호화는 상기 봉투 암호 키를 갖는 상기 각각의 재-암호화된 제1 메시지를 재-암호화하기 위해 사용되는 상기 할당된 교체 키를 암호화하는 단계 및 상기 각각의 재-암호화된 제1 메시지의 헤더에서 상기 암호화된 제1 암호 키를 상기 암호화된 교체 키로 교체하는 단계를 더 포함하는
    방법.
  7. 제 1항에 있어서, 상기 발행-구독 시스템은 상기 저장된 메시지들 각각에 대해 상기 암호 키들의 그룹의 상기 할당된 암호 키를 식별하는 인덱스를 포함하는
    방법.
  8. 제 1항에 있어서, 상기 재-암호화는 상기 제1 메시지들 각각에 대해:
    상기 인덱스를 사용하여 상기 각각의 제1 메시지들에 할당된 상기 제1 암호 키를 식별하는 단계(identifying); 및
    상기 식별된 제1 암호 키의 교체 키를 상기 재-암호화된 제1 메시지에 인덱스로 할당하는 단계를 포함하는
    방법.
  9. 제 1항에 있어서, 상기 저장된 메시지들 각각은 상기 각각의 메시지가 할당되는 토픽의 구성원(a member)으로 저장되고, 상기 방법은:
    상기 메시지들의 제1 세트로부터 상기 공통 제1 토픽(the common first topic)을 가리키는 제1 토픽 별명(a first topic alias) 제공하는 단계 - 상기 공통 제1 토픽의 하나 또는 그 이상의 구독자들은 상기 제1 토픽 별명을 구독함-;
    추가적인 공통 제2 토픽을 상기 토픽들의 그룹에 추가하는 단계; 및
    상기 재-암호화된 제1 메시지들을 상기 공통 제2 토픽의 구성원들로 저장하는 단계(storing)를 더 포함하고, 상기 스위칭하는 단계는 상기 제1 토픽 별명을 구독하는 하나 또는 그 이상의 구독자들이 상기 공통 제2 토픽의 구독자들이 되도록 상기 제1 토픽 별명을 상기 공통 제2 토픽 별명에 재-할당하는 단계(re-assigning) 포함하는
    방법.
  10. 제 9항에 있어서, 상기 스위칭하는 단계는 상기 제1 암호화된 메시지들을 갖는 상기 공통 제1 토픽을 삭제하는 단계(deleting)를 더 포함하는
    방법.
  11. 제 9항에 있어서, 상기 스위칭하는 단계는 상기 제1 암호 키들을 삭제하는 단계를 더 포함하는
    방법.
  12. 제 9항에 있어서, 상기 토픽 별명에 대해 상기 발행자로부터 상기 발행-구독 시스템에 의해서 수신된 추가 제1 메시지들 각각은 상기 공통 제2 토픽에 할당되고, 상기 제2 암호 키들의 제2 세트의 제2 암호 키들 중 하나에 할당되며, 상기 할당된 제2 암호 키를 사용하여 암호화되는
    방법.
  13. 제 1항에 있어서, 상기 할당된 제1 암호 키들이 있는 암호화된 제1 메시지들을 상기 할당된 교체 키들이 있는 재-암호화된 제1 메시지들로 스위칭하는 단계는 상기 암호화된 제1 메시지들 각각을 상기 대응하는 재-암호화된 제1 메시지로 교체하는 단계를 포함하는
    방법.
  14. 제 13항에 있어서,
    상기 암호화된 제1 메시지들은 세그먼트 파일들의 세트에 저장되고, 상기 세그먼트 파일들 세트의 세그먼트 파일들 중 하나는 암호화된 제1 메시지들을 저장하기 위해서 현재 사용되며, 암호화된 제1 메시지들로 이미 채워진 상기 세그먼트 파일들 세트의 나머지 세그먼트 파일들은 닫히고(closed), 만일 열린 세그먼트 파일(an open segment file)이 채워졌다면(full), 상기 열린 세그먼트 파일은 닫히며, 추가 세그먼트 파일이 상기 세그먼트 파일들 세트에 추가되고 그리고 상기 추가 세그먼트 파일은 암호화된 제1 메시지들을 저장하는 데 사용되며;
    상기 재-암호화를 시작하면, 암호화된 제1 메시지들을 저장하기 위해 현재 사용되는 세그먼트 파일은 닫히고 그리고 더 추가적인 세그먼트 파일이 상기 세그먼트 파일들 세트에 추가되며 그리고 상기 공통 제1 토픽에 대한 상기 발행자들로부터 상기 발행-구독 시스템에 의해서 수신된 추가의 암호화된 제1 메시지들을 저장하기 위해서 사용되고; 그리고
    상기 암호화된 제1 메시지들의 재-암호화는 세그먼트별로(segmentally) 수행되며, 상기 세그먼트별 재-암호화는 나머지 닫힌 세그먼트 파일들을 차례로(one after another) 선택하는 단계, 상기 선택된 세그멘트 파일들 각각에 대해 상기 선택된 세그먼트 파일의 암호화된 제1 메시지들을 암호화된 형태로 포함하는 교체 세그먼트 파일을 생성하는 단계(generating), 및 상기 선택된 세그먼트 파일을 상기 교체 세그먼트 파일로 교체하는 단계를 포함하는
    방법.
  15. 제 14항에 있어서, 상기 세그먼트 재-암호화는 상기 세그먼트 파일들 세트 중 최신 세그먼트 파일로 시작되는
    방법.
  16. 제 14항에 있어서, 오프셋 값(an offset value)이 결정되어 상기 제2 암호 키를 사용하는 암호화가 상기 발행-구독 시스템의 스토리지 내에서 시작되는 추가 제1 메시지들의 오프셋을 식별하는
    방법.
  17. 제 14항에 있어서, 상기 공통 제1 토픽에 대한 상기 발행자들로부터의 상기 발행-구독 시스템에 의해서 수신된 추가 제1 메시지들 각각은 상기 공통 제1 토픽에 할당되고, 상기 제2 암호 키들의 제2 세트의 제2 암호 키들 중 하나에 할당되며, 상기 할당된 제2 암호 키를 사용하여 암호화되는
    방법.
  18. 제 14항에 있어서, 상기 발행-구독 시스템은 복수의 추가 브로커들을 포함하고, 상기 발행-구독 시스템은 상기 세그먼트 파일들 세트의 복수의 추가 복제본들(a plurality of additional replicas)을 포함하며, 상기 추가 복제본들 각각은 상기 추가 브로커들 중 하나에 할당되고, 상기 세그먼트 파일들의 재-암호화는 상기 재-암호화의 병렬화(a parallelization of the re-encryption)를 구현하는 상기 발행-구독 시스템의 브로커들 사이에서 분산되며, 재-암호화된 제1 메시지들은 상기 세그먼트 파일들 세트의 다른 복제본들로 분산되는
    방법.
  19. 발행-구독 시스템(a publish-subscribe system)에서 암호 키 순환(a cryptographic key rotation)을 하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은:
    구현된 프로그램 명령들을 갖는 컴퓨터 판독 가능한 스토리지 매체를 포함하며, 상기 프로그램 명령들은 상기 발행-구독 시스템의 컴퓨터 시스템의 프로세서에 의해 실행 가능하고, 상기 컴퓨터 시스템이 상기 암호 키 순환을 수행하도록 하며,
    상기 발행-구독 시스템은 복수의 메시지들을 저장하고, 상기 복수의 저장된 메시지들 중 각각 저장된 메시지는 토픽들 그룹으로부터의 하나의 토픽에 할당되며, 상기 저장된 메시지들의 각각은 하나 또는 그 이상의 암호 키들의 그룹 중 하나의 암호 키에 할당되고 상기 할당된 암호 키로 암호화되며;
    상기 발행-구독 시스템은 상기 저장된 메시지들을 라우팅된 메시지들이 할당되는 상기 토픽들의 하나 또는 그 이상의 구독자들에 대해 라우팅하는 브로커 서비스를 제공하고, 상기 라우팅은 상기 각 메시지의 할당된 암호 키를 사용하여 라우팅될 메시지를 복호화하는 단계(decrypting) 및 상기 복호화된 메시지들을 상기 할당된 토픽의 하나 또는 그 이상의 구독자들에게 전송하는 단계(sending)를 포함하고; 그리고
    상기 암호 키 순환은 상기 저장된 메시지들 중 하나 또는 그 이상의 제1 메시지들의 제1 세트의 각 메시지의 재-암호화(a re-encryption)를 포함하며, 상기 제1 메시지들 각각은 상기 토픽들의 그룹으로부터의 공통 제1 토픽(a common first topic)에 할당되고, 상기 암호화 키들의 그룹 중 하나 또는 그 이상의 제1 암호 키들의 제1 세트의 제1 암호 키에 할당되며, 그리고 상기 할당된 제1 암호 키로 암호화되고, 상기 재-암호화는 상기 발행-구독 시스템의 암호화 모듈에 의해서 백그라운드 프로세스로 실행되며, 상기 재-암호화 동안 제1 메시지들을 라우팅하는 것 및 상기 브로커 서비스에 의해 추가의 제1 메시지들을 상기 공통 제1 토픽을 위해 수신하는 것을 계속하며;
    상기 재-암호화는:
    하나 또는 그 이상의 제2 암호 키들의 제2 세트를 상기 암호 키들의 그룹에 추가하는 단계(adding)- 상기 제2 암호 키들 각각은 상기 제1 암호 키들 중 하나에 대한 교체 키(a replacement key for one of the first cryptographic keys)임-; 및
    상기 제1 메시지들 각각에 대해:
    상기 각각의 제1 메시지에 할당된 제1 암호 키를 사용하여 상기 암호화된 제1 메시지를 복호화하는 단계(decrypting);
    상기 할당된 제1 암호 키에 대한 교체 키를 사용하여 상기 복호화된 제1 메시지를 재-암호화하는 단계(re-encrypting);
    상기 재-암호화된 제1 메시지에 사용되는 상기 교체 키를 할당하는 단계(assigning); 및
    상기 라우팅을 위해서 상기 암호화된 제1 메시지와 상기 할당된 제1 암호 키를 사용하는 것으로부터 상기 재-암호화된 제1 메시지와 상기 할당된 교체 키를 사용하는 것으로 스위칭하는 단계(switching)를 포함하는
    컴퓨터 프로그램 제품.
  20. 발행-구독 시스템(a publish-subscribe system)에서의 암호 키 순환(a cryptographic key rotation)을 하기 위한 컴퓨터 시스템에 있어서,
    상기 발행-구독 시스템은 복수의 메시지들을 저장하고, 상기 복수의 저장된 메시지들 중 각각 저장된 메시지는 토픽들 그룹으로부터의 하나의 토픽에 할당되며, 상기 저장된 메시지들의 각각은 하나 또는 그 이상의 암호 키들의 그룹 중 하나의 암호 키에 할당되고 상기 할당된 암호 키로 암호화되며;
    상기 발행-구독 시스템은 상기 저장된 메시지들을 라우팅된 메시지들이 할당되는 상기 토픽들의 하나 또는 그 이상의 구독자들에 대해 라우팅하는 브로커 서비스를 제공하고, 상기 라우팅은 상기 각각의 메시지의 할당된 암호 키를 사용하여 라우팅될 메시지를 복호화하는 단계(decrypting) 및 상기 복호화된 메시지들을 상기 할당된 토픽의 하나 또는 그 이상의 구독자들에게 전송하는 단계를 포함하고; 그리고
    상기 암호 키 순환은 상기 저장된 메시지들 중 하나 또는 그 이상의 제1 메시지들의 제1 세트의 각 메시지의 재-암호화(a re-encryption)를 포함하며, 상기 제1 메시지들 각각은 상기 토픽들의 그룹으로부터의 공통 제1 토픽(a common first topic)에 할당되고, 상기 암호화 키들의 그룹 중 하나 또는 그 이상의 제1 암호 키들의 제1 세트의 제1 암호 키에 할당되며, 그리고 상기 할당된 제1 암호 키로 암호화되고, 상기 재-암호화는 상기 발행-구독 시스템의 암호화 모듈에 의해서 백그라운드 프로세스로 실행되며, 상기 재-암호화 동안 제1 메시지들을 라우팅하는 것 및 상기 브로커 서비스에 의해 추가의 제1 메시지들을 상기 공통 제1 토픽에 대해 수신하는 것을 계속하고;
    상기 컴퓨터 시스템은 프로세서 및 상기 프로세서에 의해 실행 가능한 프로그램 명령들을 저장하는 메모리를 포함하며, 상기 프로세서에 의한 상기 프로그램의 실행은 상기 컴퓨터 시스템이 상기 재-암호화를 수행하도록 하고, 상기 재-암호화는:
    하나 또는 그 이상의 제2 암호 키들의 제2 세트를 상기 암호 키들의 그룹에 추가하는 단계(adding)- 상기 제2 암호 키들 각각은 상기 제1 암호 키들 중 하나를 위한 교체 키(a replacement key for one of the first cryptographic keys)임-; 및
    상기 제1 메시지들 각각에 대해:
    상기 각각의 제1 메시지에 할당된 제1 암호 키를 사용하여 상기 암호화된 제1 메시지를 복호화하는 단계(decrypting);
    상기 할당된 제1 암호 키를 위한 교체 키를 사용하여 상기 복호화된 제1 메시지를 재-암호화하는 단계(re-encrypting);
    상기 재-암호화된 제1 메시지에 사용되는 상기 교체 키를 할당하는 단계(assigning); 및
    상기 라우팅을 위해서 상기 암호화된 제1 메시지와 상기 할당된 제1 암호 키를 사용하는 것으로부터 상기 재-암호화된 제1 메시지와 상기 할당된 교체 키를 사용하는 것으로 스위칭하는 단계(switching)를 포함하는
    컴퓨터 시스템.
KR1020237019245A 2020-12-14 2021-12-01 발행-구독 시스템에서의 키 순환 KR20230109660A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/121,170 US20220191018A1 (en) 2020-12-14 2020-12-14 Key rotation on a publish-subscribe system
US17/121,170 2020-12-14
PCT/IB2021/061161 WO2022130088A1 (en) 2020-12-14 2021-12-01 Key rotation on publish-subscribe system

Publications (1)

Publication Number Publication Date
KR20230109660A true KR20230109660A (ko) 2023-07-20

Family

ID=81942013

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237019245A KR20230109660A (ko) 2020-12-14 2021-12-01 발행-구독 시스템에서의 키 순환

Country Status (8)

Country Link
US (1) US20220191018A1 (ko)
JP (1) JP2024500373A (ko)
KR (1) KR20230109660A (ko)
CN (1) CN116615891A (ko)
AU (1) AU2021402251B2 (ko)
DE (1) DE112021005867T5 (ko)
GB (1) GB2616997B (ko)
WO (1) WO2022130088A1 (ko)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977865B2 (en) * 2010-05-25 2015-03-10 Microsoft Technology Licensing, Llc Data encryption conversion for independent agents
US9049023B2 (en) * 2011-05-24 2015-06-02 Zeutro Llc Outsourcing the decryption of functional encryption ciphertexts
US8812844B2 (en) * 2011-06-20 2014-08-19 Liaison Technologies, Inc. Luhn validation and data security across multiple active domains
US20150271153A1 (en) * 2012-07-10 2015-09-24 Kurt Ryan Rohloff Information management using proxy re-encryption
US9659190B1 (en) * 2015-06-26 2017-05-23 EMC IP Holding Company LLC Storage system configured for encryption of data items using multidimensional keys having corresponding class keys
US10574440B2 (en) * 2016-05-06 2020-02-25 ZeroDB, Inc. High-performance access management and data protection for distributed messaging applications
US10623186B1 (en) * 2017-11-10 2020-04-14 Amazon Technologies, Inc. Authenticated encryption with multiple contexts
CN109587178A (zh) * 2019-01-23 2019-04-05 四川虹美智能科技有限公司 一种基于mqtt的智能家电加密控制系统和方法
US11240024B2 (en) * 2019-07-29 2022-02-01 EMC IP Holding Company LLC Cryptographic key management using key proxies and generational indexes
CN110708247B (zh) * 2019-09-27 2022-03-22 浙江大搜车软件技术有限公司 消息路由方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
WO2022130088A1 (en) 2022-06-23
CN116615891A (zh) 2023-08-18
AU2021402251B2 (en) 2024-02-15
DE112021005867T5 (de) 2023-08-24
US20220191018A1 (en) 2022-06-16
JP2024500373A (ja) 2024-01-09
GB2616997A (en) 2023-09-27
AU2021402251A1 (en) 2023-06-15
GB2616997B (en) 2024-05-22

Similar Documents

Publication Publication Date Title
JP6781765B2 (ja) プライバシーが強化された中央データ・ストレージのためのコンピュータ実装方法、サーバ、ユーザ・デバイス、およびコンピュータ・プログラム製品
US9521053B1 (en) Providing diagnostic metrics for virtual connections over physical connections into a provider network
US11283649B2 (en) Multicast traffic across virtual networks (VNs)
US20170272516A1 (en) Providing queueing in a log streaming messaging system
US11645582B2 (en) Parameter sharing in federated learning
US20200021524A1 (en) Interconnecting multiple separate openflow domains
US10715318B2 (en) Lightweight cryptographic service for simplified key life-cycle management
US11405369B1 (en) Distributed encrypted session resumption
KR20220147613A (ko) 멀티-테넌트 서버리스 환경들을 위한 멀티-레벨 캐시-메시-시스템
US11662928B1 (en) Snapshot management across cloud provider network extension security boundaries
Panarello et al. A big video data transcoding service for social media over federated clouds
AU2021402251B2 (en) Key rotation on publish-subscribe system
US11418327B2 (en) Automatic provisioning of key material rotation information to services
AU2020385682B2 (en) Communication with an application flow in an integration system
US11809735B1 (en) Snapshot management for cloud provider network extensions
US20200021631A1 (en) Stream processing without central transportation planning
US11616721B2 (en) In-packet version tagging utilizing a perimeter NAT
US11652623B2 (en) Secure conference system
US11695552B2 (en) Quantum key distribution in a multi-cloud environment
US20240048373A1 (en) Distribution of private session key to a network communication device for secured rdma communications
US10915410B2 (en) Distributed system management using snapshots and packets

Legal Events

Date Code Title Description
A201 Request for examination