(57)【特許請求の範囲】
【請求項１】
プロセッサにより実行される方法であって、
前記プロセッサが、ブロードキャスト暗号化定義を読み取ることであって、前記ブロードキャスト暗号化定義が、ブロードキャスト暗号化方式を定義し、第１、第２、および第３の関数定義を含む複数の関数定義を含む、前記読み取ること
と、
前記プロセッサが、前記複数の関数定義に基づいて、前記ブロードキャスト暗号化定義がコンテンツの暗号化または復号のいずれを定義するかを決定することと、
前記プロセッサが、前記複数の関数定義に基づいて、前記ブロードキャスト暗号化方式の種類を決定することと、
前記プロセッサが、前記ブロードキャスト暗号化定義をコンピュータ実行可能なネイティブ・コードにコンパイルすることと、
前記プロセッサが、前記コンピュータ実行可能なネイティブ・コードを実行して前記ブロードキャスト暗号化方式に従ってキー・バンドルを生成することであって、前記バンドルが第１の暗号化キーを含む、前記生成することと、
前記プロセッサが、前記コンピュータ実行可能なネイティブ・コードを実行して前記ブロードキャスト暗号化方式に従ってキー・ブロックを生成し、コンテンツ暗号化キーを、前記第１、第２、および第３の関数定義に対応する第１、第２、および第３の暗号化関数を決定することによって取得可能にすることと、
前記プロセッサが、前記第１の暗号化キー、ならびに前記第１、第２、および第３の暗号化関数を使用してサブセット差分ツリー（subset difference tree）をトラバースしてコンテンツ暗号化キーを取得することと
を含む方法。
【請求項２】
前記ブロードキャスト暗号化方式の前記種類が、行列に基づくブロードキャスト暗号化方式およびサブセット差分ツリー（subset difference tree）に基づくブロードキャスト暗号化方式からなる群から選択される、請求項１に記載の方法。
【請求項３】
前記ブロードキャスト暗号化方式が、サブセット差分ツリー（subset difference tree）に基づくブロードキャスト暗号化方式であり、
前記複数の関数定義が、左トラバーサル関数および右トラバーサル関数を含む、請求項１に記載の方法。
【請求項４】
前記ブロードキャスト暗号化定義が、ツリーの高さ、キー幅、列数、行数、および次元からなる群から選択されるパラメータを含む、請求項３に記載の方法。
【請求項５】
前記複数の関数定義がラベル関数を含む、請求項３に記載の方法。
【請求項６】
前記ブロードキャスト暗号化定義が少なくとも１つのキーを含む、請求項３に記載の方法。
【請求項７】
前記ブロードキャスト暗号化定義が、コンテンツを暗号化することを定義し、前記方法が、
コンテンツを読み取ることと、
前記ブロードキャスト暗号化方式に従って前記コンテンツのメディア・キー・ブロックを生成することと
をさらに含む、請求項１に記載の方法。
【請求項８】
前記ブロードキャスト暗号化方式に従ってキーセットを生成することをさらに含む、請求項１に記載の方法。
【請求項９】
コンテンツを読み取ることと、
前記ブロードキャスト暗号化方式に従って前記コンテンツを暗号化することと
をさらに含む、請求項１に記載の方法。
【請求項１０】
前記ブロードキャスト暗号化定義が、コンテンツを復号することを定義し、前記方法が、暗号化されたコンテンツを読み取ることと、
前記ブロードキャスト暗号化方式に従ってメディア・キー・ブロックを読み取ることと、
前記ブロードキャスト暗号化方式に基づいて、前記メディア・キー・ブロックを使用して前記コンテンツを復号することと
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記ブロードキャスト暗号化定義が疑似コードを含む、請求項１に記載の方法。
【請求項１２】
前記ブロードキャスト暗号化定義が文法に従う、請求項１に記載の方法。
【請求項１３】
前記文法がループを含まない、請求項１２に記載の方法。
【請求項１４】
ブロードキャスト暗号化がバイトコードを含む、請求項１に記載の方法。
【請求項１５】
前記ブロードキャスト暗号化定義をバイトコードにコンパイルすることと、前記バイトコードを実行することとをさらに含む、請求項１に記載の方法。
【請求項１６】
前記バイトコードを実行することが、仮想マシンをインスタンス化することを含む、請求項１５に記載の方法。
【請求項１７】
前記コンピュータ実行可能なネイティブ・コードが、クラウド環境内でサービスとして実行される、請求項１に記載の方法。
【請求項１８】
ブロードキャスト暗号化方式のランタイム・インスタンス化のためのコンピュータ・プログラムであって、プロセッサに、
ブロードキャスト暗号化定義を読み取ることであって、前記ブロードキャスト暗号化定義が、ブロードキャスト暗号化方式を定義し、第１、第２、および第３の関数定義を含む複数の関数定義を含む、前記読み取ることと、
前記複数の関数定義に基づいて、前記ブロードキャスト暗号化定義がコンテンツの暗号化または復号のいずれを定義するかを決定することと、
前記複数の関数定義に基づいて、前記ブロードキャスト暗号化方式の種類を決定することと、
前記ブロードキャスト暗号化定義をコンピュータ実行可能なネイティブ・コードにコンパイルすることと、
前記コンピュータ実行可能なネイティブ・コードを実行して前記ブロードキャスト暗号化方式に従ってキー・バンドルを生成することであって、前記バンドルが第１の暗号化キーを含む、前記生成することと、
前記コンピュータ実行可能なネイティブ・コードを実行して前記ブロードキャスト暗号化方式に従ってキー・ブロックを生成し、コンテンツ暗号化キーを、前記第１、第２、および第３の関数定義に対応する第１、第２、および第３の暗号化関数を決定することによって取得可能にすることと、
前記第１の暗号化キー、ならびに前記第１、第２、および第３の暗号化関数を使用してサブセット差分ツリー（subset difference tree）をトラバースしてコンテンツ暗号化キーを取得することと
を実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はブロードキャスト暗号化に関し、より具体的には、ブロードキャスト暗号化方式のランタイムにおけるインスタンス化に関連する。
【背景技術】
【０００２】
ブロードキャスト暗号化方式では、配信されるコンテンツへの許可されたアクセスを制限するために、サブセット差分ツリー（subset difference tree）手法を使用できる。ＮＮＬ（Naor、Naor、およびLotspiechに由来する）は、サブセット差分ツリーを利用して、ブロードキャスト暗号化システム内の空間効率の高いキー割り当てを提供する。ＮＮＬは、一方向性三重関数（one-way triple function）を使用してバイナリ・ツリーを下方にトラバースし、親ノードから暗号化キーを生成する。この三重関数の適用は、プロセッシング・キーおよびノードの左と右の子の決定を可能にする。しかし現在は事実上解読できない一方向性関数も、近い将来には解読される可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ブロードキャスト暗号化方式のランタイムにおけるインスタンス化のための方法およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００４】
本発明の一実施形態によれば、ブロードキャスト暗号化方式のランタイム・インスタンス化のための方法およびコンピュータ・プログラム製品が提供される。ブロードキャスト暗号化定義が読み取られる。ブロードキャスト暗号化定義は、ブロードキャスト暗号化方式を定義し、複数の関数定義を含む。複数の関数定義に基づいて、ブロードキャスト暗号化定義がコンテンツの暗号化または復号のいずれを定義するかが決定される。複数の関数定義に基づいて、ブロードキャスト暗号化方式の種類が決定される。
【０００５】
ここで、添付の図面を例としてのみ参照し、本発明の実施形態について説明する。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態に記載されたクライアント／サーバ・インターフェイスの概略表現を示す図である。
【図２】本開示の実施形態に記載された埋め込みモジュールの例を示す図である。
【図３】本発明の実施形態に記載されたクラウド・コンピューティング・ノードを示す図である。
【図４】本発明の実施形態に記載されたクラウド・コンピューティング環境を示す図である。
【図５】本発明の実施形態に記載された抽象モデル・レイヤを示す図である。
【発明を実施するための形態】
【０００７】
ブロードキャスト暗号化方式では、配信されるコンテンツへの許可されたアクセスを制限するために、サブセット差分ツリー手法を使用できる。ＮＮＬ（Naor、Naor、およびLotspiechに由来する）は、サブセット差分ツリーを利用して、ブロードキャスト暗号化システム内の空間効率の高いキー割り当てを提供する。ＮＮＬは、一方向性三重関数（one-way triple function）を使用してバイナリ・ツリーを下方にトラバースし、親ノードから暗号化キーを生成する。この三重関数の適用は、プロセッシング・キーおよびノードの左と右の子の決定を可能にする。コンテンツ・コンシューマ（Content consumers）は、特定の開始ノードに対応するラベル（キー）の一意の小さいセットが割り当てられ、三重関数を適用することによって、それらの開始ラベルの下で（開始ラベルによってカバーされた）任意のその他のラベルおよびキーを生成することができる。他のラベルからラベルを生成するこの機能は、ＮＮＬをコンパクトにし、特に、キーの最小セットをクライアントに配信することを可能にする。同様にＮＮＬは、暗号化の最小セットの配信も可能にする。ターゲット・デバイスごとに暗号化されたメッセージのバージョンを配信するのではなく、サブセット差分ツリー手法を使用して、デバイスのサブセットに関するメッセージを暗号化できる。
【０００８】
１つの既定の１方向性関数を適用して、ツリーをトラバースすることができる。この関数が事前に知られている場合、攻撃者は、総当たり攻撃によって追加キーを生成することができる。特に、既知の一方向性関数の結果を、すべての可能な入力に対して計算することができる。答えがいずれかの開始ラベルに一致すれば、一方向性関数は解読されてしまっており、攻撃者は、持つことが許可されていないラベルを生成している。攻撃者は、十分な計算能力を使用することによって、コンテンツ保護システムを回避することができる。総当たり攻撃の成功は、破滅的な結果になる可能性がある。攻撃者が、不正なラベルを生成して、任意のその他の許可されたコンテンツ・コンシューマになりすまし、コンテンツに対する不正なアクセス権限を取得することができるからである。答えが開始ラベルのセット全体と並列に比較される、効率的な攻撃を実装することができる。１つのラベルを計算された各答えと比較することが、複数のラベルを同時に比較することよりも著しく簡単であるということはない。攻撃者が開始ラベルの複数のセット（例えば、漏洩した複数のキーセット）を持っている場合、この並列性はさらに向上する。いずれかのラベルが解読されると、そのラベルの下のすべてのキーを、既知の三重関数を使用して容易に生成することができる。また、開始ラベルを生成するのに使用される方法（純粋な乱数生成以外）が解読される危険さえある。
【０００９】
そのような攻撃の危険を最小限に抑えるために、総当たり攻撃が実現不可能になるように、一方向性関数を選択することができる。特に、総当たり攻撃によって解読するのに法外な時間を要する関数を選択することができる。例えば、ＡＥＳ−１２８を使用する一方向性関数は、現時点では一般に解読が不可能であると考えられている。ただし攻撃者は、複数のコンピュータを備える、ますます大規模化するクラウド（またはボットネット）にアクセスすることができ、各コンピュータの平均的な計算能力は、１８カ月ごとに２倍になっている。計算能力が増加し続けている状況で、攻撃者は、毎年約１ビット大きくなる暗号強度の暗号を総当たり攻撃によって解読することができる。加えて、復号の効率を飛躍的に高めることができる（ハードウェアまたはアルゴリズムの）技術開発が時々行われる（例えば、レインボー・テーブル、ＣＰＵによるＡＥＳのサポート、マルチコア並列化、ＧＰＵにおける大規模な並列化、ＦＰＧＡ、量子計算）。これらの進行中の進歩を考えると、現在は事実上解読できない一方向性関数も、近い将来には解読される可能性がある。
【００１０】
ブロードキャスト暗号化において総当たり攻撃の危険に対処するために、本開示は、ＮＮＬやキーのジャストインタイム生成などの差分に基づく方式を含むブロードキャスト暗号化方式の動的再定義を提供する。配置されたシステム内でブロードキャスト暗号化方式の動的変更を提供することによって、攻撃者が関数を推測する可能性が制限される。ブロードキャスト暗号化方式における特定の参加者に使用される関数を攻撃者が知っている場合でさえ、この方式における複数の参加者間での変形の可能性により、この知識の有効性は制限される。さらに、システム内での解読に応答して、この解読の影響を最小限に抑えるために、ブロードキャスト暗号化方式全体を動的に変更することができる。
【００１１】
サブセット差分ツリーの特定のインスタンスは、複数の特徴によって区別される。キーセットの高さは、サブセット差分ツリーの高さを決定する。キー幅は、個々のキーのサイズを決定する。ラベル関数は、ノードＩＤからラベルが生成される方法を決定する。三重関数は、ノードの左トラバーサル・キーおよび右トラバーサル・キー（left and right traversal keys）、ならびにプロセッシング・キーを決定する。これらのパラメータに対する変形が可能である。例えば、特定のインスタンスは、高さが９のキーセット、１２８ビットのキー幅を持つことができ、三重関数を、ＡＡＣＳで定義されているように、ＡＥＳ−３Ｇにすることができる。本開示の一部の実施形態では、三重関数ではなく、３つの別々の関数が、ノードの右キー、左キー、およびプロセッシング・キーのそれぞれに対して定義される。
【００１２】
本発明の実施形態では、任意のブロードキャスト暗号化の配置に対して、ジャストインタイム・コンパイラが提供される。ブロードキャスト暗号化の配置のパラメータが事前に決定される代替システムは、パラメータの１つのセットまたはパラメータの小集合を使用するように、ハードコードされる。そのようなハードコードされたシステムの変更は、すでに配置されている場合のあるシステムに追加コードを追加することを含む。配置済みシステムを変更するには、パッチを適用するために、コンテンツ・コンシューマとコンテンツ・プロバイダの両方のソフトウェアをシャットダウンすることが必要になる場合があり、それによってダウンタイムが生じる。さらに、広範囲に配置されたシステム内のすべてのプロバイダおよびコンシューマにパッチを適用するのは、極めて複雑であり、時間がかかる。加えて、ハードコードされたシステムは、性能を向上させるために、ハードウェア最適化、並列処理、クラウド処理をいずれも利用しない。
【００１３】
本開示の１つの態様では、任意のブロードキャスト暗号化構成の記述に使用できるプログラミング言語が提供される。一部の実施形態では、行列に基づく方式または差分に基づく方式を記述できる。この言語は、小さく、シンプル、かつ安全であり、サンドボックス内での実行に適している。この言語での記述は、安全性がチェックされ、ネイティブな最適化されたサンドボックス・コードにコンパイルされることが可能である。そのようなコードは、基盤になるハードウェアの速度を最大限に活用し、実行時に再チェックを行う必要がない。その結果、キーの生成中にコードを自由に実行できる。これによって、キー生成の代替手法よりも数千倍高速にキーを生成すると同時に、優れた安全性を維持することができる。
【００１４】
この言語は柔軟であり、可能性のある無数の配置の表現を可能にする。この言語を解釈してコンパイルすることができるランタイムを提供することによって、任意の再初期化を実行できるようになる。これによって、パッチを適用することなく配置済みシステムを変更できるようにすると同時に、トランザクション中に再初期化できるようにし、多様な形態のキー割り当て方式を可能にする。
【００１５】
一部の実施形態では、この言語の入力コードはトークン化され、関数呼び出しおよび関数呼び出しのオペランドのリストに変換される。その後、このリストを実行時に解釈することができる。トークン化プロセスにおいて、未知のトークンを破棄することができ、それによって、生成された関数呼び出しのリストが有効であることを保証する。一部の実施形態では、関数呼び出しのリストを、マシン・コードへのコンパイル前に、中間言語にコンパイルすることができる。中間言語は、ＣまたはＪａｖａ（Ｒ）などの既知のプログラミング言語にすることができる。中間言語は、Ｊａｖａｓｃｒｉｐｔ（Ｒ）、ＰＨＰ、Ｐｅｒｌ、またはＰｙｔｈｏｎなどのインタープリタ型言語にすることもできる。一部の実施形態では、入力コードが、Ｊａｖａ仮想マシン（ＪＶＭ：Java Virtual Machine（Ｒ））などの仮想マシンによる実行に適したバイトコードにコンパイルされる。
【００１６】
一部の実施形態では、構文が拡張可能である。そのような実施形態では、コンパイラの変更によって、または自己完結型ソフトウェア・モジュールの追加によって、追加関数を本開示の言語に追加することができる。このようにして、追加関数が公開された場合でも、下位互換性が維持される。
【００１７】
一部の実施形態では、前述の言語を解釈するように構成されたサーバにキー生成サービスを要求するために、クライアントＡＰＩが提供される。一部の実施形態では、クライアント・ライブラリがリクエストを複数のサーバにディスパッチし、応答を整理する。この方法によって、大規模な並列化が可能になる。一部の実施形態では、複数のサーバ・インスタンスが、クライアントもホストする特定の物理マシンに局在する。一部の実施形態では、複数のサーバ・インスタンスが、ＬＡＮ、ＷＡＮ、またはインターネットなどのネットワーク全体に存在し、ネットワーク接続を介してアクセス可能である。一部の実施形態では、複数のサーバ・インスタンスがクラウド内に存在し、同じブロードキャスト暗号化定義を使用して初期化される。そのようなクラウド配置は、多くの物理マシンによる、特定のブロードキャスト暗号化定義に従う並列的なキーの生成を許容し、そのようなシステムを任意のサイズにスケーリングすることができる。
【００１８】
一部の実施形態では、クライアント・ライブラリが、複数のサーバ・インスタンス間で計算対象のサブツリーを割り当て、その結果を整理する役割を担う。他の実施形態では、中間サーバがクライアントＡＰＩをエクスポートするが、計算を複数のサーバ・インスタンスに委任する。そのような実施形態では、中間サーバが結果を整理する役割を担う。整理を行う実体は、クライアント・ライブラリまたは中間サーバのいずれであろうと、ターゲット・サーバ・インスタンスに割り当てられた作業を追跡する役割を担う。一部の実施形態では、ワークロードが、分散のために、計算的にほぼ等しい作業単位に分割される。他の実施形態では、ワークロードが、ターゲット・サーバ・インスタンスの計算能力に比例する計算複雑度を持つ作業単位に分割される。一部の実施形態では、ワークロードが複数の小さいスライスに分割され、複数のサーバ・インスタンスのそれぞれに１つまたは複数のスライスが割り当てられる。
【００１９】
一部の実施形態では、サーバ側のコードが、コンテンツ・コンシューマに提供するための復号キーのセット、および個別のコンテンツ・メッセージを暗号化するための暗号化キー・バンドル（encryption key bundles）を生成する。一部の実施形態では、ブロードキャスト暗号化構成で使用するために初期化できるランタイムをホストする一般化されたコンテンツ・コンシューマが提供される。
【００２０】
図１は、ジャストインタイム・サーバの実施形態例の概略表現を示している。サーバ１０１は、クライアント１０２と通信してサブセット差分ツリーを生成する。クライアント１０２は、要求されたブロードキャスト暗号化インスタンスを表す疑似コードを使用してメソッド１０３を呼び出すことによって、サーバ・インスタンスを初期化する。クライアント１０２は、キーセットを要求する（１０４）。要求に応答して、サーバ１０１は、ブロードキャスト暗号化仕様に従ってキーセット１０５を生成して返す。クライアントは、ブロードキャスト暗号化仕様に従って引数ｕ：ｕｖを使用してメッセージを暗号化するように要求する（１０６）。暗号化されたメッセージが返される（１０７）。
【００２１】
挿入図１では、差分ブロードキャスト暗号化インスタンスの定義例が示されている。この例では、キーセットの高さが２５であり、キーセットの幅が１２８である。ＡＥＳ−１２８ブロック暗号を適用することによってラベルＩＤからノード・ラベルを決定するｌａｂｅｌ関数が提供される。特に、定数を使用してＡＥＳ−１２８復号（ａｅｓ１２８ｄで示される）をノードＩＤに適用することによって、中間値ｘが計算される。中間値を使用してＡＥＳ−１２８復号を定数値に適用することによって、ラベルが計算される。ｌｅｆｔ関数、ｃｅｎｔｅｒ関数、およびｒｉｇｈｔ関数が同様に定義される。これらのｌｅｆｔ関数、ｃｅｎｔｅｒ関数、およびｒｉｇｈｔ関数は、１つの三重関数を置き換える。ただし、本開示の言語を使用して、ＡＥＳ−Ｇ３などの三重関数を表現することができる。この例では、ノード・ラベルを使用してＡＥＳ−１２８復号を定数に適用し、その結果とその定数の排他的ＯＲを計算することによって、左キー、右キー、および中央キーが取得される。
【００２２】
【表１】
0006697478.tif 000002
【００２３】
本開示の言語を使用して、任意のブロードキャスト暗号化方式を記述することができる。例えば、より大きいキーを使用するより強力な方式が挿入図２に示されている。より小さいキーと、ＡＥＳの代わりにＤＥＳ−５６を使用するより弱い方式が挿入図３に示されている。パブリックキー・インフラストラクチャの配置で使用するのに適した、キーセットの高さが１の方式が挿入図４に示されている。最後に、コンテンツ・コンシューマ・デバイスで使用するのに適した例が挿入図５に示されており、この例ではｌａｂｅｌ関数を省略している。
【００２４】
【表２】
0006697478.tif 000003
【００２５】
【表３】
0006697478.tif 000004
【００２６】
【表４】
0006697478.tif 000005
【００２７】
【表５】
0006697478.tif 000006
【００２８】
上の例に加えて、本開示のシステムを使用して、行列に基づくブロードキャスト暗号化方式を定義することができる。例として、行列に基づく方式を、上の例のｌａｂｅｌ関数の代わりに行および列を指定することによって生成することができる。そのような一例が挿入図６に示されている。
【００２９】
【表６】
0006697478.tif 000007
【００３０】
挿入図６の例では、コンテンツ・コンシューマには、挿入図７に示されているデコーダ・アルゴリズムに加えて、挿入図８に示されているキーセットを提供することができる。暗号化されたコンテンツがコンテンツ・プロバイダによって提供された場合、メディア・キー・ブロック（ＭＫＢ：media key block）が生成されて、許可されたコンテンツ・コンシューマがそのコンテンツを復号できるようにする。本開示の実施形態に従うメディア・キー・ブロックの例が挿入図９に示されている。その後、コンテンツ・コンシューマは、コンテンツ・プロバイダによって暗号化されたコンテンツを受信し、挿入図６で与えられるアルゴリズムを使用して復号する。ＭＫＢおよびキーセットの例では、行列の列と行の指定が、行の先頭で「＠」記号によって区切られている（例えば、「２＠１３」）。ただし、本開示はこの文法に限定されず、本開示の範囲から逸脱せずに、さまざまな代替の文法およびエンコーディングを採用できることが理解されるであろう。
【００３１】
【表７】
0006697478.tif 000008
【００３２】
【表８】
0006697478.tif 000009
【００３３】
【表９】
0006697478.tif 000010
【００３４】
一部の実施形態では、１つのファイルが、コンテンツ・コンシューマに必要な復号方式の定義と、そのコンシューマのキーセットの両方を含むことができる。このようにして、コンテンツ・コンシューマは、簡単かつ動的にブロードキャスト暗号化システムに参加するように完全に構成されることが可能である。本開示の実施形態に従うコンテンツ・コンシューマは、定義を受け取ったときに、定義された方式の種類をその定義から推測する。例えば、ｌｅｆｔ関数およびｒｉｇｈｔ関数の存在は、ツリーに基づくシステムが定義されているという推測を可能にし、ｒｏｗ指示子およびｃｏｌｕｍｎ指示子が、行列に基づくシステムが定義されているという推測を可能にする。上の例に示されているように、コンテンツ・コンシューマがＭＫＢを適切なキーセットに関連付けるために、グローバル一意識別子（ＧＵＩＤ：Globally Unique Identifier）を定義に含めることができる。一部の実施形態では、コンテンツ・コンシューマがＭＫＢに適したキーセットを持っていない場合、そのコンテンツ・コンシューマは新しいキーセットが提供されるように要求することができる。
【００３５】
以上から明らかなように、本主題の複数の実装は、自由に相互運用することができる。例えば、人間が読めるコードを読み取るインタープリタの実装は、等価なバイトコードを読み取る仮想マシンの実装とやはり相互運用することができる。定義の特定のエンコーディングが同じ文法に従うという条件で、任意のエンコーディングを採用することができる。さらに説明すると、ＦＰＧＡは、ブロードキャスト暗号化方式定義を表すバイトコードを読み取って実行することができる。同様に、特殊な命令セットに従う定義を直接実行するＣＰＵまたはコプロセッサを提供することができる。さまざまなエンコーディングと命令セットの間（例えば、バイトコードと、人間が読めるコードの間）で定義を変換するために、トランスレータまたはクロスコンパイラを提供できる。
【００３６】
以上からも明らかなように、本主題の特定の実装は、それが読み取る定義に基づいて、コンテンツ・コンシューマ、コンテンツ・プロバイダ、またはその両方として機能することができる。例えば、統合されたコプロセッサを、前述したようにネイティブにバイトコードを実行するように適応させることができる。コプロセッサには、暗号化に必要な関数を含んでいる行列に基づく方式の定義を提供することができる。コプロセッサには、差分に基づく方式の定義を提供することもできるが、提供できるのは、コンテンツの復号に必要な情報のみである。この例では、コプロセッサは、２つの別々のブロードキャスト方式を使用して、デバイスがコンシューマおよびプロバイダとして機能できるようにする。
【００３７】
一部の実施形態では、クライアントＡＰＩが、ブロードキャスト暗号化インスタンスの記述を使用してキー・ジェネレータを初期化する初期化関数を備える。一部の実施形態では、この記述は、挿入図１〜５において上で示されている形態にすることができる疑似コードで提供される。クライアントＡＰＩは、初期化が発生した後に、キーセットまたは暗号化された値を生成するために、追加関数を含むことができる。
【００３８】
本開示のジャストインタイム手法は、ブロードキャスト暗号化構成間でのダウンタイムのない移行を可能にする。さらに、ジャストインタイム手法は、キーセット全体で、または時間経過に伴ってパラメータが変化するブロードキャスト暗号化方式の使用を可能にする。特に、本開示のジャストインタイム手法は、「多様な形態の暗号化キー割り当て方式」という名称で一般に発明されて譲渡された出願に記載されている方式などの、多様な形態のブロードキャスト暗号化方式の柔軟な実装を可能にする。加えて、高さが可変のキーセットを使用できる。
【００３９】
一部の実施形態では、ブロードキャスト暗号化記述は、２５６ビットの変数を使用する。他の実施形態では、大きいまたは小さい変数サイズが使用される。一部の実施形態では、ＡＥＳ−１２８などの、可変長よりも小さい固定長の入力を期待する関数が、入力変数の最下位ビットに適用される。２５６ビットをラベルおよびノードＩＤに割り当てることによって、２５６ビットのツリー空間が使用可能になる。特に、キーセットの高さは、ビット単位のキーの長さよりも１つ小さい値に制約される。より大きい変数サイズを使用する実施形態では、そのサイズに応じて、ツリー空間のサイズが増加する。
【００４０】
一部の実施形態では、キー幅は８ビットの倍数でなければならない。他の実施形態では、キー幅は８ビットの倍数に制約されず、ビット圧縮が適用されて、入力値をバイト境界に揃える。
【００４１】
ブロードキャスト暗号化生成は、リンクされたライブラリによって提供されることが可能である。あるいは、ブロードキャスト暗号化生成は、メッセージングＡＰＩを介してアクセスできるスタンドアロン・プログラムによって提供されることが可能である。一部の実施形態では、スタンドアロン・ブロードキャスト暗号化生成プログラムに、ローカル・パイプを介してアクセスできる。他の実施形態では、ブロードキャスト暗号化生成プログラムに、リモート・ポートを介して、例えば、ｉｎｅｔｄまたはｎｅｔｃａｔを介するそのポート上のブロードキャスト暗号化生成プログラムへのトラフィックをパイプ化する（piping）ことによって、アクセスできる。一部の実施形態では、複数のネットワークのアクセス可能なブロードキャスト暗号化ジェネレータを使用することができ、分散処理を可能にする。一部の実施形態では、リモート・ブロードキャスト暗号化生成プログラムに、ＩＰＳｅｃまたはＳＳＨによって提供されるリンクなどの暗号化されたリンクを介してアクセスできる。
【００４２】
一部の実施形態では、ブロードキャスト暗号化生成は、クラウド・サービスとして提供される。ブロードキャスト暗号化生成をクラウド内で並列化することによって、ＡＡＣＳにおいて提供されるようなブロードキャスト暗号化インスタンス全体を、ジャストインタイム手法に基づいて生成することができる。例えば、すべてのＡＡＣＳを、１２個のコアを使用して約７分以内で生成することができる。５０００個のコアを使用すると、すべてのＡＡＣＳを約１秒以内で生成することができる。
【００４３】
一部の実施形態では、デバイス固有の暗号化を可能にするために、ブロードキャスト暗号化生成が小型デバイスに組み込まれる。そのようなデバイスは、車のキー、クレジット・カード、バッジ・リーダ、ナノコンピュータ、電力計、ペースメーカーなどの埋め込み型医療機器、交通信号機を含む。一般に、埋め込み型の無線でアクセス可能なデバイスは、いずれも、本開示のジャストインタイム手法によるブロードキャスト暗号生成と共に使用するのに適している。一部の実施形態では、ブロードキャスト暗号化仕様が、セキュアなチャネルを介して初期化ステップで提供される。
【００４４】
図２を参照すると、埋め込みモジュールの例が示されている。埋め込みモジュール２００は、ＡＳＩＣまたはその他の回路にすることができる。埋め込みモジュール２００は、モバイル・デバイスまたはその他のコンテンツ・コンシューマに含めることができる。埋め込みモジュール２００は、乱数ジェネレータ２０１、ブロードキャスト暗号化（ＢＥ）実行モジュール２０２、およびプライベート・キー２０３を含む。ブロードキャスト暗号化実行モジュール２０２は、乱数ジェネレータ２０１およびプライベート・キー２０３にアクセスできる。ブロードキャスト暗号化実行モジュール２０２は、デバイス内の他のコンポーネントとインターフェイスをとることができる。ブロードキャスト暗号化実行モジュール２０２は、複数のブロードキャスト暗号化サービスを提供する。ブロードキャスト暗号化実行モジュール２０２に乱数が要求される場合がある。ブロードキャスト暗号化実行モジュールは、乱数ジェネレータ２０１に乱数を要求し、それを要求元に返す。初期化ステップにおいて、前述のブロードキャスト暗号化定義がブロードキャスト暗号化実行モジュール２０２に提供される。ブロードキャスト暗号化実行モジュール２０２は、プライベート・キー２０３を使用して定義を暗号化する。その後、暗号化された定義を、後で取り出すために、デバイス内のコンピュータ可読ストレージに記憶することができる。ブロードキャスト暗号化実行モジュール２０２は、暗号化された定義が提供されたときに、引数ｕ：ｕｖのキーを生成して返す。ブロードキャスト暗号化実行モジュール２０２は、暗号化された定義が提供されたときに、引数ｕ：ｕｖに従って引数のメッセージをエンコードして返す。ブロードキャスト暗号化実行モジュール２０２は、適切なクライアント・キー、暗号化された定義、および引数ｕ：ｕｖが提供されたときに、メッセージをデコードして返す。ブロードキャスト暗号化実行モジュール２０２の外部にクライアント・キーを記憶することができる。
【００４５】
前述したように、暗号化されたデータの配信に加えて、本開示のジャストインタイム手法によるＮＮＬ生成を使用して、漏洩したキーを迅速に特定することができる。加えて、本開示のジャストインタイム手法によるＮＮＬ生成を、現実的なデータセットを使用した攻撃のシミュレーションに使用することができる。
【００４６】
本開示にはクラウド・コンピューティングの詳細な説明が含まれているが、ここで示された内容の実装は、クラウド・コンピューティング環境に限定されないと、あらかじめ理解される。本発明の実施形態は、既知または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【００４７】
クラウド・コンピューティングは、構成可能な計算リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間とサービス・プロバイダとのやりとりを最小限に抑えて、それらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つの配置モデルを含むことができる。
【００４８】
特徴は、次のとおりである。
オンデマンドのセルフ・サービス：クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどのコンピューティング能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス：能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、ＰＤＡ）による利用を促進する。
リソース・プール：プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当てられ、再度割り当てられる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベル（例えば、国、州、データセンタ）では、場所を指定できる場合がある。
迅速な順応性：能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトすることができ、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、無制限に見え、任意の量をいつでも購入できる。
測定されるサービス：クラウド・システムは、計測機能を活用して、サービスの種類に適した抽象レベル（例えば、ストレージ、処理、帯域幅、アクティブなユーザ・アカウント）で、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、およびレポートすることができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【００４９】
サービス・モデルは、次のとおりである。
ＳａａＳ（Software as a Service）：利用者に提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションの利用である。それらのアプリケーションは、Ｗｅｂブラウザ（例えば、Ｗｅｂベースの電子メール）などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
ＰａａＳ（Platform as a Service）：利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者によって作成または取得されたアプリケーションをクラウド・インフラストラクチャに配置することである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、配置されたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
ＩａａＳ（Infrastructure as a Service）：利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者はオペレーティング・システムやアプリケーションを含む任意のソフトウェアを配置して実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、および配置されたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント（例えば、ホスト・ファイアウォール）を限定的に制御できる。
【００５０】
配置モデルは、次のとおりである。
プライベート・クラウド：このクラウド・インフラストラクチャは、組織のためにのみ運用される。これは、この組織またはサード・パーティによって管理することができ、構内または構外に存在することができる。
コミュニティ・クラウド：このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事（例えば、任務、セキュリティ要件、ポリシー、コンプライアンスに関する考慮事項）を共有している特定のコミュニティをサポートする。これは、これらの組織またはサード・パーティによって管理することができ、構内または構外に存在することができる。
パブリック・クラウド：このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術（例えば、クラウド間の負荷を平衡させるためのクラウド・バースト）によって固有の実体を残したまま互いに結合された２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【００５１】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを備えるインフラストラクチャである。
【００５２】
ここで図３を参照すると、クラウド・コンピューティング・ノードの例の概略図が示されている。クラウド・コンピューティング・ノード１０は、適切なクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載された本発明の実施形態の使用または機能の範囲に関して、いかなる制限も示唆することを意図されていない。いずれにせよ、クラウド・コンピューティング・ノード１０は、前述した任意の機能を実装すること、または実行すること、あるいはその両方を行うことができる。
【００５３】
クラウド・コンピューティング・ノード１０内には、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるコンピュータ・システム／サーバ１２が存在する。コンピュータ・システム／サーバ１２での使用に適している可能性がある既知のコンピューティング・システム、環境、または構成、あるいはその組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらの任意のシステムまたはデバイスを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００５４】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令の一般的な文脈で説明することができる。通常、プログラム・モジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータ・システム／サーバ１２は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行できる。分散クラウド・コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの両方のコンピュータ・システムの、メモリ・ストレージ・デバイスを含む記憶媒体に配置できる。
【００５５】
図３に示すように、クラウド・コンピューティング・ノード１０内のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム／サーバ１２のコンポーネントは、１つまたは複数のプロセッサまたはプロセッシング・ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含むさまざまなシステム・コンポーネントをプロセッサ１６に結合するバス１８を含むことができるが、これらに限定されない。
【００５６】
バス１８は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、複数種類のバス構造のうちの任意の１つまたは複数を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（MicroChannel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、ＰＣＩ（Peripheral Component Interconnect）バスを含むが、これらに限定されない。
【００５７】
コンピュータ・システム／サーバ１２は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２によってアクセスできる任意の使用可能な媒体にすることができ、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体の両方を含む。
【００５８】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、その他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム記憶媒体をさらに含むことができる。例として、取り外し不可、不揮発性の磁気媒体（図示されておらず、通常は「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために、ストレージ・システム３４を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、１つまたは複数のデータ媒体インターフェイスによってバス１８に接続することができる。下でさらに示され、説明されるように、メモリ２８は、本発明の実施形態の機能を実行するように構成された（例えば、少なくとも１つの）プログラム・モジュールのセットを備える少なくとも１つのプログラム製品を含むことができる。
【００５９】
（少なくとも１つの）プログラム・モジュール４２のセットを含んでいるプログラム／ユーティリティ４０は、例えばメモリ２８に記憶することができ、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データにも記憶できるが、これらに限定されない。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組合せは、それぞれネットワーク環境の実装を含むことができる。プログラム・モジュール４２は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
【００６０】
また、コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４などの１つまたは複数の外部デバイス１４、ユーザがコンピュータ・システム／サーバ１２と情報をやりとりできるようにする１つまたは複数のデバイス、またはコンピュータ・システム／サーバ１２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはそれらの組合せと通信することができる。そのような通信は、入力／出力（Ｉ／Ｏ：Input/Output）インターフェイス２２を介して行うことができる。さらに、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ：Local Area Network）、一般的な広域ネットワーク（WAN：Wide Area Network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはそれらの組合せなどの１つまたは複数のネットワークと、ネットワーク・アダプタ２０を介して通信することができる。図示されているように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、コンピュータ・システム／サーバ１２と併用できると理解されるべきである。その例は、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどを含むが、これらに限定されない。
【００６１】
ここで図４を参照すると、クラウド・コンピューティング環境５０が示されている。図示されているように、クラウド・コンピューティング環境５０は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス（例えば、ＰＤＡ（Personal Digital Assistant）または携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはそれらの組合せ）が通信できる１つまたは複数のクラウド・コンピューティング・ノード１０を備える。ノード１０は、互いに通信することができる。ノード１０は、前述したプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはそれらの組合せなど、１つまたは複数のネットワーク内で物理的または仮想的にグループ化することができる（図示せず）。これによって、クラウド・コンピューティング環境５０は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないサービスとしてインフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはそれらの組合せを提供できる。図４に示されたコンピューティング・デバイス５４Ａ〜Ｎの種類は、例示のみが意図されており、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意の種類のネットワークまたはネットワーク・アドレス指定可能な接続（例えば、Ｗｅｂブラウザを使用した接続）あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【００６２】
ここで図５を参照すると、クラウド・コンピューティング環境５０（図４）によって提供される機能的抽象レイヤのセットが示されている。図５に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム（一例を挙げると、ＩＢＭ（Ｒ）  ｚＳｅｒｉｅｓ（Ｒ）システム）、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャ・ベース・サーバ（一例を挙げると、ＩＢＭ  ｐＳｅｒｉｅｓ（Ｒ）システム）、ＩＢＭ  ｘＳｅｒｉｅｓ（Ｒ）システム、ＩＢＭ  ＢｌａｄｅＣｅｎｔｅｒ（Ｒ）システム、ストレージ・デバイス、ネットワークおよびネットワーク・コンポーネントを含む。ソフトウェア・コンポーネントの例は、ネットワーク・アプリケーション・サーバ・ソフトウェア（一例を挙げると、ＩＢＭ  ＷｅｂＳｐｈｅｒｅ（Ｒ）アプリケーション・サーバ・ソフトウェア）、およびデータベース・ソフトウェア（一例を挙げると、ＩＢＭ  ＤＢ２（Ｒ）データベース・ソフトウェア）を含む。（ＩＢＭ、ｚＳｅｒｉｅｓ、ｐＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、およびＤＢ２は、世界中の多くの管轄区域で登録されているＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの登録商標である）
仮想化レイヤ６２は、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントなどの仮想的実体を提供できる抽象レイヤを備える。
一例を挙げると、管理レイヤ６４は、以下で説明される機能を提供できる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定は、クラウド・コンピューティング環境内でリソースが利用された際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウドの利用者およびタスクのＩＤ検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータルは、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意（ＳＬＡ：Service Level Agreement）計画および実行は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、ＳＬＡに従って行う。
ワークロード・レイヤ６６は、クラウド・コンピューティング環境を利用できる機能の例を示している。このレイヤから提供できるワークロードおよび機能の例は、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想クラスルーム教育の配信、データ分析処理、トランザクション処理、およびブロードキャスト暗号化方式のランタイム・インスタンス化を含む。
【００６３】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはこれらの組合せにすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる１つまたは複数のコンピュータ可読記憶媒体を含んでもよい。
【００６４】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶できる有形のデバイスにすることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せにすることができるが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-onlymemory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasableprogrammable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組合せを含む。本明細書において使用されているコンピュータ可読記憶媒体は、本質的に、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
【００６５】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワークあるいはこれらの組合せ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを備えてもよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【００６６】
本発明の処理を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードにすることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータを、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide areanetwork）を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続を、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行うことができる。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行できる。
【００６７】
本発明の態様は、本明細書において、本発明の実施形態に記載された方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せは、コンピュータ可読プログラム命令によって実装できると理解されるであろう。
【００６８】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて規定された機能／動作を実装するための手段を構築するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて規定された機能／動作の態様を実装する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイスあるいはこれらの組合せに特定の方法で機能するように指示することができるものであってもよい。
【００６９】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて規定された機能／動作を実装するように、コンピュータ実装プロセスを生成するべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイス上にロードされ、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【００７０】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に記載されているシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および処理を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表すことができる。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生することができる。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装できるということにも注意する。
【００７１】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。説明された実施形態の範囲を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするため選択されている。
【図１】
0006697478.tif 000011
【図２】
0006697478.tif 000012
【図３】
0006697478.tif 000013
【図４】
0006697478.tif 000014
【図５】
0006697478.tif 000015