(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-09
(54)【発明の名称】出版-購読型システムにおける鍵ローテーション
(51)【国際特許分類】
H04L 9/14 20060101AFI20231226BHJP
G06F 16/182 20190101ALI20231226BHJP
H04L 51/21 20220101ALI20231226BHJP
H04L 67/565 20220101ALI20231226BHJP
【FI】
H04L9/14
G06F16/182 100
H04L51/21
H04L67/565
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023535940
(86)(22)【出願日】2021-12-01
(85)【翻訳文提出日】2023-06-13
(86)【国際出願番号】 IB2021061161
(87)【国際公開番号】W WO2022130088
(87)【国際公開日】2022-06-23
(32)【優先日】2020-12-14
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100104880
【氏名又は名称】古部 次郎
(74)【復代理人】
【識別番号】100118108
【氏名又は名称】久保 洋之
(72)【発明者】
【氏名】ギブリン、クリストファー
(72)【発明者】
【氏名】ルーニー、ジョン
(72)【発明者】
【氏名】フローゼ、フロリアン
(72)【発明者】
【氏名】ベッチ、パスカル
(57)【要約】
本開示は、記憶され暗号化されたメッセージを、ルーティングされたメッセージが割り当てられたトピックの1または複数の購読者にルーティングするためのブローカーサービスを提供する出版-購読型システムにおける暗号鍵ローテーションのための方法に関する。ルーティングは、記憶されたメッセージを復号することを含む。暗号鍵ローテーションは、暗号化された置換鍵を使用して、記憶されたメッセージを再暗号化することを含む。再暗号化は、ブローカーサービスを継続しながら、バックグラウンド処理として出版-購読型システムの暗号化モジュールによって実行される。
【特許請求の範囲】
【請求項1】
出版-購読型システムにおける暗号鍵ローテーションのための方法であって、
前記出版-購読型システムは、複数のメッセージを記憶し、前記複数の記憶されたメッセージの記憶されたメッセージの各々は、トピックのグループからトピックに割り当てられ、前記記憶されたメッセージの各々は、1または複数の暗号鍵のグループの暗号鍵で割り当てられ、前記割り当てられた暗号鍵で暗号化され、
前記出版-購読型システムは、前記記憶されたメッセージを、ルーティングされたメッセージが割り当てられた前記トピックの1または複数の購読者にルーティングするためのブローカーサービスを提供し、前記ルーティングは、メッセージの各々の前記割り当てられた暗号鍵を使用してルーティングされる前記メッセージを復号することと、前記復号されたメッセージを前記割り当てられたトピックの前記購読者のうちの1または複数に送信することと、を含み、
前記暗号鍵ローテーションは、前記記憶されたメッセージの1または複数の第1のメッセージの第1のセットの各メッセージの再暗号化を含み、前記第1のメッセージの各々は、トピックの前記グループから共通の第1のトピックに割り当てられ、暗号鍵の前記グループの1または複数の第1の暗号鍵の第1のセットの第1の暗号鍵に割り当てられ、前記割り当てられた第1の暗号鍵で暗号化され、前記再暗号化は、前記ブローカーサービスによって前記共通の第1のトピックからの第1のメッセージのルーティングと追加の第1のメッセージの受信を継続しながら、バックグラウンド処理として前記出版-購読型システムの暗号化モジュールによって実行され、
前記再暗号化は、
1または複数の第2の暗号鍵の第2のセットを暗号鍵の前記グループに追加することであって、前記第2の暗号鍵の各々は、前記第1の暗号鍵のうちの1つに対する置換鍵である、追加することと、
前記第1のメッセージの各々に対して、
前記第1のメッセージの各々に割り当てられた前記第1の暗号鍵を使用して、前記暗号化された第1のメッセージを復号することと、
前記割り当てられた第1の暗号鍵に対する前記置換鍵を使用して、前記復号された第1のメッセージを再暗号化することと、
前記再暗号化された第1のメッセージに使用される前記置換鍵を割り当てることと、
前記暗号化された第1のメッセージと前記割り当てられた第1の暗号鍵をルーティングに使用することから、前記再暗号化された第1のメッセージと前記割り当てられた置換鍵を使用することに切り替えることと、を含む、
方法。
【請求項2】
前記暗号化モジュールは、前記出版-購読型システムのブローカーによって構成される、請求項1に記載の方法。
【請求項3】
前記暗号化モジュールは、前記出版-購読型システムのプロキシによって構成され、それを介して前記出版-購読型システムの前記ブローカーが前記出版-購読型システムのクライアントと通信を行う、請求項1に記載の方法。
【請求項4】
前記出版-購読型システムに記憶された前記暗号化されたメッセージは、それぞれ、暗号鍵の前記グループの前記割り当てられた暗号鍵を識別するヘッダを備える、請求項1に記載の方法。
【請求項5】
前記割り当てられた暗号鍵を識別する前記ヘッダは、前記ルーティングされ復号されたメッセージを前記購読者に送信する前に、ルーティング中に取り除かれる、請求項4に記載の方法。
【請求項6】
前記暗号化されたメッセージのヘッダはそれぞれ、エンベロープ暗号鍵を用いたエンベロープ暗号化を使用して、暗号化された形で前記識別された暗号鍵を含み、
前記暗号化された第1のメッセージの各々の前記復号は、前記エンベロープ暗号鍵を使用して、前記第1のメッセージの各々の前記ヘッダによって提供される前記割り当てられた第1の暗号鍵を復号することをさらに含み、
前記復号された第1のメッセージの各々の前記再暗号化は、前記再暗号化された第1のメッセージの各々を再暗号化するために使用される前記割り当てられた置換鍵を前記エンベロープ暗号鍵で暗号化することと、前記再暗号化された第1のメッセージの各々のヘッダ内の前記暗号化された第1の暗号鍵を前記暗号化された置換鍵で置換することと、
をさらに含む、請求項4に記載の方法。
【請求項7】
前記出版-購読型システムは、前記記憶されたメッセージの各々について、暗号鍵の前記グループの前記割り当てられた暗号鍵を識別するインデックスを含む、請求項1に記載の方法。
【請求項8】
前記再暗号化は、前記第1のメッセージの各々について、
前記インデックスを使用して、前記第1のメッセージの各々に割り当てられた前記第1の暗号鍵を識別することと、
前記インデックスにおいて、前記識別された第1の暗号鍵の前記置換鍵を、前記再暗号化された第1のメッセージに割り当てることと、
をさらに含む、請求項1に記載の方法。
【請求項9】
前記記憶されたメッセージの各々は、前記メッセージの各々が割り当てられた前記トピックのメンバーとして記憶され、前記方法はさらに、
メッセージの前記第1のセットから前記共通の第1のトピックを指す第1のトピックエイリアスを提供することであって、前記共通の第1のトピックの前記1または複数の購読者が前記第1のトピックエイリアスを購読する、提供することと、
トピックの前記グループへ追加の共通の第2のトピックを追加することと、
前記再暗号化された第1のメッセージを前記共通の第2のトピックのメンバーとして記憶することであって、前記切り替えることは、前記第1のトピックエイリアスを購読する前記1または複数の購読者が前記共通の第2のトピックの購読者となるように、前記共通の第2のトピックに前記第1のトピックエイリアスを再割り当てする、記憶することと、
を含む、請求項1に記載の方法。
【請求項10】
前記切り替えることは、前記第1の暗号化されたメッセージを有する前記共通の第1のトピックを削除することをさらに含む、請求項9に記載の方法。
【請求項11】
前記切り替えることは、前記第1の暗号鍵を削除することをさらに含む、請求項9に記載の方法。
【請求項12】
前記出版-購読型システムが出版者から前記トピックエイリアスそれぞれについて受信した追加の第1のメッセージは、前記共通の第2のトピックに割り当てられ、第2の暗号鍵の前記第2のセットのうちの1つの前記第2の暗号鍵で割り当てられ、前記割り当てられた第2の暗号鍵を使用して暗号化される、請求項9に記載の方法。
【請求項13】
前記割り当てられた第1の暗号鍵による前記暗号化された第1のメッセージから、前記割り当てられた置換鍵による前記再暗号化された第1のメッセージへ前記切り替えることは、前記暗号化された第1のメッセージの各々を前記対応する再暗号化された第1のメッセージと置き換えることを含む、請求項1に記載の方法。
【請求項14】
前記暗号化された第1のメッセージは、セグメントファイルのセットに記憶され、セグメントファイルの前記セットのうちの1つの前記セグメントファイルは、暗号化された第1のメッセージを記憶するために現在使用されており、暗号化された第1のメッセージで既に満たされたセグメントファイルの前記セットの残りのセグメントファイルは閉じられ、開いているセグメントファイルが一杯になった場合、前記開いているセグメントファイルは閉じられ、追加のセグメントファイルがセグメントファイルの前記セットに追加されて前記追加のセグメントファイルは暗号化された第1のメッセージを記憶するために使用され、
前記再暗号化を開始すると、暗号化された第1のメッセージを記憶するために現在使用されている前記セグメントファイルが閉じられ、さらに追加のセグメントファイルがセグメントファイルの前記セットに追加され、前記共通の第1のトピックについて前記出版者から前記出版-購読型システムが受信した追加の暗号化された第1のメッセージを格納するために使用され、
前記暗号化された第1のメッセージの前記再暗号化はセグメント的に実行され、前記セグメント的再暗号化は、残りの閉じたセグメントファイルを次々に選択することと、前記選択されたセグメントファイルの各々について、暗号化された形式で、前記選択されたセグメントファイルの前記暗号化された第1のメッセージを含む置換セグメントファイルを生成することと、前記選択されたセグメントファイルを前記置換セグメントファイルに置き換えることと、を含む、
請求項13に記載の方法。
【請求項15】
前記セグメント的再暗号化は、セグメントファイルの前記セットのうち最新のセグメントファイルから開始される、請求項14に記載の方法。
【請求項16】
出版-購読型システムのストレージ内で前記第2の暗号鍵を使用した前記暗号化が開始される追加の第1のメッセージのオフセットを識別するオフセット値が決定される、請求項14に記載の方法。
【請求項17】
前記共通の第1のトピックについて出版-購読型システムが前記購読者から受信した追加の第1のメッセージはそれぞれ、前記共通の第1のトピックに割り当てられ、第2の暗号鍵の前記第2のセットのうちの1つの前記第2の暗号鍵で割り当てられ、前記割り当てられた第2の暗号鍵を使用して暗号化される、請求項14に記載の方法。
【請求項18】
前記出版-購読型システムは、複数の追加のブローカーを含み、前記出版-購読型システムは、セグメントファイルの前記セットの複数の追加レプリカを含み、前記追加レプリカの各々は、前記追加のブローカーのうちの1つに割り当てられ、前記セグメントファイルの前記再暗号化は、前記再暗号化の並列化を実施する前記出版-購読型システムの前記ブローカー間で分散され、再暗号化した第1のメッセージは、セグメントファイルの前記セットの他のレプリカに分散される、請求項14に記載の方法。
【請求項19】
出版-購読型システムにおける暗号鍵ローテーションのためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、
プログラム命令をその中に実装したコンピュータ可読記憶媒体を含み、前記プログラム命令は出版-購読型システムのコンピュータシステムのプロセッサによって実行可能であり、前記コンピュータシステムに、前記暗号鍵ローテーションを実行させ、
前記出版-購読型システムは、複数のメッセージを記憶し、前記複数の記憶されたメッセージの記憶されたメッセージの各々は、トピックのグループからトピックに割り当てられ、前記記憶されたメッセージの各々は、1または複数の暗号鍵のグループの暗号鍵で割り当てられ、前記割り当てられた暗号鍵で暗号化され、
前記出版-購読型システムは、前記記憶されたメッセージを、ルーティングされたメッセージが割り当てられた前記トピックの1または複数の購読者にルーティングするためのブローカーサービスを提供し、前記ルーティングは、メッセージの各々の前記割り当てられた暗号鍵を使用してルーティングされる前記メッセージを復号することと、前記復号されたメッセージを前記割り当てられたトピックの前記購読者のうちの1または複数に送信することと、を含み、
前記暗号鍵ローテーションは、前記記憶されたメッセージの1または複数の第1のメッセージの第1のセットの各メッセージの再暗号化を含み、前記第1のメッセージの各々は、トピックの前記グループから共通の第1のトピックに割り当てられ、暗号鍵の前記グループの1または複数の第1の暗号鍵の第1のセットの第1の暗号鍵に割り当てられ、前記割り当てられた第1の暗号鍵で暗号化され、前記再暗号化は、前記ブローカーサービスによって前記共通の第1のトピックからの第1のメッセージのルーティングと追加の第1のメッセージの受信を継続しながら、バックグラウンド処理として前記出版-購読型システムの暗号化モジュールによって実行され、
前記再暗号化は、
1または複数の第2の暗号鍵の第2のセットを暗号鍵の前記グループに追加することであって、前記第2の暗号鍵の各々は、前記第1の暗号鍵のうちの1つに対する置換鍵である、追加することと、
前記第1のメッセージの各々に対して、
前記第1のメッセージの各々に割り当てられた前記第1の暗号鍵を使用して、前記暗号化された第1のメッセージを復号することと、
前記割り当てられた第1の暗号鍵に対する前記置換鍵を使用して、前記復号された第1のメッセージを再暗号化することと、
前記再暗号化された第1のメッセージに使用される前記置換鍵を割り当てることと、
前記暗号化された第1のメッセージと前記割り当てられた第1の暗号鍵をルーティングに使用することから、前記再暗号化された第1のメッセージと前記割り当てられた置換鍵を使用することに切り替えることと、を含む、
コンピュータプログラム製品。
【請求項20】
出版-購読型システムにおける暗号鍵ローテーションのためのコンピュータシステムであって、
前記出版-購読型システムは、複数のメッセージを記憶し、前記複数の記憶されたメッセージの記憶されたメッセージの各々は、トピックのグループからトピックに割り当てられ、前記記憶されたメッセージの各々は、1または複数の暗号鍵のグループの暗号鍵で割り当てられ、前記割り当てられた暗号鍵で暗号化され、
前記出版-購読型システムは、前記記憶されたメッセージを、ルーティングされたメッセージが割り当てられた前記トピックの1または複数の購読者にルーティングするためのブローカーサービスを提供し、前記ルーティングは、メッセージの各々の前記割り当てられた暗号鍵を使用してルーティングされる前記メッセージを復号することと、前記復号されたメッセージを前記割り当てられたトピックの前記購読者のうちの1または複数に送信することと、を含み、
前記暗号鍵ローテーションは、前記記憶されたメッセージの1または複数の第1のメッセージの第1のセットの各メッセージの再暗号化を含み、前記第1のメッセージの各々は、トピックの前記グループから共通の第1のトピックに割り当てられ、暗号鍵の前記グループの1または複数の第1の暗号鍵の第1のセットの第1の暗号鍵に割り当てられ、前記割り当てられた第1の暗号鍵で暗号化され、前記再暗号化は、前記ブローカーサービスによって前記共通の第1のトピックからの第1のメッセージのルーティングと追加の第1のメッセージの受信を継続しながら、バックグラウンド処理として前記出版-購読型システムの暗号化モジュールによって実行され、
前記コンピュータシステムは、プロセッサと、前記プロセッサによって実行可能なプログラム命令を記憶するメモリと、を含み、前記プロセッサによる前記プログラム命令の実行は、前記コンピュータシステムに前記再暗号化を実行させ、前記再暗号化は、
1または複数の第2の暗号鍵の第2のセットを暗号鍵の前記グループに追加することであって、前記第2の暗号鍵の各々は、前記第1の暗号鍵のうちの1つに対する置換鍵である、追加することと、
前記第1のメッセージの各々に対して、
前記第1のメッセージの各々に割り当てられた前記第1の暗号鍵を使用して、前記暗号化された第1のメッセージを復号することと、
前記割り当てられた第1の暗号鍵に対する前記置換鍵を使用して、前記復号された第1のメッセージを再暗号化することと、
前記再暗号化された第1のメッセージに使用される前記置換鍵を割り当てることと、
前記暗号化された第1のメッセージと前記割り当てられた第1の暗号鍵をルーティングに使用することから、前記再暗号化された第1のメッセージと前記割り当てられた置換鍵を使用することに切り替えることと、を含む、
コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、出版-購読型システムの分野に関し、より具体的には、出版-購読型システムにおける暗号鍵ローテーションのための方法、コンピュータプログラム製品、およびコンピュータシステムに関する。
【背景技術】
【0002】
出版-購読型システムのような分散データストリーミングシステムは、例えば、企業や他のタイプの組織内でのデータの配布において、ますます大きな役割を果たすようになる。出版-購読型システムは、出版者によって提供されるメッセージを、システムの異なる部分、すなわち購読者に非同期にブロードキャストすることを可能にする。トピックに公開されたメッセージは、それぞれのトピックの購読者にブロードキャストされる。出版-購読型システムに記憶されたメッセージを保護するために、記憶されたメッセージは暗号化される場合がある。
【発明の概要】
【0003】
本開示の一実施形態によれば、出版-購読型システムにおける暗号鍵ローテーションのための方法が提供される。出版-購読型システムは、複数のメッセージを記憶し、記憶されたメッセージの各々は、トピックのグループからトピックに割り当てられ、記憶されたメッセージの各々は、1または複数の暗号鍵のグループの暗号鍵で割り当てられ、割り当てられた暗号鍵で暗号化される。出版-購読型システムは、記憶されたメッセージを、ルーティングされたメッセージが割り当てられたトピックの1または複数の購読者にルーティングするためのブローカーサービスを提供する。ルーティングは、メッセージの各々の割り当てられた暗号鍵を使用してルーティングされるメッセージを復号することと、復号されたメッセージを割り当てられたトピックの購読者のうちの1または複数に送信することと、を含む。
【0004】
暗号鍵ローテーションは、記憶されたメッセージの1または複数の第1のメッセージの第1のセットの各メッセージの再暗号化を含む。第1のメッセージの各々は、トピックのグループから共通の第1のトピックに割り当てられ、暗号鍵のグループの1または複数の第1の暗号鍵の第1のセットの第1の暗号鍵に割り当てられ、割り当てられた第1の暗号鍵で暗号化される。再暗号化は、ブローカーサービスによって共通の第1のトピックからの第1のメッセージのルーティングと追加の第1のメッセージの受信を継続しながら、バックグラウンド処理として出版-購読型システムの暗号化モジュールによって実行される。
【0005】
再暗号化は、1または複数の第2の暗号鍵の第2のセットを暗号鍵のグループに追加することを含む。第2の暗号鍵の各々は、第1の暗号鍵のうちの1つに対する置換鍵である。方法は、第1のメッセージの各々に割り当てられた第1の暗号鍵を使用して、暗号化された第1のメッセージを復号する、第1のメッセージの各々をさらに含む。復号された第1のメッセージは、割り当てられた第1の暗号鍵に対する置換鍵を使用して再暗号化される。再暗号化された第1のメッセージを再暗号化するために使用される置換鍵は、再暗号化された第1のメッセージの各々に割り当てられる。暗号化された第1のメッセージと割り当てられた第1の暗号鍵をルーティングに使用することから、再暗号化された第1のメッセージと割り当てられた置換鍵を使用することに切り替えることが実行される。
【0006】
本開示のさらなる実施形態によれば、出版-購読型システムにおける暗号鍵ローテーションのためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、プログラム命令をその中に実装したコンピュータ可読記憶媒体を含む。プログラム命令は、出版-購読型システムのコンピュータシステムのプロセッサによって実行可能であり、コンピュータシステムに、暗号鍵ローテーションを実行させる。
【0007】
出版-購読型システムは、複数のメッセージを記憶し、記憶されたメッセージの各々は、トピックのグループからトピックに割り当てられ、記憶されたメッセージの各々は、1または複数の暗号鍵のグループの暗号鍵で割り当てられ、割り当てられた暗号鍵で暗号化される。出版-購読型システムは、記憶されたメッセージを、ルーティングされたメッセージが割り当てられたトピックの1または複数の購読者にルーティングするためのブローカーサービスを提供する。ルーティングは、メッセージの各々の割り当てられた暗号鍵を使用してルーティングされるメッセージを復号することと、復号されたメッセージを割り当てられたトピックの購読者のうちの1または複数に送信することと、を含む。
【0008】
暗号鍵ローテーションは、記憶されたメッセージの1または複数の第1のメッセージの第1のセットの各メッセージの再暗号化を含む。第1のメッセージの各々は、トピックのグループから共通の第1のトピックに割り当てられ、暗号鍵のグループの1または複数の第1の暗号鍵の第1のセットの第1の暗号鍵に割り当てられ、割り当てられた第1の暗号鍵で暗号化される。再暗号化は、ブローカーサービスによって共通の第1のトピックからの第1のメッセージのルーティングと追加の第1のメッセージの受信を継続しながら、バックグラウンド処理として出版-購読型システムの暗号化モジュールによって実行される。
【0009】
再暗号化は、1または複数の第2の暗号鍵の第2のセットを暗号鍵のグループに追加することを含む。第2の暗号鍵の各々は、第1の暗号鍵のうちの1つに対する置換鍵である。方法は、第1のメッセージの各々に対して、第1のメッセージの各々に割り当てられた第1の暗号鍵を使用して、暗号化された第1のメッセージを復号することをさらに含む。復号された第1のメッセージは、割り当てられた第1の暗号鍵に対する置換鍵を使用して再暗号化される。再暗号化された第1のメッセージに使用される置換鍵が、再暗号化された第1のメッセージの各々に割り当てられる。暗号化された第1のメッセージと割り当てられた第1の暗号鍵をルーティングに使用することから、再暗号化された第1のメッセージと割り当てられた置換鍵を使用することに切り替えることが実行される。
【0010】
本開示のさらなる実施形態によれば、出版-購読型システムにおける暗号鍵ローテーションのためのコンピュータシステムが提供される。出版-購読型システムは、複数のメッセージを記憶し、記憶されたメッセージの各々は、トピックのグループからトピックに割り当てられ、記憶されたメッセージの各々は、1または複数の暗号鍵のグループの暗号鍵で割り当てられ、割り当てられた暗号鍵で暗号化される。出版-購読型システムは、記憶されたメッセージを、ルーティングされたメッセージが割り当てられたトピックの1または複数の購読者にルーティングするためのブローカーサービスを提供する。ルーティングは、メッセージの各々の割り当てられた暗号鍵を使用してルーティングされるメッセージを復号することと、復号されたメッセージを割り当てられたトピックの購読者のうちの1または複数に送信することと、を含む。
【0011】
暗号鍵ローテーションは、記憶されたメッセージの1または複数の第1のメッセージの第1のセットの各メッセージの再暗号化を含む。第1のメッセージの各々は、トピックのグループから共通の第1のトピックに割り当てられ、暗号鍵のグループの1または複数の第1の暗号鍵の第1のセットの第1の暗号鍵に割り当てられ、割り当てられた第1の暗号鍵で暗号化される。再暗号化は、ブローカーサービスによって共通の第1のトピックからの第1のメッセージのルーティングと追加の第1のメッセージの受信を継続しながら、バックグラウンド処理として出版-購読型システムの暗号化モジュールによって実行される。
【0012】
コンピュータシステムは、プロセッサと、プロセッサによって実行可能なプログラム命令を記憶するメモリと、を含む。プロセッサによるプログラム命令の実行は、コンピュータシステムに再暗号化を実行させる。再暗号化は、1または複数の第2の暗号鍵の第2のセットを暗号鍵のグループに追加することを含む。第2の暗号鍵の各々は、第1の暗号鍵のうちの1つに対する置換鍵である。方法は、第1のメッセージの各々に対して、第1のメッセージの各々に割り当てられた第1の暗号鍵を使用して、暗号化された第1のメッセージを復号することをさらに含む。復号された第1のメッセージは、割り当てられた第1の暗号鍵に対する置換鍵を使用して再暗号化される。再暗号化された第1のメッセージを再暗号化するために使用される置換鍵が、再暗号化された第1のメッセージの各々に割り当てられる。暗号化された第1のメッセージと割り当てられた第1の暗号鍵をルーティングに使用することから、再暗号化された第1のメッセージと割り当てられた置換鍵を使用することに切り替えることとが実行される。
【0013】
以下では、本開示の実施形態が、例としてのみ、図面を参照しながら、より詳細に説明される。
【図面の簡単な説明】
【0014】
【
図1】例示的なコンピュータシステムを例示する概略図を示す。
【
図2】例示的な出版-購読型システムを例示する概略図を示す。
【
図3】例示的な出版-購読型システムを例示する概略図を示す。
【
図4】ブローカーに実装されたトピック暗号化を有する例示的な出版-購読型システムを例示する概略図を示す。
【
図5】プロキシに実装されたトピック暗号化を有する例示的な出版-購読型システムを例示する概略図を示す。
【
図6】暗号鍵ローテーションのための例示的な方法の概略的なフロー図を示す。
【
図7】ブローカーに実装されたトピックエイリアスを有する例示的な出版-購読型システムを例示する概略図を示す。
【
図8】ブローカーに実装されたトピックエイリアスを有する例示的な出版-購読型システムを例示する概略図を示す。
【
図9】ブローカーに実装されたトピックエイリアスを有する例示的な出版-購読型システムを例示する概略図を示す。
【
図10】ブローカーに実装されたトピックエイリアスを有する例示的な出版-購読型システムを例示する概略図を示す。
【
図11】プロキシに実装されたトピックエイリアスを有する例示的な出版-購読型システムを例示する概略図を示す。
【
図12】プロキシに実装されたトピックエイリアスを有する例示的な出版-購読型システムを例示する概略図を示す。
【
図13】プロキシに実装されたトピックエイリアスを有する例示的な出版-購読型システムを例示する概略図を示す。
【
図14】暗号鍵ローテーションのための例示的な方法の概略的なフロー図を示す。
【
図15】ブローカー再暗号化サービスを使用した再暗号化の実装を例示する概略図を示す。
【
図16】暗号鍵ローテーションのための例示的な方法の概略的なフロー図を示す。
【
図17】クラウドコンピュータ環境を例示する概略図を示す。
【
図18】クラウドコンピューティング環境が提供する機能抽象化モデルレイヤのセットを示すブロック図である。
【発明を実施するための形態】
【0015】
本開示の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。記載される実施形態の範囲および精神から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に記載の実施形態を理解できるようにするために選択された。
【0016】
出版-購読型システムによって記憶された複数のメッセージのメッセージは、順序付けられたメッセージ、例えば、時間順序付けられたメッセージであってよい。暗号化された第1のメッセージと割り当てられた第1の暗号鍵をルーティングに使用することから、再暗号化された第1のメッセージと割り当てられた置換鍵を使用することに切り替えることは、ブローカーもしくはクライアントまたはその両方へのサービスが中断されず、ブローカーもしくはクライアントまたはその両方の再設定を必要としないように自動的に実行され得る。
【0017】
実施形態は、鍵ローテーション中に出版-購読型システムによって提供される暗号化されたデータストリームの時間的連続性を実装することができる。実施形態は、データ生産者/消費者、すなわち出版者/購読者が、鍵ローテーション中、すなわち暗号化/復号鍵が更新されている間、中断することなく暗号化されたデータストリームに書き込み/読み取りを行うことを可能にすることができる。したがって、鍵ローテーションは、出版-購読型システムの形態の分散データストリーミングシステムにおいて、サービスを中断することなく実施することができる。
【0018】
出版-購読型システムとは、出版-購読型メッセージパターンを実装したシステムであり、出版者またはプロデューサーと呼ばれるメッセージの送信者は、購読者または消費者と呼ばれる任意の受信者に直接メッセージを送信する代わりに、公開するメッセージをトピックと呼ばれるカテゴリに分類する。購読者は、1または複数のトピックを購読し、購読したトピックのメッセージのみを受信する。したがって、出版者は、例えば、どのような購読者が存在するのかを知らないでいることがあり、同時に、購読者は、例えば、どのような出版者が存在するのかを知らないでいることがある。出版-購読型システムにリクエストを送るとき、出版者と購読者の両方がトピックを参照するだけかもしれない。出版-購読型メッセージングパターンは、ネットワークのスケーラビリティと動的なネットワークトポロジーを可能にするという有益な効果を有する場合がある。
【0019】
出版-購読型システムでは、購読者は、公開されたメッセージの総量のうちサブセットのみを受信することができる。受信および処理のために公開されたメッセージを選択する処理は、フィルタリングと称される。フィルタリングは、例えば、トピックベースであってもよい。トピックベースの出版-購読型システムでは、メッセージはトピックに公開される。トピックベースのシステムにおける購読者は、自分が購読するトピックに公開されたすべてのメッセージを受信することができる。例えば、出版者は、購読者が購読できるトピックを定義する責任を負うことができる。
【0020】
出版-購読型システムでは、出版者は、例えば、中間メッセージブローカーにメッセージを投稿し、購読者は、ブローカーに購読を登録して、ブローカーにフィルタリングを実行させることができる。ブローカーは、出版者から受信したメッセージを購読者にルーティングするために、記憶および転送する機能を実行することができる。さらに、ブローカーは、例えば、ルーティングの前にキュー内のメッセージに優先順位をつけることができる。購読者は、例えば、構築時、初期化時、または実行時に、特定のメッセージについて登録することができる。例えば、GUIシステムにおいて、購読者は、ボタンのクリックのようなユーザコマンドを処理するようにコード化されてもよく、これは、ビルドタイム登録に対応してもよい。例えば、XML構成ファイルは、購読者を登録するために使用されるかもしれない。これらの構成ファイルは、初期化時に読み込まれることがある。例えば、購読者は実行時に追加または削除されるかもしれない。このような実行時の登録は、例えば、データベーストリガー、メーリングリスト、またはRSS(「Really Simple Syndication」または「Rich Site Summary」)において使用され得る。
【0021】
出版-購読型システムの利点は、出版者と購読の間が疎結合であることであろう。出版者は購読者の存在を知る必要さえないかもしれない。例えば、トピックが焦点となる場合、出版者と購読者は、システムのトポロジーを知らないままでいることが許されるかもしれない。出版者と購読者は互いに独立して動作することができる。出版-購読型システムは、出版者と購読者の位置だけでなく、出版者と購読者を時間的に切り離すことができる。購読者は、あるトピックを初めて購読し、先に公開されたトピックのメッセージを受信することがある。
【0022】
出版-購読型システムの更なる利点は、そのスケーラビリティであろう。スケーラビリティは、例えば、並列動作、メッセージキャッシング、ツリーベースまたはネットワークベースのルーティング等によって改善され得る。出版-購読型システムは、例えば、ウェブシンジケーションプロトコルを介してインターネットワイドな分散メッセージングを提供してもよい。
【0023】
メッセージブローカーと呼ばれるサーバノードは、受信したデータをストレージに書き込み、リクエストに応じてそのデータをクライアントに転送する中間ハブとしての役割を果たす。出版-購読型システムで一般的なように、データはトピックと呼ばれるカテゴリーに整理される。メッセージブローカーは、いわゆるストリーミングパラダイムをサポートし、データはいつでも、どのトピックでも到着し、データの流れは、制限された、または制限されていない期間、連続的である。ブローカーのクライアントは、1または複数のトピックを購読し、データをストリームとして受信する。
【0024】
トピックのデータは、ブローカーのクラスタに分散された1または複数のトピックパーティションに記憶される場合がある。各トピックパーティションは、メッセージの順序付けられたシーケンスであってもよい。トピックのデータ全体は、これらのパーティションの結合である。出版-購読型システムは、パーティション内の厳密な順序をサポートするかもしれないが、パーティション間の順序はサポートしない。パーティションは、フォールトトレランスをサポートするために複製されるかもしれない。出版-購読型システムは、トピックに関する以下の情報を保持することができる:トピックのアクティブなパーティションのセットと、それらを扱うリードブローカー(すなわちリーダー)、最も古いメッセージと最も新しいメッセージのパーティション内のオフセット、各消費者グループのパーティションに対する最終読み取りオフセット、およびパーティションのレプリカを扱うブローカー。
【0025】
消費者はブートストラップブローカーに接続し、消費したいトピックのパーティションの位置と、所属する消費者グループがそのパーティションから読み取った最後のメッセージのオフセットを取得することができる。そして、これらのパーティションのそれぞれから次のオフセットを要求する。ブローカーが利用できなくなった場合、利用できなくなったすべてのパーティションについて、リーダーを指名するために組織化することができる。リーダーに選ばれたフォロワーは、そのパーティションのIn-Sync Replica(ISR)を持っている必要がある。フォロワーは、通常の消費者と同じように、リーダーから消費することでリーダーからメッセージを受け取る。
【0026】
クライアントは、このような新しいリーダーに接続を切り替えることができる。プロデューサーも似たようなことをするが、最新のオフセットを気にする必要はない。まとめると、出版-購読型システムは、分散パーティションのコンセプトによって非常に高い負荷に対応し、複製されたパーティションのコンセプトによってシームレスに障害を処理するように設計することができる。
【0027】
規制やセキュリティのベストプラクティスは、鍵ローテーションを要求することがあり、鍵ローテーションは、リスク低減のための定期的な対策として、あるいはアクティブな暗号鍵の暴露に対する対応として、一般的にデータを新しい鍵で再暗号化することを伴う。鍵ローテーションは、出版-購読型メッセージングシステムにとって、その継続的な「ライブ」な性質のために、課題を提起する。鍵ローテーションは、原則として、再暗号化中にシステムを中断し、再暗号化処理の完了時にのみ再開することを要求する。しかし、メッセージングシステムは、中断することなくデータを受信し提供するために、継続的に利用可能でなければならない。本開示は、メッセージングシステムがそのサービスを中断することなく鍵をローテーションさせることを可能にし得る様々な方法について説明する。
【0028】
実施形態によれば、出版-購読型システムは、トピックメッセージを暗号化された形で記憶するメッセージブローカーを含み得る。これは、受信データ、すなわちメッセージを暗号化し、クライアントの要求に応答するときに同じデータを復号することによって達成され得る。
【0029】
メッセージの暗号化と復号は、ブローカーまたは出版-購読型システムのプロキシの暗号化モジュールによって実行され得る。暗号化モジュールは、トピック暗号鍵にアクセスでき、鍵ローテーションイベントに関する通知を送信もしくは受信またはその両方を行うように構成される場合がある。
【0030】
例えば、出版-購読型システムにおいて、トピックエイリアスを使用して、再暗号化を伴う鍵ローテーションを有効にすることができる。トピックエイリアスは、別のトピックへの要求と別のトピックからの要求を指示する。クライアントの観点からは、トピックエイリアスは通常のトピックと同様に表示され、動作する。鍵ローテーション処理では、このエイリアスを利用して、トピックエイリアスが現在リクエストを指示しているトピックのトピックログの新しい再暗号化コピーを作成することができる。トピックログの新しい再暗号化されたコピーは、バックグラウンドで新しいトピックとして作成される。この再暗号化処理が完了すると、トピックエイリアスは新しい再暗号化されたトピックにリダイレクトされる。以前のトピックログは、安全に削除またはアーカイブすることができる。エイリアストピックのクライアントの場合、何も変更されない(トピック名、つまりエイリアスは同じままで、接続はそのまま残り、サービスは中断することなく継続される)。例えば、再暗号化を伴う鍵ローテーションは、内部ブローカーサービスとして出版-購読型システムに実装することができる。内部トピック管理サービスは、例えば、新しい再暗号化サービスを含むように拡張されてもよい。このような再暗号化サービスは、バックグラウンドで、記憶されたメッセージをそれぞれのメッセージの再暗号化バージョンと徐々に置き換えることができる。大規模なトピックログの場合、再暗号化処理は、並列化を使用して最適化することができる。出版-購読型システムのリードブローカーは、クラスタ内の他のブローカーを調整して再暗号化の作業負荷を共有し、それによって計算を並列化することができる。
【0031】
一実施形態によれば、出版-購読型システム内のメッセージの暗号化および復号に使用される暗号鍵は、対称型暗号鍵であってもよい。
【0032】
実施形態によれば、暗号化モジュールは、出版-購読型システムのブローカーによって構成される。実施形態は、鍵ローテーションの再暗号化がブローカーによって実行され得るという有益な効果を有する場合がある。
【0033】
実施形態によれば、暗号化モジュールは、出版-購読型システムのプロキシによって構成され、それを介して出版-購読型システムのブローカーが出版-購読型システムのクライアントと通信を行う。実施形態は、鍵ローテーションの再暗号化がプロキシによって実行され得るという有益な効果を有する場合がある。したがって、プロキシのみが再暗号化を実行するために調整される必要があり、出版-購読型システムのブローカーは再暗号化を実行するために調整される必要がない可能性がある。
【0034】
メッセージの復号および再暗号化処理の両方が、どの鍵が所定のメッセージを暗号化したかを知る手段を必要とする場合がある。その手段は、メッセージIDを鍵または鍵IDにマッピングするインデックスを含むことができる。代替戦略は、暗号化されたメッセージとともに暗号鍵を暗号化された形で保存することを含む場合がある。暗号鍵は、エンベロープ暗号化として知られる技術で、別の鍵で暗号化または「ラップ」することができる。復号の際、暗号化モジュールは、暗号鍵をアンラップするよう要求し、アンラップの暗号鍵を使用してメッセージを復号することができる。暗号鍵は常にメッセージと一緒に記憶されるため、インデックスを維持する必要がなく、実装が大幅に簡素化される。
【0035】
一実施形態では、鍵管理サービス(KMS)を使用して、ラップとアンラップの動作をサポートすることができる。KMSは、ラップ鍵がKMSを離れることがないように、高度に安全な方法でラップ鍵を記憶することが想定される。出版-購読型の設定では、暗号化モジュールは、メッセージが暗号化されるときに、ラップされた鍵をメッセージヘッダに記憶し、クライアント要求に応答する前に、メッセージ復号の際にヘッダを取り除くことができる。
【0036】
一実施形態によれば、出版-購読型システムに記憶された暗号化されたメッセージは、それぞれ、暗号鍵のグループの割り当てられた暗号鍵を識別するヘッダを備える。実施形態は、暗号化されたメッセージ自体が、それぞれのメッセージを復号するために使用される暗号鍵を識別し得るという有益な効果を有する場合がある。
【0037】
一実施形態によれば、割り当てられた暗号鍵を識別するヘッダは、ルーティングされ復号されたメッセージを購読者に送信する前に、ルーティング中に取り除かれる。実施形態は、出版-購読型システムに記憶されたメッセージの暗号化もしくは復号またはその両方に関する情報が、購読者のようなクライアントと共有されることを防止するという有益な効果を有する場合がある。
【0038】
一実施形態によれば、暗号化されたメッセージのヘッダはそれぞれ、エンベロープ暗号鍵を用いたエンベロープ暗号化を使用して、暗号化した形で識別された暗号鍵を含む。暗号化された第1のメッセージの各々の復号は、エンベロープ暗号鍵を使用して、第1のメッセージの各々のヘッダによって提供される割り当てられた第1の暗号鍵を復号することをさらに含む。復号された第1のメッセージの各々の再暗号化は、再暗号化された第1のメッセージの各々を再暗号化するために使用される割り当てられた置換鍵をエンベロープ暗号鍵で暗号化することと、再暗号化された第1のメッセージの各々のヘッダー内の暗号化された第1の暗号鍵を暗号化された置換鍵で置換することと、をさらに含む。
【0039】
実施形態は、暗号化されたメッセージ自体が、それぞれのメッセージを復号するために使用される暗号鍵を提供することができるという有益な効果を有する場合がある。
【0040】
一実施形態によれば、出版-購読型システムは、記憶されたメッセージの各々について、暗号鍵のグループの割り当てられた暗号鍵を識別するインデックスを含む。実施形態は、インデックスが、記憶されたメッセージの各々について、それぞれのメッセージを復号するために使用される暗号鍵を識別することができるという有益な効果を有する場合がある。例えば、インデックスは、例えば、個々のメッセージを識別してもよいし、インデックスが、例えば、メッセージが記憶されているトピックセグメントファイルを識別してもよい。例えば、インデックスは、それぞれのメッセージを復号するために使用される暗号鍵の識別子が割り当てられた、記憶されたメッセージの識別子を含む場合がある。例えば、インデックスは、それぞれのメッセージを復号するために使用される暗号鍵が割り当てられた、記憶されたメッセージの識別子を含む場合がある。
【0041】
一実施形態によれば、再暗号化は、第1のメッセージの各々について、インデックスを使用して、第1のメッセージの各々に割り当てられた第1の暗号鍵を識別することと、インデックスにおいて、識別された第1の暗号鍵の置換鍵を、再暗号化された第1のメッセージに割り当てることと、をさらに含む。例えば、インデックスは、第1の暗号鍵を使用して、暗号化された元の第1のメッセージに加えて、置換暗号鍵を使用して暗号化された、再暗号化された第1のメッセージを識別することができる。この場合、元の第1のメッセージの識別子に加えて、再暗号化された第1のメッセージの識別子がインデックスに追加される場合があり、再暗号化された第1のメッセージの識別子には、再暗号化された第1のメッセージを復号するために使用される置換鍵の識別子が割り当てられる場合がある。例えば、再暗号化された第1のメッセージの識別子は、再暗号化された第1のメッセージを復号するために使用される置換鍵で割り当てられることがある。例えば、元の第1メッセージは、再暗号化された第1のメッセージによってインデックス内で置換されることがある。この場合、元の第1のメッセージの識別子は再暗号化された第1のメッセージの識別子によって置き換えられ、第1の暗号鍵の識別子は再暗号化された第1のメッセージを復号するために使用される置換鍵の識別子によって置き換えられるかもしれない。例えば、インデックスによって構成される第1の暗号鍵は、再暗号化された第1のメッセージを復号するために使用される置換鍵によって置き換えられることがある。
【0042】
以下では、ブローカーのサービスを中断することなくトピックデータを再暗号化するためのさまざまな技術が提供される。
【0043】
第1の技術として、別のトピックへの要求や別のトピックからの要求を指示するトピックエイリアスという概念を導入する。トピックエイリアスは、クライアントの視点からは、通常のトピックと同じように見え、動作する。鍵ローテーション処理がエイリアスを利用し、バックグラウンドでトピックログの新しい再暗号化されたコピーを作成する。この再暗号化処理が完了すると、トピックエイリアスは新しい再暗号化されたトピックにリダイレクトされる。以前のトピックログは、安全に削除またはアーカイブすることができる。トピックのクライアントの場合、何も変更されない(トピック名、つまりエイリアスは同じままで、接続はそのまま残り、サービスは中断することなく継続される)。
【0044】
実施形態は、いくつかの有益な効果を有する場合がある(トピックのクライアントの場合、すなわちプロデューサーや消費者にとって、トピックは従来のトピックと同じように動作する可能性がある)。それは、リクエストが指示され得るラベルを残すかもしれない。クライアントは、トピックのエイリアスやいかなる種類の変更についても特別に意識する必要はない。クライアントは、再暗号化処理に気づかないかもしれない。再暗号化されたデータは、タイムスタンプ、ヘッダーなどのすべてのメタデータを保持することができる。中断のない出版-購読型サービスがクライアントに提供されることがある。プロキシに実装されたエイリアスを含む技術は、ブローカーに変更を加えることなく再暗号化を実装することができる。
【0045】
一実施形態によれば、記憶されたメッセージの各々は、メッセージの各々が割り当てられたトピックのメンバーとして記憶される。本方法は、メッセージの第1のセットから共通の第1のトピックを指す第1のトピックエイリアスを提供することをさらに含む。共通の第1のトピックの1または複数の購読者は、第1のトピックエイリアスを購読する。追加の共通の第2のトピックが、トピックのグループへ追加され、再暗号化された第1のメッセージは、共通の第2のトピックのメンバーとして記憶される。切り替えることは、第1のトピックエイリアスを購読する1または複数の購読者が共通の第2のトピックの購読者となるように、共通の第2のトピックに第1のトピックエイリアスを再割り当てすることを含む。
【0046】
実施形態は、トピックエイリアスが再暗号化を実施するために使用され得るという有益な効果を有する場合がある。暗号化された第1のメッセージから、再暗号化された第1のメッセージに切り替えることは、トピックエイリアスの再割り当てによって実施され得る。トピックエイリアスが共通の第1トピックに割り当てられている間は、暗号化された第1のメッセージを使用してブローカーサービスが継続的に提供される。トピックエイリアスが共通の第2のトピックに再割り当てされると、ブローカーサービスは暗号化された第1のメッセージを使用して継続される。
【0047】
一実施形態によれば、切り替えることは、第1の暗号化されたメッセージを有する共通の第1のトピックを削除することをさらに含む。実施形態は、記憶領域を節約するという有益な効果を有する場合がある。代替実施形態によれば、切り替えることは、第1の暗号化されたメッセージと共通の第1のトピックをアーカイブすることをさらに含む。
【0048】
実施形態によれば、切り替えることは、第1の暗号鍵を削除することをさらに含む。実施形態は、記憶領域を節約するという有益な効果を有する場合がある。代替実施形態によれば、切り替えることは、第1の暗号鍵をアーカイブすることをさらに含む。
【0049】
一実施形態によれば、出版-購読型システムが出版者からトピックエイリアスそれぞれについて受信した追加の第1のメッセージは、共通の第2のトピックに割り当てられ、第2の暗号鍵の第2のセットのうちの1つの第2の暗号鍵で割り当てられ、割り当てられた第2の暗号鍵を使用して暗号化される。
【0050】
実施形態は、追加の第1のメッセージ、特に再暗号化中に受信した第1のメッセージを、第2の暗号鍵で直接暗号化し、共通の第2のトピックに割り当てることができるという有益な効果を有する場合がある。
【0051】
トピックエイリアスは、鍵ローテーションを実行するために使用されることがある。出版-購読型システムのクライアントにとって、このようなトピックエイリアスは通常のトピックとして見えるが、実際には別のトピックへの仲介物である。トピックエイリアスは、管理上のアクションによって管理されてもよい。トピックエイリアスの存在と管理をサポートする最小限の管理アクションは、エイリアスの作成、作成されたエイリアスのトピックへの割り当て、トピックからのエイリアスの取り外し、および取り外されたエイリアスの削除を含む場合がある。
【0052】
存在するが割り当てられていないトピックエイリアスは、ブローカーによって非存在または非アクティブとして扱われるかもしれない。これは実装上の選択であり、クライアントが割り当てられていないエイリアスを扱おうとしたときに返されるエラーメッセージに影響する。設定可能なオプションにより、エイリアスが割り当てられると、トピックの可視性を自動的に撤回することができる。これにより、クライアントはトピックエイリアスを通じて排他的に基礎データにアクセスすることになる。
【0053】
トピックエイリアスは、それぞれのブローカーのすべての設備と一貫して統合される場合がある。例えば、スキーマレジストリを統合するブローカーは、レジストリへのエイリアスの登録と更新をサポートすることができる。同様に、セキュリティポリシーは、通常のトピックと同様にトピックエイリアスに適用することができる。
【0054】
トピックエイリアスを使用してトピック暗号鍵をローテーションさせる一般的なワークフローは、トピックとトピックエイリアスを作成することと、トピックにエイリアスを割り当て、暗号化のためにトピックエイリアスを構成することとを含むことができる。クライアントは、エイリアスを介してメッセージの送受信を開始することができる。鍵ローテーションは、新しいトピックを追加することと、新しいトピックに対して新しい暗号鍵を作成することと、を含む。トピック暗号化モジュールによって使用される暗号鍵は、出版-購読型システムが受信する新しいメッセージが新しい暗号鍵で暗号化されるように、新しい暗号鍵で更新されることがある。再暗号化処理が開始され、古いトピックから新しく作成されたトピックにデータ、すなわちメッセージをコピーし、コピーされたデータを新しい暗号鍵で再暗号化する。再暗号化処理では、再暗号化中に到着した新しいメッセージを新しいトピックに追加することができる。古いトピックが構成するすべてのデータが新しいトピックにコピーされ、再暗号化されると、再暗号化処理は終了し、エイリアスが新しいトピックに再割り当てされる。オプションとして、古いトピックの以前にアクティブだったトピックログを削除することができる。前述のワークフローは、トランザクション的に行われることがある。
【0055】
トピックエイリアスは、例えば、出版-購読型システムのプロキシまたはブローカーに直接実装されることがある。例えば、出版-購読型システムは、プロキシを含み得る。プロキシが出版-購読型システムに実装されている場合、クライアントは出版-購読型システムのブローカーと直接通信せず、むしろプロキシを介して通信することができる。同様に、ブローカーは、プロキシを介してクライアントと通信することができる。プロキシは、例えば、出版-購読型システムに特定のアクセスコントロールモデルを導入するようなタスクに使用されることがある。
【0056】
プロキシの機能は、トピックエイリアスをサポートするように拡張されてもよい。このアプローチでは、1または複数の独立したトピックが、同じエイリアスグループに一緒に関連付けられるかもしれない。このエイリアスグループの作成と管理は、ブローカーの外部で処理される。エイリアスグループは、トピックと同じように、パーティション数、レプリカ数などを指定する。トピックはエイリアスグループに追加/削除することができ、これによりエイリアスグループの設定を使用して出版-購読型システムのクラスタ上に対応するトピックが作成される。例えば、同じグループ内のすべてのトピックは、同じ構成を有することができる。任意の瞬間にゼロまたは1つのトピックがアクティブトピックに指定される。
【0057】
クライアントは、出版-購読型システムの標準プロトコルを使用して、トピックエイリアスを通常のトピックであるかのように通信することができる。特に、出版-購読型システムのブローカーを制御するプログラム命令は、変更する必要がない場合がある。プロデューサーは、トピックエイリアスにメッセージを送信するために標準プロトコルを使用し、消費者は、トピックエイリアスからメッセージを受信するために標準プロトコルを使用することができる。しかしながら、出版-購読型システムのブローカーまたはブローカーのクラスタには、エイリアス名を持つトピックログは存在しない。代わりにプロキシは、むしろトピックエイリアスによって提供されたエイリアス名を、出版-購読型システムのブローカーまたはクラスタ上のトピックの名前にマッピングしてもよい。トピックエイリアスが参照するそれぞれのトピックは、トピックエイリアスが実際のアクティブトピックであるかのように見えるように、実際のアクティブトピックの役割を果たすことができる。
【0058】
暗号化モジュールはプロキシに統合されているので、プロキシはトピックエイリアスに送信されるメッセージを暗号化し、トピックエイリアスから受信するメッセージを復号することができる。これを実現するために、プロキシ、より正確にはプロキシに統合された暗号化モジュールは、現在の暗号鍵を使用することができる。前述したように、暗号化に使用される現在の暗号鍵は、保存のために暗号化されたメッセージのメッセージヘッダにラップ形式で追加され、クライアントの要求に応答するために復号時にメッセージヘッダから取り除かれる場合がある。
【0059】
あるいは、トピックエイリアスは、出版-購読型システムのブローカーに実装されてもよい。そのような実装は、出版-購読型システムのブローカーを制御するプログラム命令を変更することを必要とするかもしれない。ブローカーのプログラム命令を変更することができる場合、トピックエイリアスは、追加のプロキシを必要とせずにブローカーで実装されるかもしれない。プロキシを必要としない実装は、システムから1つの追加のアーキテクチャコンポーネントを取り除くことができるという有益な効果を有する場合がある。しかし、プロキシは、例えば出版-購読型システムに特定のアクセス制御モデルを導入するためなど、他の利点のために依然として使用され得る。エイリアスおよびエイリアスグループの概念は上述と同じであるが、暗号化モジュールとともにブローカーに直接統合されるだけである。
【0060】
第2の技術は、新しい再暗号化サービスを実装する。そのような新しい再暗号化サービスは、例えば、ブローカーの内部トピック管理サービスを拡張することができる。出版-購読型システムのログクリーナーに類似して、再暗号化サービスは、バックグラウンドで、記憶されたメッセージを再暗号化バージョンに徐々に置き換えることができる。非常に大きなトピックログの場合、再暗号化の作業負荷を共有するためにリードブローカーがクラスタ内の他のブローカーを調整し、それによって計算を並列化する最適化が提供される。この第2の技術は、ブローカーサービスを中断することなく実行される。
【0061】
一実施形態によれば、割り当てられた第1の暗号鍵を有する暗号化された第1のメッセージから、割り当てられた置換鍵を有する再暗号化された第1のメッセージへ切り替えることは、暗号化された第1のメッセージの各々を対応する再暗号化された第1のメッセージと置き換えることを含む。実施形態は、例えば、出版-購読型システムのブローカーの再暗号化サービスを使用して再暗号化を実施する有益な効果を有する場合がある。
【0062】
一実施形態によれば、第1のメッセージの再暗号化および暗号化された第1のメッセージと対応する再暗号化された第1のメッセージへの置き換えは、連続的に実行され得る。暗号化された第1のメッセージは、例えば、セグメントファイルに記憶されてもよく、これらは連続的に再暗号化される。例えば、連続する再暗号化は、セグメントファイルの最新のもの、すなわち時間的に最も若いセグメントファイルから開始することができる。
【0063】
一実施形態によれば、暗号化された第1のメッセージは、セグメントファイルのセットに記憶される。セグメントファイルのセットのうちの1つのセグメントファイルは、暗号化された第1のメッセージを記憶するために現在使用されており、暗号化された第1のメッセージで既に満たされたセグメントファイルのセットの残りのセグメントファイルは閉じられる。開いているセグメントファイルが一杯になった場合、開いているセグメントファイルは閉じられ、追加のセグメントファイルがセグメントファイルのセットに追加されて追加のセグメントファイルは暗号化された第1のメッセージを記憶するために使用される。
【0064】
再暗号化を開始すると、暗号化された第1のメッセージを記憶するために現在使用されているセグメントファイルが閉じられ、さらに追加のセグメントファイルがセグメントファイルのセットに追加され、共通の第1のトピックについて出版者から出版-購読型システムが受信した追加の暗号化された第1のメッセージを格納するために使用される。
【0065】
暗号化された第1のメッセージの再暗号化はセグメント的に実行される。セグメント的再暗号化は、残りの閉じたセグメントファイルを次々に選択することと、選択されたセグメントファイルの各々について、暗号化された形式で、選択されたセグメントファイルの暗号化された第1のメッセージを含む置換セグメントファイルを生成することと、選択されたセグメントファイルを置換セグメントファイルに置き換えることを含む。
【0066】
実施形態は、第1のメッセージが順序よく連続して再暗号化されるという有益な効果を有する場合がある。
【0067】
一実施形態によれば、セグメント的再暗号化は、セグメントファイルのセットのうち最新のセグメントファイルから開始される。最新の、すなわち時間的に最も若いセグメントは、最も最近に閉じたセグメントファイルであってよく、最も最近に受信したメッセージを含む。これらの最も新しいメッセージのオフセットは、出版-購読型システムのストレージ内で第2の暗号鍵を使用した暗号化が開始されるメッセージのオフセットとの差が最も小さい。実施形態は、さらに、最も新しいメッセージ、すなわち、最新のメッセージが、最初に再暗号化された形態で利用可能になるメッセージである可能性があるという有益な効果を有する場合がある。実施形態によれば、セグメントファイルは、例えば、それぞれのセグメントファイルによって構成されるメッセージの最大保持時間が満了したときに、削除することができる。実施形態は、さらに、最も古いメッセージが最後に再暗号化され、最大保持時間の満了により鍵ローテーションに後で削除される可能性のあるメッセージの不必要な再暗号化を出版-購読型システムが防止するという有益な効果を有する場合がある。
【0068】
一実施形態によれば、出版-購読型システムのストレージ内で第2の暗号鍵を使用した暗号化が開始される追加の第1のメッセージのオフセットを識別するオフセット値が決定される。一実施形態によれば、決定されたオフセット値は記憶される。実施形態は、出版-購読型システム、例えば、出版-購読型システムのブローカーが、再暗号化が終了したときに、オフセット値を使用して決定することを可能にするという有益な効果を有する場合がある。
【0069】
一実施形態によれば、共通の第1のトピックについて出版-購読型システムが購読者から受信した追加の第1のメッセージはそれぞれ、共通の第1のトピックに割り当てられ、第2の暗号鍵の第2のセットのうちの1つの第2の暗号鍵で割り当てられ、割り当てられた第2の暗号鍵を使用して暗号化される。
【0070】
実施形態は、追加の第1のメッセージ、特に再暗号化中に受信した第1のメッセージを、第2の暗号鍵で直接暗号化することができ、共通の第1のトピックに割り当てることができるという有益な効果を有する場合がある。
【0071】
一実施形態によれば、出版-購読型システムは、複数の追加のブローカーを含む。出版-購読型システムは、セグメントファイルのセットの複数の追加レプリカを含む。追加のレプリカの各々は、追加のブローカーのうちの1つに割り当てられる。セグメントファイルの再暗号化は、再暗号化の並列化を実施する出版-購読型システムのブローカー間で分散される。再暗号化した第1のメッセージは、セグメントファイルのセットの他のレプリカに分散される。
【0072】
実施形態は、再暗号化の並列化を実施するという有益な効果を有する場合がある。これにより、再暗号化は、より効率的に実行され得る。
【0073】
再暗号化を伴う鍵ローテーションは、例えば、内部ブローカーサービスを使用して実装することができる。このように、トピックエイリアスを導入する代わりに、ブローカー内のトピック管理は、むしろ追加機能によって拡張されるかもしれない。このようなアプローチは、出版-購読型システムにおいてブローカーを制御するために使用される既知のプロトコルを変更もしくは拡張またはその両方を行う必要があるかもしれない。そのような実施形態は、例えば、追加のトピックエイリアスを導入することもしくは追加のプロキシを使用することまたはその両方と比較して、より効率的であるという有益な効果を有する場合がある。
【0074】
出版-購読型システムは、トピックパーティションに関連するメッセージなどのデータを、名前がトピックパーティション名で、内容が実際のメッセージとメタデータを含むいくつかのファイルを含むログセグメントファイルを含み得るディレクトリに記憶することができる。ログセグメントファイルは、例えば100MBのような固定の最大サイズを有することができる。ログセグメントが一杯になると、新しいログセグメントファイルが作成されることがあり、メッセージが新しく作成されたログセグメントファイルに追加される。出版-購読型システムは、例えば、メッセージの最大保持時間が満了したときに、ログセグメントファイルを削除するバックグラウンドスレッドを実行することができる。最大保持時間のないコンパクト化されたトピックについては、これらのトピックをコンパクトにするためにコンパクション処理が使用されることがある。例えば、所与の鍵に対する最後の有効な値のみがトピック内で利用可能である場合があり、null値にマッピングされる鍵が取り除かれることがある。
【0075】
前述のコンパクションサービスやエクスパイアサービスなどのいわゆるログクリーナーサービスと同様に、現在の暗号鍵の置換鍵として新しい暗号鍵を使用してセグメントファイルのデータを再暗号化する出版-購読型システムのブローカーへの暗号化サービスとして再暗号化処理を追加することができる。再暗号化処理が開始されるとすぐに、すべての新しいメッセージは、新しい暗号鍵を使用して暗号化されてもよい。ブローカーは、新しいメッセージを暗号化するために新しい暗号鍵の使用を開始する記憶されたメッセージのオフセットを示すオフセット値を記憶することができる。出版-購読型システムに既に記憶され、古い暗号鍵で暗号化された古いメッセージの実際の再暗号化が開始されることがある。ブローカーは、決定されたオフセット値から始まり、最も古いメッセージに到着して同様に再暗号化されるまで継続する、全ての古いメッセージを再暗号化してもよい。最後の古いメッセージが再暗号化されると、再暗号化処理は終了するかもしれず、古い鍵は廃棄されるかもしれない。
【0076】
例えば、最大ログセグメントサイズを100MBとすると、1TBのトピックパーティションには、このサイズのログセグメントファイルが10,000個存在することになる。再暗号化は、これらのセグメントファイルのすべてを復号および暗号化することを含むことができる。実施形態によれば、再暗号化は、単一のブローカー、例えば、リーダーブローカーが単独で実行し、再暗号化されたログセグメントファイルがフォロワーに分散される場合がある。実施形態によれば、再暗号化は、再暗号化の並列化を実施する出版-購読型システムの複数のブローカーによって実行されてもよい。例えば、出版-購読型システムのブローカーを制御する内部プロトコルは、あるパーティションのレプリカを有する全てのブローカーが、それらの各々がレプリカによって構成されるログセグメントファイルのいくつかのサブセットを再暗号化し、次に、再暗号化セグメントファイルを同じパーティションのレプリカを有する他の全てのブローカーと交換するようにそれらの間で調整することができるように変更されてよい。
【0077】
実施形態は、再暗号化の並列化により、ブローカー間の相互作用のみが変化するかもしれず、出版-購読型システムのクライアントは、ブローカーがこれを実行していることに気づかないままであり得るという有益な効果を有する場合がある。したがって、このような並列化は、管理サーバの提供を含む出版-購読型システムにおける最適化として好適である可能性がある。
【0078】
セグメントファイルを使用してトピックを再暗号化するために使用される例示的なアルゴリズムは、以下を含む。
【0079】
例えば、コンピュータプログラム製品は、本明細書に記載の出版-購読型システムにおける暗号鍵ローテーションのための方法の実施形態のいずれかを実施するように構成された出版-購読型システムのコンピュータシステムのプロセッサによって実行可能なプログラム命令をさらに含み得る。
【0080】
例えば、コンピュータシステムは、さらに、本明細書に記載の出版-購読型システムにおける暗号鍵ローテーションのための方法の実施形態のいずれかを実行するように構成される。
【0081】
図1は、出版-購読型システムにおける暗号鍵ローテーションのために構成された例示的なコンピュータシステム100を示す。例示的なコンピュータシステム100は、例えば、出版-購読型システムのブローカーまたはプロキシであってもよい。本明細書で説明するコンピュータシステム100は、複数の複数のプロセッサチップと、複数のメモリバッファチップと、メモリとを含む任意のタイプのコンピュータ化システムであってもよいことが理解されよう。コンピュータシステム100は、例えば、パーソナルコンピュータ、ワークステーション、またはミニコンピュータなどの汎用デジタルコンピュータの形態で実施されてもよい。コンピュータシステム100は、例えば、サーバの形態で実装されてもよい。
【0082】
例示的な実施形態では、ハードウェアアーキテクチャの観点から、
図1に示すように、コンピュータシステム100は、プロセッサ105と、メモリコントローラ115に結合されたメモリ(メインメモリ)110と、ローカル入力/出力コントローラ135を介して通信可能に結合された1または複数の入力/出力(I/O)デバイス(または周辺機器)140、145(周辺記憶媒体として示されている)を含む。入力/出力コントローラ135は、当技術分野で知られているように、1または複数のバスまたは他の有線または無線接続であってもよいが、これに限定されるものではない。入力/出力コントローラ135は、通信を可能にするために、コントローラ、バッファ(キャッシュ)、ドライバ、リピータ、およびレシーバなどの、簡略化のために省略されている追加の要素を有していてもよい。さらに、ローカルインターフェースは、前述の構成要素間の適切な通信を可能にするために、アドレス、制御、もしくはデータ接続、またはその組み合わせを含むことができる。
【0083】
プロセッサ105は、ソフトウェア、特にメモリ110に記憶されているものを実行するためのハードウェアデバイスである。プロセッサ105は、カスタムメイドまたは市販のプロセッサ、中央処理装置(CPU)、コンピュータシステム100に関連する複数のプロセッサのうちの補助プロセッサ、半導体ベースのマイクロプロセッサ(マイクロチップまたはチップセットの形態)、マクロプロセッサ、または一般的にソフトウェア命令を実行するための任意のデバイスであってよい。
【0084】
メモリ110は、揮発性メモリモジュール((例えば、DRAM、SRAM、SDRAMなどの)ランダムアクセスメモリ(RAM))および不揮発性メモリモジュール(例えば、ROM、消去可能プログラマブル読み取り専用メモリ(EPROM)、電子消去可能プログラマブル読み取り専用メモリ(EEPROM)、またはプログラマブル読み取り専用メモリ(PROM))のいずれかまたは組み合わせを含み得る。メモリ110は、追加のモジュールが互いに離れた場所に位置しているが、プロセッサ105によってアクセスされ得る、分散アーキテクチャを有することができることに留意されたい。
【0085】
メモリ110内のソフトウェアは、1または複数の別個のプログラムを含んでもよく、その各々は、論理機能、特に本開示の実施形態に関与する機能を実装するための実行可能命令の順序付けられたリストを含んでいる。実行可能な命令は、さらに、出版-購読型システムにおける暗号鍵ローテーションのために構成されてもよい。特に、実行可能命令は、例えば実行可能命令の形式で、コンピュータシステム100によって提供される暗号化モジュールを使用して、出版-購読型システムのメッセージの再暗号化のために構成されることがある。メモリ110内のソフトウェアは、好適なオペレーティングシステム(OS)111をさらに含むことができる。OS111は、場合によってはソフトウェア112のような他のコンピュータプログラムの実行を本質的に制御する。
【0086】
コンピュータシステム100がPC、ワークステーション、インテリジェントデバイス等である場合、メモリ110内のソフトウェアは、基本入力出力システム(BIOS)122をさらに含むことができる。BIOSは、起動時にハードウェアを初期化してテストし、OS111を起動し、ハードウェアデバイス間のデータ転送をサポートする必須のソフトウェアルーチンのセットである。BIOSは、コンピュータシステム100が起動したときに実行され得るように、ROMに記憶される。
【0087】
コンピュータシステム100が動作しているとき、プロセッサ105は、メモリ110内に記憶されたソフトウェア112を実行し、メモリ110との間でデータを通信し、ソフトウェアに従ってコンピュータシステム100の動作を概ね制御するように構成される。本明細書に記載された方法およびOS111は、全体または部分的に、しかし典型的には後者で、プロセッサ105によって読み取られ、場合によってはプロセッサ105内でバッファリングされ、その後実行される。
【0088】
ソフトウェア112は、さらに、任意のコンピュータ関連システムまたは方法によって、またはそれに関連して使用するために、ストレージ120などの任意のコンピュータ可読媒体に記憶されて提供され得る。ストレージ120は、HDDストレージのようなディスクストレージ127を含んでよい。出版-購読型システムのメッセージは、ストレージ120のような内部ストレージ、または記憶媒体145のような周辺ストレージを使用してコンピュータシステム100に記憶されることがある。代替的に、または追加的に、出版-購読型システムのメッセージは、例えば、ネットワーク160のようなネットワークを介してコンピュータシステム100がアクセス可能な、コンピュータシステム170のような他のコンピュータシステム上に記憶されてもよい。代替的に、または追加的に、出版-購読型システムのメッセージを暗号化および復号するために使用される暗号鍵は、コンピュータシステム100に記憶されるか、またはコンピュータシステム100のためにアクセス可能であってもよい。
【0089】
例えば、従来のキーボード150およびマウス155は、入力/出力コントローラ135に結合されてもよい。I/Oデバイス10のような他の出力デバイスは、例えば、限定されないが、プリンタ、スキャナ、マイクロフォンなどの入力デバイスを含んでいてもよい。最後に、I/Oデバイス140、145は、限定はしないが、例えば、ネットワークインターフェースカード(NIC)または(他のファイル、デバイス、システム、またはネットワークにアクセスするための)変調器/復調器、無線周波数(RF)または他のトランシーバ、テレフォニックインターフェース、ブリッジ、ルータなどの入力および出力両方を通信するデバイスをさらに含んでもよい。I/Oデバイス140、145は、当技術分野で知られている任意の一般化された暗号カードまたはスマートカードを含むことができる。コンピュータシステム100は、ディスプレイ130に結合されたディスプレイコントローラ125をさらに含むことができる。例えば、コンピュータシステム100は、イントラネットまたはインターネットのようなネットワーク160に結合するためのネットワークインタフェースをさらに含むことができる。ネットワークは、コンピュータシステム100と、ブロードバンド接続を介してコンピュータシステム170のような任意の外部サーバ、他のクライアント等との間の通信のためのIPベースのネットワークであってもよい。コンピュータシステム170は、例えば、出版者コンピュータシステム、購読者コンピュータシステム、ブローカーのクラスタのようなブローカーサーバ、または出版-購読型システムのプロキシであってもよい。ネットワーク160は、コンピュータシステム100とコンピュータシステム170との間で、データ、例えば、メッセージを送受信する。例えば、ネットワーク160は、サービスプロバイダによって管理される管理IPネットワークであってもよい。ネットワーク160は、例えば、wi-fi、WiMAXなどの無線プロトコルおよび技術を使用して、無線方式で実装されてもよい。ネットワーク160はまた、ローカルエリアネットワーク、ワイドエリアネットワーク、メトロポリタンエリアネットワーク、インターネットネットワーク、または他の同様のタイプのネットワーク環境のようなパケット交換ネットワークであってもよい。ネットワークは、固定無線ネットワーク、無線ローカルエリアネットワーク(LAN)、無線ワイドエリアネットワーク(WAN)、パーソナルエリアネットワーク(PAN)、仮想プライベートネットワーク(VPN)、イントラネットまたは他の適切なネットワークシステムであってもよく、信号を受信し送信するための装置を含む。
【0090】
図2は、例示的な出版-購読型システム200を示す。出版-購読型システム200は、受信したメッセージ204の1または複数のプロデューサー206、すなわち出版者からメッセージ204を受信するように構成された1または複数のブローカー202を含む。メッセージ204は、トピック210に割り当てられる。ブローカー202は、トピック210のメッセージログに復活したメッセージ204を記憶する。消費者208、すなわち購読者は、トピック210のうちの1つまたは複数を購読することができる。トピック210に記憶されたメッセージ204は、ブローカー202によって、それぞれのトピック210を購読している消費者208に転送される。
【0091】
出版-購読型システム200によって構成されるブローカー202は、暗号化モジュールを含む暗号化ブローカーとして構成され得る。暗号化モジュールは、メッセージの暗号化および復号のような暗号化操作を処理するために構成された暗号化ブローカー202の内部コンポーネントの形で実装されてもよい。暗号化ブローカー202は、プロデューサー206から受信したメッセージ204を暗号化することができ、その結果、暗号化されたメッセージ205が、メッセージ204が割り当てられたトピック210のメッセージログに記憶される。暗号化ブローカー202は、元のメッセージ204、すなわち暗号化されていない形式のメッセージを、出版-購読型システム200によって提供されるそれぞれのトピック210を購読した消費者208に返すために、トピック210のメッセージログに記憶された暗号化メッセージ205をさらに復号してもよい。
【0092】
このような出版-購読型システム200は、出版-購読型パターンとも呼ばれる、出版-購読型アーキテクチャを使用する。ブローカー202の出版-購読型システム200は、ログとして受信した全てのメッセージ204をファイルシステムに永続化することができる。メッセージ204は、カテゴリ、いわゆるトピック210に書き込まれ、そこから読み出される。出版-購読型システム200は、トランザクションログとして設計された大規模にスケーラブルな出版-購読型メッセージキューを提供してもよい。例えば、クラスタを形成する複数のブローカー202が提供されてよく、トランザクションログは、クラスタ上に分散された分散トランザクションログとして実装されてもよい。
【0093】
図3は、さらなる例示的な出版-購読型システム200を示す。
図3の出版-購読型システム200は、
図2の出版-購読型システム200に対応するが、プロキシ203を追加で含んでいる。出版-購読型システム200のクライアント、すなわち、プロデューサー206および消費者208は、出版-購読型システム200のブローカー202と直接通信せず、むしろプロキシ203を経由する。同様に、ブローカー202は、プロキシ203を介してクライアント206、208と通信することができる。プロキシ203は、例えば、出版-購読型システム200にアクセス制御手段を実装するように構成されることがある。
【0094】
図4は、例示的な暗号化メッセージブローカー202をより詳細に示す図である。暗号化メッセージブローカー202は、暗号化モジュール201を含む。暗号化モジュール201は、暗号鍵kを使用してプロデューサー206から受信したメッセージmを暗号化するように構成される。暗号鍵kを使用した暗号化モジュール201によるメッセージmの暗号化は、暗号文c=E(k,m)、すなわち、トピックt210のメッセージログに記憶される暗号化メッセージをもたらすことができる。暗号化モジュール201は、暗号文c=E(k,m)を生成するために、暗号化関数Eを使用する。トピック210のメッセージログは、セグメントファイル211に記憶された複数の暗号化されたメッセージ205を含み得る。トピックt211のセグメントファイル211に記憶された暗号化メッセージ205が、トピックt210を購読している消費者208に転送される必要がある場合、ブローカー202のストレージから読み出された暗号化メッセージ205は、暗号文cの形で暗号化モジュール201に提供される。暗号化モジュール201は、暗号鍵kを用いて暗号文cから元の非暗号化メッセージm=D(k,c)を復元するための復号関数Dを使用する。
【0095】
実施例は、暗号鍵のローテーションを可能にすることによって、セキュリティを向上させるという有益な効果を有する場合がある。鍵ローテーションは、例えば、リスク管理の尺度として、例えば定期的に実行されることがある。例えば、セキュリティ規制により、定期的な鍵ローテーションが必要となる場合がある。鍵ローテーションは、例えば、使用中の暗号鍵の安全性が問われる事件に対応して実行されることがある。鍵ローテーションは、鍵の交換を含み、既存の暗号化データを新しい鍵で再暗号化することを伴う場合がある。
【0096】
図5は、メッセージブローカー202およびプロキシ203を有するさらなる例示的な出版-購読型システム200を示す。出版-購読型システム200のクライアント206、208は、プロキシ203を介してブローカー202と通信することができる。同様に、ブローカー202は、プロキシ203を介してクライアント206、208と通信することができる。
図5の場合、メッセージを暗号化および復号するための暗号化モジュール201は、プロキシ203によって構成される。したがって、プロキシ203は、メッセージを暗号化および復号するための構成であってもよい。プロキシ203は、例えば、出版-購読型システム200にアクセス制御手段を実装するためにさらに構成されてもよい。プロキシは、ブローカー202によってトピックt210に記憶するために転送される暗号文c=E(k,m)をもたらす受信メッセージmを暗号化し、トピックtを購読する消費者208に転送される送信メッセージm=D(k,c)をもたらす暗号文cを復号してもよい。
【0097】
図2~
図5に示すような出版-購読型システム200は、連続的にオンラインであってもよく、すなわち、連続的にメッセージを受信および送信してもよい。このような出版-購読型システム200は、例えば、組織内でデータを記憶し、分散するために、ますます信頼されてきている。以下の例では、メッセージを暗号化および復号化するために出版-購読型システム200によって使用される暗号鍵kを置換鍵で置き換えることを可能にする鍵ローテーションについて説明することができる。これらの例は、出版-購読型システム200によって構成されるデータ量と同程度の大量のデータを効果的かつ効率的に再暗号化することを可能にするという有益な効果を有する場合がある。実施例は、出版-購読型システム200によって記憶されたメッセージを再暗号化するために、出版-購読型システム200をオフラインにすることを必要としない場合がある。以下では、出版-購読型システム200を中断することなく、出版-購読型システム200のブローカー202に記憶されたトピックデータ、すなわち、トピックのメッセージを再暗号化するための異なるアプローチを説明する。
【0098】
1つのアプローチは、出版-購読型システム200を中断することなく再暗号化を可能にするために使用されるトピックエイリアスの作成に基づくものである可能性がある。さらなるアプローチは、出版-購読型システム200を中断することなく再暗号化を可能にする再暗号化サービスを有するブローカー202の拡張に基づくものであってもよい。どちらのアプローチも、ブローカー202が中断されずに実行し続けることを可能にするという有益な効果を有する場合がある。したがって、ブローカー202のクライアント206、208は、ブローカー202における再暗号化に気づかないことがある。さらに再暗号化のために、プロキシ203が使用されることがある。アプローチは、さらに、再暗号化処理によってメッセージメタデータを保存するという有益な効果を有する場合がある。
【0099】
図6は、
図4または
図5の出版-購読型システム200のような出版-購読型システムにおける暗号鍵ローテーションのための例示的な方法の概略的なフロー図である。出版-購読型システムは、複数のメッセージを記憶する。記憶されたメッセージの各々は、1または複数のトピックのグループからトピックに割り当てられる。記憶されたメッセージの各々は、1または複数の暗号鍵のグループの暗号鍵で割り当てられ、割り当てられた暗号鍵で暗号化される。出版-購読型システムは、ルーティングされたメッセージが割り当てられたトピックの1または複数の購読者に記憶されたメッセージをルーティングするためのブローカーサービスを提供する。ルーティングは、メッセージの各々の割り当てられた暗号鍵を使用してルーティングされるメッセージを復号することと、復号されたメッセージを割り当てられたトピックの購読者のうちの1または複数に送信することを含む。
【0100】
暗号鍵ローテーションは、記憶されたメッセージの1または複数の第1のメッセージの第1のセットの各メッセージの再暗号化を含む。第1のメッセージの各々は、トピックのグループから共通の第1のトピックに割り当てられ、暗号鍵のグループの1または複数の第1の暗号鍵の第1のセットの第1の暗号鍵に割り当てられ、割り当てられた第1の暗号鍵で暗号化される。再暗号化は、ブローカーサービスによって共通の第1のトピックからの第1のメッセージのルーティングと追加の第1のメッセージの受信を継続しながら、バックグラウンド処理として出版-購読型システムの暗号化モジュールによって実行される。
【0101】
ブロック300では、1または複数の第2の暗号鍵が、第1のトピックの第1のメッセージを暗号化するために使用される1または複数の第1の暗号鍵の置換鍵として追加される。例えば、単一の第1の暗号鍵が第1のトピックに割り当てられてよく、第1のコピーに割り当てられたすべてのメッセージが、それぞれの単一の第1の暗号鍵を使用して暗号化されてもよい。この場合、以前に使用された第1の暗号鍵を置き換えるために、例えば、単一の第2の暗号鍵が第1のトピックに対して追加されることがある。例えば、第1のトピックに複数の第1の暗号鍵が割り当てられてよく、第1のコピーに割り当てられた異なるメッセージが、異なる第1の暗号鍵を使用して暗号化されてもよい。この場合、複数の第2の暗号鍵が、例えば、以前に使用された第1の暗号鍵の各々に対する置換鍵を含む第1のトピックに対して追加され得る。
【0102】
ブロック302において、第1のトピックに割り当てられた第1のメッセージの各々は、第1のメッセージの各々に割り当てられた第1の暗号鍵を使用して復号される場合がある。ブロック304では、復号された第1のメッセージの各々は、ブロック300で追加された置換鍵のうちの1つを使用して再暗号化されることがある。例えば、置換鍵は、置換鍵として以前に使用された第1の暗号鍵に割り当てられる。ブロック306において、再暗号化された第1のメッセージを再暗号化するために使用される置換鍵は、再暗号化された第1のメッセージの各々に割り当てられてもよい。ブロック308において、出版-購読型システムは、暗号化された第1のメッセージと割り当てられた第1の暗号鍵をルーティングに使用することから、再暗号化された第1のメッセージと割り当てられた置換鍵を使用することに切り替える。さらに、以前に使用された暗号化された第1のメッセージもしくは以前に使用された第1の暗号鍵またはその両方は、削除されてもよい。
【0103】
図7は、トピックエイリアスta212を使用して暗号鍵ローテーションを実装する例示的な出版-購読型システム200を示す。出版-購読型システム200のクライアント206、208にとって、トピックエイリアスta212は、通常のトピックとして見えるが、実際には、別のトピックt
1210への仲介者である。メッセージは、トピックエイリアスta212に割り当てられたプロデューサー206から受信することができる。トピックエイリアスta212は、トピックt
1210を指すことがあり、受信したメッセージがさらにトピックt
1210に割り当てられ、トピックt
1210のメッセージログのセグメントファイル211に記憶されるようにする。この目的のために、受信メッセージmは、暗号鍵k
1、例えば、トピックt
1210に割り当てられた暗号鍵k
1を使用して暗号化されてよく、暗号文c
1=E(k
1,m)を生成することができる。この暗号文c
1は、トピックt
1210のメッセージログに暗号化メッセージ205として記憶することができる。消費者208は、トピックt
1210のメッセージログに記憶された暗号化メッセージ205が消費者208に転送されるように、トピックエイリアスta212を購読することができる。この目的のために、転送される暗号化メッセージ205は、暗号文c
1の形でトピックt
1210のメッセージログから読み取られ、暗号鍵k
1を使用して暗号文c
1から元の非暗号化メッセージm=D(k
1,c
1)を復元するために復号されるかもしれない。その後、元の非暗号化メッセージmは、ブローカー202によって消費者208に送信されることがある。暗号化および復号のために、ブローカー202は、
図4に示すような暗号化モジュールを使用することができる。
【0104】
トピックエイリアスta212のようなトピックエイリアスは、
図11に示すように、ブローカー202または追加のプロキシで実装されることがある。トピックエイリアスta212のようなトピックエイリアスは、例えば、ポリシー、レジストリなどのような、ブローカー202のすべての設備と統合されてもよい。そのようなトピックエイリアスは、ブローカー202またはプロキシの管理者により作成もしくは削除またはその両方がなされることがある。さらに、管理者のアクションは、トピックエイリアスta212のようなトピックエイリアスを、トピックt
1210のような具体的トピックに、もしくはそこから、またはその両方で取り付けることもしくは切り離すことまたはその両方を含んでよい。具体的トピックに添付された、すなわち割り当てられたトピックエイリアスは、それぞれの具体的トピックを指す仲介ポインタである。トピックエイリアスが具体的トピックに添付されるとき、それぞれの具体的トピックは、任意に出版-購読型システム200のクライアントから隠されることがある。プロデューサー206および消費者208のようなクライアントは、したがって、論理的な、エイリアス化されたトピック、すなわち、トピックエイリアスta212のようなトピックエイリアスのみと通信し得る。
【0105】
例えば、出版-購読型システムは、トピックに割り当てられたトピックエイリアスのみを含む場合がある。例えば、出版-購読型システムは、どのトピックにも割り当てられていない1または複数の未割り当てトピックエイリアスも含むことができる。このような未割り当てのトピックエイリアスは、メッセージの送信または受信に使用されるとき、クライアントには見えるが、エラーを返すことがある。あるいは、未割り当てのトピックエイリアスは、トピックに割り当てられるまで、クライアント206、208から隠れることができる。
【0106】
トピックt1210のメッセージログに記憶された暗号化メッセージ205の再暗号化は、ブローカー202によって、例えばバックグラウンドスレッドとしてなど、バックグラウンドで実行される再暗号化処理214を使用して実行されてもよい。再暗号化処理214は、例えば、ブローカー202の暗号化モジュールによって実行されてもよい。
【0107】
図8は、再暗号化処理214を使用して再暗号化を実行する出版-購読型システム200を示す図である。再暗号化のための初期状況は、
図7に示された配置であってもよい。再暗号化のためにトピックエイリアスta212のようなトピックエイリアスを使用することは、トピックt
1210のようなトピックを提供することを含んでいてもよい。それぞれのトピックt
1210は、例えば、作成されてもよい。さらに、トピックエイリアスta212が提供されることがある。トピックエイリアスta212は、例えば、生成されてもよい。提供されたトピックエイリアスta212は、提供されたトピックt
1210に割り当てることができる。トピックエイリアスta212は、トピックt
1210のメッセージログに記憶するために、プロデューサー206から受信したメッセージmを、例えば、ブローカー202の暗号化モジュールを使用して暗号化するように構成されてもよい。プロデューサー206は、メッセージmをトピックエイリアスta212に送信してもよい。さらに、トピックエイリアスta212は、トピックエイリアスta212を購読する消費者208に送信される元のメッセージmを復元するために、トピックt
1210のメッセージログに記憶された暗号化メッセージを、例えば、ブローカー202の暗号化モジュールを使用して復号するように構成される場合がある。それぞれのメッセージmは、トピックt
1210に割り当てられた暗号鍵k
1を使用して暗号化および復号されることがある。出版-購読型システム200のクライアント206、208は、トピックエイリアスta212を介してメッセージの送信および受信を開始することができる。
【0108】
鍵ローテーションを実行するため、すなわち、既存のトピックt1210に割り当てられ、トピックt1210のメッセージログに記憶された暗号化メッセージ205を暗号化するために使用される既存の暗号鍵k1を置換するために、再暗号化が実行され得る。例えば、追加のトピックt2220を追加することを含む再暗号化ワークフローが実行されることがある。鍵ローテーションは、例えば、追加のトピックt2220のために追加の暗号鍵k2を作成することによって開始されてもよい。暗号化モジュールは、新しいメッセージ、すなわち、ブローカー202またはプロキシによって受信されたメッセージを、追加の鍵k2を使用して暗号化するように更新されてもよい。既存のトピックt1210のメッセージログに記憶されたメッセージ205の再暗号化処理が開始されてもよく、既存のトピックt1210から追加のトピックt2220にデータをコピーすることを含む。コピーすることは、コピーされたメッセージ205を追加の鍵k2で再暗号化することを含む。再暗号化のために、既存のトピックによって暗号化された形式で構成されたそれぞれのデータは、既存のトピックt1210の既存の暗号鍵k1を使用して復号し、追加トピックt2220の追加の暗号鍵k2を使用して暗号化することもできる。再暗号化は、例えば、トピックt1210に記憶された暗号文c1と既存の暗号鍵k1を使用して、元のメッセージm=D(k1,c1)を復元することを含み得る。復元した元のメッセージは、追加鍵k2を使用して再暗号化し、得られた暗号文c2=E(k2,m)を暗号化メッセージ225として追加トピックt2220のメッセージログ内のセグメントファイル221に記憶することができる。
【0109】
再暗号化処理214は、再暗号化中に到着した新しいメッセージmを、追加トピックt
2220に追加することができる。これらの新しいメッセージmは、追加の暗号鍵k
2を使用して暗号化され、暗号文c
2=E(k
2,m)を生成し、追加トピックt
2220のメッセージログに記憶される。コピーが終了すると、トピックエイリアスta212は、追加トピックt
2220に再割り当てされる場合がある。追加トピックt
2220には、既存のトピックt
1210からコピーされた再暗号化データと、追加の暗号鍵k
2で暗号化された新しいメッセージが含まれる場合がある。このため、既存のトピックt
1210はアクティブでなくなり、追加トピックt
2220がアクティブになることがある。オプションとして、
図9に示すように、以前にアクティブだったトピックログ、すなわち既存のトピックt
1210のメッセージログが削除され、
図10に示すような状況になることがある。出版-購読型システム200のクライアント206、208にとって、追加トピックt
2220の生成と、既存トピックt
1210から追加トピックt
2220への切り替えは、不可視であってもよい。クライアント206、208は、トピックエイリアスta212との通信を継続することができる。プロデューサー206から受信したメッセージmは、暗号文c
2=E(k
2,m)を生成するために、追加の暗号鍵k
2を使用して暗号化され、追加トピックt
2220のメッセージログに暗号化メッセージ225として記憶されることがある。さらに、追加トピックt
2220のメッセージログに記憶された暗号化メッセージ225は、元のメッセージm=D(k
2,c
2)を復元するために、追加の暗号鍵k
2を使用して復号し、トピックエイリアスta212を購読する消費者208に送信することができる。再暗号化処理214の全実行中、出版-購読型システム200は、そのサービス、すなわち、プロデューサー206からメッセージmを受信し、受信したメッセージmを消費者208に転送することを継続してもよい。
【0110】
図11、
図12、および
図13は、トピックエイリアスta212および再暗号化処理214がブローカー202の代わりにプロキシ203に実装されている、
図7、
図8、および
図10の代替実施形態をそれぞれ示す。
【0111】
図14は、
図7から
図13の出版-購読型システム200のような、出版-購読型システムにおける暗号鍵ローテーションのための例示的な方法の概略的なフロー図である。
図14の方法は、
図6の方法に対応し、暗号鍵ローテーションのためにトピックエイリアスを使用するように調整される。トピックエイリアスは、第1のメッセージから第1のトピックを指し示す。共通の第1のトピックの購読者は、第1のトピックエイリアスを購読する。さらに、メッセージを送信する出版者、すなわちプロデューサーは、メッセージを第1のトピックエイリアスに割り当てることができる。第1のトピックエイリアスに割り当てられたメッセージは、自動的に共通の第1のトピックに再割り当てされることがある。
【0112】
ブロック320では、追加の共通の第2のトピックを追加することができる。ブロック322から328は、
図6のブロック300から306に対応することができる。ブロック330において、再暗号化されたメッセージは、ブロック320で追加された追加の共通の第2のトピックのメッセージログに記憶される。ブロック332において、出版-購読型システムは、暗号化された第1のメッセージと割り当てられた第1の暗号鍵をルーティングに使用することから、再暗号化された第1のメッセージと割り当てられた置換鍵を使用することに切り替えることができる。切り替えることは、トピックエイリアスを、暗号化された第1のメッセージを含む共通の第1のトピックから、再暗号化された第1のメッセージを含む共通の第2のトピックに再割り当てすることを含んでいてもよい。さらに、以前に使用された暗号化された第1のメッセージ、もしくは以前に使用された第1の暗号鍵、またはその両方は、削除されてもよい。削除は、例えば、共通の第1のトピックの削除を含んでいてもよい。
【0113】
図15は、ブローカー再暗号化サービスを使用する再暗号化の代替的な実装を示す概略ブロック図である。ブローカー再暗号化サービスは、
図4に示すように、ブローカー202で実装されてもよい。ブローカー再暗号化サービスは、トピックエイリアスを伴わず、むしろブローカー202内のトピック管理、例えばトピックt210の管理を拡張してもよい。例えば、コンパクションを実行し、バックグラウンドスレッドを介して満了を処理するブローカーのログクリーナーサービスは、再暗号化サービスを提供するために、再暗号化機能を含むように拡張され得る。
【0114】
トピックt210は、それぞれが複数のセグメントファイル211で構成される複数のパーティションで構成されてもよい。トピックt210に追加メッセージ、すなわち新しいメッセージを追加するための書き込み処理は、追加メッセージを最後の開いているセグメントファイル211、例えば、セグメントファイル「セグメント3」に追加することを含む場合がある。閉じたセグメントファイルは、例えば、それぞれのセグメントファイルに記憶されたメッセージの最大保持時間が満了したときに、ログクリーナーサービスによってのみスワップまたは削除され得る。
【0115】
ブローカー再暗号化サービスによる再暗号化ワークフローは、第1の暗号鍵で暗号化された既存のトピックを第2の、すなわち新しい暗号鍵で再暗号化するコマンドを発行することを含むことができる。コマンドの発行に応答して、再暗号化処理が開始される場合がある。再暗号化処理は、バックグラウンドスレッドとして実装される場合がある。新しい着信メッセージは、第2の鍵を使用して暗号化される場合がある。ブローカー202は、現在のセグメントファイル「セグメント3」を閉じ、新しいセグメントファイル222「セグメント4」を開いてもよい。ブローカー202は、さらに、第2の鍵を使用した暗号化が開始されたメッセージのオフセット値を決定し、記憶してもよい。
【0116】
以前に受信したメッセージ、すなわち、閉じたセグメントファイル211「セグメント1」、「セグメント2」、「セグメント3」に記憶されたメッセージの再暗号化は、バックグラウンドスレッドによって開始されることがある。決定されたオフセットで始まるすべての以前のメッセージ、すなわち、以前の暗号鍵で暗号化されたすべてのメッセージは、例えば、ファイルごとに再暗号化されることがある。例えば、再暗号化は、最新のセグメントファイル211「セグメント3」から開始されてもよい。セグメントファイル211「セグメント3」が再暗号化されると、すなわち、以前の第1の暗号鍵を使用して復号され、現在の第2の暗号鍵を使用して暗号化されると、結果として生じる再暗号化されたセグメントファイル221「セグメント3」は、以前のセグメントファイル211「セグメント3」とスワップされる。例えば、以前の暗号鍵を使用して暗号化されたメッセージを含む以前のセグメントファイル211「セグメント2」および「セグメント3」は、現在の第2の暗号鍵を使用して再暗号化された以前のセグメントファイル211「セグメント2」および「セグメント3」と同じメッセージを含む再暗号化セグメントファイル221「セグメント2’」および「セグメント3’」と置き換えてもよい。最後のセグメントファイル211、例えば最も古いセグメントファイル「セグメント2」の最後のメッセージが再暗号化されると、再暗号化処理は終了し、以前の第1の暗号鍵は、すなわち、廃棄されてもよい。例えば、セグメントファイル「セグメント1」は、それぞれのセグメントファイル「セグメント1」で構成されるメッセージの最大保持時間が経過したことにより、鍵ローテーション中に削除されることがある。そこで、最新の「セグメント3」から再暗号化を開始することで、「セグメント1」のように、鍵ローテーション中に削除されるセグメントファイルを出版-購読型システムが不必要に再暗号化することを防ぐことができる。
【0117】
図15に例示されるようなブローカー202上の再暗号化サービスを使用する再暗号化は、並列化を実装して最適化されてもよい。再暗号化作業負荷は、並列化、すなわち、出版-購読型システムによって構成されるブローカーのクラスタの複数のブローカーに分散されてもよい。例は、再暗号化速度を増加させる、例えば、最適化するという有益な効果を有する場合がある。出版-購読型システムは、複数のブローカーを含んでもよい。出版-購読型システムの内部プロトコルは、パーティションのレプリカを有する出版-購読型システムのすべてのブローカーが、それぞれがそれぞれのパーティションのセグメントフィールドのいくつかのサブセットのみを再暗号化するように、それらの間で調整することができるように調整されてもよい。次に、ブローカーの各々は、再暗号化されたセグメントフィールドのサブセットを、レプリカを有する他のすべてのブローカーとも交換する。
【0118】
図16は、
図7から
図13の出版-購読型システム200のような出版-購読型システムにおける暗号鍵ローテーションのための例示的な方法の概略的なフロー図である。
図16の方法は、
図6の方法に対応し、出版-購読型システムのブローカーによって提供される再暗号化サービスを使用するように調整されている。セグメントファイルは、メッセージを記憶するために使用されてもよい。セグメントファイルが一杯になると、後続のセグメントファイルを使用して記憶が継続される。
【0119】
ブロック340では、メッセージの記憶に現在使用されているセグメントファイルが閉じられ、ブロック342では、メッセージの記憶のために追加のセグメントファイルが開かれる。追加のセグメントファイルに記憶されたメッセージは、ブロック346で提供される置換鍵を使用して暗号化される。例えば、置換鍵は、ブロック340、342、または344のいずれかの前に提供することができる。ブロック344では、置換鍵で暗号化されたメッセージの記憶が開始されるオフセットを識別するオフセット値が決定され、例えば、記憶されることがある。ブロック346から352は、
図6のブロック300から306に対応することができる。セグメントファイルのメッセージの再暗号化は、再暗号化されたセグメントファイルをもたらすかもしれない。ブロック354では、記憶されたセグメントファイルは、再暗号化されたセグメントファイルと置換されることがある。例えば、再暗号化は、記憶された最新のセグメントファイルから開始され、記憶された最も古い残りのセグメントファイルに到着して再暗号化された時点で終了されるかもしれない。
【0120】
本発明は、任意の可能な技術詳細レベルで統合されたシステム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0121】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶媒体は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0122】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバまたはその組み合わせで構成される。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0123】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、統合回路のための構成データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語と「C」プログラミング言語や類似のプログラミング言語などの手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0124】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0125】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するために汎用コンピュータ、専用コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置に提供されることができる。これらのコンピュータ可読プログラム命令はまた、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読プログラム媒体が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0126】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0127】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1つまたは複数の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【0128】
クラウドコンピューティングは、設定可能なコンピューティングリソースの共有プール(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシンおよびサービス)へ、簡便かつオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルであり、リソースは、最小限の管理労力または最小限のサービスプロバイダとのやり取りによって速やかに準備(provision)およびリリースできるものである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、および少なくとも4つの実装モデルを含むことがある。
【0129】
特性は以下の通りである。
【0130】
オンデマンド・セルフサービス:クラウドの消費者は、サービスプロバイダとの人的な対話を必要することなく、必要に応じて自動的に、サーバ時間やネットワークストレージなどのコンピューティング能力を一方的に準備することができる。
【0131】
ブロード・ネットワークアクセス:コンピューティング能力はネットワーク経由で利用可能であり、また、標準的なメカニズムを介してアクセスできる。それにより、異種のシンまたはシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、PDA)による利用が促進される。
【0132】
リソースプーリング:プロバイダのコンピューティングリソースはプールされ、マルチテナントモデルを利用して複数の消費者に提供される。様々な物理リソースおよび仮想リソースが、需要に応じて動的に割り当ておよび再割り当てされる。一般に消費者は、提供されたリソースの正確な位置を管理または把握していないため、位置非依存(location independence)の感覚がある。ただし消費者は、より高い抽象レベル(例えば、国、州、データセンタ)では場所を特定可能な場合がある。
【0133】
迅速な柔軟性(elasticity):コンピューティング能力は、迅速かつ柔軟に準備することができるため、場合によっては自動的に、直ちにスケールアウトし、また、速やかにリリースされて直ちにスケールインすることができる。消費者にとって、準備に利用可能なコンピューティング能力は無制限に見える場合が多く、任意の時間に任意の数量で購入することができる。
【0134】
測定されるサービス:クラウドシステムは、サービスの種類(例えば、ストレージ、処理、帯域幅、アクティブユーザアカウント)に適したある程度の抽象化レベルでの測定機能を活用して、リソースの使用を自動的に制御し最適化する。リソース使用量を監視、制御、および報告して、利用されるサービスのプロバイダおよび消費者の両方に透明性を提供することができる。
【0135】
サービスモデルは以下の通りである。
【0136】
サービスとしてのソフトウェア(SaaS):消費者に提供される機能は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用できることである。当該そのアプリケーションは、ウェブブラウザ(例えばウェブメール)などのシンクライアントインタフェースを介して、各種のクライアント装置からアクセスできる。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージや、個別のアプリケーション機能さえも含めて、基礎となるクラウドインフラストラクチャの管理や制御は行わない。ただし、ユーザ固有の限られたアプリケーション構成の設定はその限りではない。
【0137】
サービスとしてのプラットフォーム(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラム言語およびツールを用いて、消費者が作成または取得したアプリケーションを、クラウドインフラストラクチャに展開(deploy)することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、展開されたアプリケーションを制御でき、かつ場合によってはそのホスティング環境の構成も制御できる。
【0138】
サービスとしてのインフラストラクチャ(IaaS):消費者に提供される機能は、オペレーティングシステムやアプリケーションを含むことができる任意のソフトウェアを消費者が展開および実行可能な、プロセッサ、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースを準備することである。消費者は、基礎となるクラウドインフラストラクチャの管理や制御は行わないが、オペレーティングシステム、ストレージ、および展開されたアプリケーションを制御でき、かつ場合によっては一部のネットワークコンポーネント(例えばホストファイアウォール)を部分的に制御できる。
【0139】
展開モデルは以下の通りである。
【0140】
プライベートクラウド:このクラウドインフラストラクチャは、特定の組織専用で運用される。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0141】
コミュニティクラウド:このクラウドインフラストラクチャは、複数の組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス)を持つ特定のコミュニティをサポートする。このクラウドインフラストラクチャは、当該組織または第三者によって管理することができ、オンプレミスまたはオフプレミスで存在することができる。
【0142】
パブリッククラウド:このクラウドインフラストラクチャは、不特定多数の人々や大規模な業界団体に提供され、クラウドサービスを販売する組織によって所有される。
【0143】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ以上のクラウドモデル(プライベート、コミュニティまたはパブリック)を組み合わせたものとなる。それぞれのモデル固有の実体は保持するが、標準または個別の技術によってバインドされ、データとアプリケーションの可搬性(例えば、クラウド間の負荷分散のためのクラウドバースティング)を実現する。
【0144】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合性(low coupling)、モジュール性(modularity)および意味論的相互運用性(semantic interoperability)に重点を置いたサービス指向型環境である。クラウドコンピューティングの中核にあるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0145】
図17を参照すると、クラウドコンピューティング環境50が示されている。図示の通り、クラウドコンピューティング環境50は1つまたは複数のクラウドコンピューティングノード10を含む。これらに対して、クラウド消費者が使用するローカルコンピュータ装置(例えば、パーソナルデジタルアシスタント(PDA)もしくは携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、もしくは自動車コンピュータシステム54Nまたはこれらの組み合わせなど)は通信を行うことができる。ノード10は互いに通信することができる。ノード10は、例えば、上述のプライベート、コミュニティ、パブリックもしくはハイブリッドクラウドまたはこれらの組み合わせなど、1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化(不図示)することができる。これにより、クラウドコンピューティング環境50は、サービスとしてのインフラストラクチャ、プラットフォームもしくはソフトウェアまたはこれらの組み合わせを提供することができ、クラウド消費者はこれらについて、ローカルコンピュータ装置上にリソースを維持する必要がない。なお、
図17に示すコンピュータ装置54A~Nの種類は例示に過ぎず、コンピューティングノード10およびクラウドコンピューティング環境50は、任意の種類のネットワークもしくはネットワークアドレス指定可能接続(例えば、ウェブブラウザの使用)またはその両方を介して、任意の種類の電子装置と通信可能であることを理解されたい。
【0146】
図18を参照すると、クラウドコンピューティング環境50(
図17)によって提供される機能的抽象化モデルレイヤのセットが示されている。なお、
図18に示すコンポーネント、レイヤおよび機能は例示に過ぎず、本発明の実施形態はこれらに限定されないことをあらかじめ理解されたい。図示するように、以下のレイヤおよび対応する機能が提供される。
【0147】
ハードウェアおよびソフトウェアレイヤ60は、ハードウェアコンポーネントおよびソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム61、縮小命令セットコンピュータ(RISC)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、記憶装置65、ならびにネットワークおよびネットワークコンポーネント66が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア67およびデータベースソフトウェア68を含む。
【0148】
仮想化レイヤ70は、抽象化レイヤを提供する。当該レイヤから、例えば以下の仮想エンティティを提供することができる:仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティングシステム74、ならびに仮想クライアント75。
【0149】
一例として、管理レイヤ80は以下の機能を提供することができる。リソース準備81は、クラウドコンピューティング環境内でタスクを実行するために利用されるコンピューティングリソースおよび他のリソースの動的な調達を可能にする。計量および価格設定82は、クラウドコンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費に対する請求またはインボイス送付を可能にする。一例として、これらのリソースはアプリケーションソフトウェアのライセンスを含んでよい。セキュリティは、データおよび他のリソースに対する保護のみならず、クラウドコンシューマおよびタスクの識別確認を可能にする。ユーザポータル83は、コンシューマおよびシステム管理者にクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されたサービスレベルが満たされるように、クラウドコンピューティングリソースの割り当ておよび管理を可能にする。サービス品質保証(SLA)の計画および履行85は、SLAに従って将来必要になると予想されるクラウドコンピューティングリソースの事前手配および調達を可能にする。
【0150】
ワークロードレイヤ90は、クラウドコンピューティング環境が利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例には、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育の配信93、データ分析処理94、取引処理95、ならびに、出版-購読型システム96が含まれる。
【国際調査報告】