(57)【特許請求の範囲】
【請求項１】
方法であって、
デバイスが備えるハードウェア・プロセッサにより、前記デバイスに与えられ、非一時的な機械可読媒体にコード化された鍵束であって、第１の暗号鍵および関連する第１の暗号関数識別子を含む当該鍵束を読み出すことと、
前記ハードウェア・プロセッサにより、ネットワークを介して、または、前記機械可読媒体とは異なる媒体から、暗号化されたコンテンツに対応する、サブセット差分ツリー手法に従った鍵ブロックを受信することと、
前記ハードウェア・プロセッサにより、少なくとも前記第１の暗号関数識別子を用いて前記第１の暗号関数識別子に対応する第１の暗号三重関数を決定することと、
前記ハードウェア・プロセッサにより、前記鍵ブロック、前記第１の暗号鍵および前記第１の暗号三重関数を使用してサブセット差分ツリーをトラバースしてコンテンツ暗号鍵を取得することであって、前記コンテンツ暗号鍵は、前記暗号化されたコンテンツを復号するために用いられる、当該コンテンツ暗号鍵を取得することと
を含む方法。
【請求項２】
前記コンテンツがマルチメディア・データを含む、請求項１に記載の方法。
【請求項３】
前記第１の暗号関数識別子がソルト値を含む、請求項１または２に記載の方法。
【請求項４】
前記第１の暗号関数識別子が乱数のシードを含む、請求項１または２に記載の方法。
【請求項５】
前記第１の暗号三重関数がブロック暗号を含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記ブロック暗号が、ＡＥＳ、Ｂｌｏｗｆｉｓｈ、Ｃ２ブロック暗号、Ｃａｍｅｌｌｉａ、ＣＡＳＴ−１２８、ＣＡＳＴ−２５６、ＣＬＥＦＩＡ、Ｃｒｙｐｔｍｅｒｉａ、ＤＥＳ、ＦＥＡＬ、ＧＯＳＴ  ２８１４７−８９、ＩＣＥ、ＩＤＥＡ、ＫＡＳＵＭＩ、ＬＯＫＩ９７、Ｌｕｃｉｆｅｒ、ＭａｃＧｕｆｆｉｎ、ＭＡＧＥＮＴＡ、ＭＡＲＳ、ＭＩＳＴＹ１、ＲＣ２、ＲＣ５、ＲＣ６、Ｓｋｉｐｊａｃｋ、ＳＭＳ４、ＴＥＡ、三重ＤＥＳ、Ｔｗｏｆｉｓｈ、およびＸＴＥＡからなる群から選択される、請求項５に記載の方法。
【請求項７】
前記鍵束が、第２の暗号鍵と、関連する第２の暗号関数識別子とを含み、前記サブセット差分ツリーをトラバースすることが、
前記第２の暗号関数識別子に対応する第２の暗号三重関数を決定することと、
前記第２の暗号三重関数を使用して前記サブセット差分ツリーのサブツリーをトラバースすることとを含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
方法であって、
ハードウェア・プロセッサにより、所定のデバイスに与えられ、非一時的な機械可読媒体にコード化される鍵束であって、第１の暗号鍵および関連する第１の暗号関数識別子を含む当該鍵束を提供することと、
前記ハードウェア・プロセッサにより、ネットワークを介して、または、前記機械可読媒体とは異なる媒体へ、暗号化されたコンテンツに対応する、サブセット差分ツリー手法に従った鍵ブロックを提供することであって、前記鍵ブロックは、前記暗号化されたコンテンツが、
前記鍵束が提供された前記所定のデバイスのプロセッサにより、少なくとも前記第１の暗号関数識別子を用いて前記第１の暗号関数識別子に対応する第１の暗号三重関数を決定することと、
前記所定のデバイスのプロセッサにより、前記鍵ブロック、前記第１の暗号鍵および前記第１の暗号三重関数を使用してサブセット差分ツリーをトラバースし、コンテンツ暗号鍵を取得することと、
前記所定のデバイスのプロセッサにより、復号されたコンテンツを取得するために前記コンテンツ暗号鍵を前記暗号化されたコンテンツに適用することと
によって、復号可能であるように選択される、当該提供することと
を含む方法。
【請求項９】
前記コンテンツがマルチメディア・データを含む、請求項８に記載の方法。
【請求項１０】
前記第１の暗号関数識別子がソルト値を含む、請求項８または９に記載の方法。
【請求項１１】
前記第１の暗号関数識別子が乱数のシードを含む、請求項８または９に記載の方法。
【請求項１２】
前記第１の暗号三重関数がブロック暗号を含む、請求項８〜１１のいずれか１項に記載の方法。
【請求項１３】
前記ブロック暗号が、ＡＥＳ、Ｂｌｏｗｆｉｓｈ、Ｃ２ブロック暗号、Ｃａｍｅｌｌｉａ、ＣＡＳＴ−１２８、ＣＡＳＴ−２５６、ＣＬＥＦＩＡ、Ｃｒｙｐｔｏｍｅｒｉａ、ＤＥＳ、ＦＥＡＬ、ＧＯＳＴ  ２８１４７−８９、ＩＣＥ、ＩＤＥＡ、ＫＡＳＵＭＩ、ＬＯＫＩ９７、Ｌｕｃｉｆｅｒ、ＭａｃＧｕｆｆｉｎ、ＭＡＧＥＮＴＡ、ＭＡＲＳ、ＭＩＳＴＹ１、ＲＣ２、ＲＣ５、ＲＣ６、Ｓｋｉｐｊａｃｋ、ＳＭＳ４、ＴＥＡ、三重ＤＥＳ、Ｔｗｏｆｉｓｈ、およびＸＴＥＡからなる群から選択される、請求項１２に記載の方法。
【請求項１４】
前記鍵束が、第２の暗号鍵および関連する第２の暗号関数識別子を含み、前記サブセット差分ツリーをトラバースすることが、
前記第２の暗号関数識別子に対応する第２の暗号三重関数を決定することと、
前記第２の暗号三重関数を使用して前記サブセット差分ツリーのサブツリーをトラバースすることとを含む、請求項８〜１３のいずれか１項に記載の方法。
【請求項１５】
方法であって、
ハードウェア・プロセッサが、サブセット差分ツリーの割り当てられた鍵空間を決定することであって、前記割り当てられた鍵空間は、暗号三重関数のセットによってトラバース可能である、当該決定することと、
前記ハードウェア・プロセッサが、前記サブセット差分ツリーの未使用の鍵を選択することと、
前記ハードウェア・プロセッサが、前記暗号三重関数のセットに含まれないトラバーサル関数を選択することと、
前記ハードウェア・プロセッサが、所定のデバイスに与えられ、非一時的な機械可読媒体にコード化される鍵束であって、前記未使用の鍵と前記トラバーサル関数を識別する識別子とを含む当該鍵束を提供することと
を含む方法。
【請求項１６】
前記鍵束は、暗号化されたコンテンツを復号するために用いられ、前記暗号化されたコンテンツは、
前記鍵束が与えられた前記所定のデバイスのプロセッサが、前記識別子に対応する第１の暗号三重関数を決定することと、
前記所定のデバイスのプロセッサが、コンテンツ暗号鍵を取得するために前記未使用の鍵および前記第１の暗号三重関数を使用して前記サブセット差分ツリーをトラバースすることと、
前記所定のデバイスのプロセッサが、復号されたコンテンツを取得するために前記コンテンツ暗号鍵を前記暗号化されたコンテンツに適用することと
により復号可能である、請求項１５に記載の方法。
【請求項１７】
デバイスであって、
当該デバイスに与えられ、非一時的な機械可読媒体にコード化された鍵束であって、第１の暗号鍵および関連する第１の暗号関数識別子を含む当該鍵束を読み出す手段と、
ネットワークを介して、または、前記機械可読媒体とは異なる媒体から、暗号化されたコンテンツに対応する、サブセット差分ツリー手法に従った鍵ブロックを受信する手段と、
少なくとも前記第１の暗号関数識別子を用いて前記第１の暗号関数識別子に対応する第１の暗号三重関数を決定する手段と、
前記鍵ブロック、前記第１の暗号鍵および前記第１の暗号三重関数を使用してサブセット差分ツリーをトラバースしてコンテンツ暗号鍵を取得する手段であって、前記コンテンツ暗号鍵は、前記暗号化されたコンテンツを復号するために用いられる、当該コンテンツ暗号鍵を取得する手段と
を含む、デバイス。
【請求項１８】
コンピュータ・システムであって、
所定のデバイスに与えられ、非一時的な機械可読媒体にコード化される鍵束であって、第１の暗号鍵および関連する第１の暗号関数識別子を含む当該鍵束を提供する手段と、
ネットワークを介して、または、前記機械可読媒体とは異なる媒体へ、暗号化されたコンテンツに対応する、サブセット差分ツリー手法に従った鍵ブロックを提供する手段であって、前記鍵ブロックは、前記暗号化されたコンテンツが、
前記鍵束が提供された前記所定のデバイスのプロセッサにより、少なくとも前記第１の暗号関数識別子を用いて前記第１の暗号関数識別子に対応する第１の暗号三重関数を決定することと、
前記所定のデバイスのプロセッサにより、前記鍵ブロック、前記第１の暗号鍵および前記第１の暗号三重関数を使用してサブセット差分ツリーをトラバースし、コンテンツ暗号鍵を取得することと、
前記所定のデバイスのプロセッサにより、復号されたコンテンツを取得するために前記コンテンツ暗号鍵を前記暗号化されたコンテンツに適用することと
によって、復号可能であるように選択される、当該提供する手段と
を含むコンピュータ・システム。
【請求項１９】
コンピュータ・システムであって、
サブセット差分ツリーの割り当てられた鍵空間を決定する手段であって、前記割り当てられた鍵空間は、暗号三重関数のセットによってトラバース可能である、前記決定する手段と、
前記サブセット差分ツリーの未使用の鍵を選択する手段と、
前記暗号三重関数のセットに含まれないトラバーサル関数を選択する手段と、
所定のデバイスに与えられ、非一時的な機械可読媒体にコード化される鍵束であって、前記未使用の鍵と前記トラバーサル関数を識別する識別子とを含む当該鍵束を提供する手段と
を含む、コンピュータ・システム。
【請求項２０】
前記鍵束は、暗号化されたコンテンツを復号するために用いられ、前記暗号化されたコンテンツは、
前記鍵束が与えられた前記所定のデバイスのプロセッサが、前記識別子に対応する第１の暗号三重関数を決定することと、
前記所定のデバイスのプロセッサが、コンテンツ暗号鍵を取得するために前記未使用の鍵および前記第１の暗号三重関数を使用して前記サブセット差分ツリーをトラバースすることと、
前記所定のデバイスのプロセッサが、復号されたコンテンツを取得するために前記コンテンツ暗号鍵を前記暗号化されたコンテンツに適用することと
により復号可能である、請求項１９に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ブロードキャスト暗号化に関し、より詳細には、特定の攻撃に対する脆弱性を小さくする追加セキュリティ要素を有する暗号化鍵割当てに関する。
【背景技術】
【０００２】
ブロードキャスト暗号化方式では、配信されるコンテンツへの許可されたアクセスを制限するために、サブセット差分ツリー（subset difference tree）手法を使用できる。ＮＮＬ（Ｎａｏｒ、ＮａｏｒおよびＬｏｔｓｐｉｅｃｈに因んで命名）は、サブセット差分ツリーを利用して、ブロードキャスト暗号化システムの空間効率が高い鍵割当てを提供する。ＮＮＬは、一方向の三重関数を使用して、バイナリ・ツリーを下方にトラバースし、親ノードから暗号化鍵を導き出す。この三重関数の適用は、プロセッシング・キーおよびノードの左と右の子の決定を可能にする。しかし、現在は事実上解読できない一方向性関数も、近い将来には解読される可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
メディア鍵ブロック・ベースのブロードキャスト暗号化のための方法を提供する。
【課題を解決するための手段】
【０００４】
本発明の一実施形態によれば、ブロードキャスト暗号化のための方法およびコンピュータ・プログラム製品が提供される。非一時的な機械可読媒体にコード化された鍵束（key bundle）が、受信される。鍵束は、第１の暗号鍵および関連する第１の暗号関数識別子を含む。暗号化されたコンテンツが受信される。サブセット差分ツリー（subset difference tree）に対応する鍵ブロックが受信される。第１の暗号関数識別子に対応する第１の暗号三重関数（triple function）が決定される。サブセット差分ツリーは、コンテンツ暗号鍵を取得するために第１の暗号鍵および第１の暗号三重関数を使用してトラバースされる。コンテンツ暗号鍵は、復号されたコンテンツを取得するために暗号化されたコンテンツに適用される。
【０００５】
本発明の別の実施形態によれば、ブロードキャスト暗号化のための方法およびコンピュータ・プログラム製品が提供される。非一時的な機械可読媒体にコード化された鍵束が提供される。鍵束は、第１の暗号鍵および関連する第１の暗号関数識別子を含む。暗号化されたコンテンツが提供される。サブセット差分ツリーに対応する鍵ブロックが提供される。鍵ブロックは、暗号化されたコンテンツが、第１の暗号関数識別子に対応する第１の暗号三重関数を決定することと、コンテンツ暗号鍵を取得するために第１の暗号鍵および第１の暗号三重関数を使用して、サブセット差分ツリーをトラバースすることと、復号されたコンテンツを取得するためにコンテンツ暗号鍵を暗号化されたコンテンツに適用することとによって、復号可能であるように選択される。
【０００６】
本発明の別の実施形態によれば、鍵割当てのための方法およびコンピュータ・プログラム製品が提供される。サブセット差分ツリーの割り当てられた鍵空間が決定される。割り当てられた鍵空間は、暗号三重関数のセットによって、トラバース可能である。サブセット差分ツリーの未使用の鍵が選択される。上記暗号三重関数のセットに含まれないトラバーサル関数が選択される。非一時的な機械可読媒体にコード化された鍵束が提供される。鍵束は未使用の鍵とトラバーサル関数を識別する識別子とを含む。
【０００７】
以下、添付の図面を参照して本発明の実施形態について例証としてだけ説明する。
【図面の簡単な説明】
【０００８】
【図１】本開示の一実施形態によるブロードキャスト暗号化方式の概略図である。
【図２】本開示の一実施形態による例示的なデバイス鍵束を表す図である。
【図３】本発明の一実施形態によるコンピューティング・ノードを表す図である。
【発明を実施するための形態】
【０００９】
ブロードキャスト暗号化方式では、配信されるコンテンツへの許可されたアクセスを制限するために、サブセット差分ツリー手法を使用できる。ＮＮＬ（Ｎａｏｒ、ＮａｏｒおよびＬｏｔｓｐｉｅｃｈに因んで命名）は、サブセット差分ツリーを利用して、ブロードキャスト暗号化システムの空間効率が高い鍵割当てを提供する。ＮＮＬは、一方向の三重関数を使用して、バイナリ・ツリーを下方にトラバースし、親ノードから暗号化鍵を導き出す。この三重関数の適用は、プロセッシング・キーおよびノードの左と右の子の決定を可能にする。コンテンツ・コンシューマは、特定の開始ノードのためのラベル（鍵）の一意的な小さいセットを割り当てられて、三重関数を適用することによって、それらの開始ラベルの下の（カバーされている）他のいかなるラベルおよび鍵も導き出すことが可能である。他のラベルからラベルを導き出すこの能力は、ＮＮＬにそのコンパクト性を与えて、特にクライアントへの鍵の最小のセットの配布を可能とする。同様に、ＮＮＬは、暗号化の最小のセットの配布を可能にする。目標装置ごとに暗号化されるメッセージのバージョンを配布するよりはむしろ、メッセージは、サブセット差分ツリー・アプローチを使用して、デバイスのサブセットのために暗号化できる。
【００１０】
単一の予め定められた一方向関数は、ツリーをトラバースするために適用できる。この関数が前もって知られている場合、攻撃者は総当たり（brute force）によって、追加鍵を導き出すことができる可能性がある。特に、知られている一方向関数の結果は、すべてのあり得る入力に対して計算できる。一旦答えがいずれかの開始ラベルと一致すると、一方向関数は破られてしまい、攻撃者は保有する認可を与えられなかったラベルを導き出してしまう。十分な計算能力があれば、攻撃者はこのことによりコンテンツ保護システムを回避できる。成功した総当たり攻撃の結果は、認可されていないラベルを導き出すことが、攻撃者が他のあらゆる認可されたコンテンツ・コンシューマになりすましてコンテンツへの認可されていないアクセスを取得することを可能にするので、損害をもたらす可能性がある。答えが並行して開始ラベルのすべてのセットと比較される、効果的な攻撃が加えられ得る。１つのラベルをそれぞれ計算された答えと比較することは、同時にいくつかのラベルを比較することより著しく容易なわけではない。攻撃者が複数セットの開始ラベル（例えば、複数の危殆に瀕した鍵セット）を有する場合、この並列性はさらに増大する。一旦いずれかのラベルが破られると、そのラベルの下のすべての鍵は知られている三重関数を使用して容易に導き出すことができる。開始ラベルを導き出すために用いる方法（純粋な乱数発生以外）さえ、同様に破られる危険にさらされている。
【００１１】
このような攻撃のリスクを最小化するために、総当たり攻撃が実行不可能であるように、一方向関数を選択できる。特に、総当たりで破るのに膨大な時間を必要とする関数を選択できる。例えば、ＡＥＳ−１２８を使用する一方向関数は、現時点で破るのが不可能であると、一般には考えられている。しかしながら、攻撃者は、平均的な個々の計算能力が１８ヵ月ごとに２倍となっている複数のコンピュータを含む、ますます大きくなるクラウド（またはボットネット）にアクセスする。計算能力の増大の進行とともに、攻撃者は総当たりによって、毎年およそ１ビットずつ多くなる暗号化強度を破ることができるようになる。さらに、この破る効率において、何桁もの飛躍を可能とするような、時々の技術的（ハードウェア、または、アルゴリズム的）な開発（例えば、レインボー・テーブル、ＡＥＳのためのＣＰＵサポート、マルチコア並列処理、ＧＰＵの大規模並列処理、ＦＰＧＡ、量子コンピューティング）がある。これらの進展が続くことによって、現在実際に破ることができない一方向関数でも、近い将来、破られる可能性がある。
【００１２】
ブロードキャスト暗号化の総当たり攻撃のリスクに対処するために、本開示は、マトリックスの個々のラベルに適用できる暗号化関数の変形を提供する。暗号化関数がブロードキャスト暗号化システムの範囲内で変化するときに、有効な総当たり攻撃は開始することができない。単一の知られている関数への総当たりが可能な場合でも、適用できる暗号化関数が知られていない場合は総当たり攻撃を実行することができない。加えて、暗号化関数を変化可能とすることによって、鍵長さ（したがって、復号鍵束のサイズ）は、同じ有効な暗号化強度を維持しながら、減少させることができる。
【００１３】
図１を参照して、ブロードキャスト暗号化方式の概略図を提供する。一般に、暗号化されたコンテンツ１０１は、メディア鍵１０２で暗号化される。メディア鍵（Ｋｍ）１０２は、１セットのデバイス鍵（Ｋｄ）１０３を使ってメディア鍵ブロック（ＭＫＢ）１０４を処理することによって、認可されたコンテンツ・コンシューマにより決定される。メディア鍵１０２は暗号化されたコンテンツに特有であり、デバイス鍵１０３は認可されたコンテンツ・コンシューマ（デジタル・メディア・プレーヤなど）に含まれ、メディア鍵ブロック１０４は、例えば、ＤＶＤなどの光学式媒体のリードイン領域に、暗号化されたコンテンツとともに含まれる。
【００１４】
このようなブロードキャスト暗号化方式において、鍵生成機能（ＫＧＦ）は、メディア鍵１０２およびデバイス鍵１０３を含む複数の暗号化鍵を生成する役割を果たす。鍵生成機能はまた、所与のメディア鍵１０２を認可されたコンテンツ・コンシューマによって導き出すことができるメディア鍵ブロック１０４を生成する役割を果たす。  
【００１５】
暗号化されたコンテンツは、ネットワークを介した、または、ＤＶＤのような光学式媒体上での配布の前に一意的なメディア鍵１０２を使用して暗号化される。暗号化されたコンテンツとともに、適切なメディア鍵ブロック１０４が提供される。いくつかの実施形態では、メディア鍵ブロック１０４は、暗号化されたコンテンツ１０１とともに光学式媒体に置かれる。他の実施形態において
暗号化されたコンテンツは、メディア鍵ブロック１０４は、暗号化されたコンテンツの配布の前に、その後に、または、その間に、ネットワークを通じて配布される。いくつかの実施形態では、暗号化されたコンテンツおよびメディア鍵ブロック１０４は、異なる機構を介して配布され、その一方で、いくつかの実施形態では、それらは同じ機構を介して配布される。
【００１６】
メディア・プレーヤなどの暗号化されたコンテンツの認可されたコンシューマは、デバイス鍵（Ｋｄ）１０３の束を提供される。デバイス鍵１０３を使ってメディア鍵ブロック（ＭＫＢ）１０４を処理する（１０５）ことによって、認可されたプレーヤは、メディア鍵（Ｋｍ）１０２を決定することが可能である。メディア鍵（Ｋｍ）１０２は次に、暗号化されたコンテンツ１０１を復号するために用いる。当業者は、ＡＡＣＳにおいて行われているような、メディア鍵ブロック１０４を処理してメディア鍵１０２を取得するためのいくつかの方法が知られていることを認識する。
【００１７】
鍵生成機能は、異なる認可されたコンテンツ・コンシューマまたはコンシューマのグループに、デバイス鍵の異なる束を供給する。メディア鍵ブロックは、認可されたデバイス鍵だけが、メディア鍵ブロックから所与のメディア鍵を決定できるように、鍵生成機能により生成される。所与のコンシューマまたはメディア・プレーヤが暗号化されたコンテンツを消費する認可をもはや与えられなくなった場合、鍵生成機能により生成された次のメディア鍵ブロックはこのような無効にされたプレーヤがメディア鍵を取得できないようにする。このようにして、無効にされたコンシューマは、その取り消しの後に提供されるコンテンツを復号することができなくなる。
【００１８】
ＡＡＣＳにより採用されているようにアプローチされるサブセット差分において、鍵空間は、鍵の大きなマスター・ツリーにより定義される。それぞれの認可されたデバイスは、鍵ツリーのリーフ・ノードと一意的に関連付けられる。各デバイス用のデバイス鍵１０３の束は、正確に１つの一意的なリーフ鍵を含む。束１０３の残りのデバイス鍵は、デバイスのリーフ鍵とツリー・ルートの間に存在している鍵のセットを除いてツリーのその他の鍵をすべて導き出すのに十分である。上記の通り、各子鍵は、一方向関数の適用によって、その親鍵から計算できる。そのため、デバイス鍵の所与のセットを所有しているコンテンツ・コンシューマは、それ自身のリーフ鍵を導き出すことができない。しかしながら、別のデバイス鍵束を有する他のいかなるコンテンツ・コンシューマもそうすることができる。
【００１９】
マスター・ツリーのあらゆるサブツリーに対応することは、マスター・ツリーに補足される鍵の別のツリーである。例えば、マスター・バイナリ・ツリーのルートから１レベル下には、２つのサブツリーがあり、それぞれがそれ自身の関連する鍵のツリーを有する。したがって、マスター・ツリーの最下部で、デバイス関連のリーフ・ノードの各対は、高さ１のそれ自身のサブツリーに帰属する。所与のデバイスの関連するリーフ・ノードとツリー・ルートの間のマスター・ツリーのノードに対応する各サブツリーに対し、そのデバイス鍵のデバイスのセットは、そのサブツリー内のそのリーフとルートの間の鍵を除いて、そのサブツリーのあらゆる鍵を導き出すことを可能にする。
【００２０】
鍵の間のこの関係を用いて、無効にされるそのリーフ・ノードだけによって、暗号化されるメディア鍵をメディア鍵ブロックに含むことによって、いかなるリーフ鍵も、無効にすることができる。リーフ鍵の連続範囲を無効にするために、メディア鍵は、マスター・ツリーにおいて、より高く位置する鍵によって、暗号化できる。リーフ鍵の不連続範囲は、サブツリー・システムを用いることにより無効にすることができる。単一のサブツリーの無効にされたリーフ鍵の単一の隣接するグループと関連した鍵は、メディア鍵を暗号化するために用いる。ＭＫＢのこのエントリは、その鍵を備えていないデバイスがメディア鍵をうまく計算することを可能にする一方で、無効にされたリーフ鍵を含むすべてのデバイスがメディア鍵をうまく計算するのを妨げる。類似の暗号化は、無効にされたリーフ鍵を含むすべてのデバイスがメディア鍵を計算することができず、他のすべてのデバイスはそうすることができるようになるまで、他のサブツリーで繰り返される。
【００２１】
図２は、本開示の一実施形態による例示的なデバイス鍵束を表す。デバイス鍵束２００は、（行として表される）複数のエントリを含み、それぞれが鍵２０１〜２０７を含む。いくつかの実施形態において、鍵２０１〜２０７は１２８ビット（１６バイト）ＡＥＳ鍵であり、関数識別子２１１〜２１７は省略され、適用できる関数は認可されたコンテンツ・コンシューマには演繹的に分かっている。このような実施形態では、三重関数は、ＡＡＣＳにより定義されるＡＥＳ−Ｇ３でもよい。いくつかの実施形態では、代わりのブロック暗号が、用いられる。各種の暗号および対応する鍵長さを使うことができ、これらは、ＡＥＳ、Ｂｌｏｗｆｉｓｈ、Ｃ２ブロック暗号、Ｃａｍｅｌｌｉａ、ＣＡＳＴ−１２８、ＣＡＳＴ−２５６、ＣＬＥＦＩＡ、Ｃｒｙｐｔｏｍｅｒｉａ、ＤＥＳ、ＦＥＡＬ、ＧＯＳＴ  ２８１４７−８９、ＩＣＥ、ＩＤＥＡ、ＫＡＳＵＭＩ、ＬＯＫＩ９７、Ｌｕｃｉｆｅｒ、ＭａｃＧｕｆｆｉｎ、ＭＡＧＥＮＴＡ、ＭＡＲＳ、ＭＩＳＴＹ１、ＲＣ２、ＲＣ５、ＲＣ６、Ｓｋｉｐｊａｃｋ、ＳＭＳ４、ＴＥＡ、三重ＤＥＳ（triple DES）、ＴｗｏｆｉｓｈおよびＸＴＥＡを含むが、これに限定するものではない。
【００２２】
いくつかの実施形態では、デバイス鍵束２００の各エントリは、関数識別子２１１〜２１７を含む。関数識別子２１１〜２１７は、どの暗号関数が各鍵２０１〜２０７のそれぞれに適用できるかについて示す。いくつかの実施形態では、関数識別子２１１〜２１７は知られている暗号関数に対するソルト（すなわち、付加的な入力を暗号関数に提供するランダム値）である。いくつかの実施形態では、関数識別子２１１〜２１７は、適用される関数の指示およびソルト値の両方を含む。いくつかの実施形態では、関数識別子２１１〜２１７は、関数またはソルト値を導き出すのに十分な情報を含む。例えば、関数識別子２１１〜２１７は、次に暗号関数へのソルト値または他のパラメータを生成するために用いる、疑似乱数発生器に対するシードを含む。いくつかの実施形態では、関数識別子２１１〜２１７は、ＭａｔｈＭＬなどの数学関数のコード化に適した言語でコード化された、適用される暗号関数の記述を含む。いくつかの実施形態では、伝えられた関数を鍵と直接関連付ける代わりに、コンテンツ・コンシューマがツリーの位置から適切な関数を導き出すことができるように、アルゴリズム的マッピングが提供される。
【００２３】
いくつかの実施形態では、関数識別子２１１〜２１７は、それぞれ複数の可能な三重関数の１つでもよい。所与のコンテンツ・コンシューマは、その割り当てられた出発点からツリーをトラバースするために必要となる関数識別子だけを与えられる。コンシューマの開始ラベルより上に位置するノードおよびサブツリーのための識別子は、含まれない。情報がデバイス鍵束に含まれるので、攻撃者は、どの一方向関数をその所与の開始ラベルのいずれかを導き出すために用いるかについて、分からない。攻撃者は、未知関数に有効な総当たり攻撃を加えることが可能ではない。攻撃者がある関数に対してマッチしている答えを得た場合であっても、攻撃者はそれがまず着手すべき正しい関数であったかどうか分からない。所与の鍵のための正しい関数に関する推測が正確であったとしても、認可されていないサブツリーの中までツリーをトラバースするのに必要な関数に関する情報は、攻撃者に提供されない。このように、本開示の鍵割当て方式の適用は、未知の鍵を取得することを対象とした総当たり攻撃を効果的に排除する。
【００２４】
いくつかの実施形態では、まだトラバースされていないツリーの領域に対しては、トラバーサル関数は定義されない。例えば、鍵生成機能により認可されたコンテンツ・コンシューマにまだ割り当てられておらず、また復号サブセットを指定するためにもまだ用いていないツリーの領域は、実際に使われるまで、未定義のままとしておくことができる。ツリーの広い領域を、それらが最初に使われる瞬間まで未定義のままにすることで、トラバーサル関数の遅延割付けが可能となる。したがって、現在知られているか未開発であるかにかかわらず、代わりの暗号化関数を、将来存在している方式に適用できる。展開の後であっても、関数定義を延期することは、既存のサブセット差分方式に遡及して適用できる。例えば、関数は、既存のコンテンツおよびコンシューマに影響を及ぼすことなく、ＡＡＣＳなどの既存のＮＮＬシステム内の未使用のスペースのために、変更できる。要するに、割り当てられた領域だけが、与えられたトラバーサル関数を使用することに固定される。すでに展開されているＮＮＬシステムのスペースの大半は相変わらず未使用なので、本開示の技術は、下位互換性を損なうことなく既存のシステムで、広く展開できる。いくつかの実施形態では、コンテンツ・プロバイダは、将来の鍵を生成するために、現存のメディア鍵ブロックに適用される関数のすべてを知っている。しかしながら、いくつかの実施形態では、既存のコンテンツをアクセス不可能にすることなく、コンテンツ・プロバイダを変更することによって、追加関数を既存のシステムに追加できる。いくつかの実施形態では、異なるコンテンツ・プロバイダが、異なる関数を割り当てられる。いくつかの実施形態では、使用中の関数はフォレンジック・システムに知られており、それは危殆に瀕した鍵を検出するために用いることができる。
【００２５】
さらにまた、ブロードキャスト暗号化システムの有効な暗号化強度の一部は多相トラバーサル関数へ再配置できるので、所与の長さの鍵の強度は非常に増大する。一般に、未知の鍵の保護は、個々のコンテンツ（または単一のメッセージ）の保護より重要である。したがって、開始鍵の寸法は、減らすことができる。例えば、適用される暗号化の強度は、個々のコンテンツをその有効な寿命（それがほんの数時間あるいは数日だけである場合であっても）の間保護するように、選択できる。その結果として、集合復号鍵束サイズを著しく減らすことができる。いくつかの実装において、復号鍵束サイズは、半分またはそれ以上減らすことができる。いくつかの実施形態では、復号鍵束は、（クライアントの１回限りの静的鍵および関数記憶に含まれることとは対照的に）ブロードキャスト・コンテンツ伝送に関連付けられている。このような実施形態では、進行中の伝送オーバヘッドは、多相トラバーサル関数を用いることにより著しく低減される。
【００２６】
いくつかの実施形態では、各ノードのトラバーサル関数は、一意的である。そのような実施形態では、受信側の静的鍵の記憶のために必要とされるスペースは、導き出された鍵のフルセットを与えるために必要となるスペースと、同等である。このような実施形態における受信側静的鍵の記憶の増加にもかかわらず、復号鍵束またはメディア鍵ブロックは、小さいままである。ツリーにおいて、適用される一意的なトラバーサル関数の数は、１つ（純粋に単相のアプローチ）からノード当たりの１つ（純粋に多相のアプローチ）まで変化できる。
【００２７】
いくつかの実施形態では、サブセット差分ツリーの特定部分に関してだけ、トラバーサル関数の変形がある。１つの例示的実施形態では、デフォルト関数は、前もってコンテンツ・コンシューマに知られている。しかしながら、各開始からのツリーの第１の分岐は、デフォルト以外の三重関数にラベルをつける。このようなゼロ・スペース・コスト技術は、鍵空間の半分と同様にラベルを保護する。別の例示的実施形態において、同じ関数が、ツリー空間の広い領域にわたって用いられる。いくつかの実施形態では、暗号化方式の各採用者は、一意的な関数を割り当てられる。別の例示的実施形態において、単一の関数が鍵空間の全体にわたって用いられるが、関数は少なくとも１つの一意的な定数を含む。いくつかの実施形態では、より大きい導出定数を導き出すために、多くの異なる関数が多くの異なるパラメータと組み合わせて用いられる。いくつかの実施形態では、可変的なサイズの定数が、使われる。いくつかの実施形態では、ツリーの各レベルは、固定数の異なる関数を有する。いくつかの実施形態では、三重関数は、ツリーの全体にわたって散発的に変化する。例えば、ノードのほぼ１／１０は、デフォルトと異なる関数をランダムに有することができる。いくつかの実施形態では、このようなスポット移行の比率は、調整してコンテンツ・コンシューマの必要スペースを調節できる。最後に、三重関数が変化するという単なる可能性は、実際には関数の変形を必要とせずに、潜在的な攻撃者に対する抑止力として作用できる。
【００２８】
ここで図３を参照すると、本発明の一実施形態によるコンピューティング・ノードの例の概略図が提供される。コンピューティング・ノード１０は、適切なコンピューティング・ノードの１つの例に過ぎず、本明細書において、記載されている本発明の実施形態の使用または機能性の範囲に関していかなる限定も示唆することを目的としない。それにかかわらず、コンピューティング・ノード１０は、本明細書に先に記載された機能性のいずれをも実装または実行あるいはその両方を行うことができる。
【００２９】
コンピューティング・ノード１０には、コンピュータ・システム／サーバ１２があり、それは多数の他の汎用または専用のコンピューティング・システムの環境または構成で動作可能である。コンピュータ・システム／サーバ１２での使用に適している可能性のある周知のコンピューティング・システム、環境または構成あるいはそれらの組合せの例としては、パーソナル・コンピュー・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、携帯型またはラップトップのデバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システムおよび上記のシステムまたはデバイス、などのいずれかを含む分散クラウド・コンピューティング環境を含むが、これに限定されるものではない。
【００３０】
コンピュータ・システム／サーバ１２は、コンピュータ・システムにより実行されているプログラム・モジュールなどの、コンピュータ・システム実行可能命令の一般の文脈において、記載できる。一般に、プログラム・モジュールは、特定のタスクを実行するか、特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、ロジック、データ構造などを含むことができる。コンピュータ・システム／サーバ１２は、タスクが、通信ネットワークを通してリンクされた遠隔処理装置により実行される、分散コンピューティング環境において、実施されてもよい。分散コンピューティング環境において、プログラム・モジュールは、メモリ記憶デバイスを含むローカルおよび遠隔のコンピュータ・システム記憶媒体の両方に配置できる。
【００３１】
図３に示す通り、コンピューティング・ノード１０のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ１２のコンポーネントは、１つまたは複数のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含む各種のシステム・コンポーネントをプロセッサ１６に結合するバス１８を含むことができるが、これに限定されるものではない。
【００３２】
バス１８は、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィクス・ポート、および様々なバス・アーキテクチャのいずれかを用いたプロセッサまたはローカル・バスを含む、いくつかの種類のバス構造のいずれかの１つまたは複数を表す。例えば、限定するものではないが、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ・エレクトロニクス規格協会（ＶＥＳＡ）ローカル・バスおよびペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バスを含む。
【００３３】
コンピュータ・システム／サーバ１２は、様々なコンピュータ・システム可読媒体を通常含む。このような媒体は、コンピュータ・システム／サーバ１２がアクセス可能であるいかなる利用できる媒体であってもよく、揮発性および不揮発性の媒体、着脱可能および取り外し不可能な媒体の両方を含む。
【００３４】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ）３０またはキャッシュ・メモリ３２あるいはその両方などの揮発性メモリの形の、コンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１２は、他の着脱可能／取り外し不可能な、揮発性／不揮発性コンピュータ・システム記憶媒体をさらに含むことができる。一例として挙げるに過ぎないが、記憶システム３４は、取り外し不可能な、不揮発性磁気媒体（図示していないが、「ハード・ドライブ」と通常呼ばれる）から読んで、それに書くために、提供できる。図示していないが、着脱可能な、不揮発性磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）から読んで、それに書くための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭまたは他の光学式媒体などの着脱可能な、不揮発性光ディスクから読むかまたはそれに書くための光学ディスク・ドライブを提供できる。このような場合には、各々は、１つまたは複数のデータ媒体インターフェースによって、バス１８に接続できる。以下でさらに表されて記述されるように、メモリ２８は、本発明の実施形態の機能を実行するように構成された１セット（例えば、少なくとも１つ）のプログラム・モジュールを有する、少なくとも１つのプログラム製品を含むことができる。
【００３５】
１セット（少なくとも１つ）のプログラム・モジュール４２を有するプログラム／ユーティリティ４０は、限定するものではないが、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データと同様に、例えば、メモリ２８に記憶することができる。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データまたはそれらのいくつかの組合せのそれぞれは、ネットワーキング環境の実装を含むことができる。プログラム・モジュール４２は概して、本明細書において記載されているような、本発明の実施形態の機能または方法あるいはその両方を実行する。
【００３６】
コンピュータ・システム／サーバ１２はまた、キーボード、ポインティング・デバイス、ディスプライ２４など、ユーザがコンピュータ・システム／サーバ１２と対話できるようにする１つまたは複数のデバイスまたはコンピュータ・システム／サーバ１２が１つまたは複数の他のコンピューティング装置と通信することを可能にするあらゆるデバイス（例えば、ネットワーク・カード、モデムなど）あるいはそれらの組合せなどの、１つまたは複数の外部デバイス１４と通信できる。このような通信は、入出力（Ｉ／Ｏ）インターフェース２２を介して発生し得る。さらにまた、コンピュータ・システム／サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ）、一般の広域ネットワーク（ＷＡＮ）または公衆ネットワーク（例えば、インターネット）あるいはそれらの組合せなどの１つまたは複数のネットワークと、ネットワーク・アダプタ２０を介して通信できる。図示のように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示はしていないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が、コンピュータ・システム／サーバ１２と連携して使用できることを理解すべきである。例としては、限定するものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブおよびデータ・アーカイブ用記憶システムなどが含まれる。
【００３７】
本発明は、システム、方法またはコンピュータ・プログラム製品あるいはそれらの組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためにコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体（または複数の媒体）を含み得る。
【００３８】
コンピュータ可読記憶媒体は、命令実行デバイス用に命令を保持することができて、記憶できる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、限定するものではないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイスまたはこれらのあらゆる好適な組合せであり得る。コンピュータ可読記憶媒体のより多くの具体例を、網羅的というわけではないが、列挙すると、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯用コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、記録された命令を有するパンチ・カードまたは溝内の高くなった構造のような機械的にコード化されたデバイス、および、前述のもののあらゆる好適な組合せがある。本明細書で用いる場合、コンピュータ可読記憶媒体は、電波もしくはその他の自由に伝播している電磁波、導波管もしくは他の伝送媒体を通して伝搬する電磁波（例えば、光ファイバ・ケーブルを通過している光パルス）、またはワイヤにより伝送される電気信号などのような、それ自体が一過性の信号であるものとは解釈すべきでない。
【００３９】
本明細書において記載されているコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワークまたは無線ネットワークあるいはそれらの組合せを介して外部コンピュータまたは外部記憶装置に、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはそれらの組合せを含むことができる。各コンピューティング／処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体への記憶のために、コンピュータ可読プログラム命令を転送する。
【００４０】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Ｓｍａｌｌｔａｌｋ（R）、Ｃ＋＋などのオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、または、完全にリモート・コンピュータまたはサーバ上で、実行できる。後者のシナリオにおいては、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワーク経由でユーザのコンピュータに接続することができ、または、接続は外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを用いてインターネットによって）行うことができる。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、電子回路を個別向けにするように、コンピュータ可読プログラム命令を実行できる。
【００４１】
本発明の態様は、本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート説明またはブロック図あるいはその両方を参照して、本明細書において、記載する。フローチャート説明またはブロック図あるいはその両方の各ブロック、ならびにフローチャート説明またはブロック図あるいはその両方のブロックの組合せが、コンピュータ可読プログラム命令により実装することができることが理解される。
【００４２】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定されている機能／動作を実装するための手段を作成するように、汎用コンピュータ、専用コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令はまた、記憶された命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定されている機能／動作の態様を実装する命令を含んでいる製品を含むように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラム可能なデータ処理装置もしくは他のデバイスまたはそれらの組合せに、特定の方法で機能するように指示することができるものであってもよい。
【００４３】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックで指定されている機能／動作を実装するように、コンピュータ実装方法を生成するべく、コンピュータ、他のプログラム可能なデータ処理装置または他のデバイス上にロードされ、コンピュータ、他のプログラム可能な装置または他のデバイスで一連の動作ステップを実行させるものであってもよい。
【００４４】
図のフローチャートおよびブロック図は、本発明の各種実施形態による、システム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性および動作を例示する。この点に関して、フローチャートまたはブロック図の各ブロックはモジュール、セグメントまたは命令の部分を表すことができ、それは指定された論理機能を実装するための１つまたは複数の実行可能命令を含む。いくつかの他の実装において、ブロックに示した機能は、図に示す順序とは異なって発生する場合がある。例えば、連続して示される２ブロックは、実際は、実質的に並行して実行することができ、または、関係する機能性に応じて、ブロックは時には逆順で実行できる。ブロック図またはフローチャート説明あるいはその両方の各ブロック、ならびにブロック図またはフローチャート説明あるいはその両方のブロックの組合せが、指定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実施する、専用ハードウェア・ベースのシステムによって、実装することができる点にも留意する。
【００４５】
本発明の各種実施形態の記述は、説明のために示されたが、開示される実施形態に対して網羅的または限定的であることを意図しているものでない。記載された実施形態の範囲および思想を逸脱せずに、多くの変更および変形は、当業者にとって明らかである。本明細書において、用いられる用語は、実施形態の原理、実際的応用または市場で見つかる技術を上回る技術的な改良を最も良く説明するため、または他の当業者が、本明細書において、開示される実施形態を理解することを可能にするために、選ばれたものである。
【図１】
0006682125.tif 000002
【図２】
0006682125.tif 000003
【図３】
0006682125.tif 000004