(57)【要約】【課題】ＭＫＢの生成に適用する暗号鍵としてのサブセットキーの決定処理を効率的に確実に行なう装置および方法を提供する。【解決手段】特定のデバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能としたＭＫＢの生成に適用する暗号化キーの決定処理において、階層木の上位ノードを処理開始点としてカレントノードを設定し、カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定し、リボーク状況の判定結果に応じて予め規定した処理を実行する。この処理アルゴリズムの実行により、ＭＫＢの生成に適用する暗号鍵としてのサブセットキーの決定処理を効率的に確実に行なうことが可能となる。【選択図】図１６
2008092514.tif 000002
【特許請求の範囲】
【請求項１】
階層木構成に基づく暗号化秘密情報の提供構成を適用して特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には前記秘密情報の取得ができない設定とした暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行する情報処理装置であり、
キー情報生成部において、
階層木の上位ノードを処理開始点としてカレントノードを設定し、該カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定し、該リボーク状況の判定結果に応じて予め設定された処理を実行して、前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行する構成を有することを特徴とする情報処理装置。
【請求項２】
前記キー情報生成部は、
リボーク状況の判定処理として、カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況が、
（ａ）リボークデバイスが存在しないゼロリボーク（ｚｅｒｏ  ｒｅｖｏｋｅｄ）
（ｂ）全てのデバイスがリボークデバイスではないが１つ以上リボークデバイスがあるノンフルリボーク（ｎｏｎ−ｆｕｌｌ  ｒｅｖｏｋｅ）
（ｃ）全てのデバイスがリボークデバイスであるフルリボーク（ｆｕｌｌ  ｒｅｖｏｋｅ）
上記（ａ）〜（ｃ）のいずれのリボーク状況であるかを判別し、
前記左ノードと右ノードそれぞれに属するリーフノードのリボーク状況の組み合わせに応じて、
（１）前記暗号情報ブロックの生成に適用する暗号化キーを決定するキー定義情報の出力処理、
（２）キーサーチ関数の更新処理、
上記（１）、（２）の少なくともいずれかの処理を実行して、最終的に前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行する構成を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、さらに、
前記キー情報生成部の生成した暗号化キーを適用した暗号化データを格納した暗号情報ブロックを生成する暗号情報ブロック生成部と、
検証対象デバイス対応のデバイスキーセットを生成するデバイスキーセット生成部と、
前記暗号情報ブロック生成部の生成した暗号情報ブロック、および前記デバイスキーセット生成部の生成した検証対象デバイス対応のデバイスキーセットを入力し、入力デバイスキーセットに基づく暗号情報ブロックの処理を実行して秘密情報の取得の可否を検証するデータ検証処理部と、
を有することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記暗号情報ブロックは、秘密情報としてメディアキーを前記暗号化キーによって暗号化したデータを格納したＭＫＢ（Ｍｅｄｉａ  Ｋｅｙ  Ｂｌｏｃｋ）であり、前記暗号情報ブロック生成部は、前記キー情報生成部の生成した暗号化キーを適用してメディアキーの暗号化キーデータを生成して、該暗号化キーデータを秘密情報として格納したＭＫＢを生成する構成であることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記階層木は、ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式の階層木であり、
前記キー情報生成部は、
前記ＥＳＤ方式において規定されるサブセットキーから、前記暗号情報ブロックの生成に適用する暗号化キーに適用するサブセットキーを決定する処理を実行する構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記キー情報生成部は、
前記ＥＳＤ方式において規定されるサブセットキー：ＳＫｕ−ｖを決定するパラメータであるサブセットルートの値：ｕと、リボークルートの値：ｖの各値を決定する処理を実行する構成であることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
情報処理装置において、階層木構成に基づく暗号化秘密情報の提供構成を適用して特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には前記秘密情報の取得ができない設定とした暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行する情報処理方法であり、
キー情報生成部において、階層木の上位ノードを処理開始点としてカレントノードを設定し、該カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定するリボーク状況判定ステップと、
前記キー情報生成部において、前記リボーク状況の判定結果に応じて予め設定された処理を実行して、前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行するキー情報生成ステップと、
を実行することを特徴とする情報処理方法。
【請求項８】
前記リボーク状況判定ステップは、
リボーク状況の判定処理として、カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況が、
（ａ）リボークデバイスが存在しないゼロリボーク（ｚｅｒｏ  ｒｅｖｏｋｅｄ）
（ｂ）全てのデバイスがリボークデバイスではないが１つ以上リボークデバイスがあるノンフルリボーク（ｎｏｎ−ｆｕｌｌ  ｒｅｖｏｋｅ）
（ｃ）全てのデバイスがリボークデバイスであるフルリボーク（ｆｕｌｌ  ｒｅｖｏｋｅ）
上記（ａ）〜（ｃ）のいずれのリボーク状況であるかを判別するステップであり、
前記キー情報生成ステップは、
前記左ノードと右ノードそれぞれに属するリーフノードのリボーク状況の組み合わせに応じて、
（１）前記暗号情報ブロックの生成に適用する暗号化キーを決定するキー定義情報の出力処理、
（２）キーサーチ関数の更新処理、
上記（１）、（２）の少なくともいずれかの処理を実行して、最終的に前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行するステップであることを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記情報処理方法は、さらに、
暗号情報ブロック生成部において、前記キー情報生成ステップにおいて生成された暗号化キーを適用した暗号化データを格納した暗号情報ブロックを生成する暗号情報ブロック生成ステップと、
デバイスキーセット生成部において、検証対象デバイス対応のデバイスキーセットを生成するデバイスキーセット生成ステップと、
データ検証処理部において、前記暗号情報ブロック、および前記デバイスキーセットを入力し、入力デバイスキーセットに基づく暗号情報ブロックの処理を実行して秘密情報の取得の可否を検証するデータ検証処理ステップと、
を実行することを特徴とする請求項７に記載の情報処理方法。
【請求項１０】
前記暗号情報ブロックは、秘密情報としてメディアキーを前記暗号化キーによって暗号化したデータを格納したＭＫＢ（Ｍｅｄｉａ  Ｋｅｙ  Ｂｌｏｃｋ）であり、
前記暗号情報ブロック生成ステップは、
前記キー情報生成部の生成した暗号化キーを適用してメディアキーの暗号化キーデータを生成して、該暗号化キーデータを秘密情報として格納したＭＫＢを生成するステップであることを特徴とする請求項９に記載の情報処理方法。
【請求項１１】
前記階層木は、ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式の階層木であり、
前記キー情報生成ステップは、
前記ＥＳＤ方式において規定されるサブセットキーから、前記暗号情報ブロックの生成に適用する暗号化キーに適用するサブセットキーを決定する処理を実行するステップであることを特徴とする請求項７に記載の情報処理方法。
【請求項１２】
前記キー情報生成ステップは、
前記ＥＳＤ方式において規定されるサブセットキー：ＳＫｕ−ｖを決定するパラメータであるサブセットルートの値：ｕと、リボークルートの値：ｖの各値を決定する処理を実行するステップであることを特徴とする請求項１１に記載の情報処理方法。
【請求項１３】
情報処理装置において、階層木構成に基づく暗号化秘密情報の提供構成を適用して特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には前記秘密情報の取得ができない設定とした暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行させるコンピュータ・プログラムであり、
キー情報生成部に、階層木の上位ノードを処理開始点としてカレントノードを設定し、該カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定させるリボーク状況判定ステップと、
前記キー情報生成部に、前記リボーク状況の判定結果に応じた予め定めた処理を実行して、前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行させるキー情報生成ステップと、
を実行させることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに、詳細には、階層木構造を適用した暗号データ提供方式であるＳｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ（ＳＤ）方式を適用した暗号化コンテンツの提供構成、すなわち特定の許容されたユーザデバイスにおいてのみコンテンツを復号して利用可能としたシステムにおいて、暗号化に適用する鍵の決定を効率的に実行する情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
音楽、映画等のコンテンツの記録媒体として、昨今は、ＤＶＤ(Digital Versatile Disc)、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（登録商標）などが利用されている。これらの情報記録媒体には、予めデータが記録され、新たなデータ書き込みを許容しないＲＯＭ型の媒体と、データ書き込み可能な媒体とがある。ユーザは、データ書き込み可能な情報記録媒体を利用することで、例えば、ネットワークや放送を介して受信したコンテンツなどを記録することなどが可能となる。
【０００３】
しかし、放送コンテンツ、その他、音楽データ、画像データ等、多くのコンテンツは、その作成者あるいは販売者に著作権、頒布権等が保有され、これらのコンテンツの配布に際しては、一定の利用制限、すなわち、正規なユーザに対してのみ、コンテンツの利用を許諾し、許可のない複製等が行われないようにする構成をとるのが一般的となっている。
【０００４】
コンテンツ利用制限の１つの手法がコンテンツを暗号化して配付し、正当なコンテンツ利用権を持つユーザや機器のみが復号を可能としたシステムである。なお、コンテンツの暗号化を行なうことで、コンテンツの利用制御を行なう構成については、例えば特許文献１に記載されている。
【０００５】
暗号化に基づくコンテンツ利用制御を実現するコンテンツの著作権保護技術に関する規格としてＡＡＣＳ(Advanced Access Content System)がある。ＡＡＣＳの規格では、コンテンツをユニットとして区分し、各ユニットに対応するユニット鍵を適用した暗号化コンテンツをディスクに記録する構成としている。ユニット鍵を格納したユニット鍵ファイルもまた暗号化ファイルとしてディスクに記録される。さらに、暗号鍵ブロックであるＭＫＢ（Media Key Block）もディスクに記録される。ＭＫＢは、ブロードキャストエンクリプション方式の一態様として知られる木構造の鍵配信方式に基づいて生成される暗号情報ブロックであり、有効なライセンスを持つユーザの情報処理装置に格納されたデバイスキー［Ｋｄ］に基づく処理（復号）によってのみメディアキー［Ｋｍ］の取得が可能となる。
【０００６】
メディアキー［Ｋｍ］を利用することで、ユニット鍵ファイルを復号してユニット鍵を取得して、ユニット鍵を用いて暗号化コンテンツの復号を行なうというシーケンスとなっている。
【０００７】
メディアキー［Ｋｍ］は、木構造の鍵配信システムに基づいて生成される暗号鍵ブロックであるＭＫＢに暗号化データとして格納され、有効なライセンスを持つユーザの情報処理装置に格納されたデバイスキー［Ｋｄ］に基づく処理（復号）によってのみメディアキー［Ｋｍ］の取得が可能となる。
【０００８】
ＭＫＢは、適宜構成データの変更が可能である。すなわち、コンテンツ利用権を持つユーザデバイスの不正が発覚するなどした場合、そのユーザデバイスの有するデバイスキーではメディアキーの取得をできない構成としたＭＫＢを更新ＭＫＢとして配付することが可能である。メディアキーの取得を不可能とされるデバイスは、リボークデバイス（排除デバイス）と呼ばれる。このようなデバイスをリボークする処理は、リボーク処理と呼ばれる。このリボーク処理を随時行なうことで、不正デバイスを効率的に排除可能としている。
【０００９】
このようなリボーク処理を実現する階層木構造を適用した暗号データ配信方式の１つであるＳｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ（ＳＤ）方式は、階層木の中にサブセットを定義した構成であり、ユーザデバイスに保持するデバイスキーのデータ量の削減や処理を高速化した方式として知られている。Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ（ＳＤ）方式については、例えば、特許文献１〜４に記載されている。なお、この方式の具体的構成については後述する。
【００１０】
このような階層木を用いたシステムでは、リボーク状態に応じたＭＫＢを設定することが必要となる。階層木を用いたシステムでは、ユーザデバイスは階層木の末端ノード（リーフ）に設定される。ユーザデバイスの数が多数になると、リボークされるユーザデバイスの設定態様は非常に多くなり、各態様に応じた最適なＭＫＢの構成を導くことが困難となるという問題がある。
【００１１】
Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ（ＳＤ）方式では、リボーク状況に応じて、ＭＫＢに格納するメディアキーの暗号化に適用するサブセットキーを選択することが必要であり、適用するサブセットキーの選択を行なうことが必要となり、この処理もユーザデバイスの数の増加に伴い計算量が増大し、処理が困難となるという問題がある。
【特許文献１】特開２００６−８６５６８号公報
【特許文献２】特開２００５−２８６９５９号公報
【特許文献３】特開２００５−２６０８５２号公報
【特許文献４】特開２００５−１９１８０５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、このような状況に鑑みてなされたものであり、Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ（ＳＤ）方式を適用したシステムにおいて、ユーザデバイスのリボーク状況に応じたＭＫＢの設定、ＭＫＢに適用する暗号鍵としてのサブセットキーの選択を効率的に実行可能とした情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１の側面は、
階層木構成に基づく暗号化秘密情報の提供構成を適用して特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には前記秘密情報の取得ができない設定とした暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行する情報処理装置であり、
キー情報生成部において、
階層木の上位ノードを処理開始点としてカレントノードを設定し、該カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定し、該リボーク状況の判定結果に応じて予め設定された処理を実行して、前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行する構成を有することを特徴とする情報処理装置にある。
【００１４】
さらに、本発明の情報処理装置の一実施態様において、前記キー情報生成部は、リボーク状況の判定処理として、カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況が、
（ａ）リボークデバイスが存在しないゼロリボーク（ｚｅｒｏ  ｒｅｖｏｋｅｄ）
（ｂ）全てのデバイスがリボークデバイスではないが１つ以上リボークデバイスがあるノンフルリボーク（ｎｏｎ−ｆｕｌｌ  ｒｅｖｏｋｅ）
（ｃ）全てのデバイスがリボークデバイスであるフルリボーク（ｆｕｌｌ  ｒｅｖｏｋｅ）
上記（ａ）〜（ｃ）のいずれのリボーク状況であるかを判別し、
前記左ノードと右ノードそれぞれに属するリーフノードのリボーク状況の組み合わせに応じて、
（１）前記暗号情報ブロックの生成に適用する暗号化キーを決定するキー定義情報の出力処理、
（２）キーサーチ関数の更新処理、
上記（１）、（２）の少なくともいずれかの処理を実行して、最終的に前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行する構成を有することを特徴とする。
【００１５】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、前記キー情報生成部の生成した暗号化キーを適用した暗号化データを格納した暗号情報ブロックを生成する暗号情報ブロック生成部と、検証対象デバイス対応のデバイスキーセットを生成するデバイスキーセット生成部と、前記暗号情報ブロック生成部の生成した暗号情報ブロック、および前記デバイスキーセット生成部の生成した検証対象デバイス対応のデバイスキーセットを入力し、入力デバイスキーセットに基づく暗号情報ブロックの処理を実行して秘密情報の取得の可否を検証するデータ検証処理部とを有することを特徴とする。
【００１６】
さらに、本発明の情報処理装置の一実施態様において、前記暗号情報ブロックは、秘密情報としてメディアキーを前記暗号化キーによって暗号化したデータを格納したＭＫＢ（Ｍｅｄｉａ  Ｋｅｙ  Ｂｌｏｃｋ）であり、前記暗号情報ブロック生成部は、前記キー情報生成部の生成した暗号化キーを適用してメディアキーの暗号化キーデータを生成して、該暗号化キーデータを秘密情報として格納したＭＫＢを生成する構成であることを特徴とする。
【００１７】
さらに、本発明の情報処理装置の一実施態様において、前記階層木は、ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式の階層木であり、前記キー情報生成部は、前記ＥＳＤ方式において規定されるサブセットキーから、前記暗号情報ブロックの生成に適用する暗号化キーに適用するサブセットキーを決定する処理を実行する構成であることを特徴とする。
【００１８】
さらに、本発明の情報処理装置の一実施態様において、前記キー情報生成部は、前記ＥＳＤ方式において規定されるサブセットキー：ＳＫｕ−ｖを決定するパラメータであるサブセットルートの値：ｕと、リボークルートの値：ｖの各値を決定する処理を実行する構成であることを特徴とする。
【００１９】
さらに、本発明の第２の側面は、
情報処理装置において、階層木構成に基づく暗号化秘密情報の提供構成を適用して特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には前記秘密情報の取得ができない設定とした暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行する情報処理方法であり、
キー情報生成部において、階層木の上位ノードを処理開始点としてカレントノードを設定し、該カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定するリボーク状況判定ステップと、
前記キー情報生成部において、前記リボーク状況の判定結果に応じて予め設定された処理を実行して、前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行するキー情報生成ステップと、
を実行することを特徴とする情報処理方法にある。
【００２０】
さらに、本発明の情報処理方法の一実施態様において、前記リボーク状況判定ステップは、リボーク状況の判定処理として、カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況が、
（ａ）リボークデバイスが存在しないゼロリボーク（ｚｅｒｏ  ｒｅｖｏｋｅｄ）
（ｂ）全てのデバイスがリボークデバイスではないが１つ以上リボークデバイスがあるノンフルリボーク（ｎｏｎ−ｆｕｌｌ  ｒｅｖｏｋｅ）
（ｃ）全てのデバイスがリボークデバイスであるフルリボーク（ｆｕｌｌ  ｒｅｖｏｋｅ）
上記（ａ）〜（ｃ）のいずれのリボーク状況であるかを判別するステップであり、
前記キー情報生成ステップは、
前記左ノードと右ノードそれぞれに属するリーフノードのリボーク状況の組み合わせに応じて、
（１）前記暗号情報ブロックの生成に適用する暗号化キーを決定するキー定義情報の出力処理、
（２）キーサーチ関数の更新処理、
上記（１）、（２）の少なくともいずれかの処理を実行して、最終的に前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行するステップであることを特徴とする。
【００２１】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、暗号情報ブロック生成部において、前記キー情報生成ステップにおいて生成された暗号化キーを適用した暗号化データを格納した暗号情報ブロックを生成する暗号情報ブロック生成ステップと、デバイスキーセット生成部において、検証対象デバイス対応のデバイスキーセットを生成するデバイスキーセット生成ステップと、データ検証処理部において、前記暗号情報ブロック、および前記デバイスキーセットを入力し、入力デバイスキーセットに基づく暗号情報ブロックの処理を実行して秘密情報の取得の可否を検証するデータ検証処理ステップとを実行することを特徴とする。
【００２２】
さらに、本発明の情報処理方法の一実施態様において、前記暗号情報ブロックは、秘密情報としてメディアキーを前記暗号化キーによって暗号化したデータを格納したＭＫＢ（Ｍｅｄｉａ  Ｋｅｙ  Ｂｌｏｃｋ）であり、前記暗号情報ブロック生成ステップは、前記キー情報生成部の生成した暗号化キーを適用してメディアキーの暗号化キーデータを生成して、該暗号化キーデータを秘密情報として格納したＭＫＢを生成するステップであることを特徴とする。
【００２３】
さらに、本発明の情報処理方法の一実施態様において、前記階層木は、ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式の階層木であり、前記キー情報生成ステップは、前記ＥＳＤ方式において規定されるサブセットキーから、前記暗号情報ブロックの生成に適用する暗号化キーに適用するサブセットキーを決定する処理を実行するステップであることを特徴とする。
【００２４】
さらに、本発明の情報処理方法の一実施態様において、前記キー情報生成ステップは、前記ＥＳＤ方式において規定されるサブセットキー：ＳＫｕ−ｖを決定するパラメータであるサブセットルートの値：ｕと、リボークルートの値：ｖの各値を決定する処理を実行するステップであることを特徴とする。
【００２５】
さらに、本発明の第３の側面は、
情報処理装置において、階層木構成に基づく暗号化秘密情報の提供構成を適用して特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には前記秘密情報の取得ができない設定とした暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行させるコンピュータ・プログラムであり、
キー情報生成部に、階層木の上位ノードを処理開始点としてカレントノードを設定し、該カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定させるリボーク状況判定ステップと、
前記キー情報生成部に、前記リボーク状況の判定結果に応じた予め定めた処理を実行して、前記暗号情報ブロックの生成に適用する暗号化キーの決定処理を実行させるキー情報生成ステップと、
を実行させることを特徴とするコンピュータ・プログラムにある。
【００２６】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能なコンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体、例えば、ＤＶＤ、ＣＤ、ＭＯなどの記録媒体、あるいは、ネットワークなどの通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００２７】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００２８】
本発明の一実施例の構成によれば、階層木構成を適用して特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には秘密情報の取得ができない構成を持つ暗号情報ブロック、すなわちＭＫＢの生成に適用する暗号化キーの決定処理を効率的にかつ確実に実行することが可能となる。すなわち、Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ（ＳＤ）方式を適用したシステムにおいて、階層木の上位ノードを処理開始点としてカレントノードを設定し、カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定し、リボーク状況の判定結果に応じて予め規定した処理を実行する。この処理アルゴリズムの実行によりＭＫＢの生成に適用する暗号鍵としてのサブセットキーの決定処理を効率的に確実に行なうことが可能となる。
【発明を実施するための最良の形態】
【００２９】
以下、図面を参照しながら本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。なお、説明は以下の項目に従って行なう。
１．ディスク記録情報および再生シーケンス
（１−１）ディスク記録情報
（１−２）コンテンツ管理ユニット（ＣＰＳユニット）による管理構成
（１−３）コンテンツ利用シーケンス
２．階層木構成を適用した暗号化データ提供システムであるＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式の概要
３．ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式におけるリボークデバイスに基づくＭＫＢ構成の決定処理
４．検証処理を実行する情報処理装置の構成および処理
【００３０】
［１．ディスク記録情報および再生シーケンス］
まず、ＡＡＣＳ(Advanced Access Content System)に従った情報記録媒体（ディスク）に対する記録データの種類、およびコンテンツの再生処理シーケンスについて説明する。
【００３１】
（１−１）ディスク記録情報
最初に、図１を参照して情報記録媒体１００の格納データについて説明する。情報記録媒体１００は、例えば、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（登録商標）、ＤＶＤなどの情報記録媒体であり、著作権保護対象となるコンテンツを記録したディスクであり、ＡＡＣＳ(Advanced Access Content System)に従ったコンテンツ利用を可能とした各種のデータが記録されている。
【００３２】
図１に示すように、情報記録媒体１００には、暗号化処理および一部データの置き換え処理の施された暗号化コンテンツ１０１と、ブロードキャストエンクリプション方式の一態様として知られる木構造の鍵配信方式に基づいて生成される暗号情報（暗号鍵）ブロックとしてのＭＫＢ（Media Key Block）１０２、コンテンツ復号処理に適用するユニット鍵を暗号化したデータ（Encrypted CPS Unit Key）等から構成されるユニット鍵ファイル１０３、ユニット鍵ファイル１０３の暗号化に適用される鍵の生成情報となるバインディングナンス（Ｂｉｎｄｉｎｇ  Ｎｏｎｃｅ）１０４、コンテンツのコピー・再生制御情報としてのＣＣＩ（Copy Control Information）等を含む利用制御情報１０５が格納される。
【００３３】
なお、図に示す情報記録媒体格納データ例は一例であり、格納データは、ディスクの種類などによって多少異なる。以下、これらの各種情報の概要について説明する。
【００３４】
（１）暗号化コンテンツ１０１
情報記録媒体１００には、様々なコンテンツが格納される。例えば高精細動画像データであるＨＤ（High Definition）ムービーコンテンツなどの動画コンテンツのＡＶ(Audio Visual)ストリームや特定の規格で規定された形式のゲームプログラム、画像ファイル、音声データ、テキストデータなどからなるコンテンツである。これらのコンテンツは、特定のＡＶフォーマット規格データであり、特定のＡＶデータフォーマットに従って格納される。
【００３５】
情報記録媒体に格納されるコンテンツは、区分コンテンツ毎の異なる利用制御を実現するため、区分コンテンツ毎に異なる鍵（ＣＰＳユニット鍵またはユニット鍵（あるいはタイトル鍵と呼ぶ場合もある））が割り当てられ暗号化されて格納される。１つのユニット鍵を割り当てる単位をコンテンツ管理ユニット（ＣＰＳユニット）と呼ぶ。
【００３６】
（２）ＭＫＢ
ＭＫＢ（Media Key Block）１０２は、ブロードキャストエンクリプション方式の一態様として知られる木構造の鍵配信方式に基づいて生成される暗号情報（暗号鍵）ブロックである。ＭＫＢ１０２は有効なライセンスを持つユーザの情報処理装置に格納されたデバイスキー［Ｋｄ］に基づく処理（復号）によってのみ、コンテンツの復号に必要なキーであるメディアキー［Ｋｍ］の取得を可能とした暗号情報ブロックである。すなわち、秘密情報として、メディアキーを格納している。
【００３７】
ＭＫＢはいわゆる階層型木構造に従った情報配信方式を適用したものであり、ユーザデバイス（情報処理装置）が有効なライセンスを持つ場合にのみ、メディアキー［Ｋｍ］の取得を可能とし、無効化（リボーク処理）されたユーザデバイスにおいては、メディアキー［Ｋｍ］の取得が不可能となる。すなわち、ＭＫＢは、階層木構成を適用したブロードキャストエンクリプション方式に基づいて、特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には前記秘密情報の取得ができない構成を持つ暗号情報ブロックである。
【００３８】
ライセンスエンティテイとしての管理センタはＭＫＢに格納する鍵情報の暗号化に用いるデバイスキーの変更により、特定のユーザデバイスに格納されたデバイスキーでは復号できない、すなわちコンテンツ復号に必要なメディアキーを取得できない構成を持つＭＫＢを生成することができる。従って、任意タイミングで不正デバイスを排除（リボーク）して、有効なライセンスを持つデバイスに対してのみ復号可能な暗号化コンテンツを提供することが可能となる。コンテンツの復号処理については後述する。
【００３９】
（３）ユニット鍵ファイル
前述したように各コンテンツまたは複数コンテンツの集合は、コンテンツの利用管理のため、各々、個別の暗号鍵（ＣＰＳユニット鍵）を適用した暗号化がなされて情報記録媒体１００に格納される。すなわち、コンテンツを構成するＡＶ(Audio Visual)ストリーム、音楽データ、動画、静止画等の画像データ、ゲームプログラム、ＷＥＢコンテンツなどは、コンテンツ利用の管理単位としてのユニットに区分され、区分されたユニット毎に異なるユニット鍵を生成して、復号処理を行なうことが必要となる。このユニット鍵を生成するための情報がＣＰＳユニット鍵であり、ＣＰＳユニット鍵を格納したファイルがユニット鍵ファイルである。ユニット鍵ファイルに記録されるＣＰＳユニット鍵は暗号化されたデータとして格納される。
【００４０】
すなわち、ユーザデバイス（情報処理装置）が有効なライセンスを持つ場合にのみ、上述のＭＫＢから取得可能なメディアキー［Ｋｍ］や、図１に示すバインディングナンス（Ｂｉｎｄｉｎｇ  Ｎｏｎｃｅ）１０４を適用して復号が可能となる。復号シーケンスについては、後述する。
【００４１】
（４）バインディングナンス（Ｂｉｎｄｉｎｇ  Ｎｏｎｃｅ）
バインディングナンス（Ｂｉｎｄｉｎｇ  Ｎｏｎｃｅ）は、上述したように、ユニット鍵ファイルに格納されるＣＰＳユニット鍵の暗号化に適用される情報であり、暗号化ＣＰＳユニット鍵の復号に適用される。復号により、ＣＰＳユニット鍵が取得され、取得されたＣＰＳユニット鍵を適用してコンテンツの復号が実行される。
【００４２】
バインディングナンスは固定データではなく、ユニット鍵ファイルに格納されるユニット鍵構成の変更に応じて、随時変更される。例えば、あるＣＰＳユニット＃１，の記録された情報記録媒体に対して、さらに、新たなコンテンツであるＣＰＳユニット＃２を記録するようなＣＰＳユニットの追加記録を行なう場合、ＣＰＳユニット鍵ファイルは、ＣＰＳユニット鍵＃１とＣＰＳユニット鍵＃２を含むファイルとして更新され、この更新処理に際して、バインディングナンスも更新する。
【００４３】
このように、ユニット鍵ファイルの構成に応じて、逐次バインディングナンスを変更することで、情報記録媒体に正規に格納されたＣＰＳユニットと適用可能なＣＰＳユニット鍵との対応を厳格に管理することが可能となる。
【００４４】
（５）利用制御情報
利用制御情報には、例えばコピー・再生制御情報（ＣＣＩ）が含まれる。すなわち、情報記録媒体１００に格納された暗号化コンテンツ１０１に対応する利用制御のためのコピー制限情報や、再生制限情報である。このコピー・再生制御情報（ＣＣＩ）は、コンテンツ管理ユニットとして設定されるＣＰＳユニット個別の情報として設定される場合や、複数のＣＰＳユニットに対応して設定される場合など、様々な設定が可能である。
【００４５】
（１−２）コンテンツ管理ユニット（ＣＰＳユニット）による管理構成
次に、コンテンツ管理ユニット（ＣＰＳユニット）の設定に基づくコンテンツ管理構成について、図２を参照して説明する。情報記録媒体に格納されるコンテンツは、ユニット毎の異なる利用制御を実現するため、ユニット毎に異なる鍵が割り当てられ暗号化処理がなされて格納される。すなわち、コンテンツはコンテンツ管理ユニット（ＣＰＳユニット）に区分されて、個別の鍵（ユニット鍵（ＣＰＳユニット鍵））による暗号化処理がなされ、個別の利用管理がなされる。
【００４６】
コンテンツ利用に際しては、まず、各ユニットに割り当てられたＣＰＳユニット鍵を取得することが必要であり、さらに、その他の必要な鍵、鍵生成情報等を適用して予め定められた復号処理シーケンスに基づくデータ処理を実行して再生を行う。
【００４７】
コンテンツ管理ユニット（ＣＰＳユニット）の設定態様は、様々な設定が可能である。図２を参照してコンテンツ管理ユニット（ＣＰＳユニット）の１つの設定態様について説明する。
【００４８】
図２に示す例では、動画コンテンツや静止画コンテンツなどの様々なコンテンツに対応するタイトル、アプリケーションなどに対応してコンテンツ管理ユニット（ＣＰＳユニット）を設定した例である。各ＣＰＳユニット設定単位毎に、コンテンツ管理ユニット識別子（ＣＰＳユニットＩＤ）が設定され、各ＣＰＳユニット毎に異なる暗号鍵としてのユニット鍵（ＣＰＳユニット鍵）が割り当てられ、各ＣＰＳユニットは、対応するＣＰＳユニット鍵による暗号化がなされ、復号の際には、復号対象のコンテンツに対応するＣＰＳユニット鍵をＣＰＳユニット鍵ファイルから取得することが必要となる。
【００４９】
（１−３）コンテンツ再生シーケンス
次に、図３を参照して、情報記録媒体１００に記録された情報を適用したコンテンツの利用（再生）シーケンスについて説明する。
【００５０】
まず、情報処理装置１８０は、メモリに格納しているデバイスキー［Ｋｄ］１８１を読み出す。デバイスキー１８１は、コンテンツ利用に関するライセンスを受けた情報処理装置に格納された秘密キーである。
【００５１】
次に、情報処理装置１８０は、ステップＳ１１において、デバイスキー１８１を適用して情報記録媒体１００に格納されたメディアキー［Ｋｍ］を格納した暗号鍵ブロックであるＭＫＢ１０２の復号処理を実行して、メディアキー［Ｋｍ］を取得する。ＭＫＢ（Media Key Block）１７１は、前述したようにブロードキャストエンクリプション方式の一態様として知られる木構造の鍵配信方式に基づいて生成される暗号鍵ブロックである。ＭＫＢ１０２は有効なライセンスを持つユーザの情報処理装置に格納されたデバイスキー［Ｋｄ］に基づく処理（復号）によってのみ、コンテンツの復号に必要なキーであるメディアキー［Ｋｍ］の取得を可能とした鍵情報ブロックである。これはいわゆる階層型木構造に従った情報配信方式を適用したものであり、ユーザデバイス（情報処理装置）が有効なライセンスを持つ場合にのみ、メディアキー［Ｋｍ］の取得を可能とし、無効化（リボーク処理）されたユーザデバイスにおいては、メディアキー［Ｋｍ］の取得が不可能となる。
【００５２】
次に、ステップＳ１２において、ステップＳ１１におけるＭＫＢ処理で取得したメディアキーＫｍと、情報記録媒体１００から読み取ったバインディングナンス（Ｂｉｎｄｉｎｇ  Ｎｏｎｃｅ）１０４とに基づく暗号処理によって、暗号鍵としてのバインド鍵［Ｋｂ］を生成する。この鍵生成処理は、例えば、ＡＥＳ暗号アルゴリズムに従った処理として実行される。
【００５３】
このように、ＣＰＳユニット鍵ファイルに記録されるユニット鍵の暗号化に直接的に適用される暗号鍵はバインド鍵［Ｋｂ］であり、このバインド鍵［Ｋｂ］に適用する暗号鍵生成情報がバインディングナンスである。
【００５４】
次に、ステップＳ１３において、バインド鍵［Ｋｂ］によって、情報記録媒体１００から読み取ったＣＰＳユニット鍵ファイル１０３の復号処理を行なう。ＣＰＳユニット鍵ファイル１０３は、各ＣＰＳユニットに対応して設定されるユニット鍵［Ｋｕｎ］の暗号化データを格納したファイルである。ユニット鍵ファイルの具体的構成については後述する。例えば、［Ｅｎｃ（Ｋｂ，ｆ（Ｋｕ＿ｎ，ＣＣＩ））］のような暗号化データとしてユニット鍵を格納している。Ｅｎｃ（ａ，ｂ）はデータｂの鍵ａによる暗号化データを示している。
【００５５】
ステップＳ１３におけるＣＰＳユニット鍵ファイル１０３の復号処理によって、
データ［Ｋｔ］＝ｆ（Ｋｕ＿ｎ，ＣＣＩ）
を取得し、ステップＳ１４において、
データ［Ｋｔ］＝ｆ（Ｋｕ＿ｎ，ＣＣＩ）、
に対して、情報記録媒体１００から読み取った利用制御情報（ＣＣＩ）１０５を適用した演算処理を実行して、ユニット鍵［Ｋｕ＿ｎ］を得る。
例えば、データ［Ｋｔ］＝ｆ（Ｋｕ＿ｎ，ＣＣＩ）が、ユニット鍵［Ｋｕ＿ｎ］と、利用制御情報［ＣＣＩ］との排他論理和（ＸＯＲ）結果データである場合、再度、この演算結果に対して、情報記録媒体から読み取った利用制御情報［ＣＣＩ］の排他論理和（ＸＯＲ）演算を実行することで、ユニット鍵［Ｋｕ＿ｎ］を取得することができる。
【００５６】
次に、ステップＳ１５において、情報記録媒体１００から読み取った暗号化コンテンツ１０１に対して、ユニット鍵［Ｋｕ＿ｎ］を適用した復号処理（例えばＡＥＳ＿Ｄ）を実行し、ステップＳ１６において、例えばＭＰＥＧデコード、圧縮解除、スクランブル解除等、必要なデコード処理を実行して、コンテンツ１８２を取得する。
【００５７】
この処理によって、情報記録媒体１００に格納されたＣＰＳユニットとして管理される暗号化コンテンツが復号されて利用、すなわち再生することができる。
【００５８】
［２．階層木構成を適用した暗号化データ提供システムであるＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式の概要］
次に、階層木構成を適用した暗号化データ提供システムであるＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式の概要について説明する。上述した説明において理解されるように、コンテンツの復号に必要となるメディアキー［Ｋｍ］は、ＭＫＢ（メディアキーブロック）に暗号化されたデータとして格納され、コンテンツ利用の許容されたデバイスのみが自己の保持するデバイスキーを適用してＭＫＢからメディアキーを取得することができる。
【００５９】
リボーク（排除）されたデバイスの有するデバイスキーを適用してもＭＫＢからメディアキー［Ｋｍ］を取得できないように、ＭＫＢは適宜更新される。すなわち、ＭＫＢは号化態様を変更した暗号鍵ブロックとして更新される。この構成を実現するために、階層木構造を適用した暗号データ配信方式が適用される。階層木構造を適用した暗号データ配信方式の１つがＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式である。ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式は、階層木の中にサブセットを定義した構成であり、ユーザデバイスに保持するデバイスキーのデータ量の削減や処理を高速化した方式である。
【００６０】
ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式の説明の前に、基本的な階層木構造を適用した暗号データ提供処理構成について説明する。図４を参照して、階層木構造の基本構成について説明する。図４に示す階層木構造は２分木構造を用いており、その最下層がリーフ（葉）と呼ばれ、頂点、各分岐部およびリーフを含む部分をノードと称する。なお、頂点をルート、あるいはルートノードと呼ぶ。図４に示す２分木階層型木構造において、リーフは８〜１５、ノードは１〜１５、ルートは１である。これらのナンバーはノードナンバーと呼ばれる。ノードナンバーは、例えば上位から順に、かつ左から右に設定される。
【００６１】
この２分木階層型木構造におけるノードナンバー８〜１５のリーフにコンテンツの利用機器としての再生機、受信機等の情報処理装置であるユーザデバイスが１つずつ割り当てられる。リーフに対応付けられたユーザデバイスは、それぞれのデバイスキーセットを保持する。コンテンツの復号に必要となるメディアキー［Ｋｍ］は、ＭＫＢ（メディアキーブロック）に暗号化されたデータとして格納され、コンテンツ利用の許容されたデバイスのみが自己の保持するデバイスキーセットを適用してＭＫＢからメディアキーを取得することができる。
【００６２】
コンテンツ利用の許容されないデバイスは、リボークデバイスと呼ばれる。例えば図４においてノードナンバー１１のリーフに対応するユーザデバイスをリボーク機器として設定する場合、メディアキー［Ｋｍ］を格納したＭＫＢは、ノードナンバー１１のリーフに対応するユーザデバイスの保持するデバイスキーでは、メディアキー［Ｋｍ］を取得できず、その他のリーフ（ノードナンバー＝８〜１０，１２〜１５）に対応するユーザデバイスの保持するデバイスキーを適用した場合には、メディアキー［Ｋｍ］を取得できる暗号化メディアキーを保持した構成とされる。
【００６３】
このようにＭＫＢの更新を適宜、実行することで、リボーク機器の変更に応じて、コンテンツの利用許容機器を随時変更することが可能となる。
【００６４】
階層木構成を適用した暗号データのシステムの１つとして、ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式がある。ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式は、階層木の中に部分木としてのサブセットを定義した構成であり、ユーザデバイスに保持するデバイスキーのデータ量の削減や処理を高速化した方式である。ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式について、図５以下を参照して説明する。ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式では、図５に示すように、階層木を構成する２つのノードｕ，ｖ（ただしｕはｖの上位ノード）を用いて部分木としてのサブセットＳｕ，ｖが定義される。
【００６５】
各サブセットＳｕ，ｖに対応してサブセットキーＳＫｕ−ｖが定義される。図に示す例では、サブセットのルートはノードｕであり、このノードｕをサブセットルートと呼ぶ。また、サブセットルートｕの下位に設定されるもう１つの頂点ｖを以下リボークルートと呼ぶ。すなわち、サブセットは、サブセットルートｕとリボークルートｖによって定義される。
【００６６】
サブセットＳｕ，ｖは、サブセットルート（ｕ）をルート（頂点）ノードとする集合に含まれるリーフから、リボークルートＶを頂点ノードとする集合に含まれるリーフを排除することを目的として設定されるサブセットである。例えば図に示すサブセットＳｕ，ｖは、サブセットルート（ｕ）をルート（頂点）ノードとする集合に含まれるリーフ（Ｕ１〜Ｕ８）から、リボークルートｖを頂点ノードとする集合に含まれるリーフ（Ｕ５，Ｕ６）を排除（リボーク）するサブセットである。
【００６７】
例えば、このサブセットＳｕ，ｖに対応して設定されるサブセットキーＳＫｕ−ｖは、ユーザデバイスとしてのＵ１〜Ｕ８の集合については、Ｕ５，Ｕ６を除く、Ｕ１〜Ｕ４と、Ｕ７，Ｕ８にのみ配布される。もしくは、Ｕ１〜Ｕ４と、Ｕ７，Ｕ８に配布された他のサブセットキーから算出可能な設定とされる。Ｕ５，Ｕ６は、サブセットＳｕ，ｖに対応して設定されるサブセットキーＳＫｕ−ｖを保持しておらず、保持する他のサブセットキーからもサブセットキーＳＫｕ−ｖを算出することができない。
【００６８】
このサブセットキーＳＫｕ−ｖを適用してメディアキー［Ｋｍ］を暗号化して格納したＭＫＢを生成して配布すれば、Ｕ１〜Ｕ４と、Ｕ７，Ｕ８は、自己のデバイスキーの構成要素としてのサブセットキーＳＫｕ−ｖ、または他のサブセットキーから算出したサブセットキーＳＫｕ−ｖを用いてメディアキーを取得できるが、Ｕ５，Ｕ６は、サブセットキーＳＫｕ−ｖを保持して折らず算出することもできないので、ＭＫＢの処理によるメディアキーの取得が不可能となる。
【００６９】
ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式では、このように、部分木としてのサブセットＳｕ，ｖおよびサブセットに対応するサブセットキーＳＫｕ，ｖを定義して特定のユーザデバイスのみに取得可能なデータ（上記例ではメディアキー［Ｋｍ］）を、ＭＫＢを用いて提供するものである。
【００７０】
なお、図５には、１つのサブセットのみを示しているが、階層木において設定可能なサブセットは多数ある。図６〜図１０を参照して、１つのリーフに対応するユーザデバイスに注目して、そのリーフ対応の注目デバイスの保持するデバイスキーであるサブセットキーのセットと、各サブセットキーに対応して、階層木中に設定されるサブセットについて説明する。
【００７１】
図６〜図１０は、いずれも注目ノードをノードナンバー３６のリーフとして、
図６は、サブセットルート＝ノードナンバー１の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセット、
図７は、サブセットルート＝ノードナンバー２の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセット、
図８は、サブセットルート＝ノードナンバー４の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセット、
図９は、サブセットルート＝ノードナンバー９の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセット、
図１０は、サブセットルート＝ノードナンバー１８の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセット、
これらのサブセットについて説明する図である。
【００７２】
例えば、図６は、サブセットルート＝ノードナンバー１の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセットを説明する図である。この場合、図に示すように、定義されるサブセットは、
サブセットルート＝１に対して、
（１）リボークルート＝３としたサブセットＳ１，３、
（２）リボークルート＝５としたサブセットＳ１，５、
（３）リボークルート＝８としたサブセットＳ１，８、
（４）リボークルート＝１９としたサブセットＳ１，１９、
（５）リボークルート＝３７としたサブセットＳ１，３７、
これらの５つであり、
リーフノード３６におけるデバイスキーセットは、上記５つのサブセットに対応するサブセットキーとなり、
｛ＳＫ１−３，ＳＫ１−５，ＳＫ１−８，ＳＫ１−１９，ＳＫ１−３７｝
これら５つのサブセットキーがリーフノード３６に対応するデバイスのデバイスキーを構成するサブセットキーに含められる。
【００７３】
図７は、サブセットルート＝ノードナンバー２の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセットを説明する図である。この場合、図に示すように、定義されるサブセットは、
サブセットルート＝２に対して、
（１）リボークルート＝５としたサブセットＳ２，５、
（２）リボークルート＝８としたサブセットＳ２，８、
（３）リボークルート＝１９としたサブセットＳ２，１９、
（４）リボークルート＝３７としたサブセットＳ２，３７、
これらの４つであり、
リーフノード３６におけるデバイスキーセットは、上記４つのサブセットに対応するサブセットキーとなり、
｛ＳＫ２−５，ＳＫ２−８，ＳＫ２−１９，ＳＫ２−３７｝
これら４つのサブセットキーがリーフノード３６に対応するデバイスのデバイスキーを構成するサブセットキーに含められる。
【００７４】
図８は、サブセットルート＝ノードナンバー４の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセットを説明する図である。この場合、図に示すように、定義されるサブセットは、
サブセットルート＝４に対して、
（１）リボークルート＝８としたサブセットＳ４，８、
（２）リボークルート＝１９としたサブセットＳ４，１９、
（３）リボークルート＝３７としたサブセットＳ４，３７、
これらの３つであり、
リーフノード３６におけるデバイスキーセットは、上記３つのサブセットに対応するサブセットキーとなり、
｛ＳＫ４−８，ＳＫ４−１９，ＳＫ４−３７｝
これら３つのサブセットキーがリーフノード３６に対応するデバイスのデバイスキーを構成するサブセットキーに含められる。
【００７５】
図９は、サブセットルート＝ノードナンバー９の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセットを説明する図である。この場合、図に示すように、定義されるサブセットは、
サブセットルート＝９に対して、
（１）リボークルート＝１９としたサブセットＳ９，１９、
（２）リボークルート＝３７としたサブセットＳ９，３７、
これらの２つであり、
リーフノード３６におけるデバイスキーセットは、上記２つのサブセットに対応するサブセットキーとなり、
｛ＳＫ９−１９，ＳＫ９−３７｝
これら２つのサブセットキーがリーフノード３６に対応するデバイスのデバイスキーを構成するサブセットキーに含められる。
【００７６】
図１０は、サブセットルート＝ノードナンバー１８の設定におけるノードナンバー３６の保持するサブセットキーとそのサブセットキー対応のサブセットを説明する図である。この場合、図に示すように、定義されるサブセットは、
サブセットルート＝１８に対して、
（１）リボークルート＝３７としたサブセットＳ１８，３７、
この１つであり、
リーフノード３６におけるデバイスキーセットは、上記１つのサブセットに対応するサブセットキーとなり、
｛ＳＫ１８−３７｝
このサブセットキーがリーフノード３６に対応するデバイスのデバイスキーを構成するサブセットキーに含められる。
【００７７】
上述したサブセットおよびサブセットキーの組み合わせは、１つの注目リーフノード（３６）に対応するものであり、それぞれのリーフノードについては、各リーフノードに対応するサブセットおよびサブセットキーが定義されることになる。なお、結果として、ノード３６の保持するデバイスキーは、以下のサブセットキーの集合となる。
｛ＳＫ１−３，ＳＫ１−５，ＳＫ１−８，ＳＫ１−１９，ＳＫ１−３７，ＳＫ２−５，ＳＫ２−８，ＳＫ２−１９，ＳＫ２−３７，ＳＫ４−８，ＳＫ４−１９，ＳＫ４−３７，ＳＫ９−１９，ＳＫ９−３７，ＳＫ１８−３７｝
【００７８】
このように、ある注目リーフノードに対応するサブセットは、自身が属することのないリーフ集合を上位ノードから順次設定したものに相当し、これらのサブセットに対応するサブセットキーが、その注目リーフノードに提供されることになる。
【００７９】
なお、サブセットキーの性質として、１つのサブセットキーＳｕ−ｖのリボークノードｖ以下の下位のノードをリボークノードとしたサブセットキーＳｕ−ｖ'（ただし、ｖ'＞ｖ）は、サブセットキーＳｕ−ｖから算出可能であるという性質を持つ。たとえば、図６を参照して説明したサブセットＳＫ１，３に対応するサブセットキーＳＫ１−３からは、リボークノード３以下のノードをリボークノードとしたサブセットキー、例えば、サブセットキーＳ１−６，Ｓ１−７，Ｓ１−１２，・・Ｓ１−１５，Ｓ１−２４，・・Ｓ１−３１，Ｓ１−４８，・・Ｓ１−６３，を算出することができる。
【００８０】
このような構成において、ノードナンバー（リーフナンバー）３２〜６３のいずれかのリーフ対応のデバイスをリボーク（排除）する場合、そのリボークデバイスではメディアキー［Ｋｍ］を取得できない設定としたＭＫＢを設定して、各リーフノード対応のデバイスに提供することになる。例えば、先に図１を参照して説明したように、コンテンツを格納したディスクに更新されたＭＫＢを記録して配付する。
【００８１】
図１１以下を参照して、リボークデバイスを設定した場合におけるＭＫＢにおけるメディアキー［Ｍｋ］の暗号化構成および、注目デバイス（３６）におけるメディアキーの取得処理例について説明する。
【００８２】
図１１は、先に図６を参照して説明したサブセットルート＝１の場合のサブセットおよび、注目デバイス３６の有するサブセットキーを示している。この設定において、図に示すノードナンバー＝４４のリーフノードに対応するデバイスをリボークするものとする。
【００８３】
このとき、ＭＫＢに格納されるメディアキー［Ｋｍ］は、サブセットキーＳｋ１−４４で暗号化される。すなわち、メディアキーブロック（ＭＫＢ）は、データとして
｛ｅＫｍ１−４４｝
を有するＭＫＢとして設定されて、配付されることになる。
なお、ｅＫｍ１−４４は、メディアキー［Ｋｍ］をサブセットキーＳｋ１−４４で暗号化したデータであることを示す。
【００８４】
この構成において、例えばリーフノード（３６）のデバイスは、
ＭＫＢ＝｛ｅＫｍ１−４４｝
この暗号化データを復号してメディアキー［Ｋｍ］を取得する。この処理としては、まず、メディアキー［Ｋｍ］の暗号化キーＳｋ１−４４を算出する。
前述した説明から明らかなように、サブセットキーの性質として、１つのサブセットキーＳｕ−ｖのリボークノードｖ以下の下位のノードをリボークノードとしたサブセットキーＳｕ−ｖ'（ただし、ｖ'＞ｖ）は、サブセットキーＳｕ−ｖから算出可能であるという性質を持つ。
【００８５】
従って、サブセットキーＳｋ１−４４は、リーフノード（３６）対応デバイスの保持するサブセットキーＳｋ１−５から算出可能であり、まず、サブセットキーＳｋ１−５からサブセットキーＳｋ１−４４を算出し、その後、算出したサブセットキーＳｋ１−４４を適用して、ＭＫＢに含まれる暗号化データ｛ｅＫｍ１−４４｝を復号してメディアキー［Ｋｍ］を取得する。
【００８６】
リボークノード（４４）以外の全てのリーフ対応のデバイスは、上述した処理と同様、自デバイスの保持するサブセットキーからサブセットキーＳｋ１−４４を算出し、その後、算出したサブセットキーＳｋ１−４４を適用して、ＭＫＢに含まれる暗号化データ｛ｅＫｍ１−４４｝を復号してメディアキー［Ｋｍ］を取得することができる。なお、リーフノード４５は、サブセットキーＳｋ１−４４を保持しており、算出処理は不要となる。一方、リボークノード（４４）は、サブセットキーＳｋ１−４４を算出することができず、また保持もしていないので、ＭＫＢに含まれる暗号化データ｛ｅＫｍ１−４４｝を復号することができず、メディアキー［Ｋｍ］の取得が不可能となる。
【００８７】
リボークノードをノードナンバー＝４４とした設定とした場合、図１１に示すように、
ＭＫＢ＝｛ｅＫｍ１−４４｝
とした設定で、リーフノード４４以外のリーフノードがメディアキーを取得することを可能とすることができるが、ＭＫＢの構成は、この他の構成とすることも可能である。
【００８８】
例えば、図１２に示す例は、サブセットルートノード＝２の設定となるサブセットを利用して、ＭＫＢの格納鍵の暗号化処理を実行した例である。
サブセットルートノード＝２の設定となるサブセットを利用した場合、リボークノードをノードナンバー＝４４のケースにおいて、
図１１を参照して説明した
（設定例１）ＭＫＢ＝｛ｅＫｍ１−４４｝
と異なる設定例、すなわち、
（設定例２）ＭＫＢ＝｛ｅＫｍ２−４４，ｅＫｍ１−２｝
とする設定が可能となる。
設定例２のＭＫＢ＝｛ｅＫｍ２−４４，ｅＫｍ１−２｝は、
メディアキー［Ｋｍ］をサブセットキーＳｋ２−４４で暗号化したデータと、
メディアキー［Ｋｍ］をサブセットキーＳｋ１−１で暗号化したデータと、
これら２つの暗号化データを含むことを意味している。
【００８９】
このＭＫＢ設定とすることにより、図１２に示す右側半分のリーフノード（４８〜６３）におけるメディアキー取得が効率的になる。すなわち、図１２に示す右側半分のリーフノード（４８〜６３）は、デバイスキーとしてすべて、サブセットキーＳｋ１−２を保持しており、このサブセットキーＳｋ１−２を適用したＭＫＢの格納データ｛ｅＫｍ１−２｝の復号処理によって、メディアキーを直接取得することが可能となる。
【００９０】
リボークノード（４４）を除く図１２に示す左半分のリーフノード（３２〜４３，４５〜４７）は、自己の保持するサブセットキーに基づいてサブセットキーＳｋ２−４４を算出して、その後、算出したサブセットキーＳｋ２−４４を適用して、ＭＫＢに含まれる暗号化データ｛ｅＫｍ２−４４｝を復号してメディアキー［Ｋｍ］を取得する。
【００９１】
このように、同じリボークノードの設定においても、ＭＫＢに格納する暗号化データを変更することで各デバイスにおける処理の効率化を実現することができる。
【００９２】
図１３に示す例は、サブセットルートノード＝４の設定としたサブセットを利用して、ＭＫＢの格納鍵の暗号化処理を実行した例である。
サブセットルートノード＝４の設定としたサブセットを利用した場合、リボークノードをノードナンバー＝４４のケースにおいて、
図１１を参照して説明した
（設定例１）ＭＫＢ＝｛ｅＫｍ１−４４｝
図１２を参照して説明した設定例、
（設定例２）ＭＫＢ＝｛ｅＫｍ２−４４，ｅＫｍ１−２｝
これらと異なる設定例、すなわち、
（設定例３）ＭＫＢ＝｛ｅＫｍ４−８，ｅＫｍ４−１６，ｅＫｍ４−１７，ｅＫｍ１−２，ｅＫｍ５−１１，ｅＫｍ１１−２２，ｅＫｍ２２−４５｝
とする設定が可能となる。
【００９３】
このＭＫＢ設定とすることにより、図１３に示す右側半分のリーフノード（４８〜６３）におけるメディアキー取得が、図１２に示す例と同様、サブセットキーＳｋ１−２の直接適用が可能になる他、左側の各ノードについても、自己の保持するサブセットキーの直接適用、あるいはサブセットキー算出ステップを簡略化することが可能となる。例えば、サブセットキーＳｋ４−８は、リーフノード３６〜３９が保持するサブセットキーであり、リーフノード３６〜３９は、ＭＫＢに含まれる暗号化データ｛ｅＫｍ４−８｝を選択して、自己の保持するサブセットキーＳｋ４−８を適用してメディアキーを取得可能となる。
【００９４】
この設定においてＭＫＢに含まれる暗号化データ、すなわち、
ＭＫＢ＝{ｅＫｍ４−８,ｅＫｍ４−１６,ｅＫｍ４−１７，ｅＫｍ１−２，ｅＫｍ５−１１，ｅＫｍ１１−２２，ｅＫｍ２２−４５｝
これらの各暗号化データは、リボークされていないノードの保持するサブセットキーを直接、または保持するサブセットキーから算出可能なサブセットキーによる暗号化データによって構成されており、リボークリード（４４）のみがメディアキーを取得することができない構成である。
【００９５】
図１１〜図１３に示す例は、リボークノードを１つのリーフノードとした設定例であるが、リボークノードは複数存在することもある。複数のリボークノードが設定された場合の例を図１４に示す。
【００９６】
図１４は、リボークノード＝４４，４５とした例である。
この場合のＭＫＢは、
ＭＫＢ＝｛ｅＫｍ１−２２｝
として設定される。
すなわち、サブセットキーＳｋ１−２２によってメディアキー［Ｋｍ］を暗号化したデータｅＫｍ１−２２を含むＭＫＢが設定されて提供される。
【００９７】
この場合、リボークされていないノード、例えばリーフノード（３６）は、
サブセットルートノード＝１の設定で、
｛ＳＫ１−３，ＳＫ１−５，ＳＫ１−８，ＳＫ１−１９，ＳＫ１−３７｝
であり、自己の保持するサブセットキーＳｋ１−５を適用してサブセットキーＳｋ１−２２を算出可能であり、算出したサブセットキーＳｋ１−２２を適用したＭＫＢ処理によってメディアキーを取得できる。
【００９８】
なお、リボークされているリーフノード（４４）の保持しているサブセットキーは、
サブセットルートノード＝１の設定で、
｛ＳＫ１−３，ＳＫ１−４，ＳＫ１−１０，ＳＫ１−２３，ＳＫ１−４５｝
であり、いずれのサブセットキーを用いても、サブセットキーＳｋ１−２２を算出することは不可能であり、ＭＫＢからのメディアキー取得は不可能となる。
【００９９】
例えば、この図１４に示す例ではリボークノードはリーフノード４４，４５の２つのノードであるが、さらに、注目ノード［リーフノード３６］自身がリボークされた場合のＭＫＢの構成は、図１５に示す設定とされる。すなわち、
ＭＫＢ＝｛ｅＫｍ４−３６，ｅＫｍ５−２２，ｅＫｍ１−２｝
となる。
この設定としたＭＫＢに含まれる暗号化データは、
サブセットキーＳｋ４−３６、
サブセットキーＳｋ５−２２、
サブセットキーＳｋ１−２、
これら３種類のサブセットキーで暗号化されたデータであるが、
リボークノード（３６，４４，４５）のみが、これらのサブセットキーのいずれも算出不可能となり、メディアキーの取得ができないことになる。
【０１００】
［３．ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式におけるリボークデバイスに基づくＭＫＢ構成の決定処理］
次に、ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式におけるリボークデバイスに基づくＭＫＢ構成の決定処理について説明する。
【０１０１】
上述した説明から理解されるように、ＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式において定義されるサブセットは多数存在し、そのサブセット数に対応するサブセットキーが存在する。ＭＫＢに格納する暗号化メディアキー｛ｅＫｍｕ−ｖ｝の構成は、リボークノードの設定に基づいて決定することが可能であるが、この決定処理は、複雑であり、リーフノードの数の増加に伴い処理量が飛躍的に増加することになる。
【０１０２】
そこで、本発明では、このＭＫＢに格納するメディアキーの暗号化に適用するサブセットキーの選択を効率的に実行するアルゴリズムを提案する。具体的には、
リボークされたリーフノードのナンバーリストである「リボークノードリスト」
を入力とし、
ＭＫＢの暗号化に適用するサブセットキーＳｋｕ−ｖのｕ，ｖ値、すなわち、サブセットルート（ｕ）と、リボークルート（ｖ）のナンバー（ｕ，ｖ）を決定するための情報を出力するアルゴリズムである。
【０１０３】
すなわち、リボークデバイスの決定に基づいてＭＫＢにおいて適用すべきサブセットキーを検索（サーチ）するキーを決定するキー検索アルゴリズムである。
【０１０４】
本発明のキー検索アルゴリズムの概要について、図１６を参照して説明する。まず、最上位のルートノードを、
初期ルートノード、
初期カレントノード、
とするスコープ３０１の初期設定を実行して、
以下に示すキーサーチ関数を実行する。
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
キーサーチ関数の出力は、
ＭＫＢに格納する暗号化に適用すべきサブセットキーを定義する情報としてのｕｖ値、ｕマスク値、ルートノードと、カレントノードとの更新情報となる。
【０１０５】
キーサーチ関数は、カレントノードに接続された２つの下位ノードを含む領域を解析対象スコープとして設定し、カレントノードの左下の接続ノードを左ノード（ｌｅｆｔ  ｎｏｄｅ）、カレントノードの右下の接続ノードを右ノード（ｒｉｇｈｔ  ｎｏｄｅ）として、これらの左ノード（ｌｅｆｔ  ｎｏｄｅ）と右ノード（ｒｉｇｈｔ  ｎｏｄｅ）のそれぞれに属するリーフノードのリボーク状態に応じて出力値を決定する。
【０１０６】
すなわち、ＭＫＢに格納する暗号化に適用すべきサブセットキーを定義する情報としてのｕｖ値、ｕマスク値、ルートノードと、カレントノードとの更新情報を出力する。
【０１０７】
キーサーチ関数の実行に基づいて、ルートノード、カレントノードが順次、更新される。更新は、順次下位の階層に進む方向で行われる。すなわち、スコープの設定が順次、下位に向かって進行することになる。最下位層を含むスコープの設定に基づくキーサーチ関数の処理によってアルゴリズムが終了する。なお、あるカレントノードの設定された先行スコープにおけるキーサーチ関数の実行後に更新される後続スコープのカレントノードは、先行スコープにおける左ノード（ｌｅｆｔ  ｎｏｄｅ）または右ノード（ｒｉｇｈｔ  ｎｏｄｅ）、またはこれらの両者のノードとなる。
【０１０８】
リボーク状況の判定処理の具体例について、図１６に示すスコープ３０２の設定時における判定処理を例として説明する。
図１６に示すスコープ３０２では、
例えば、
ルートノード＝ノード（１）
カレントノード＝ノード（５）
左ノード（ｌｅｆｔ  ｎｏｄｅ）＝ノード（１０）
右ノード（ｒｉｇｈｔ  ｎｏｄｅ）＝ノード（１１）
として、
キーサーチ関数として、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（５））
が実行される。
【０１０９】
このキーサーチ関数の実行において、
左ノード（ｌｅｆｔ  ｎｏｄｅ）＝ノード（１０）と、右ノード（ｒｉｇｈｔ  ｎｏｄｅ）＝（１１）のそれぞれに属するリーフノードのリボーク状態の判別処理が行われる。
具体的には、
（ａ）リボークデバイスが存在しないゼロリボーク（ｚｅｒｏ  ｒｅｖｏｋｅｄ）
（ｂ）全てのデバイス＝リボークではないが１つ以上リボークがあるノンフルリボーク（ｎｏｎ−ｆｕｌｌ  ｒｅｖｏｋｅ）
（ｃ）全てのデバイス＝リボークであるフルリボーク（ｆｕｌｌ  ｒｅｖｏｋｅ）
これらのいずれのリボーク状況であるかを判別する。
【０１１０】
図に示す例では、
左ノード（ｌｅｆｔ  ｎｏｄｅ）＝ノード（１０）に属するリーフノード（４０，４１，４２，４３）について、上記（ａ），（ｂ），（ｃ）のいずれの状態であるかが判別し、さらに、
右ノード（Ｒｉｇｈｔ  ｎｏｄｅ）＝ノード（１１）に属するリーフノード（４４，４５，４６，４７）について、上記（ａ），（ｂ），（ｃ）のいずれの状態であるかが判別する。
【０１１１】
この判別状況に応じて、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（５））
の結果を出力する。
すなわち、ＭＫＢに格納する暗号化に適用すべきサブセットキーを定義する情報としてのｕｖ値、ｕマスク値を出力し、カレントノードの更新を実行する。この処理関数であるキーサーチ関数の具体的な処理例について、図１７を参照して説明する。
【０１１２】
図１７に示すように、
キーサーチ関数：ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
による処理は、
（Ａ）サブセットキー（ｕ，ｖ）値の追加処理、
（Ｂ）キーサーチ関数の更新処理、
これらの２種類の処理となる。
上記（Ａ），（Ｂ）の２種類の処理が、
カレントノードを頂点として設定されるスコープにおいて、カレントノードの左右の接続ノードである左ノード（ｌｅｆｔ  ｎｏｄｅ）と、右ノード（ｒｉｇｈｔ  ｎｏｄｅ）に属するリーフノードのリボーク状況、すなわち、
（ａ）リボークデバイスが存在しないゼロリボーク（ｚｅｒｏ  ｒｅｖｏｋｅｄ）
（ｂ）全てのデバイス＝リボークデバイスではないが１つ以上リボークデバイスがあるノンフルリボーク（ｎｏｎ−ｆｕｌｌ  ｒｅｖｏｋｅ）
（ｃ）全てのデバイス＝リボークデバイスであるフルリボーク（ｆｕｌｌ  ｒｅｖｏｋｅ）
これらのいずれのリボーク状況であるかに応じて、処理が決定される。
【０１１３】
図１７を参照して具体的なリボーク状況の組み合わせ各々についての処理について説明する。
［左ノード＝ゼロリボーク、右ノード＝ゼロリボークの場合］
この場合は、サブセットキー（ｕ，ｖ値）の追加処理が実行される。すなわち、
（ｕ−ｖ）＝（ｃｕｒｒｅｎｔ−ｌｅｆｔ）を追加
（ｕ−ｖ）＝（ｃｕｒｒｅｎｔ−ｒｉｇｈｔ）を追加
このサブセットキーの追加処理が実行され、キーサーチ関数の更新は実行されず処理が終了する。
【０１１４】
例えば、これは、たとえば、図１６に示すスコープ３０２において、
左ノード（ｌｅｆｔ  ｎｏｄｅ）＝ノード（１０）に属するリーフノード（４０，４１，４２，４３）にリボークノードが存在せず、
右ノード（Ｒｉｇｈｔ  ｎｏｄｅ）＝ノード（１１）に属するリーフノード（４４，４５，４６，４７）についてもリボークノードが存在しない状況である。この場合、このスコープについての更なる下位階層についてのキーサーチ関数の実行は不要となり、処理が終了する。
【０１１５】
また、このとき、サブセットキーとして、
（ｕ−ｖ）＝（ｃｕｒｒｅｎｔ−ｌｅｆｔ）を追加
（ｕ−ｖ）＝（ｃｕｒｒｅｎｔ−ｒｉｇｈｔ）を追加
これらの処理が実行されることになる。たとえば、図１６に示すスコープ３０２において、この処理が実行された場合、
（ｕ−ｖ）＝（ｃｕｒｒｅｎｔ−ｌｅｆｔ）＝（５，１０）
（ｕ−ｖ）＝（ｃｕｒｒｅｎｔ−ｒｉｇｈｔ）＝（５，１１）
これらのｕ，ｖ値によって定義されるサブセットキーが追加される。すなわち、ＭＫＢに格納する暗号化メディアキーの暗号化に適用するサブセットキーとして追加する処理が行なわれる。
【０１１６】
具体的には、
サブセットキーＳｋ５−１０、
サブセットキーＳｋ５−１１、
これら２つをＭＫＢに格納する暗号化メディアキーの暗号化に適用するサブセットキーとして追加する処理が行なわれる。
【０１１７】
この処理によって、ＭＫＢには、
｛ｅＫｍ５−１０,ｅＫｍ５−１１｝
これらの暗号化データの追加が行なわれることになる。この処理は、リボークされていないリーフノード（４０，４１，４２，４３）は、これらのリーフノードの所有するサブセットキーＳｋ５−１１を適用してメディアキーの取得を可能とし、リーフノード（４４，４５，４６，４７）は、これらのリーフノードの所有するサブセットキーＳｋ５−１０を適用してメディアキーの取得を可能とすることに相当する処理である。
【０１１８】
［左ノード＝ゼロリボーク、右ノード＝ノンフルリボークの場合］
この場合には、サブセットキーの追加は実行されず、キーサーチ関数の更新処理のみが実行される。すなわち、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｒｉｇｈｔ＿ｎｏｄｅ）
とするキーサーチ更新が実行される。
【０１１９】
例えば、図１６に示すスコーブ３０２における処理の場合について説明する。スコープ３０２、すなわち、
ルートノード＝ノード（１）
カレントノード＝ノード（５）
左ノード（ｌｅｆｔ  ｎｏｄｅ）＝ノード（１０）
右ノード（ｒｉｇｈｔ  ｎｏｄｅ）＝ノード（１１）
の設定において、
キーサーチ関数として、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（５））
が実行され、その実行結果が、［左ノード＝ゼロリボーク、右ノード＝ノンフルリボーク］であったとすると、
キーサーチ関数は、この更新処理によって、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（１１））
として更新される。
この更新されたキーサーチ関数を次に実行する。
【０１２０】
［左ノード＝ゼロリボーク、右ノード＝フルリボークの場合］
この場合には、サブセットキーの追加が実行される。すなわち、
（ｕ−ｖ）＝（ｒｏｏｔ−ｒｉｇｈｔ）を追加
このサブセットキーの追加処理が実行され、キーサーチ関数の更新は実行されず処理が終了する。
【０１２１】
図１６に示すスコープ３０２の設定例の場合について説明する。すなわち、
ルートノード＝ノード（１）
カレントノード＝ノード（５）
左ノード（ｌｅｆｔ  ｎｏｄｅ）＝ノード（１０）
右ノード（ｒｉｇｈｔ  ｎｏｄｅ）＝ノード（１１）
の設定において、
キーサーチ関数として、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（５））
が実行され、その実行結果が、［左ノード＝ゼロリボーク、右ノード＝フルリボーク］であったとすると、
追加されるサブセットキーは、
（ｕ−ｖ）＝（ｒｏｏｔ−ｒｉｇｈｔ）＝（１−１１）、
すなわち、
具体的には、
サブセットキーＳｋ１−１１、
このサブセットキーをＭＫＢに格納する暗号化メディアキーの暗号化に適用するサブセットキーとして追加する処理が行なわれる。
【０１２２】
この処理によって、ＭＫＢには、
｛ｅＫｍ１−１１｝
この暗号化データの追加が行なわれることになる。この処理は、フルリボークであるリーフノードの集合（４４，４５，４６，４７）をリボークするサブセットに対応するサブセットキーＳｋ１−１１を適用した暗号化データの追加に相当する処理となる。
【０１２３】
［左ノード＝ノンフルリボーク、右ノード＝ゼロリボークの場合］
この場合には、サブセットキーの追加は実行されず、キーサーチ関数の更新処理のみが実行される。すなわち、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｌｅｆｔ＿ｎｏｄｅ）
とするキーサーチ更新が実行される。
【０１２４】
［左ノード＝ノンフルリボーク、右ノード＝ノンフルリボークの場合］
この場合には、所定条件を満足する場合にサブセットキーの追加が行なわれ、さらにキーサーチ関数の更新処理が実行される。
サブセットキーの追加は、
実行したキーサーチ関数、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
上記関数において、ルートノード（ｒｏｏｔ＿ｎｏｄｅ）と、カレントノード（ｃｕｒｒｅｎｔ＿ｎｏｄｅ）が一致していない場合にのみ実行される。この場合、
（ｕ−ｖ）＝（ｒｏｏｔ−ｃｕｒｒｅｎｔ）を追加
このサブセットキーの追加処理が実行される。
上記条件を満足しない場合、すなわち、ルートノード（ｒｏｏｔ＿ｎｏｄｅ）と、カレントノード（ｃｕｒｒｅｎｔ＿ｎｏｄｅ）が一致している場合は、サブセットキーの追加処理は実行されない。
【０１２５】
さらに、キーサーチ関数の更新処理として、
ＫｅｙＳｅａｒｃｈ（ｌｅｆｔ＿ｎｏｄｅ，ｌｅｆｔ＿ｎｏｄｅ）
ＫｅｙＳｅａｒｃｈ（ｒｉｇｈｔ＿ｎｏｄｅ，ｒｉｇｈｔ＿ｎｏｄｅ）
これらの２つのキーサーチ関数を設定するキーサーチ更新が実行される。
次のステップとしては、これらの２つのキーサーチ関数を各々実行することになる。なお、関数の実行は、並列に実行してもシーケンシャルに実行してもよい。関数を実行する装置の能力に応じて処理態様を決定してよい。
【０１２６】
［左ノード＝ノンフルリボーク、右ノード＝フルリボークの場合］
この場合には、所定条件を満足する場合にサブセットキーの追加が行なわれ、さらにキーサーチ関数の更新処理が実行される。
サブセットキーの追加は、
実行したキーサーチ関数、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
上記関数において、ルートノード（ｒｏｏｔ＿ｎｏｄｅ）と、カレントノード（ｃｕｒｒｅｎｔ＿ｎｏｄｅ）が一致していない場合にのみ実行される。この場合、
（ｕ−ｖ）＝（ｒｏｏｔ−ｃｕｒｒｅｎｔ）を追加
このサブセットキーの追加処理が実行される。
上記条件を満足しない場合、すなわち、ルートノード（ｒｏｏｔ＿ｎｏｄｅ）と、カレントノード（ｃｕｒｒｅｎｔ＿ｎｏｄｅ）が一致している場合は、サブセットキーの追加処理は実行されない。
【０１２７】
さらに、キーサーチ関数の更新処理として、
ＫｅｙＳｅａｒｃｈ（ｌｅｆｔ＿ｎｏｄｅ，ｌｅｆｔ＿ｎｏｄｅ）
このキーサーチ関数を設定するキーサーチ更新が実行される。
次のステップにおいて、このキーサーチ関数を実行する。
【０１２８】
［左ノード＝フルリボーク、右ノード＝ゼロリボークの場合］
この場合には、サブセットキーの追加が実行される。すなわち、
（ｕ−ｖ）＝（ｒｏｏｔ−ｌｅｆｔ）を追加
このサブセットキーの追加処理が実行され、キーサーチ関数の更新は実行されず処理が終了する。
【０１２９】
［左ノード＝フルリボーク、右ノード＝ノンフルリボークの場合］
この場合には、所定条件を満足する場合にサブセットキーの追加が行なわれ、さらにキーサーチ関数の更新処理が実行される。
サブセットキーの追加は、
実行したキーサーチ関数、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
上記関数において、ルートノード（ｒｏｏｔ＿ｎｏｄｅ）と、カレントノード（ｃｕｒｒｅｎｔ＿ｎｏｄｅ）が一致していない場合にのみ実行される。この場合、
（ｕ−ｖ）＝（ｒｏｏｔ−ｃｕｒｒｅｎｔ）を追加
このサブセットキーの追加処理が実行される。
上記条件を満足しない場合、すなわち、ルートノード（ｒｏｏｔ＿ｎｏｄｅ）と、カレントノード（ｃｕｒｒｅｎｔ＿ｎｏｄｅ）が一致している場合は、サブセットキーの追加処理は実行されない。
【０１３０】
さらに、キーサーチ関数の更新処理として、
ＫｅｙＳｅａｒｃｈ（ｒｉｇｈｔ＿ｎｏｄｅ，ｒｉｇｈｔ＿ｎｏｄｅ）
このキーサーチ関数を設定するキーサーチ更新が実行される。
次のステップにおいて、このキーサーチ関数を実行する。
【０１３１】
［左ノード＝フルリボーク、右ノード＝フルリボークの場合］
この場合には、サブセットキーの追加処理、キーサーチ関数の更新処理とも実行することなく処理を終了する。
【０１３２】
このように、設定スコープ中の左ノードと、右ノードに属するリーフノードのリボーク状況に応じて、サブセットキーの追加処理や、キーサーチ関数の更新処理が実行され、全てのキーサーチ関数が終了した時点で処理が終了し、その時点で追加されたサブセットキー（ｕ，ｖ）を、ＭＫＢに格納されるメディアキー［Ｋｍ］の暗号化に適用するサブセットキーとして決定する。このようにして決定したサブセットキーを用いてメディアキーを暗号化したデータを格納したＭＫＢを提供ＭＫＢとして決定する。
【０１３３】
具体的なリボークデバイスの設定に基づくキーサーチ関数の処理例について、図１８以下を参照して説明する。図１８には、
リボークリストを入力として、
キーサーチ関数：
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
を実行して、先に図１７を参照して説明したリーフノードのリボーク状況判定処理を実行して、ＭＫＢに適用する暗号化鍵としてのサブセットキーの情報（ｕ，ｖ）を出力するシーケンスを示している。
【０１３４】
このキー算出アルゴリズムにおいて入力するリボークリストとして適用するノードナンバーの具体例について、図１９を参照して説明する。図１９には、階層数＝６の階層木構成を示している。各ノードには、３２ビットのノードナンバーが設定されるが、階層数に応じて、利用されないビットはマスクされる。図に示す［ｘｘｘ］はビットマスクされたデータであり、この設定では利用されない。下位６ビットのみが利用される。すなわち、階層数＝６に対応する下位ビット６ビットのみが利用される。
【０１３５】
各ノードナンバーの最下位ビット（ＬＳＢ側）から最初に出現するビット値［１］の位置が階層数を示している。例えば、
ルートノード（１）には、
ノードナンバー＝［ＸＸ・・ＸＸ１０  ００００］
が設定されており、ＬＳＢ側から最初に出現するビット値［１］は最下位から６ビット目であり、リーフノードの設定された階層から数えて６番目の階層にあることを示している。
【０１３６】
ノード（２），（３）には、それぞれ、
ノードナンバー＝［ＸＸ・・ＸＸ０１  ００００］
ノードナンバー＝［ＸＸ・・ＸＸ１１  ００００］
が設定されており、ＬＳＢ側から最初に出現するビット値［１］は最下位から５ビット目であり、リーフノードの設定された階層から数えて５番目の階層にあることを示している。
同一階層に複数ノードがある場合は、左からビット値を順次増加するようにノードナンバーが付与される。ただし、階層数を示すビット位置の値は［１］に固定した条件の下でビット値の増加がなされる。
【０１３７】
以下、同様であり、最下層のリーフノード（３２〜６３）のノードナンバーは、
ノード（３２）：［ＸＸ・・ＸＸ００  ０００１］
ノード（３３）：［ＸＸ・・ＸＸ００  ００１１］
・・
ノード（６２）：［ＸＸ・・ＸＸ１０  １１０１］
ノード（６３）：［ＸＸ・・ＸＸ１０  １１１１］
このように、設定される。
【０１３８】
例えば、この設定において、リボークデバイスがリーフノード（４２）（４３）（４４）である場合、ＭＫＢに適用するサブセットキーの算出アルゴリズムに対する入力値は、これらの３つのノードナンバー、すなわち、
ノード（４２）：［ＸＸ・・ＸＸ０１  ０１０１］
ノード（４３）：［ＸＸ・・ＸＸ０１  ０１１１］
ノード（４４）：［ＸＸ・・ＸＸ０１  １００１］
これらの３つのノードナンバーが入力される。
【０１３９】
図１８に戻り、キーサーチ関数の実行シーケンスについて説明する。
入力された３つのリボークノード番号に基づいて、以下のシーケンスでキーサーチ関数が、順次、実行される。
ステップ１：ＫｅｙＳｅａｒｃｈ（１，１）
状態判定：Ｊｕｄｇｅ（２）ｎＦＵＬ，Ｊｕｄｇｅ（３）ＺＥＲＯ
ステップ２：ＫｅｙＳｅａｒｃｈ（１，２）
状態判定：Ｊｕｄｇｅ（４）ＺＥＲＯ，Ｊｕｄｇｅ（５）ｎＦＵＬ
ステップ３：ＫｅｙＳｅａｒｃｈ（１，５）
状態判定：Ｊｕｄｇｅ（１０）ｎＦＵＬ，Ｊｕｄｇｅ（１１）ｎＦＵＬ
キー出力：Ｏｕｔｐｕｔ  １−５
ステップ４：ＫｅｙＳｅａｒｃｈ（１０，１０）
状態判定：Ｊｕｄｇｅ（２０）  ＺＥＲＯ，Ｊｕｄｇｅ（２１）ＦＵＬＬ
キー出力：Ｏｕｔｐｕｔ  １０−２１
ステップ５：ＫｅｙＳｅａｒｃｈ（１１，１１）
状態判定：Ｊｕｄｇｅ（２２）ｎＦＵＬ，Ｊｕｄｇｅ（２３）ＺＥＲＯ
ステップ６：ＫｅｙＳｅａｒｃｈ（１１，２２）
状態判定：Ｊｕｄｇｅ（４４）ＦＵＬＬ，Ｊｕｄｇｅ（４５）ＺＥＲＯ
キー出力：Ｏｕｔｐｕｔ  １１−４４
【０１４０】
まず、ステップ１において、図１９に示す最上位ルート（１）を、
ルートノード、
カレントノード、
として、キーサーチ関数
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（１））
を実行する。図１８、および上記アルゴリズムの説明中では、
ＫｅｙＳｅａｒｃｈ（１，１）
として示している。
【０１４１】
このキーサーチ関数の実行において、
カレントノード（１）の左下の接続ノードである左ノード（２）、カレントノード（１）の右下の接続ノードである右ノード（３）それぞれに属するリーフノードのリボーク状態を判定する。
図１９に示す階層木から理解されるように、リボークノード４２〜４４は、左ノード（２）に属する。従って、状態判定結果は、
左ノード（２）：ノンフルリボーク
右ノード（３）：ゼロリボーク
となる。
なお、図１８、および上記アルゴリズムの説明中では、
ゼロリボークを［ＺＥＲＯ］
ノンフルリボークを［ｎＦＵＬ］
フルリボークを［ＦＵＬ］
と表記している。
【０１４２】
ステップ１のキーサーチ関数の実行における状態判定結果は、
状態判定：Ｊｕｄｇｅ（２）ｎＦＵＬ，Ｊｕｄｇｅ（３）ＺＥＲＯ
となり、この場合、先に図１７を参照して説明したように、キーサーチ関数の更新が行なわれ、次のキーサーチを実行する。この処理がステップ２となる。
キーサーチ関数の更新は、図１７を参照して説明したように、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｌｅｆｔ＿ｎｏｄｅ）
とする更新処理であり、
ルートノード（１）、
左ノード（２）、
であるので、
ステップ２におけるキーサーチ関数は、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（２））
となる。
【０１４３】
すなわち、ステップ２では、
ルートノード（１）
カレントノード（２）
左ノード（４）
右ノード（５）
の設定でキーサーチ関数：ＫｅｙＳｅａｒｃｈ（１，２）
を実行する。
【０１４４】
このステップ２におけるリボーク状態判定処理は、カレントノード（２）の左下の接続ノードである左ノード（４）、カレントノード（２）の右下の接続ノードである右ノード（５）それぞれに属するリーフノードのリボーク状態の判定を行なう。
図１９に示す階層木から理解されるように、リボークノード４２〜４４は、右ノード（５）に属する。従って、状態判定結果は、
左ノード（４）：ゼロリボーク
右ノード（５）：ノンフルリボーク
となる。
【０１４５】
ステップ２のキーサーチ関数の実行における状態判定結果は、
状態判定：Ｊｕｄｇｅ（４）ＺＥＲＯ，Ｊｕｄｇｅ（５）ｎＦＵＬ
となり、この場合、先に図１７を参照して説明したように、キーサーチ関数の更新が行なわれ、次のキーサーチを実行する。この処理がステップ３となる。
キーサーチ関数の更新は、図１７を参照して説明したように、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｒｉｇｈｔ＿ｎｏｄｅ）
とする更新処理であり、この時点で、
ルートノード（１）、
右ノード（５）、
であるので、
ステップ３におけるキーサーチ関数は、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（５））
となる。
【０１４６】
すなわち、ステップ３では、
ルートノード（１）
カレントノード（５）
左ノード（１０）
右ノード（１１）
の設定でキーサーチ関数：ＫｅｙＳｅａｒｃｈ（１，５）
を実行する。
【０１４７】
このステップ３におけるリボーク状態判定処理は、カレントノード（５）の左下の接続ノードである左ノード（１０）、カレントノード（５）の右下の接続ノードである右ノード（１１）それぞれに属するリーフノードのリボーク状態の判定を行なう。
図１９に示す階層木から理解されるように、リボークノード４２〜４４は、左ノード（１０）、右ノード（１１）に含まれている。従って、状態判定結果は、
左ノード（１０）：ノンフルリボーク
右ノード（１１）：ノンフルリボーク
となる。
【０１４８】
ステップ３のキーサーチ関数の実行における状態判定結果は、
状態判定：Ｊｕｄｇｅ（１０）ｎＦＵＬ，Ｊｕｄｇｅ（１１）ｎＦＵＬ
となり、この場合、先に図１７を参照して説明したように、所定条件を満足する場合にサブセットキーの追加が行なわれ、さらにキーサーチ関数の更新処理が実行される。
サブセットキーの追加は、
実行したキーサーチ関数、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
上記関数において、ルートノード（ｒｏｏｔ＿ｎｏｄｅ）と、カレントノード（ｃｕｒｒｅｎｔ＿ｎｏｄｅ）が一致していない場合にのみ実行される。この場合、
キー情報として、
（ｕ−ｖ）＝（ｒｏｏｔ−ｃｕｒｒｅｎｔ）
を出力する。
本ステップ３では、
ルートノード（１）≠カレントノード（５）
であるので、
（ｕ−ｖ）＝（ｒｏｏｔ（１）−ｃｕｒｒｅｎｔ（５））＝（１−５）
を出力する。
この出力は、ＭＫＢに格納するメディアキーの暗号化鍵としてサブセットキーＳｋ１−５が選択されたことを意味する。
【０１４９】
さらに、キーサーチ関数の更新処理として、
ＫｅｙＳｅａｒｃｈ（ｌｅｆｔ＿ｎｏｄｅ，ｌｅｆｔ＿ｎｏｄｅ）
ＫｅｙＳｅａｒｃｈ（ｒｉｇｈｔ＿ｎｏｄｅ，ｒｉｇｈｔ＿ｎｏｄｅ）
これらの２つのキーサーチ関数を設定するキーサーチ更新が実行される。
すなわち、
ステップ４のキーサーチ：ＫｅｙＳｅａｒｃｈ（１０，１０）
ステップ５のキーサーチ：ＫｅｙＳｅａｒｃｈ（１１，１１）
を設定し、実行する。
【０１５０】
ステップ４のキーサーチ：ＫｅｙＳｅａｒｃｈ（１０，１０）
このキーサーチでは、
ルートノード（１０）
カレントノード（１０）
左ノード（２０）
右ノード（２１）
の設定でキーサーチ関数：ＫｅｙＳｅａｒｃｈ（１０，１０）
を実行する。
【０１５１】
このステップ４におけるリボーク状態判定処理は、カレントノード（１０）の左下の接続ノードである左ノード（２０）、カレントノード（１０）の右下の接続ノードである右ノード（２１）それぞれに属するリーフノードのリボーク状態の判定を行なう。
図１９に示す階層木から理解されるように、リボークノード４２，４３は、右ノード（２１）に含まれている。従って、状態判定結果は、
左ノード（２０）：ゼロリボーク
右ノード（２１）：フルリボーク
となる。
【０１５２】
ステップ４のキーサーチ関数の実行における状態判定結果は、
状態判定：Ｊｕｄｇｅ（２０）ＺＥＲＯ，Ｊｕｄｇｅ（２１）ＦＵＬ
となり、この場合、先に図１７を参照して説明したように、サブセットキーの追加が実行される。この場合、
キー情報として、
（ｕ−ｖ）＝（ｒｏｏｔ−ｒｉｇｈｔ）
を出力する。
すなわち、
（ｕ−ｖ）＝（ｒｏｏｔ−ｒｉｇｈｔ）＝（１０−２１）
を出力する。
この出力は、ＭＫＢに格納するメディアキーの暗号化鍵としてサブセットキーＳｋ１０−２１が選択されたことを意味する。
【０１５３】
ステップ５のキーサーチ関数：ＫｅｙＳｅａｒｃｈ（１１，１１）は、以下の設定で実行される。
ルートノード（１１）
カレントノード（１１）
左ノード（２２）
右ノード（２３）
【０１５４】
この結果、状態判定結果は、
状態判定：Ｊｕｄｇｅ（２２）ｎＦＵＬ，Ｊｕｄｇｅ（２３）ＺＥＲＯ
となり、この場合、先に図１７を参照して説明したように、キーサーチ関数の更新が行なわれる。
キーサーチ関数の更新は、図１７を参照して説明したように、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｌｅｆｔ＿ｎｏｄｅ）
とする更新処理であり、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１１），ｌｅｆｔ＿ｎｏｄｅ（２２））
となる。
【０１５５】
ステップ６では、この更新キーサーチ関数を実行する。
すなわち、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ（１１），ｃｕｒｒｅｎｔ＿ｎｏｄｅ（２２））を以下の設定で実行する。
ルートノード（１１）
カレントノード（２２）
左ノード（４４）
右ノード（４５）
【０１５６】
このステップ６におけるリボーク状態判定処理は、図１９に示す階層木から理解されるように、リボークノード４４は、左ノード（４４）に含まれている。従って、状態判定結果は、
左ノード（４４）：フルリボーク
右ノード（４５）：ゼロリボーク
となる。
【０１５７】
ステップ６のキーサーチ関数の実行における状態判定結果は、
状態判定：Ｊｕｄｇｅ（４４）ＦＵＬ，Ｊｕｄｇｅ（４５）ＺＥＲＯ
となり、この場合、サブセットキーの追加が行なわれる。
サブセットキーの追加は、
（ｕ−ｖ）＝（ｒｏｏｔ−ｌｅｆｔ）
を出力する。
本ステップ６では、
（ｕ−ｖ）＝（ｒｏｏｔ（１１）−ｃｕｒｒｅｎｔ（４４））＝（１１−４４）
を出力する。
この出力は、ＭＫＢに格納するメディアキーの暗号化鍵としてサブセットキーＳｋ１１−４４が選択されたことを意味する。
【０１５８】
このようにして、処理が終了し、
選択されたサブセットキー情報としての（ｕ−ｖ）の値は、
（ｕ−ｖ）＝（１−５），（１０−２１），（１１−４４）
となり、ＭＫＢに格納するメディアキーの暗号化鍵として、
サブセットキー：Ｓｋ１−５、
サブセットキー：Ｓｋ１０−２１、
サブセットキー：Ｓｋ１１−４４、
が決定される。
【０１５９】
なお、実際のキーサーチ関数の実行アルゴリズムにおいては、サブセットキー情報としての（ｕ−ｖ）の値：（ｕ−ｖ）＝（１−５），（１０−２１），（１１−４４）
これらの値が直接出力されるものではなく、
ｕの値を示す［ｕＭａｓｋ］
ｖの値を示す［ｕｖ  ｖａｌｕｅ］
これらのデータの組が出力される。すなわち、先に図１９を参照して説明したノードナンバーを適用したキー関数の実行処理に従った演算によって、サブセットキー情報としての（ｕ−ｖ）の値を導くことが可能な
ｕの値を示す［ｕＭａｓｋ］
ｖの値を示す［ｕｖ  ｖａｌｕｅ］
これらの情報が出力される。
【０１６０】
図２０を参照して、
（ｕ−ｖ）＝（１−５），
（ｕ−ｖ）＝（１０−２１），
（ｕ−ｖ）＝（１１−４４）
これらの各ｕ，ｖ値に対応する［ｕＭａｓｋ］、［ｕｖ  ｖａｌｕｅ］の値について説明する。
【０１６１】
例えば出力：（ｕ−ｖ）＝（１−５），
に対応する［ｕＭａｓｋ］、［ｕｖ  ｖａｌｕｅ］は、以下のようになる。
ｕＭａｓｋ    ：１１１１・・・１１  １１００  ００００
ｕｖ  ｖａｌｕｅ：ｘｘｘｘ・・・ｘｘ  ｘｘ０１  １０００
各値は、ノードナンバーと同様、３２ビットである。
【０１６２】
［ｕＭａｓｋ］の値は、（ｕ−ｖ）の値のｕの階層を示す。すなわち、ＬＳＢ側からの０の数が木構造における最下層（リーフノード）からの階層数に相当する。この場合、
０の数＝６
であり、
最下層から６番目の層が（ｕ−ｖ）のｕの設定階層である。図１９の木構造においては、ルートノード（１）が選択される。
【０１６３】
また、［ｕｖ  ｖａｌｕｅ］の値は、（ｕ−ｖ）の値のｖのノードナンバーを示す。この例では、［ｕｖ  ｖａｌｕｅ］の値は、
ｕｖ  ｖａｌｕｅ：ｘｘｘｘ・・・ｘｘ  ｘｘ０１  １０００
であり、これは、図１９に示すノード（５）のノードナンバーである。
【０１６４】
このように、
［ｕＭａｓｋ］：ｕの属する階層は、リーフノードから上位６番目、
［ｕｖ  ｖａｌｕｅ］：ｖのノードナンバーはノード（５）に対応、
これらの情報が導かれ、結果として、
（ｕ−ｖ）＝（１−５）
が算出される。
【０１６５】
また、出力：（ｕ−ｖ）＝（１０−２１），
に対応する［ｕＭａｓｋ］、［ｕｖ  ｖａｌｕｅ］は、以下のようになる。
ｕＭａｓｋ    ：１１１１・・・１１  １１１１  １０００
ｕｖ  ｖａｌｕｅ：ｘｘｘｘ・・・ｘｘ  ｘｘ０１  ０１１０
【０１６６】
［ｕＭａｓｋ］の値は、（ｕ−ｖ）の値のｕの階層を示す。この場合、
０の数＝３
であり、
最下層から３番目の層が（ｕ−ｖ）のｕの設定階層である。図１９の木構造においては、ノード（８〜１５）が選択される。
【０１６７】
また、［ｕｖ  ｖａｌｕｅ］の値は、（ｕ−ｖ）の値のｖのノードナンバーを示す。この例では、［ｕｖ  ｖａｌｕｅ］の値は、
ｕｖ  ｖａｌｕｅ：ｘｘｘｘ・・・ｘｘ  ｘｘ０１  ０１１０
であり、これは、図１９に示すノード（２１）のノードナンバーである。
【０１６８】
このように、
［ｕＭａｓｋ］：ｕの属する階層は、リーフノードから上位３番目、
［ｕｖ  ｖａｌｕｅ］：ｖのノードナンバーはノード（２１）に対応、
これらの情報が導かれ、ノード２１に接続されるリーフノードから上位３番目のノードは、ノード（１０）であるので、結果として、
（ｕ−ｖ）＝（１０−２１）
が算出される。
【０１６９】
また、出力：（ｕ−ｖ）＝（１１−４４），
に対応する［ｕＭａｓｋ］、［ｕｖ  ｖａｌｕｅ］は、以下のようになる。
ｕＭａｓｋ    ：１１１１・・・１１  １１１１  １０００
ｕｖ  ｖａｌｕｅ：ｘｘｘｘ・・・ｘｘ  ｘｘ０１  １００１
【０１７０】
［ｕＭａｓｋ］の値は、（ｕ−ｖ）の値のｕの階層を示す。この場合、
０の数＝３
であり、
最下層から３番目の層が（ｕ−ｖ）のｕの設定階層である。図１９の木構造においては、ノード（８〜１５）が選択される。
【０１７１】
また、［ｕｖ  ｖａｌｕｅ］の値は、（ｕ−ｖ）の値のｖのノードナンバーを示す。この例では、［ｕｖ  ｖａｌｕｅ］の値は、
ｕｖ  ｖａｌｕｅ：ｘｘｘｘ・・・ｘｘ  ｘｘ０１  １００１
であり、これは、図１９に示すノード（４４）のノードナンバーである。
【０１７２】
このように、
［ｕＭａｓｋ］：ｕの属する階層は、リーフノードから上位３番目、
［ｕｖ  ｖａｌｕｅ］：ｖのノードナンバーはノード（４４）に対応、
これらの情報が導かれ、ノード４４に接続されるリーフノードから上位３番目のノードは、ノード（１１）であるので、結果として、
（ｕ−ｖ）＝（１１−４４）
が算出される。
【０１７３】
次に、図２１に示すフローチャートを参照して、上述したサブセットキー情報の生成処理のシーケンスについて説明する。図２１に示す処理は、例えばＰＣ等の情報処理装置によって実行される。例えば、図２１に示すフローに従った処理シーケンスを規定したプログラムをＣＰＵ等によって構成されるデータ処理部において実行することでサブセットキー情報を出力する。
【０１７４】
サブセットキー情報は、特定のリボークデバイスにおいてＭＫＢからメディアキー（Ｋｍ）を取得不可能とするためのＭＫＢに格納されるメディアキーの暗号化に適用するサブセットキーを指定する情報である。具体的には、上述した
ＭＫＢの暗号化に適用するサブセットキー：Ｓｋｕ−ｖの、
ｕの値を示す［ｕＭａｓｋ］
ｖの値を示す［ｕｖ  ｖａｌｕｅ］
これらのデータを生成して出力する。
【０１７５】
まず、ステップＳ１０１において、デバイスリスト、リボークデバイスリストを入力する。デバイスリストは、例えば図１９に示すツリー構成情報を有するデバイスリストであり、最下段のリーフノードに個々のテバイスが対応付けられたリストである。さらにルートノードからリーフノードに至る各ノードには、ノードナンバー、例えば、図１９を参照して説明した３２ビットのノードナンバーが対応付けられている。リボークデバイスリストは、リボーク対象となるデバイスの情報であり、具体的には、各リボークデバイス対応のノードナンバー情報のリストである。
【０１７６】
ステップＳ１０２以下において、前述したキーサーチ関数を実行する。すなわち、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
上記キーサーチ関数である。
【０１７７】
まず、ステップＳ１０２において、最上位のルートノードを、
初期ルートノード、
初期カレントノード、
とする初期設定を実行して、以下のキーサーチ関数、
ＫｅｙＳｅａｒｃｈ（ｒｏｏｔ＿ｎｏｄｅ，ｃｕｒｒｅｎｔ＿ｎｏｄｅ）
を実行する。
【０１７８】
ステップＳ１０３では、カレントノードに接続された２つの下位ノードを含む領域を解析対象スコープとして設定し、カレントノードの左下の接続ノードを左ノード（ｌｅｆｔ  ｎｏｄｅ）、カレントノードの右下の接続ノードを右ノード（ｒｉｇｈｔ  ｎｏｄｅ）として、これらの左ノード（ｌｅｆｔ  ｎｏｄｅ）と右ノード（ｒｉｇｈｔ  ｎｏｄｅ）のそれぞれに属するリーフノードのリボーク状態を判定する。
【０１７９】
具体的には、カレントノードの左ノード（ｌｅｆｔ  ｎｏｄｅ）と右ノード（ｒｉｇｈｔ  ｎｏｄｅ）のそれぞれに属するリーフノードが、
（ａ）リボークデバイスが存在しないゼロリボーク（ｚｅｒｏ  ｒｅｖｏｋｅｄ）
（ｂ）全てのデバイス＝リボークではないが１つ以上リボークがあるノンフルリボーク（ｎｏｎ−ｆｕｌｌ  ｒｅｖｏｋｅ）
（ｃ）全てのデバイス＝リボークであるフルリボーク（ｆｕｌｌ  ｒｅｖｏｋｅ）
これらのいずれのリボーク状況であるかを判別する。
【０１８０】
ステップＳ１０４において、カレントノードの左ノード（ｌｅｆｔ  ｎｏｄｅ）と右ノード（ｒｉｇｈｔ  ｎｏｄｅ）のそれぞれに属するリーフノードのリボーク状況（ａ）〜（ｃ）の組み合わせに応じて、先に図１７を参照して説明した処理、すなわち、
（１）ＭＫＢに格納する暗号化に適用すべきサブセットキーを定義する情報としてのｕｖ値、ｕマスク値を出力処理、
（２）キーサーチ関数の更新処理、
少なくともいずれかの処理を実行する。
【０１８１】
ステップＳ１０５では、キーサーチ関数の更新処理が実行されたか否かを判定し、キーサーチ関数の更新が実行された場合は、ステップＳ１０３に戻り、更新されたキーサーチ関数を実行する。すなわち、更新されたカレントノードの左ノード（ｌｅｆｔ  ｎｏｄｅ）と右ノード（ｒｉｇｈｔ  ｎｏｄｅ）のそれぞれに属するリーフノードのリボーク状況の判定、さらに、ステップＳ１０４において、図１７に示すリボーヘク滋養共の組み合わせに応じた処理、すなわち、
（１）ＭＫＢに格納する暗号化に適用すべきサブセットキーを定義する情報としてのｕｖ値、ｕマスク値を出力、
（２）カレントノードの更新処理としてのキーサーチ関数の更新、
少なくともいずれかの処理を実行する。
【０１８２】
なお、キーサーチ関数の更新においては、先に図１７を参照して説明したように、複数のキーサーチ関数を実行するように設定される場合もある。例えば、図１７に示すノンフルリボーク−ノンフルリボークの組み合わせなどである。この場合は、これらの複数のキーサーチ関数を順次、または並列に実行する。
【０１８３】
ステップＳ１０５において、キーサーチ関数の更新が実行されなかったと判定された場合は、ステップＳ１０６に進み、これまでのキーサーチ関数の実行によって出力されたＭＫＢに格納する暗号化に適用すべきサブセットキーを定義する情報としてのｕｖ値、ｕマスク値をＭＫＢに格納するメディアキー（Ｋｍ）の暗号化に適用するサブセットキー情報として出力して処理を終了する。
【０１８４】
［４．検証処理を実行する情報処理装置の構成および処理］
次に、上述したサブセットキー情報の生成処理を適用したＭＫＢの生成処理を実行してシミュレーションとしての検証処理を実行する情報処理装置の構成について、図２２を参照して説明する。
【０１８５】
図２２は、例えばＰＣ等の情報処理装置によって構成可能であり、以下に説明する処理を実行させるプログラムを制御部（ＣＰＵ）の制御の下に実行させ、所定の必要情報を入力することで検証処理を行なう。図２２に示す構成によって実行する処理の概要は以下の通りである。
仮想的な複数のデバイスと、各デバイスに対応するデバイスキーセットを設定する。
設定デバイス中からランダムにリボークデバイスを選択する。
上述したサブセットキー情報の生成処理を適用したＭＫＢの生成処理を実行する。
リボークデバイスのデバイスキーによるＭＫＢ処理を行い、メディアキーの取得可否を検証する。
ノンリボークデバイスのデバイスキーによるＭＫＢ処理を行い、メディアキーの取得可否を検証する。
【０１８６】
リボークデバイスでは、ＭＫＢからのメディアキーの取得に失敗し、ノンリボークデバイスでは、ＭＫＢからのメディアキーの取得に成功すれば、正しいＭＫＢの生成、すなわち正確なサブセットキーの選択が実行されたことが検証される。
【０１８７】
図２２の構成について説明する。サブセットキー情報生成部４２１は、デバイスリスト４０１、およびリボークデバイスリスト４０２を入力して、上述した処理、すなわち、図１６〜図２１を参照して説明したＭＫＢに格納するメディアキーの暗号化に適用するサブセットキーの選択アルゴリズムを実行して、サブセットキー情報を生成する。サブセットキー情報生成部４２１の生成するサブセットキー情報は、上述した
サブセットキー：Ｓｋｕ−ｖの、
ｕの値を示す［ｕＭａｓｋ］
ｖの値を示す［ｕｖ  ｖａｌｕｅ］
これらのデータの組を生成して出力する。
【０１８８】
すなわち、デバイスリスト４０１に基づいて、各デバイスを最下段ノード（リーフ）として設定した２分岐ツリーを構成し、ランダムに選択したリボークデバイスからなるリボークデバイスリスト４０２のデバイス情報に基づいて、先に図１７を参照してルールに従って、キーサーチ関数を実行し、ＭＫＢに格納する暗号化に適用すべきサブセットキーを定義する情報としてのｕｖ値、ｕマスク値を出力する。これが、図２２に示すサブセットキー情報（ｕＭａｓｋ，ｕｖ  ｖａｌｕｅ）４０３である。
【０１８９】
サブセットキー情報（ｕＭａｓｋ，ｕｖ  ｖａｌｕｅ）４０３は、ＭＫＢ生成部４２２に入力され、ＭＫＢ生成部４２２においてＭＫＢの生成が行われる。ＭＫＢ生成部４２２には、ＭＫＢに格納するメディアキー（Ｋｍ）と、署名鍵としての秘密鍵（Ｋｐｒｉｖ）を含む鍵情報４０５が入力される。
【０１９０】
ＭＫＢ生成部４２２は、鍵情報４０５に含まれるメディアキー（Ｋｍ）に対して、サブセットキー情報（ｕＭａｓｋ，ｕｖ  ｖａｌｕｅ）４０３によって決定されるサブセットキー：Ｓｋｕ−ｖを適用した暗号化処理を行なう。通常、サブセットキー情報（ｕＭａｓｋ，ｕｖ  ｖａｌｕｅ）４０３には、複数のｕ，ｖの組データによって構成され、ＭＫＢ生成部４２２は、各（ｕ，ｖ）の組に応じたサブセットキー：Ｓｋｕ−ｖを適用した暗号化処理を行って複数の暗号化キーデータ：Ｅｎｋ（Ｓｋｕ−ｖ，Ｋｍ）を生成する。Ｅｎｋ（Ｓｋｕ−ｖ，Ｋｍ）は、メディアキー（Ｋｍ）をサブセットキー：Ｓｋｕ−ｖを適用して暗号化したデータを示す。
【０１９１】
さらに、少なくとも１つ以上の暗号化キーデータ：Ｅｎｋ（Ｓｋｕ−ｖ，Ｋｍ）を含むデータに対して、鍵情報４０５に含まれる秘密鍵（Ｋｐｒｉｖ）を適用した電子署名を実行してＭＫＢ４０６を完成させ、データ検証処理部４２４に入力する。
【０１９２】
また、サブセットキー情報生成部４２１は、検証処理対象とするノードをランダムに選択して、検証デバイスノードリスト４０４を生成する。検証デバイスノードリスト４０４は、デバイスキーセット生成部４２３に入力され、予め各デバイス対応のデバイスキーが記録されたデバイスキーファイル４０７から、検証デバイスに対応するデバイスキーを選択して、デバイスキーセット情報４０８を生成して、データ検証処理部４２４に入力する。なお、検証デバイスは、リボークデバイスと、ノンリボークデバイスを含む複数のデバイスとすることが好ましい。
【０１９３】
データ検証処理部４２４は、
ＭＫＢ４０６と、
検証デバイスに対応するデバイスキーセット４０８、
これらのデータを入力する。
【０１９４】
データ検証処理部４２４では、
検証デバイスのデバイスキーを適用してＭＫＢの処理を実行し、ＭＫＢに格納されたメディアキー（Ｋｍ）の取得処理を実行する。
例えば、複数の検証デバイスａ，ｂ，ｃが設定された場合、
（１）検証デバイスａのデバイスキーセットを適用したＭＫＢ処理によるメディアキー（Ｋｍ）の取得処理
（２）検証デバイスｂのデバイスキーセットを適用したＭＫＢ処理によるメディアキー（Ｋｍ）の取得処理
（３）検証デバイスｃのデバイスキーセットを適用したＭＫＢ処理によるメディアキー（Ｋｍ）の取得処理
これらの処理を順次実行する。
【０１９５】
これらの処理によって、
リボークデバイスにおいては、デバイスキーセットを適用したＭＫＢ処理によるメディアキー（Ｋｍ）の取得処理に失敗し、
ノンリボークデバイスにおいては、デバイスキーセットを適用したＭＫＢ処理によるメディアキー（Ｋｍ）の取得処理に成功、
これらの検証結果４１０が取得されれば、正しいＭＫＢの生成、すなわち、正確なサブセットキーの選択によるＭＫＢ生成が行われたことが確認される。
【０１９６】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【０１９７】
なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１９８】
例えば、プログラムは記録媒体としてのハードディスクやＲＯＭ（Read Only Memory)に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)，ＭＯ(Magneto optical)ディスク，ＤＶＤ(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することができる。
【０１９９】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールする他、ダウンロードサイトから、コンピュータに無線転送したり、ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０２００】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０２０１】
以上、説明したように、本発明の一実施例の構成によれば、階層木構成を適用して特定の選択デバイスに配付されたデバイスキーを適用した場合にのみ秘密情報の取得を可能とし、排除デバイスであるリボークデバイスに配付されたデバイスキーを適用した場合には秘密情報の取得ができない構成を持つ暗号情報ブロック、すなわちＭＫＢの生成に適用する暗号化キーの決定処理を効率的にかつ確実に実行することが可能となる。すなわち、Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ（ＳＤ）方式を適用したシステムにおいて、階層木の上位ノードを処理開始点としてカレントノードを設定し、カレントノードの直下の左ノードと右ノードのそれぞれに属するリーフノードのリボーク状況を判定し、リボーク状況の判定結果に応じて予め規定した処理を実行する。この処理アルゴリズムの実行によりＭＫＢの生成に適用する暗号鍵としてのサブセットキーの決定処理を効率的に確実に行なうことが可能となる。
【図面の簡単な説明】
【０２０２】
【図１】情報記録媒体の格納データの例について説明する図である。
【図２】コンテンツ管理ユニット（ＣＰＳユニット）の設定に基づくコンテンツ管理構成について説明する図である。
【図３】コンテンツ管理ユニット（ＣＰＳユニット）として記録されたコンテンツの再生シーケンスについて説明する図である。
【図４】基本的な階層木構造を適用した暗号データ提供処理構成について説明する図である。
【図５】階層木の中に部分木としてのサブセットを定義したＥＳＤ（Ｅｘｐｌｉｃｉｔ  Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ）方式について説明する図である。
【図６】階層木において設定可能なサブセットの例について説明する図である。
【図７】階層木において設定可能なサブセットの例について説明する図である。
【図８】階層木において設定可能なサブセットの例について説明する図である。
【図９】階層木において設定可能なサブセットの例について説明する図である。
【図１０】階層木において設定可能なサブセットの例について説明する図である。
【図１１】リボークデバイスを設定した場合におけるＭＫＢにおけるメディアキー［Ｍｋ］の暗号化構成および、注目デバイス（３６）におけるメディアキーの取得処理例について説明する図である。
【図１２】サブセットルートノード＝２の設定となるサブセットを利用して、ＭＫＢの格納鍵の暗号化処理を実行した例について説明する図である。
【図１３】サブセットルートノード＝４の設定としたサブセットを利用して、ＭＫＢの格納鍵の暗号化処理を実行した例について説明する図である。
【図１４】リボークノード＝４４，４５とした場合のＭＫＢおよびデバイスキーセットについて説明する図である。
【図１５】注目ノード［リーフノード３６］自身がリボークされた場合のＭＫＢの格納鍵の暗号化処理例について説明する図である。
【図１６】本発明の一実施例に係る情報処理装置において実行するキー検索アルゴリズムの概要について説明する図である。
【図１７】本発明の一実施例に係る情報処理装置において実行するキーサーチ関数の具体的な処理例について説明する図である。
【図１８】具体的なリボークデバイスの設定に基づくキーサーチ関数の処理例について説明する図である。
【図１９】本発明の一実施例に係る情報処理装置において実行するキー算出アルゴリズムにおいて入力するリボークリストとして適用するノードナンバーの具体例について説明する図である。
【図２０】各ｕ，ｖ値に対応する［ｕＭａｓｋ］、［ｕｖ  ｖａｌｕｅ］の値について説明する図である。
【図２１】本発明の一実施例に係る情報処理装置において実行するサブセットキー情報の生成処理のシーケンスについて説明するフローチャートを示す図である。
【図２２】サブセットキー情報の生成処理を適用したＭＫＢの生成処理を実行してシミュレーションとしての検証処理を実行する情報処理装置の構成について説明する図である。
【符号の説明】
【０２０３】
１００  情報記録媒体
１０１  暗号化コンテンツ
１０２  ＭＫＢ（Media Key Block）
１０３  ユニット鍵ファイル
１０４  バインディングナンス（Ｂｉｎｄｉｎｇ  Ｎｏｎｃｅ）
１０５  利用制御情報
１８１  デバイスキー
１８２  コンテンツ
３０１  スコープ
３０２  スコープ
４０１  デバイスリスト
４０２  リボークデバイスリスト
４０３  サブセットキー情報
４０４  検証デバイスリスト
４０５  鍵情報
４０６  ＭＫＢ
４０７  デバイスキーファィル
４０８  デバイスキーセット情報
４１０  検証結果
４２１  サブセットキー情報生成部
４２２  ＭＫＢ生成部
４２３  デバイスキーセット生成部
４２４  データ検証処理部
【図２】
2008092514.tif 000003
【図３】
2008092514.tif 000004
【図４】
2008092514.tif 000005
【図６】
2008092514.tif 000006
【図７】
2008092514.tif 000007
【図８】
2008092514.tif 000008
【図９】
2008092514.tif 000009
【図１０】
2008092514.tif 000010
【図１１】
2008092514.tif 000011
【図１２】
2008092514.tif 000012
【図１３】
2008092514.tif 000013
【図１４】
2008092514.tif 000014
【図１５】
2008092514.tif 000015
【図１６】
2008092514.tif 000016
【図１７】
2008092514.tif 000017
【図１８】
2008092514.tif 000018
【図１９】
2008092514.tif 000019
【図２０】
2008092514.tif 000020
【図２１】
2008092514.tif 000021
【図２２】
2008092514.tif 000022
【図１】
2008092514.tif 000023
【図５】
2008092514.tif 000024