(57)【要約】　　　（修正有）【課題】記録媒体中の鍵情報量の増加を押さえ、再生装置の保有すべき秘密情報量を減少することが可能な木構造を用いた鍵管理方式、および、システムの提供。【解決手段】情報提供者は、第１の暗号鍵により暗号化コンテンツを生成し、第１の暗号鍵に対応する第１の復号鍵を、第２の暗号鍵により暗号化して暗号化鍵情報を生成する。暗号化コンテンツ及び暗号化鍵情報を記録媒体等の形態で情報受信者に提供する。情報受信者は、予め第２の暗号鍵に対応した第２の復号鍵を生成する為の情報を有し、それを用いて第１の復号鍵を取得し、コンテンツを復号化する。第１の復号鍵及び第２の復号鍵は、情報受信者をリーフに割り当てた木構造を利用した鍵管理方式に基づいて情報受信者に配布する。上記木構造を複数の階層に分割して複数の部分木を規定し、部分木単位で鍵情報の割り当てを行うことで、情報受信者が保有すべき鍵情報の情報量を減少させることができる。【選択図】　　　図１
2004120008.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報受信者をリーフに割り当てた木構造を規定する手段と、
前記木構造を所定階層毎に分割して複数の部分木を規定する手段と、
前記複数の部分木の各部分木に対して鍵情報の割り当てを行う手段と、
を有することを特徴とする鍵管理システム。
【請求項２】
前記鍵情報の割り当てを行う手段は、
前記部分木のリーフに割り当てられた複数の情報受信者全てにより構成される集合と、前記部分木中の特定のノード以下のリーフに割り当てられた情報受信者との差分集合を、前記部分木中の全てのノードについて特定する手段と、
前記差分集合の各々に鍵情報を割り当てる手段と、
前記複数の情報受信者の各々に対して、当該情報受信者が属する全ての差分集合に割り当てられた鍵情報を割り当てる手段と、
からなることを特徴とする請求項１記載の鍵管理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、木構造を用い、特定の受信者の無効化機能を有する鍵管理方式に関する。
【０００２】
【従来の技術】
映画、音楽などの著作物であるコンテンツの著作権を保護するために、情報を利用してコンテンツを暗号化して提供することが行われている。そのようなシステムの一例では、再生装置には複数のデバイス鍵を与え、記録媒体には暗号化されたコンテンツと、再生を許可された再生装置のみがコンテンツの復号鍵を生成できるようにした鍵生成情報とを記録する。再生を許可された再生装置は、鍵生成情報からコンテンツの復号鍵を生成し、その復号鍵を使用してコンテンツを復号して再生する。一方、再生を許可されていない（無効化された）再生装置は、コンテンツの復号鍵を生成できないので、暗号化されているコンテンツを再生することはできない。
【０００３】
このようなシステムで、鍵情報を管理するための手法として木構造を用いた鍵管理方式が提案されており、その例として「Ｔｈｅ　Ｃｏｍｐｌｅｔｅ　Ｓｕｂｔｒｅｅ　Ｍｅｔｈｏｄ」、「Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ」などが知られている（例えば非特許文献１参照。）。これらの方式では、コンテンツの復号鍵を生成するための鍵生成情報が不正に暴露されたり漏洩した場合には、その鍵生成情報を無効化するための処理が可能となっている。
【０００４】
また、上記のような方式に基づいてデジタルコンテンツの保護を行う方法も提案されている（例えば非特許文献２参照。）。
【０００５】
【非特許文献１】
Ｄａｌｉｔ　Ｎａｏｒ，　Ｎｏｎｉ　Ｎａｏｒ，　ａｎｄ　Ｈｅｆｆ　Ｌｏｔｓｐｉｅｃｈ，”Ｒｅｖｏｃａｔｉｏｎ　ａｎｄ　Ｔｒａｃｉｎｇ　Ｓｃｈｅｍｅｓ　ｆｏｒ　Ｓｔａｔｅｌｅｓｓ　Ｒｅｃｅｉｖｅｒｓ”，　Ｌｅｃｔｕｒｅ　Ｎｏｔｅｓ　ｉｎ　Ｃｏｍｐｕｔｅｒ　Ｓｃｉｅｎｃｅ，　Ｖｏｌ．２１３９，　ｐｐ．４１−６２，　２００１
【非特許文献２】
中野稔久、他３名、“デジタルコンテンツ保護用鍵管理方式−木構造パターン分割方式−”、２００２年暗号と情報セキュリティシンポジウム講演論文集、２００２年２月１日
【０００６】
【発明が解決しようとする課題】
上述のＴｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄにおいては、受信者は自分の属する全ての差分集合に割り当てられた鍵を保有しておかなければならないため、受信者側に多くの記憶容量を必要とする。疑似乱数生成器を用いることでこの情報量を削減することはできるのであるが、それでもＴｈｅ　Ｃｏｍｐｌｅｔｅ　Ｓｕｂｔｒｅｅ　Ｍｅｔｈｏｄと比較すると１０倍以上の情報記憶容量が要求される。一方、Ｔｈｅ　Ｃｏｍｐｌｅｔｅ　Ｓｕｂｔｒｅｅ　Ｍｅｔｈｏｄについては、受信者側に記憶すべき情報量は少ないが、受信者へ伝送される（情報の伝送に記録媒体を利用する場合には、記録媒体に記録される）鍵情報量が大きくなりすぎてしまう。本発明が解決しようとする課題には、上記のものが一例として挙げられる。
【０００７】
【課題を解決するための手段】
請求項１に記載の発明は、鍵管理システムにおいて、複数の情報受信者をリーフに割り当てた木構造を規定する手段と、前記木構造を所定階層毎に分割して複数の部分木を規定する手段と、前記複数の部分木の各部分木に対して鍵情報の割り当てを行う手段と、を有することを特徴とする。
【０００８】
【発明の実施の形態】
以下、図面を参照して本発明の好適な実施の形態について説明する。まず、鍵管理方式について基礎的な説明を行い、続いて本発明の方式を説明する。
【０００９】
（１．１）受信者の無効化機能を有する鍵管理方式
送信者が多数の受信者に対して同一の情報を伝送するシステムにおいて、信頼できる鍵管理機関が、あらかじめ全ての受信者に伝送情報を復号するための秘密情報を配布しておき、その秘密情報を持たない受信者が送信者からの情報を復号できないように、送信者側で情報を暗号化して伝送する方法がある。この場合に問題となるのは、全ての受信者が同一の秘密情報を保有している場合、悪意ある受信者が自分の保有する秘密情報を１回公開してしまえば、その後に伝送される情報は誰にでも復号が可能になってしまうことである。
【００１０】
この問題の対策として、鍵管理機関が受信者毎に異なる秘密情報を配布し、特定の受信者の秘密情報が漏洩した場合、その受信者の保有していた秘密情報を用いても伝送された情報を復号できないようにする手法、即ち、受信者の無効化機能を有する鍵管理方式がある。本発明はそのような鍵管理方式を扱う。
【００１１】
ここでは、情報の伝送は特定の送信者から多数の受信者への片方向伝送のみであり、また受信者に最初に秘密情報（復号鍵等）を割り当てる以外は、受信者の保有する秘密情報を一切変更できないようなアプリケーションを想定している。
【００１２】
受信者の無効化機能を有する鍵管理方式を適用した情報配信システムの１つのモデルを図１（ａ）に示す。図示のように、情報配信システムは、鍵管理機関１、情報送信者２及び情報受信者３の３つの要素から構成される。以下、各要素について説明する。
【００１３】
・鍵管理機関
鍵管理機関１は、情報送信者２が伝送する伝送情報６（暗号文）を復号するための秘密情報（暗号文復号用鍵４ａなど）を各受信者に割り当てる。また、鍵管理機関１は、伝送情報６を復号不可能にしたい受信者（今後、ある特定の受信者に対して、伝送される情報を復号できないようにすることを「受信者の無効化」と呼ぶ）の集合から、前記集合以外の受信者のみが復号できるような鍵情報４ｂを生成し、伝送情報６を暗号化するための鍵（暗号化用鍵情報５）とあわせて情報送信者への配送も行う。
【００１４】
ここで各受信者に割り当てる秘密情報（復号用鍵４ａなど）と伝送情報６の暗号化に用いられる鍵（暗号化用鍵情報５）の生成・保管・配送は安全に行われるものと仮定する。
【００１５】
・情報送信者
情報送信者２は、鍵管理機関１から配送された、伝送情報の暗号化用鍵情報５を用いて伝送情報６を暗号化し、無効化されていない受信者のみが復号できる鍵情報４ｂと一緒に伝送情報６（暗号文）を受信者に伝送する。
【００１６】
・情報受信者
無効化されていない受信者については、伝送情報６（暗号文）を受信したとき、受信者が持つ秘密情報（暗号文復号用の鍵４ａ等）を使って受信した鍵情報４ｂを復号し、復号された鍵を用いて暗号文から伝送情報６を復号する。逆に無効化されている受信者については、そのような受信者が複数結託しても、伝送情報に関して何の情報も得られない。また、ここでは多数の受信者の存在を想定している。
【００１７】
以下、上記構成要素について詳しく説明する。
【００１８】
Ｎを全ての受信者の集合とし、その要素数を｜Ｎ｜＝Ｎとする。Ｎの部分集合Ｒを無効化したい受信者の集合とし、その要素数を｜Ｒ｜＝ｒとする。受信者の無効化機能を有する鍵管理方式の目的は、鍵管理機関（又は情報送信者）が受信を許可した受信者、つまりＲに含まれない全ての受信者ｕ∈Ｎ＼Ｒが伝送される情報を復号でき、逆に受信を許可されていないＲに含まれる受信者全てが結託しても全く伝送情報を得られないようにすることである。
【００１９】
（ａ）鍵管理機関
（ｉ）初期設定
受信者全体の集合Ｎの部分集合Ｓ１、Ｓ２、・・・、Ｓｗ（∀ｊ、Ｓｊ⊆Ｎ）を定義する。各Ｓｊには暗号（復号）鍵Ｌｊが割り当てられる。ここで各Ｌｊは一様に分布しており、互いに独立な値を割り当てるのが望ましい。各受信者（受信装置）ｕには、秘密情報Ｉｕを割り当てる。ここでＳｊに含まれる全ての受信者ｕ∈Ｓｊが、自分に割り当てられた秘密情報Ｉｕから、自分の属する部分集合Ｓｊに割り当てられた復号鍵Ｌｊを求められるように秘密情報Ｉｕを割り当てなければならない。また、Ｓｊに含まれない全ての受信者ｕ∈Ｎ＼Ｓｊが結託しても復号鍵Ｌｊを求めることができないように秘密情報Ｉｕを割り当てなければならない。
【００２０】
（ｉｉ）鍵情報生成
（１）伝送情報Ｍの暗号化、復号化に用いる鍵（セッション鍵）Ｋを選ぶ。
【００２１】
（２）無効化する受信者の集合Ｒの補集合Ｎ＼Ｒに属する受信者ｕ∈Ｎ＼Ｒをいくつかの部分集合Ｓｉ１、Ｓｉ２、・・・、Ｓｉｍに分割する。
【００２２】
【数１】
2004120008.tif 000003
【００２３】
ここで、初期設定で上記部分集合に割り当てられてた暗号鍵をそれぞれＬｉ１、Ｌｉ２、・・・Ｌｉｍとする。
【００２４】
（３）暗号鍵Ｌｉ１、Ｌｉ２、・・・Ｌｉｍを用いてセッション鍵Ｋをｍ回暗号化して式（１−２）を生成、セッション鍵Ｋと一緒に情報送信者に配送する。
【００２５】
【数２】
2004120008.tif 000004
【００２６】
ここで、情報送信者へのセッション鍵の配送は安全に行われるものと仮定する。また、Ｅｅｎｃは暗号化アルゴリズムである。本システムで用いられる暗号、復号化アルゴリズムは２種類あり、以下にまとめる（ただし、２つのアルゴリズムに全く同じものを使用しても構わない）。
【００２７】
・伝送情報Ｍの暗号化アルゴリズムＦｅｎｃ、復号化アルゴリズムＦｄｅｃ
セッション鍵Ｋを用いて暗号文ＣＫ＝Ｆｅｎｃ（Ｍ、Ｋ）を生成する。高速性が要求される。
【００２８】
・セッション鍵暗号化アルゴリズムＥｅｎｃ、復号化アルゴリズムＥｄｅｃ
セッション鍵の配送に用いる。Ｆｅｎｃよりも暗号化アルゴリズムの安全性が要求される。
【００２９】
（ｂ）情報送信者
セッション鍵Ｋと特定の受信者のみが復号できる鍵情報を鍵管理機関から受け取り、セッション鍵Ｋを鍵として暗号化アルゴリズムＦｅｎｃを用いて伝送情報Ｍを暗号化して、暗号文
【００３０】
【数３】
2004120008.tif 000005
【００３１】
を伝送する。なお、式（１−３）の［　］内の部分をＦｅｎｃ（Ｍ、Ｋ）のヘッダーと呼ぶことにする。
【００３２】
（ｃ）情報受信者
受信者ｕは、情報送信者により暗号化された次の暗号文を受信する。
【００３３】
【数４】
2004120008.tif 000006
【００３４】
（１）ｕ∈Ｓｉｊであるようなｉｊを探索する。（ｕ∈Ｒの場合、存在しない。）
（２）自身の保有する秘密情報ＩｕからＬｉｊを求める。
【００３５】
（３）Ｋ＝Ｅｄｅｃ（Ｃｊ、Ｌｉｊ）を求める。
【００３６】
（４）Ｍ＝Ｆｄｅｃ（ＣＫ、Ｋ）を求める。
【００３７】
上記鍵管理方式を実現するアルゴリズムとして以下の方式がある。
・Ｔｈｅ　Ｌｏｇｉｃａｌ　Ｋｅｙ　Ｈｉｅｒａｒｃｈｙ　Ｍｅｔｈｏｄ
・ＣＰＲＭ　Ｃｏｍｍｏｎ　Ｃｒｙｐｔｏｇｒａｐｈｉｃ　Ｋｅｙ　Ｍａｎａｇｅｍｅｎｔ
・Ｔｈｅ　Ｃｏｍｐｌｅｔｅ　Ｓｕｂｔｒｅｅ　Ｍｅｔｈｏｄ
・Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ
・Ｔｒｅｅ　Ｐａｔｔｅｒｎ　Ｄｉｖｉｓｉｏｎ　Ｍｅｔｈｏｄ
上記方式の違いとしては、（１）　受信者の部分集合Ｓ１、・・・、Ｓｗの定義、（２）　各部分集合に対する鍵の割り当て方法、（３）　受信を許可する（無効化しない）受信者の集合Ｎ＼Ｒの分割方法、（４）各受信者ｕが行う自分の属する部分集合Ｓｊの探索方法と、Ｉｕから鍵ＬＳｊの求め方等が挙げられる。
【００３８】
各方式は以下の３つの観点から評価される。
【００３９】
・伝送情報の量
暗号文Ｆｅｎｃ（Ｍ、Ｋ）に付加されるヘッダー量。一般にＮ＼Ｒを分割した部分集合の数ｍに比例する。
【００４０】
・受信者が保有しておく秘密情報Ｉｕの量
復号用の鍵等の秘密情報を受信者がどれだけ保持しておかなければならないか。
【００４１】
・受信者が伝送された情報を復号するのに要する演算量
（１．２）　基礎となる方法（Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ）
（１．２．１）　部分集合Ｓ１、・・・Ｓｗの定義
最初に受信者全体の集合Ｎの部分集合Ｓ１、・・・Ｓｗを定義する。この部分集合に対して暗号（復号）鍵、又は復号鍵を導けるような情報Ｌ１、・・・Ｌｗを割り当てることになる。Ｎ枚のリーフを持つ２分木のリーフに各受信者を割り当てる（ここでＮは２の冪であるとしている。）。
【００４２】
受信者の部分集合を次のように表す。２分木中の任意のノードｖｉ（ルートとリーフもノードに含まれる。）をルートとする部分木の全てのリーフに割り当てられた受信者の集合をＳｉで表す。任意のノードｖｉ以下のリーフに割り当てられた受信者の集合Ｓｉとノードｖｉをルートとする部分木中の（ルートを除く）ノードｖｊをルートとする部分木の全てのリーフに割り当てられた受信者の集合Ｓｊ⊂Ｓｉについて、Ｓｉの要素からＳｊの要素を引いた差分集合をＳｉ，ｊとする。つまり、集合Ｓｉに含まれる受信者のうち、集合Ｓｊに含まれていない受信者の集合をＳｉ，ｊとする。図２はＳｉ，ｊを示している。この差分集合に対して１つの鍵Ｌｉ，ｊを割り当てる。
【００４３】
（１．２．２）　Ｎ＼Ｒの分割方法
次に受信を許可する（無効化しない）受信者の集合Ｎ＼Ｒを、上記で定義された差分集合Ｓｉ１，ｊ１、Ｓｉ２，ｊ２、・・・、Ｓｉｍｊｍに分割する方法を説明する。２分木のルートと無効化したい受信者に相当する各リーフを結ぶ最短のパス上のノードのみで構成される部分木ＳＴ（Ｒ）を考える（このような部分木はＲから一意に構成される）。ＳＴ（Ｒ）については子ノードの存在しないノードをリーフと呼ぶことにする。以下のアルゴリズムをＳＴ（Ｒ）がルートのノードのみになるまで繰り返し、Ｎ＼Ｒを構成する差分集合を選択する。
【００４４】
（１）２つのリーフからルートへのパスの共通部分に存在するノードの中で、リーフとの距離が最小となるノードを２つのリーフの最小共通ノードと呼ぶことにする。ＳＴ（Ｒ）のリーフｖｉ、ｖｊを、それらの最小共通ノードｖ以下に他のリーフが存在しないように選ぶ。ｖの２つの子ノードの中で、ｖとｖｉのパス上に存在する子ノードをｖｋ、ｖとｖｊのパス上に存在する子ノードをｖｌとする。（リーフがＳＴ（Ｒ）中に１つしか存在しない場合、ｖｉ＝ｖｊ、ｖ＝ｖｌ＝ｖｋとして、ｖをＳＴ（Ｒ）のルートと考えればよい。）
（２）ｖｋ≠ｖｉならば、Ｎ＼Ｒを構成する差分集合にＳｋ，ｉを加える。ｖｌ≠ｖｊならばＮ＼Ｒを構成する差分集合にＳｌ，ｊを加える。
【００４５】
（３）ｖより下に位置するノードを全て除去する。これによりｖがリーフになる。
【００４６】
上記アルゴリズムを用いることにより、受信者の集合Ｎ＼Ｒは、無効化したい受信者数｜Ｒ｜＝ｒのとき、最大　２ｒ−１の差分集合に分割される。
【００４７】
（１．２．３）部分集合Ｓ１、・・・Ｓｗへの鍵の割り当て方法
次に、各差分集合に対する鍵の割り当て方法について説明する。各差分集合に対して、一様に分布しており、互いに独立な値を持つ鍵を割り当てる。
【００４８】
（１．２．４）受信者への秘密情報の割り当て方法
各受信者には自分の属する差分集合全ての鍵を配布しておかなければならない。これは受信者側に非常に多くの記憶量を必要とする。受信者ｕは、自分の属する各部分木Ｔｋに対して（ここでＴｋの変数ｋは部分木の高さを表している。）、部分木Ｔｋ中に存在するノードの中で、Ｔｋのルートからｕのパス上に存在するものを除く全てのノードの数に相当する鍵を保有しなければならない。受信者ｕの属する部分木の数はｌｏｇ２Ｎ個存在し、各部分木の高さは１≦ｋ≦ｌｏｇ２Ｎであるから、受信者が保有しなければならない鍵の数は式（２−１）のようになる。
【００４９】
【数５】
2004120008.tif 000007
【００５０】
（１．２．５）部分集合Ｓ１、・・・、Ｓｗへの鍵の割り当て方法（擬似乱数生成器を用いる場合）
受信者が保有しておく鍵を減らすため、各差分集合Ｓｉ，ｊに直接鍵を割り当てるのではなく、部分集合Ｓｉに対して１つのラベルを割り当て、差分集合Ｓｉ，ｊ（∀ｊ、Ｓｊ⊂Ｓｉ）に割り当てる鍵Ｌｉ，ｊが、部分集合Ｓｉに割り当てられたラベルを用いて導けるようにしておく。このとき、差分集合Ｓｉ，ｊ内に存在する受信者のみが鍵Ｌｉ，ｊを導けるようにしなければならない。以下では、擬似乱数生成器を用いて、上記方法を実現する方法を示す。
【００５１】
Ｇ：｛０，１｝ｎ　→　｛０，１｝３ｎ　を入力長の３倍の長さを出力する擬似乱数生成器とする。擬似乱数生成器Ｇの入力をＳとしたとき、出力される値を３等分した左側部分をＧＬ（Ｓ）で表し、右側部分をＧＲ（Ｓ）、中央部分をＧＭ（Ｓ）で表す。また、Ｇの入力として乱数を与えたときに出力される値と、出力と同じ長さの真の乱数を多項式時間の計算能力をもつ攻撃者に与えたとき、攻撃者は、有意な確率で両者を区別できないといった特性をＧは満たしていなければならない。
【００５２】
ノードｖｉをルートとする部分木Ｔｉを考える。ノードｖｉにラベル　ＬＡＢＥＬｉを割り当てる（簡単のため任意の部分木のリーフに割り当てられた受信者の集合へのラベルの割り当てを、その部分木のルートノードにラベルを割り当てると表現する。つまり上記表現は次のようになる。「部分木Ｔｉ中のリーフに割り当てられた受信者の集合ＳｉにラベルＬＡＢＥＬｉを割り当てる。」）。ＬＡＢＥＬｉ，ｊを、部分木Ｔｉ中のノードｖｊのラベルとする（割り当てられるラベルが多変数のパラメータを持つ（この場合ｉとｊの２変数）場合、それは差分集合に対して割り当てられたラベルを示している。このとき、ＬＡＢＥＬｉ，ｊは　ｖｊをルートとする部分木のリーフに割り当てらた受信者の集合Ｓｊに割り当てられるのではなく、Ｓｉに含まれ、Ｓｊには含まれていない受信者の集合（差分集合）Ｓｉ，ｊに対して割り当てられる。）。ＬＡＢＥＬｉ，ｊが差分集合Ｓｉ，ｊに割り当てられるラベルである。
【００５３】
ＬＡＢＥＬｉ，ｊを部分木Ｔｉのルートｖｉに割り当てられたラベルＬＡＢＥＬｉから擬似乱数生成器Ｇを用いて以下の導出規則により導く。ラベルを擬似乱数生成器の入力としたとき、その出力を次のように定義する。ＧＬ−左側の子ノードのラベル、ＧＲ−右側の子ノードのラベル、ＧＭ−入力ラベルの割り当てられたノードに割り当てる暗号（復号）鍵。この導出規則に拠れば、部分木Ｔｉ中のある親ノードにラベルＳが割り当てられたとき、その２つの子ノードのラベルは、ＧＬ（Ｓ）、ＧＲ（Ｓ）が割り当てられる。これより、ｖｉからｖｊに至るパス上のノードに割り当てるラベルをＧを用いて順次求めることで、ｖｉに割り当てられたラベルＬＡＢＥＬｉから、部分木Ｔｉ中のノードｖｊのラベル　ＬＡＢＥＬｉ，ｊを求めることができる。
【００５４】
最後にＬＡＢＥＬｉ，ｊをＧの入力としたときの出力の中央部分ＧＭ（ＬＡＢＥＬｉ，ｊ）を、差分集合Ｓｉ，ｊに割り当てる暗号（復号）鍵Ｌｉ，ｊとして用いる。図３（ａ）に部分木Ｔｉ中のノードｖｊに割り当てるラベルと暗号（復号）鍵の生成方法を示す。
【００５５】
このような方法を用いれば、部分木中のあるノードのラベルが与えられたとき、その子孫ノード全てのラベルと暗号（復号）鍵を計算することができる。逆に、あるノードｖｊの先祖ノードのラベルをｖｊから求めることはできない。さらに、ノードｖｊの全ての子孫ノードのラベル（ただし、ｖｊ自身のラベルは含まない）から暗号（復号）鍵Ｌｉ，ｊを求めることはできない。部分木ＴｉのルートのラベルＬＡＢＥＬｉを与えられたとき、差分集合Ｓｉ，ｊに割り当てられる暗号（復号）鍵Ｌｉ，ｊを計算するのに擬似乱数生成器Ｇを最大でｌｏｇ２Ｎ＋１回用いる。
【００５６】
（１．２．６）受信者への秘密情報の割り当て方法（擬似乱数生成器を用いる場合）
各受信者ｕが保有する秘密情報Ｉｕの割り当て方法について説明する。受信者ｕは、自分の属する各部分木Ｔｉに対して、Ｔｉのルートノードｖｉと、部分木Ｔｉ中のノードでｕの先祖ノードでない全てのノードｖｉにより決定される差分集合Ｓｉ，ｊに割り当てられた暗号（復号）鍵Ｌｉ，ｊを計算できなければならない。部分木Ｔｉのルートノードｖｉからｕへのパスを考え、そのパスに直接ぶら下がるノードをｖｉ１、ｖｉ２、・・・ｖｉｋとする（図２（ｂ）参照）。つまり、それらはパスに隣接するノードの中で、ｕの先祖ノードでないノードである。部分木Ｔｉ中でｕの先祖でない任意のノードｖｉは、これらのノードｖｉ１、ｖｉ２、・・・、ｖｉｋいずれかの子孫ノードである。ゆえに、受信者ｕがＩｕとして、ｖｉ１、ｖｉ２、・・・、ｖｉｋに割り当てられたラベルを保有しておけば、最大ｌｏｇ２Ｎ＋１回擬似乱数生成器Ｇを用いて、部分木Ｔｉ中でパス上に存在しない任意ノードｖｉｊに割り当てられた復号鍵Ｌｉ，ｊを計算することができる。
【００５７】
受信者ｕを含む高さｋの部分木Ｔｉ中に、受信者ｕが保存しておかなければならないラベルはｋ個あるから、これをｕを含む各部分木について考えると、受信者ｕがあらかじめ保有しておかなければならない復号鍵（ラベル）の数は式（２−２）のようになる。
【００５８】
【数６】
2004120008.tif 000008
【００５９】
式（２−２）で１が足されているのは、無効化する受信者が全く存在しない場合の鍵が必要だからである。
【００６０】
（１．２．７）複数の２分木を用いる方法
さらに受信者ｕが保有する秘密情報Ｉｕを減らす場合は、伝送情報Ｍの量とのトレードオフとなる。一つの方法として、２分木を高さの低い木に限定して複数用いる方法がある。木構造においてノードの位置する各層をレイヤと呼び、ルートの位置する層から順番に　Ｌａｙｅｒ（０）、Ｌａｙｅｒ（１）、・・・と定義する。このとき、受信者をリーフに割り当てられた２分木を、Ｌａｙｅｒ（ｂ）　に存在するノードをルートとする２ｂ個の２分木に分割し、分割された２分木に対して　Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ　を適用する。このとき、Ｌａｙｅｒ（０）〜Ｌａｙｅｒ（ｂ−１）に存在するノードは使用しない。
【００６１】
これにより、受信者が保有しておく情報量Ｉｕを式（２−３）のように減らすことができる。しかし、伝送情報Ｍの量（無効化しない受信者をカバーする部分木の数）は、無効化したい受信者数を｜Ｒ｜＝ｒとすると最大で２ｂ＋２ｒ−１と増加する。
【００６２】
【数７】
2004120008.tif 000009
【００６３】
（１．３）本実施形態による方法（Ｔｈｅ　Ｌａｙｅｒ　Ｄｉｖｉｓｉｏｎ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ）
（１．３．１）部分集合Ｓ１、・・・、Ｓｗの定義
最初に受信者全体の集合Ｎの部分集合Ｓ１、・・・Ｓｗを定義する。この部分集合に対して暗号（復号）鍵、又は復号鍵を導けるような情報Ｌ１、・・・Ｌｗを割り当てることになる。Ｎ枚のリーフを持つ２分木のリーフに各受信者を割り当てる（ここでＮは２の冪であるとしている。）。木構造においてノードの位置する各層をレイヤと呼び、ルートの位置する層から順番に　Ｌａｙｅｒ（０）、Ｌａｙｅｒ（１）、・・・と定義する。リーフの存在する層は　Ｌａｙｅｒ（ｌｏｇ２Ｎ）になる。図４に示すように２分木をＬａｙｅｒ（０）〜Ｌａｙｅｒ（ｄ）、Ｌａｙｅｒ（ｄ）〜Ｌａｙｅｒ（２ｄ）、・・・といったようにｄ＋１階層ずつのレイヤに分割する。図４ではｄ＝２の場合を示している。分割された各層をマクロレイヤと呼ぶことにし、ルートを含むマクロレイヤから順番に　ＭａｃｒｏＬａｙｅｒ（０）、ＭａｃｒｏＬａｙｅｒ（１）、・・・、ＭａｃｒｏＬａｙｅｒ（（ｌｏｇ２Ｎ）／ｄ−１）と定義する。各ＭａｃｒｏＬａｙｅｒ（ｓ）（０≦ｓ≦（（ｌｏｇ２Ｎ）／ｄ−１））は、全体の２分木を分割した高さｄの２ｓｄ個の部分木Ｔｈから構成される。全体で上記部分木Ｔｈは
【数８】
2004120008.tif 000010
個存在することになる。各部分木
【数９】
2004120008.tif 000011
を、リーフに受信者を割り当てた２分木と考え、Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄにおいて定義された差分集合を部分集合Ｓ１、・・・Ｓｗとして定義し、暗号（復号）鍵Ｌ１、・・・Ｌｗを割り当てる。（実際には、部分木Ｔｈのリーフは、ｓ＝（ｌｏｇ２Ｎ）／ｄ−１の場合（ＭａｃｒｏＬａｙｅｒ（（ｌｏｇ２Ｎ）／ｄ−１）中の部分木）を除いて、全体の２分木で見た場合ただのノードであり、受信者が割り当てられているわけではない。そこで、ある任意の部分木Ｔｈにおけるリーフには、そのリーフに対応する全体の２分木中のノード以下に存在する全てのリーフに割り当てられた受信者の集合が割り当てられていると考える。）。
【００６４】
部分木Ｔｈ中の任意のノードｖｉをルートとする部分木Ｔｈ，ｉの全てのリーフに割り当てられた受信者の集合をＳｉで表す。ノードｖｉ以下のリーフに割り当てられた受信者の集合ＳｉとＴｈ，ｉ中の（ルートを除く）ノードｖｊをルートとする部分木Ｔｈ，ｊのリーフに割り当てられた受信者の集合Ｓｊ⊂Ｓｉについて、Ｓｉの要素からＳｊの要素を引いた差分集合をＳｉ，ｊとする。つまり、集合Ｓｉに含まれる受信者のうち、集合Ｓｊに含まれていない受信者の集合をＳｉ，ｊとする。図５はＳｉ，ｊを示している。この差分集合に対して１つの暗号（復号）鍵Ｌｉ，ｊを割り当てる。
【００６５】
（１．３．２）Ｎ＼Ｒの分割方法
次に受信を許可する（無効化しない）受信者の集合Ｎ＼Ｒを、上記で定義された差分集合Ｓｉ，ｊに分割する方法を説明する。無効化したい受信者を割り当てられているリーフ、または無効化したい受信者を１つでも含むような受信者の集合を割り当てられているリーフを含む全ての部分木Ｔｈについて以下の処理を行う。
【００６６】
無効化したい受信者を含む部分木Ｔｈについて、部分木Ｔｈのルートと無効化したい受信者（又は無効化したい受信者を含む受信者の集合）に相当する各リーフを結ぶ最短のパス上のノードのみで構成される部分木ＳＴｈ（Ｒ）を考える（このような部分木はＲから一意に構成される）。ＳＴｈ（Ｒ）については子ノードの存在しないノードをリーフと呼ぶことにする。また、以下の（１）〜（４）の処理において用いられているルートとリーフは、部分木Ｔｈ中のそれを表しているものとする。
【００６７】
（１）２つのリーフからルートへのパスの共通部分に存在するノードの中で、リーフとの距離が最小となるノードを２つのリーフの最小共通ノードと呼ぶことにする。ＳＴｈ（Ｒ）のリーフｖｉ、ｖｊを、それらの最小共通ノードｖ以下に他のリーフが存在しないように選ぶ。ｖの２つの子ノードの中で、ｖとｖｉのパス上に存在する子ノードをｖｋ、ｖとｖｊのパス上に存在する子ノードをｖｌとする。（リーフがＳＴｈ（Ｒ）中に１つしか存在しない場合、ｖｉ＝ｖｊ、ｖ＝ｖｊ＝ｖｋとして、ｖをＳＴｈ（Ｒ）のルートと考えればよい。）
（２）ｖｋ≠ｖｉならばＮ＼Ｒを構成する差分集合にＳｋ，ｉを加える。ｖｌ≠ｖｊならばＮ＼Ｒを構成する差分集合にＳｌ，ｊを加える。
【００６８】
（３）ｖより下に位置する部分木Ｔｈ中のノードを全て除去する。これにより、ｖがリーフになる。
【００６９】
（４）ＳＴｈ（Ｒ）にルート以外のノードが存在する場合、上記（１）に戻る。ＳＴｈ（Ｒ）がルートのノードのみなった場合、無効化したい受信者を含む他の部分木Ｔｈを選択し、上記（１）に戻って同様の処理を繰り返す。ＳＴｈ（Ｒ）がルートのノードのみなり、かつ無効化したい受信者を含む他の部分木Ｔｈが存在しない場合、処理を終了する。
【００７０】
上記アルゴリズムにより構成された差分集合Ｓｉ，ｊの集合がＮ＼Ｒを構成する差分集合の集合である。Ｎ＼Ｒの分割数（Ｎ＼Ｒを構成する差分集合の数）の上限は、ｄの値により異なるが、例えばｄ＝２のとき（このとき、Ｎは４の冪であると仮定している。）、無効化したい受信者数｜Ｒ｜＝ｒとすると式（３−１）のようになる。
【００７１】
【数１０】
2004120008.tif 000012
【００７２】
ここでｉは０＜ｉ＜ｌｏｇ４Ｎを満たす整数である。
【００７３】
（１．３．３）部分集合Ｓ１、・・・、Ｓｗへの鍵の割り当て方法
次に各差分集合に対する鍵の割り当て方法について説明する。各差分集合Ｓｉ，ｊに対して、一様に分布しており、互いに独立な値を持つ鍵を割り当てる。各受信者には自分の属する差分集合に割り当てられた全ての鍵を配布しておく。
【００７４】
（１．３．４）受信者への秘密情報の割り当て方法
受信者ｕを割り当てられたリーフと、全体の２分木のルートとのパス上に存在するノードを含む各部分木Ｔｈについて考える。このような部分木Ｔｈは各マクロレイヤ中に必ず１つ存在する。パス上のノードの中で部分木Ｔｈに含まれる任意のノードをｖｉとし、ｖｉをルートとする部分木Ｔｈ，ｉのリーフに割り当てられた受信者の集合をＳｉとする。部分木Ｔｈ，ｉ中のノードであり、かつパス上に存在しないノードをｖｊとし、ｖｊをルートとする部分木Ｔｈ，ｊのリーフに割り当てられた受信者の集合をＳｉ⊂Ｓｊとする。集合Ｓｉに含まれ、集合Ｓｊに含まれない受信者の集合（差分集合）をＳｉ，ｊで表す。このとき受信者ｕは上記の全ての差分集合Ｓｉ，ｊに割り当てられた鍵を保有しておく必要がある。受信者ｕの属する部分木Ｔｈの数は、マクロレイヤ数に等しいからｌｏｇ２Ｎ／ｄ個存在する。部分木Ｔｈの高さはｄであるから、部分木Ｔｈ中に存在し、かつパス上のノードｖｉをルートとする部分木Ｔｈ，ｉはｄ個存在する（ノードｖｉが部分木Ｔｈのリーフに相当する場合は、受信者の集合を割り当てる必要がないため除外している。）。部分木Ｔｈ，ｉの高さをｋ、（１≦ｋ≦ｄ）とすると、部分木Ｔｈ，ｉ中のノードで、かつパス上に存在しないノードｖｊをルートとする部分木Ｔｈ，ｊは｛（２ｋ＋１−１）−（ｋ＋１）｝個存在する。これより各部分木Ｔｈ，ｉについて、集合Ｓｊの数は｛（２ｋ＋１−１）−（ｋ＋１）｝個である。よって差分集合Ｓｉ，ｊの数は式（３−２）のようになる。受信者ｕは式（３−２）に示すだけの個数の鍵を保有しておかなければならない。式（３−２）において１が足されているのは、無効化する受信者が全く存在しない場合の鍵が必要だからである。
【００７５】
【数１１】
2004120008.tif 000013
【００７６】
（１．３．２）部分集合Ｓ１、・・・、Ｓｗへの鍵の割り当て方法（擬似乱数生成器を用いる場合）
受信者が保有しておく鍵を減らすため、Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ　と同様に擬似乱数生成器を用いて差分集合への鍵の割り当てを行うこともできる。つまり、各差分集合Ｓｉ，ｊに直接鍵を割り当てるのではなく、部分木Ｔｈ，ｉのリーフに割り当てられた受信者の集合Ｓｉに対して１つのラベルを割り当てる。このとき、差分集合Ｓｉ，ｊ（∀ｊ、Ｓｊ⊂Ｓｉ）に割り当てる鍵Ｌｉ，ｊが、部分集合Ｓｉに割り当てられたラベルを用いて導けるようにしておく。このとき、差分集合Ｓｉ，ｊ内に存在する受信者のみが鍵Ｌｉ，ｊを導けるようにしなければならない。以下では、擬似乱数生成器を用いて、上記方法を実現する方法を示す。
【００７７】
Ｇ：｛０，１｝ｎ　→　｛０，１｝３ｎ　を入力長の３倍の長さを出力する擬似乱数生成器とする。擬似乱数生成器Ｇの入力をＳとしたとき、出力される値を３等分した左側部分を　ＧＬ（Ｓ）で表し、右側部分をＧＲ（Ｓ）、中央部分をＧＭ（Ｓ）で表す。また、Ｇの入力として乱数を与えたときに出力される値と、出力と同じ長さの真の乱数を多項式時間の計算能力をもつ攻撃者に与えたとき、攻撃者は、有意な確率で両者を区別できないといった特性をＧは満たしていなければならない。
【００７８】
ノードｖｉをルートとするＭａｃｒｏＬａｙｅｒ（ｓ）中の部分木Ｔｈ，ｉを考える。ルートノードｖｉにラベルＬＡＢＥＬｉを割り当てる（簡単のため任意の部分木のリーフに割り当てられた受信者の集合へのラベルの割り当てを、その部分木のルートノードにラベルを割り当てると表現する。つまり上記表現は次のようになる。「部分木Ｔｈ，ｉ中のリーフに割り当てられた受信者の集合Ｓｉにラベル　ＬＡＢＥＬｉを割り当てる。」）。ＬＡＢＥＬｉ，ｊを、部分木Ｔｈ，ｉ中のノードｖｊのラベルとする（割り当てられるラベルが２変数のパラメータを持つ場合、それは差分集合に対して割り当てられたラベルを示している。このとき、ＬＡＢＥＬｉ，ｊはｖｊをルートとする部分木のリーフに割り当てらた受信者の集合Ｓｊに割り当てられるのではなく、Ｓｉに含まれ、Ｓｊには含まれていない受信者の集合（差分集合）Ｓｉ，ｊに対して割り当てられる。）。ＬＡＢＥＬｉ，ｊが差分集合Ｓｉ，ｊに割り当てられるラベルである。ＬＡＢＥＬｉ，ｊを部分木Ｔｈ，ｉのルートｖｉに割り当てられたラベルＬＡＢＥＬｉから擬似乱数生成器Ｇを用いて以下の導出規則により導く。
【００７９】
ラベルを擬似乱数生成器の入力としたとき、その出力を次のように定義する。ＧＬ−左側の子ノードのラベル、ＧＲ−右側の子ノードのラベル、ＧＭ−入力ラベルの割り当てられたノードに割り当てる暗号（復号）鍵。この導出規則に拠れば、部分木Ｔｈ，ｉ中のある親ノードにラベルＳが割り当てられたとき、その２つの子ノードのラベルは、ＧＬ（Ｓ）、ＧＲ（Ｓ）が割り当てられる。これより、ｖｉからｖｊに至るパス上のノードに割り当てるラベルをＧを用いて順次求めることで、ｖｉに割り当てられたラベルＬＡＢＥＬｉ　から、部分木Ｔｈ，ｉ中のノードｖｊのラベルＬＡＢＥＬｉ，ｊを求めることができる。最後にＬＡＢＥＬｉ，ｊをＧの入力としたときの出力の中央部分ＧＭ（ＬＡＢＥＬｉ，ｊ）を、差分集合Ｓｉ，ｊに割り当てる暗号（復号）鍵Ｌｉ，ｊとして用いる。図６に差分集合Ｓｉ，ｊに割り当てる鍵Ｌｉ，ｊの割り当て例を示す。
【００８０】
このような方法を用いれば、部分木中のあるノードのラベルが与えられたとき、部分木内でのその子孫ノード全てのラベルと暗号（復号）鍵を計算することができる。逆に、あるノードｖｊの先祖ノードのラベルをｖｊから求めることはできない。さらに、ノードｖｊの全ての子孫ノードのラベル（ただし、ｖｊ自身のラベルは含まない）から暗号（復号）鍵Ｌｉ，ｊを求めることはできない。部分木Ｔｈ，ｉのルートのラベル　ＬＡＢＥＬｉを与えられたとき、差分集合Ｓｉ，ｊに割り当てられる暗号（復号）鍵Ｌｉ，ｊを計算するのに擬似乱数生成器Ｇを最大でｄ＋１回用いる。
【００８１】
（１．３．６）受信者への秘密情報の割り当て方法（擬似乱数生成器を用いる場合）
各受信者ｕが保有する秘密情報Ｉｕの割り当て方法について説明する。各マクロレイヤ中に１つずつ存在するｕの属する部分木Ｔｈについて考える。部分木Ｔｈのルートとｕの割り当てられたリーフを結ぶパス上のｄ個（リーフ部分のノードは数えていない。）のノードをｖｉとし、ｖｉをルートとする高さｋ、（１≦ｋ≦ｄ）の部分木Ｔｈ，ｉのノードの中で、パスに直接ぶら下がるノードをｖｉ１、ｖｉ２、・・・ｖｉｋで表す（図７）。つまり、それらは部分木Ｔｈ，ｉ中のノードの中で、パスに隣接し、かつｕの先祖ノードでないノードである。部分木Ｔｈ，ｉ中のノードで、ｕの先祖でない任意のノードｖｊは、これらのノードｖｉ１、ｖｉ２、・・・ｖｉｋのいずれかの子孫ノードである。ゆえに、受信者ｕがＩｕとして、ｖｉ１、ｖｉ２、・・・、ｖｉｋに割り当てられたラベルを保有しておけば、最大ｄ＋１回擬似乱数生成器Ｇを用いて、部分木Ｔｈ，ｉ中でパス上に存在しない任意ノードｖｊに割り当てられた復号鍵Ｌｉ，ｊを計算することができる。
【００８２】
受信者ｕを含む部分木Ｔｈの数は、マクロレイヤ数に等しいから　ｌｏｇ２Ｎ／ｄであり、部分木Ｔｈ中にパス上のノードをルートとする部分木Ｔｈ，ｉはｄ個存在する。高さｋの部分木Ｔｈ，ｉ中に受信者ｕが保有しなければならないラベルはｋ個あるから、これをｕを含む各部分木Ｔｈ，ｉについて考えると、受信者ｕが保有しておかなければならない復号鍵（ラベル）の数は式（３−３）のようになる。
【００８３】
【数１２】
2004120008.tif 000014
【００８４】
式（３−３）において１が足されているのは、式（３−２）と同様に無効化する受信者が全く存在しない場合の復号鍵が必要だからである。擬似乱数生成器を用いて差分集合への鍵の割り当てを行った場合、受信者の保有する秘密情報は復号鍵ではなく各部分木Ｔｈ，ｉに割り当てられたラベルであるが、受信者を全く無効化しない場合に用いる復号鍵については鍵そのものを保有することになる。
【００８５】
（１．３．７）複数の２分木を用いる方法
さらに受信者ｕが保有する秘密情報Ｉｕを減らす場合は、伝送情報Ｍの量とのトレードオフとなる。一つの方法として、２分木を高さの低い木に限定して複数用いる方法がある。受信者をリーフに割り当てられた２分木を、Ｌａｙｅｒ（ｂ）に存在するノードをルートとする２ｂ個の２分木に分割し、分割された２分木に対して本方式を適用する。このとき、Ｌａｙｅｒ（０）　〜　Ｌａｙｅｒ（ｂ−１）に存在するノードは使用しない。これにより、受信者が保有しておく情報量Ｉｕを式（３−４）、式（３−５）のように減らすことができる。擬似乱数生成器を用いない場合の復号鍵（ラベル）保有数が、式（３−４）であり、擬似乱数生成器を用いる場合のそれが式（３−５）である。式（３−４）、式（３−５）において共に１が足されているのは、自身の割り当てられているリーフの属する２分木中に、無効化する受信者が全く存在しない場合の鍵が必要だからである。
【００８６】
【数１３】
2004120008.tif 000015
【００８７】
伝送情報Ｍの量（無効化しない受信者をカバーする部分木の数）の上限は、例としてｄ＝２のときを考えると、無効化したい受信者数が｜Ｒ｜＝ｒのとき式（３−６）のようになる。
【００８８】
【数１４】
2004120008.tif 000016
【００８９】
ここで　ｉは　０＜ｉ＜ｌｏｇ４（Ｎ／４ｈ）を満たす整数である。
【００９０】
（１．４）各方式の性能比較
図８に受信者総数｜Ｎ｜、無効化したい受信者数｜Ｒ｜＝ｒを一定にしたとき、各方式において受信者が保有しておく秘密情報と伝送するヘッダー量の関係を示す。図８に示すように、Ｎ＝２３０＝１，０７３，７４１、８２４≒１０億、ｒ＝２１４＝１６，３８４とし、各方式で用いる暗号化アルゴリズムの鍵長は全て１２８ｂｉｔとした。
【００９１】
横軸が受信者の保有しておく秘密情報量、縦軸が伝送するヘッダー量の上限を表しており、グラフの左下にある方式ほど、伝送又は蓄える情報量が少ないため、この２点に関しては優れた方式といえる。
【００９２】
実際のシステムの運用においては、受信者ｕは自身が保有する秘密情報Ｉｕから、どの復号鍵（Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ、Ｔｈｅ　Ｌａｙｅｒ　Ｄｉｖｉｓｉｏｎ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄで擬似乱数生成器を使用する場合はラベル情報）を用いて、伝送されたヘッダー情報を復号するのかを決定する必要がある。その方法としては、例えば、全ての復号鍵で全てのヘッダー情報を復号する方法や、復号に使用すべき復号鍵の情報（ヘッダーの暗号化に使用した暗号鍵のインデックス情報）を付与する方法などが考えられる。この場合伝送される情報はさらにインデックス情報分増加することになるが、図８では考慮していない。
【００９３】
Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄは全部で１９点（丸で示す）プロットされているが、これは、変数ｂをパラメータとしているためである。左の点からｈ＝１８、１７、・・・　、１、０　となっており、一番右端の点が２分木を１つのみ用いた方式に相当する。また、差分集合へのラベルの割り当ては、擬似乱数生成器を用いた方式のみを表示している。
【００９４】
Ｎｅｗ　Ｍｅｔｈｏｄ　と書かれた方式が本発明の実施形態による方法（Ｔｈｅ　Ｌａｙｅｒ　Ｄｉｖｉｓｉｏｎ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ）であり、これは、差分集合へのラベルの割り当てに擬似乱数生成器を用いていない。本発明の実施形態による方法で擬似乱数生成器を用いた方式は、Ｎｅｗ　Ｍｅｔｈｏｄ　ｕｓｉｎｇ　ＰＲＮＧ　と書かれた方式である。
【００９５】
それぞれ複数の点がプロットされているのは、変数ｄをパラメータとしているためで、左からｄ＝１、２、・・・のときを表している。ｄ＝１のときは擬似乱数生成器を用いたラベルの割り当てを行っても（受信者が保有する秘密情報量削減という意味での）性能は向上しないことがわかる。また、Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ　と同様にｂを変数とすることもできるが、ここでは各ｄについて、伝送するヘッダー量が最小となるパラメータの中で、受信者の保有する秘密情報量が最も少なくなるようなｂのみを選択して、その場合のみを表示している。図８には表示していないが、ｄ＝１、ｂ＝０の場合、アルゴリズムがＴｈｅ　Ｃｏｍｐｌｅｔｅ　Ｓｕｂｔｒｅｅ　Ｍｅｔｈｏｄ　と完全に等価になる。ｄ＝１６、ｂ＝１４の場合は、Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄのｈ＝１４とした場合と等価になる（図８で２つの方式の結果が重なっている点）。Ｔｈｅ　Ｔｒｅｅ　Ｐａｔｔｅｒｎ　Ｄｉｖｉｓｉｏｎ　Ｍｅｔｈｏｄ　については、アルゴリズムに使用する木を２分木のみでなく任意のｎ分木を用いる。そのため、図８には、左から使用する木を２分木、３分木、４分木、５分木とした場合の結果を表示している。ｎ分木のリーフに受信者を割り当てるため、２分木、４分木を用いる場合を除いて、受信者総数は２３０＝４１５＝１、０７３、７４１、８２４にならない。よって、３分木、５分木については以下の値を用いた。
【００９６】
・３分木：Ｎ＝３１９＝１，１６２，２６１，４６７≒１０億
・５分木：Ｎ＝５１３＝１，２２０，７０３，１２５≒１０億
また、２分木のとき　Ｔｈｅ　Ｃｏｍｐｌｅｔｅ　Ｓｕｂｔｒｅｅ　Ｍｅｔｈｏｄ　とアルゴリズムが完全に等価である。
【００９７】
（１．５）実施形態のコンテンツ配信システム
本発明の実施形態によるコンテンツ配信システムの概略構成を図１（ｂ）に示す。このシステムは、情報提供者７が各種の記憶媒体９をユーザに提供する。本実施形態では、記憶媒体９は、例えばＤＶＤ−ＲＯＭなどの光ディスクを含む各種の記録媒体とすることが可能である。ユーザは再生装置８を所持し、当該再生装置８により記録媒体９から情報を再生する。再生装置８は内部に復号鍵４ａを有している。
【００９８】
ここで、情報提供者７は上記の鍵管理方式の３要素における情報送信者に対応し、再生装置８は情報受信者に対応する。即ち、情報提供者７は、映像／音声などのコンテンツ情報を暗号化用鍵情報５を使用して暗号化し、伝送情報６として記録媒体９に記録する。また、情報提供者７は、無効化の対象となる再生装置８によっては復号できないが、無効化の対象とならない再生装置８によれば復号可能な鍵情報４ｂを記録媒体９に記録する。そして、情報提供者７は記録媒体９を各再生装置８のユーザに提供する。
【００９９】
無効化の対象とならない再生装置８は、自己の有する復号用鍵４ａで鍵情報４ｂを復号して伝送情報６の復号鍵を取得し、これで伝送情報６を復号して映像／音声などの情報を再生することができる。一方、無効化の対象となる再生装置８は、自己の復号用鍵４ａにより記録媒体９内の鍵情報４ｂを復号することができないので、伝送情報６を復号する鍵を得ることができず、伝送情報６を再生することができない。こうして、本システムでは、記録媒体９上に記録された伝送情報６を特定の再生装置８のみにより再生可能とする。
【０１００】
本発明では、上述の階層分割を伴う鍵管理方式（Ｔｈｅ　Ｌａｙｅｒ　Ｄｉｖｉｓｉｏｎ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄ）に従って、再生装置８側の復号用鍵４ａ及び記録媒体９に記録される鍵情報４ｂを生成する。具体的には、ある再生装置８に対して、その再生装置を含むような全ての差分集合に割り当てられている復号鍵（または復号鍵を導けるようなラベル）と、当該再生装置が割り当てられたリーフの属する２分木のルートに割り当てられた復号鍵１つを当該再生装置に復号用鍵４ａとして配布すればよい。こうして、記録媒体中９の鍵情報４ｂの情報量の増加を押さえつつ、再生装置８に保持しておく復号用鍵４ａの情報量を大幅に減少させることができる。
【０１０１】
【実施例】
次に、本発明の実施例に係るコンテンツ配信システムについて説明する。なお、このコンテンツ配信システムは、ＤＶＤなどの光ディスクを記録媒体として使用するものであり、ここでは特にＤＶＤ−ＲＯＭを例にとって説明する。このコンテンツ配信システムでは、情報送信者はコンテンツの著作権者、光ディスク製造工場などに相当する。一方、情報受信者はコンテンツの再生機能を有する装置（再生装置）であり、ハードウェア又はソフトウェアにより構成されている。
【０１０２】
なお、以下の実施例の説明において、Ｅｎｃｒｙｐｔｉｏｎ（）は暗号化アルゴリズム、Ｄｅｃｒｙｐｔｉｏｎ（）は復号化アルゴリズムを表すものとする。また、Ｅｎｃｒｙｐｔｉｏｎ（引数１、引数２）は引数２を暗号鍵として引数１を暗号化した暗号文を表し、Ｄｅｃｒｙｐｔｉｏｎ（引数１、引数２）は引数２を復号鍵として引数１を復号したデータを表す。また、記号“｜”は２つのデータの結合を表し、（データＡ）｜（データＢ）のように用いる。
【０１０３】
（２．１）コンテンツ記録装置
まず、コンテンツ記録装置について説明する。図９はコンテンツをディスクに記録するコンテンツ記録装置５０の構成を示すブロック図であり、情報送信者としての前述のディスク製造工場などに設けられるものである。また、コンテンツ記録装置５０の各部の信号Ｓ１〜Ｓ７の内容を図１０及び図１１に示している。なお、ここでのコンテンツは、情報送信者から情報受信者へ送信される前述の伝送情報に対応するものである。
【０１０４】
図９において、コンテンツ入力装置５１はコンテンツを入力する装置であり、図１０（ａ）に示すように、コンテンツに対応する信号Ｓ１を出力する。コンテンツとしては、通常、音楽、映像などのマルチメディアデータが代表的であるが、ここでのコンテンツはそれらに限定されるものではなく、文書などのデータも含まれる。また、コンテンツ入力装置５１としては、コンテンツのマスターデータが記録された磁気テープや、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭなどの記録媒体を読み込んで信号Ｓ１を出力する回路や、ＬＡＮ、インターネットなどの通信回線を経由してアクセスし、そのデータをダウンロードして信号Ｓ１を出力する回路などが挙げられる。
【０１０５】
復号鍵入力装置５２はコンテンツ復号用の鍵Ａを入力する装置であり、図１０（ｂ）に示すように、コンテンツ復号鍵Ａである信号Ｓ２を出力する。コンテンツ復号鍵Ａは、情報送信者である著作権者、ディスク製造工場又は鍵管理機関により決定される。
【０１０６】
暗号鍵入力装置５３は、コンテンツ暗号鍵Ａを入力する装置であり、図１０（ｃ）に示すように、コンテンツ暗号鍵Ａである信号Ｓ３を出力する。コンテンツ暗号鍵Ａとコンテンツ復号鍵Ａには、次の関係が成立することが要求される。
【０１０７】
Ｐ＝Ｄｅｃｒｙｐｔｉｏｎ（Ｅｎｃｒｙｐｔｉｏｎ（任意のデータＰ，コンテンツ暗号鍵Ａ），コンテンツ復号鍵Ａ）
コンテンツ暗号化装置５４は、コンテンツ暗号鍵Ａ（信号Ｓ３）を用いてコンテンツ（信号Ｓ１）を暗号化し、暗号化コンテンツである信号Ｓ４を出力する。図１０（ｄ）に示すように、信号Ｓ４＝Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）である。
【０１０８】
なお、この例ではコンテンツ暗号鍵Ａを用いてコンテンツを直接暗号化しているが、コンテンツ自体を暗号化する必要は必ずしもない。例えば、コンテンツ自体は他の暗号鍵Ｃで暗号化し、暗号鍵Ｃに対応する復号鍵Ｃを上記のコンテンツ暗号鍵Ａで暗号化して信号Ｓ４として出力してもよい。つまり、ここでいう「コンテンツ暗号鍵を用いてコンテンツを暗号化する」とは、コンテンツの復号化に少なくともコンテンツ復号鍵Ａを必要とするような方法でコンテンツを変換することを意味する。
【０１０９】
暗号鍵入力装置５５は、コンテンツ復号鍵Ａを暗号化するための複数の暗号鍵Ｂｉを入力する装置であり、Ｎ個の暗号鍵Ｂ１、Ｂ２、・・・ＢＮ−１、ＢＮを、前述の階層分割を伴う鍵管理方式のアルゴリズムに従って選択し、信号Ｓ５を出力する。図１０（ｅ）に示すように、信号Ｓ５＝暗号鍵Ｂ１｜暗号鍵Ｂ２｜・・・｜暗号鍵Ｂｉ｜・・・｜暗号鍵ＢＮ−１｜暗号鍵ＢＮで表される。これら複数の暗号鍵Ｂｉの組み合わせにより、コンテンツを再生することができる再生装置（上述した「無効化の対象とならない受信者」）が一意に決まる。よって、暗号鍵Ｂｉは再生を許可する権限を持つ機関（鍵管理機関又は情報送信者）が暗号鍵Ｂｉを決定する。
【０１１０】
鍵暗号化装置５６は、信号Ｓ５として得られる暗号鍵Ｂｉを用いて、信号Ｓ２として得られるコンテンツ復号鍵Ａを暗号化し、それにヘッダー情報Ｈｅａｄｅｒ（暗号鍵Ｂｉ）を付加して信号Ｓ６として出力する。図１１（ａ）に示すように、
信号Ｓ６　＝
Ｈｅａｄｅｒ（暗号鍵Ｂ１）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂ１））
｜Ｈｅａｄｅｒ（暗号鍵Ｂ２）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂ２））
｜・・・
｜Ｈｅａｄｅｒ（暗号鍵Ｂｉ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ）
｜・・・
｜Ｈｅａｄｅｒ（暗号鍵ＢＮ−１｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵ＢＮ−１）
｜Ｈｅａｄｅｒ（暗号鍵ＢＮ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵ＢＮ）
で表される。なお、以下の説明では簡単のため、
信号Ｓ６＝Ｈｅａｄｅｒ（暗号鍵Ｂ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂ）と表す。
【０１１１】
記録信号生成装置５７は、暗号化されたコンテンツと、複数の暗号鍵Ｂｉで暗号化されたコンテンツ復号鍵Ａの組み合わせとを合成して記録信号を生成する。より具体的には、記録信号生成装置５７は、信号Ｓ４＝Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）と、信号Ｓ６＝Ｈｅａｄｅｒ（暗号鍵Ｂ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂ）を結合し、それにエラー訂正符号を付加したものを信号Ｓ７として出力する。よって、図１１（ｂ）に示すように、信号Ｓ７は、コンテンツ暗号鍵Ａで暗号化したコンテンツ、Ｎ個の暗号鍵Ｂｉで暗号化されたコンテンツ復号鍵Ａ及びヘッダーにエラー訂正符号を追加した信号であり、
Ｓ７　＝Ｈｅａｄｅｒ（暗号鍵Ｂ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）｜ＥＣＣ
で示される。なお、ＥＣＣはエラー訂正符号である。
【０１１２】
記録装置５８は、生成された記録信号Ｓ７を光ディスクＤに記録し、又は、光ディスクを製造するためのマスターディスクなどに記録信号Ｓ７をカッティングする）に記録する装置であり、通常レーザ光源やレーザ発信器などを備える。
【０１１３】
（２．２）コンテンツ再生装置
次に、上述のようにしてコンテンツが記録された光ディスクＤからコンテンツを再生するためのコンテンツ再生装置６０について説明する。図１２はコンテンツ再生装置６０の構成を示すブロック図である。また、コンテンツ再生装置６０の各部の信号の内容を図１３及び図１４に示している。
【０１１４】
図１２において、情報読取装置６１は光ピックアップなどの装置であり、光ディスクＤに記録されている情報を読み取って信号Ｓ１１を出力する。信号Ｓ１１は、図１３（ａ）に示すように、
Ｓ１１　＝Ｈｅａｄｅｒ（暗号鍵Ｂ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）｜ＥＣＣ
で表される。
【０１１５】
エラー訂正装置６２は、入力された信号Ｓ１１のエラー訂正を行う装置であり、信号Ｓ１１中のＥＣＣに基づいてエラー訂正処理を実行する。そして、エラー訂正後の信号を信号Ｓ１２と信号Ｓ１３に分けてそれぞれ鍵復号装置６４及びコンテンツ復号装置６５へ供給する。信号Ｓ１２は暗号鍵Ｂｉで暗号化されたコンテンツ復号鍵Ａのデータであり、Ｓ１２＝Ｈｅａｄｅｒ（暗号鍵Ｂ）｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂ）で示される。一方、信号Ｓ１３はコンテンツ暗号鍵Ａで暗号化されたコンテンツのデータであり、Ｓ１３＝Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）で示される。
【０１１６】
記憶装置６３は、再生装置が保有する複数の復号鍵Ｂ１、Ｂ２、・・・、Ｂｊ、ＢＭ−１、ＢＭとそのヘッダＨｅａｄｅｒ（Ｂ１）、Ｈｅａｄｅｒ（Ｂ２）、・・・、Ｈｅａｄｅｒ（Ｂｊ）、・・・、Ｈｅａｄｅｒ（ＢＭ−１）、Ｈｅａｄｅｒ（ＢＭ）を保存しておく装置である。なお、ここでは記憶装置６３はＭ個の復号鍵を保有していると仮定する。また、鍵管理機関は、コンテンツ復号鍵Ａの暗号化用の暗号鍵Ｂｉと再生を許可されている再生装置の保有する復号鍵Ｂｊのうちの少なくとも１つは次の関係が整理するように、予め再生装置に復号鍵Ｂｊを配布している：
Ｐ　＝　Ｄｅｃｒｙｐｔｉｏｎ（Ｅｎｃｒｙｐｔｉｏｎ（任意のデータＰ，暗号鍵Ｂｉ），復号鍵Ｂｊ）
さらに、ヘッダーについては、上記の関係の暗号鍵Ｂｉと復号鍵Ｂｊに付加されたヘッダーについて次の関係が成立するようにヘッダーの値が決定されている：
Ｈｅａｄｅｒ（暗号鍵Ｂｉ）＝Ｈｅａｄｅｒ（暗号鍵Ｂｊ）
上記の関係が成立するように復号鍵Ｂｊとそのヘッダーを各再生装置に（再生装置製造時に）配布するのは、上述の鍵管理機関であり、その際にどの再生装置にどの復号鍵Ｂｊを配布するかの決定は、上述の階層分割を伴う鍵管理方式のアルゴリズムに従って行われる。なお、上述のアルゴリズム中の差分集合への鍵の割り当てにおいて、疑似乱数生成器が用いられる場合は、コンテンツ再生装置６０の記憶装置６３に保有されるのは復号鍵Ｂｊそのものではなく、復号鍵を計算するのに必要なラベル情報である。
【０１１７】
記憶装置６３は、図１４（ｂ）に示すように、復号鍵Ｂ１｜復号鍵Ｂ２｜・・・｜復号鍵ＢＭ−１｜復号鍵ＢＭと、そのヘッダーＨｅａｄｅｒ（復号鍵Ｂ１）｜Ｈｅａｄｅｒ（復号鍵Ｂ２）｜・・・｜Ｈｅａｄｅｒ（復号鍵ＢＭ−１）｜Ｈｅａｄｅｒ（復号鍵ＢＭ）を出力する。
【０１１８】
鍵復号装置６４は、信号Ｓ１２＝Ｈｅａｄｅｒ（復号鍵Ｂ｜Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂ）と、信号Ｓ１４＝（復号鍵Ｂ１｜復号鍵Ｂ２｜・・・｜復号鍵ＢＭ−１｜復号鍵ＢＭ）とそのヘッダーＨｅａｄｅｒ（復号鍵Ｂ１）｜Ｈｅａｄｅｒ（復号鍵Ｂ２）｜・・・｜Ｈｅａｄｅｒ（復号鍵Ｂｊ）｜・・・｜Ｈｅａｄｅｒ（復号鍵ＢＭ−１）｜Ｈｅａｄｅｒ（復号鍵ＢＭ）を入力とし、光ディスクＤから読み取ったＨｅａｄｅｒ（暗号鍵Ｂｉ）と再生装置が保有するＨｅａｄｅｒ（復号鍵Ｂｊ）が一致するかを調べ、一致する時には復号鍵Ｂｊを用いてＥｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ）を復号する。つまり、コンテンツ復号鍵Ａ＝Ｄｅｃｒｙｐｔｉｏｎ（Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ），復号鍵Ｂｊ）となる。この処理を一致するヘッダーの組み合わせが見つかるようにｉ及びｊの組み合わせを変えて実行し、図１４（ｃ）に示すように信号Ｓ１５＝コンテンツ復号鍵Ａを出力する。一方、一致するヘッダーの組み合わせがない場合は、再生不可能として全ての処理を終了する。
【０１１９】
なお、前述のように記憶装置６３に復号鍵Ｂｊそのものではなく、復号鍵を計算するのに必要なラベル情報が保存されている場合は、鍵復号装置６４がラベル情報から復号鍵を計算した上で同様の処理を行えばよい。こうして、復号されたコンテンツ復号鍵Ａが信号Ｓ１５としてコンテンツ復号装置６５へ供給される。
【０１２０】
コンテンツ復号装置６５は、図１４（ａ）に示す信号Ｓ１３＝Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）と、図１４（ｃ）に示す信号Ｓ１５＝Ｄｅｃｒｙｐｔｉｏｎ（Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ），復号鍵Ｂｊ）＝コンテンツ復号鍵Ａを入力とし、信号Ｓ１５を用いて信号Ｓ１３を復号し、その結果、Ｄｅｃｒｙｐｔｉｏｎ（Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ），コンテンツ復号鍵Ａ）＝コンテンツを信号Ｓ１６として出力する。再生装置６６はコンテンツ復号装置６５により復号されたコンテンツを再生する。こうして、再生を許可された再生装置のみによりコンテンツの再生が行われる。
【０１２１】
（２．３）コンテンツ記録処理
次に、光ディスクＤへのコンテンツ記録処理について図１５を参照して説明する。図１５はコンテンツ記録処理のフローチャートである。まず、複数存在する再生装置の中で、対象となる光ディスクＤの再生を許可する１つ以上の再生装置を選択する（ステップＳ１）。この処理は、通常は鍵管理機関により行われるが、著作権者、ディスク製造工場などの情報送信者が行う場合もある。
【０１２２】
次に、ステップＳ１で選ばれた、再生を許可する再生装置全てについて、少なくとも１つは復号鍵が存在し、かつ、再生を許可されていない装置については１つも復号鍵が存在しないような復号鍵の集合のうち最小となる集合を選択する（ステップＳ２）。
【０１２３】
次に、コンテンツ復号鍵Ａを決定し、ステップＳ２で選択された復号鍵の集合に属する全ての復号鍵Ｂｊを、Ｐ＝Ｄｅｃｒｙｐｔｉｏｎ（Ｅｎｃｒｙｐｔｉｏｎ（任意のデータＰ，暗号鍵Ｂｉ），復号鍵Ｂｊ）を満たす暗号鍵Ｂｉを用いて暗号化し、Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ）を求める（ステップＳ３）。通常、この処理も鍵管理機関で行われるが、情報送信者が行う場合もある。
【０１２４】
次に、ステップＳ３で選択されたコンテンツ暗号鍵Ａを用いてコンテンツを暗号化し、Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）を求める（ステップＳ４）。この処理は、通常、情報送信者が行う。
【０１２５】
次に、ステップＳ３及びＳ４で求められたＥｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ）及びＥｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）に対してエラー訂正符号を付加する（ステップＳ５）。この処理は、情報送信者である著作権者、ディスク製造工場などで行われる。
【０１２６】
そして、ステップＳ３、Ｓ４及びＳ５で計算されたＥｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ）及びＥｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）並びにエラー訂正符号を光ディスクＤに記録する（ステップＳ６）。この処理はディスク製造工場など、情報送信者により行われる。こうして、暗号化されたコンテンツ及びその復号鍵の情報が光ディスクＤに記録される。
【０１２７】
次に、上記ステップＳ２における復号鍵の集合の選択処理について図１６を参照して説明する。図１６は、図１５におけるステップＳ２の処理、即ち、再生を許可しない再生装置が与えられたとき、対象ディスクの再生を許可された再生装置の全てについて１つの復号（暗号）鍵が存在し、かつ、再生を許可されていない装置については１つも復号（暗号）鍵が存在しないような復号（暗号）鍵の集合のうち、最小となる集合を選択する処理を詳細に示すフローチャートである。
【０１２８】
まず、複数の再生装置をそれぞれリーフに割り当てた２ｂ個の２分木から、無効化したい（再生を許可しない）再生装置の存在しない２分木について、そのルートに割り当てられた暗号鍵を暗号鍵Ｂｉとして選択する（ステップＳ２１）。このとき、無効化したい再生装置の存在しない２分木は除去し、その後の処理の対象から除外する。
【０１２９】
次に、２分木が存在するか否かを判定する（ステップＳ２２）。存在する場合、無効化したい再生装置又は無効化したい再生装置を含む再生装置の集合の割り当てられているリーフ（この２種類のリーフをまとめて「無効化リーフ」と呼ぶ。）を含む任意の部分木Ｔｈを１つ選び、ＳＴｈ（Ｒ）を構成する（ステップＳ２３）。ここで、ＳＴｈ（Ｒ）とは、部分木Ｔｈのルートと無効化リーフを結ぶ最短パス上のノードのみで構成される部分木のことである。また、ここで選択される部分木Ｔｈはどの２分木中に含まれていても構わない。つまり、ステップＳ２１で除去されなかった全ての２分木が対象となっている。
【０１３０】
次に、ＳＴｈ（Ｒ）中の１つの無効化リーフｖｉ、ｖｊを、それらの共通ノードｖ以下に他の無効化リーフが存在しないように選択する（ステップＳ２４）。ここで共通ノードとは、２つの無効化リーフからルートへのパスの共通部分に存在するノードの中で無効化リーフとの距離が最小となるノードのことである。ｖの２つの子ノードの中で、ｖとｖｉのパス上に存在する子ノードをｖｋ、ｖとｖｉのパス上に存在する子ノードをｖｌとする。（無効化リーフがＳＴｈ（Ｒ）中に１つしか存在しない場合、ｖｉ＝ｖｊ、ｖ＝ｖｌ＝ｖｋとし、ｖはＳＴｈ（Ｒ）のルートとなっている。
【０１３１】
次に、ｖｉ≠ｖｋならば、差分集合Ｓｋ，ｉに割り当てられた暗号鍵をＢｉの１つとして選択する（ステップＳ２５）。同様に、ｖｌ≠ｖｊの場合も差分集合Ｓｌ，ｊに割り当てられた暗号鍵をＢｉの１つとして選択する。差分集合への鍵の割り当てに疑似乱数生成器を用いている場合は、集合Ｓｋ、Ｓｌに割り当てられたラベルから、前述の方法により差分集合Ｓｋ，ｉ、Ｓｌ，ｊに割り当てられている暗号鍵を計算し、暗号鍵をＢｉの１つとして選択する。
【０１３２】
次に、ノードｖより下に位置する部分木Ｔｈ中のノードを全て除去し、ｖを無効化リーフとする（ステップＳ２６）。次に、ＳＴｈ（Ｒ）内のルートノードが無効化リーフであるか否かを判定し（ステップＳ２７）。ルートノードが無効化リーフである場合は、ルートノード以外に無効化リーフを含む他の部分木Ｔｈが全ての２分木中に存在するか否かを判定する（ステップＳ２８）。存在する場合、処理はステップＳ２３に戻り、ルートノード以外に無効化リーフを含む他の部分木Ｔｈを選択し、同様の処理を繰り返す。
【０１３３】
一方、ステップＳ２７でＳＴｈ（Ｒ）内のルートノードが無効化リーフでないと判定された場合、処理はステップＳ２４へ戻り他の無効化リーフを選択して同様の処理を行う。
【０１３４】
こうして、ルートノード以外に無効化リーフを含む他の部分木Ｔｈが全ての２分木中に存在しなくなったとき（ステップＳ２８；Ｎｏ）、処理は終了する。コンテンツ復号鍵Ａの暗号化に用いられる暗号鍵Ｂｉの集合は、ステップＳ２１及びステップＳ２５で選択され（又はラベルから計算）された暗号鍵となる。
【０１３５】
（２．４）コンテンツ再生処理
次に、光ディスクＤからのコンテンツ再生処理について説明する。図１７はコンテンツ再生処理のフローチャートである。まず、光ディスクＤから光ピックアップなどの読取装置６１により記録情報が読み取られる（ステップＳ３１）。次に、ステップＳ３１で得られた信号に対してエラー訂正装置６２によりエラー訂正を行う（ステップＳ３２）。
【０１３６】
次に、光ディスクＤ中に記録されているＮ個のヘッダーＨｅａｄｅｒ（暗号鍵Ｂｉ）の中に、再生装置が保有するＭ個の復号鍵ＢｊのヘッダーＨｅａｄｅｒ（復号鍵Ｂｊ）の少なくとも１つは一致するものが存在するか否かを調べる（ステップＳＳ３３）。存在する場合、その再生装置は再生を許可されたものであることになり、一致した光ディスクＤ側のヘッダーＨｅａｄｅｒ（暗号鍵Ｂｉ）に対応するＥｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ）を、再生装置側のヘッダーＨｅａｄｅｒ（復号鍵Ｂｊ）に対応する復号鍵Ｂｊで復号する（ステップＳ３４）。つまり、コンテンツ復号鍵Ａ＝Ｄｅｃｒｙｐｔｉｏｎ（Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ復号鍵Ａ，暗号鍵Ｂｉ），復号鍵Ｂｊ）という処理を行い、コンテンツ復号鍵Ａを得る。
【０１３７】
次に、ステップＳ３４で復号されたコンテンツ復号鍵Ａを用いて、光ディスクＤ上の暗号化コンテンツであるＥｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ）を復号する（ステップＳ３５）。つまり、コンテンツ＝Ｄｅｃｒｙｐｔｉｏｎ（Ｅｎｃｒｙｐｔｉｏｎ（コンテンツ，コンテンツ暗号鍵Ａ），コンテンツ復号鍵Ａ）という処理を行い、コンテンツの復号を行う。そして、復号されたコンテンツを再生する（ステップＳ３６）。
【０１３８】
なお、ステップＳ３３で一致するヘッダーが見つからない場合は（ステップＳ３３；Ｎｏ）、その再生装置による再生が許可されていないことになり、コンテンツの再生は行われず、処理は終了する。
【０１３９】
（２．５）差分集合への暗号鍵の割り当てに疑似乱数生成器を使用する場合
次に、本発明による階層分割を伴う鍵管理方式において差分集合へ暗号（復号）鍵を割り当てる際に疑似乱数生成器を用いる場合の処理を図１８のフローチャートを参照して説明する。
【０１４０】
まず、２ｂ個の各２分木のルートに独立な値をもつ暗号（復号）鍵を割り当てる（ステップＳ４１）。次に、２ｂ個の２分木中に含まれる全てのノードに独立な値を持つラベルを割り当てる（ステップＳ４２）。但し、１台の再生装置のみが割り当てられているノード（リーフ）は除外される。そして、任意の部分木Ｔｈを選択し（ステップＳ４３）、選択された部分木Ｔｈ中の任意のノードｖｉをルートとする部分木Ｔｈ，ｉを選択する（ステップＳ４４）。
【０１４１】
次に、ステップＳ４４で選択された部分木Ｔｈ，ｉのルートノードに割り当てられたラベルＬＡＢＥＬｉ（ステップＳ４２で割り当てられている）を用いて、差分集合Ｓｉ，＊に暗号（復号）鍵Ｌｉ，＊を割り当てる（ステップＳ４５）。ここで、＊は部分木Ｔｈ，ｉ中の任意のノードｖ＊を表す。（但し、Ｔｈ，ｉのルートノードｖｉは除く）。各差分集合への暗号（復号）鍵の割り当ては以下のように行う。
【０１４２】
始めに疑似乱数生成器Ｇの入力をラベルＬＡＢＥＬｉ，＊としたとき、その出力を３等分した左側部分をＧＬ（ＬＡＢＥＬｉ，＊）、中央部分をＧＭ（ＬＡＢＥＬｉ，＊）、右側部分をＧＲ（ＬＡＢＥＬｉ，＊）で表す。このとき各出力を以下のように定義する。
【０１４３】
ＧＬ（ＬＡＢＥＬｉ，＊）　　入力ラベルＬＡＢＥＬｉ，＊の割り当てられたノードの左側の子ノードに割り当てるラベル
ＧＭ（ＬＡＢＥＬｉ，＊）　　入力ラベルＬＡＢＥＬｉ，＊の割り当てられたノードに割り当てる暗号鍵Ｌｉ，＊（これが差分集合Ｓｉ，＊に割り当てられる暗号（復号）鍵になる）
ＧＲ（ＬＡＢＥＬｉ，＊）　　入力ラベルＬＡＢＥＬｉ，＊の割り当てられたノードの右側の子ノードに割り当てるラベル
部分木Ｔｈ，ｉのルートノードに割り当てられたラベルＬＡＢＥＬｉからその２つの子ノードのラベルを疑似乱数生成器Ｇを用いて割り当てる。この処理を次は子ノードのラベルを入力として行い、孫ノードのラベルを求める。以下、同様にして部分木Ｔｈ，ｉ中の全てのノードにラベルを割り当てることができる。
【０１４４】
最後に、部分木Ｔｈ，ｉ中の各ノードに割り当てられたラベルＬＡＢＥＬｉ，＊を入力としてＬｉ，＊＝ＧＭ（ＬＡＢＥＬｉ，＊）を計算する。この値が差分集合Ｓｉ，＊に割り当てられる暗号（復号）鍵である。
【０１４５】
次に、ステップＳ４３で選択された部分木Ｔｈ中の部分木Ｔｈ，ｉで、ステップＳ４４で選択されていない部分木が存在するか否かを判定する（ステップＳ４６）。存在する場合はステップＳ４４へ戻り、未だ選択されていない部分木Ｔｈ，ｉを選択し、同様の処理を行う。存在しない場合は、次に、２ｂ個の２分木中に存在する全ての部分木Ｔｈの中で、ステップＳ４３で選択されていない部分木Ｔｈが存在するか否かを判定する（ステップＳ４７）。存在する場合は、ステップＳ４３に戻り、まだ選択されていない部分木Ｔｈを選択し、同様の処理を行う。一方、存在しない場合は処理を終了する。
【０１４６】
以上述べたように、本実施例においては、２分木を複数のレイヤに分割し、分割された各部分木に対してＴｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄを適用するので、記録媒体中の鍵情報量の増加を押さえつつ、再生装置の保有しておく復号鍵などの秘密情報を大幅に減少させることができる。
【０１４７】
また、Ｔｈｅ　Ｓｕｂｓｅｔ　Ｄｉｆｆｅｒｅｎｃｅ　Ｍｅｔｈｏｄにおいて、各差分集合への復号（暗号）鍵の割り当てに疑似乱数生成器を用いる場合、再生装置側で保有しているラベル情報から復号鍵を求めるのに最大ｌｏｇ２（Ｎ）＋１回の（疑似乱数生成器の出力を求めるという）演算を必要としていたが、本方式では最大ｄ＋１回で十分となる。なお、ｄは部分木Ｔｈの高さである。よって、ラベル情報から復号鍵を効率的かつ迅速に得ることが可能となる。
【図面の簡単な説明】
【図１】木構造を用いた鍵管理方式のモデルを示す図である。
【図２】鍵管理方式により用いる木構造の例を示す図である。
【図３】鍵管理方式により用いる木構造の例を示す図である。
【図４】階層分割を伴う鍵管理方式の木構造の例を示す図である。
【図５】階層分割を伴う鍵管理方式の木構造の例を示す図である。
【図６】階層分割を伴う鍵管理方式の木構造の例を示す図である。
【図７】階層分割を伴う鍵管理方式の木構造の例を示す図である。
【図８】複数の鍵管理方式における記憶媒体側と受信機側の鍵情報サイズを比較するグラフである。
【図９】本発明の実施例に係るコンテンツ記録システムの構成を示すブロック図である。
【図１０】図９に示すコンテンツ記録システムの各部の信号内容を示す。
【図１１】図９に示すコンテンツ記録システムの各部の信号内容を示す。
【図１２】本発明の実施例に係るコンテンツ再生システムの構成を示すブロック図である。
【図１３】図１２に示すコンテンツ再生システムの各部の信号内容を示す。
【図１４】図１２に示すコンテンツ再生システムの各部の信号内容を示す。
【図１５】コンテンツ記録処理のフローチャートである。
【図１６】コンテンツ記録処理における復号鍵の選択処理のフローチャートである。
【図１７】コンテンツ再生処理のフローチャートである。
【図１８】本発明の鍵管理方式により部分集合に鍵を割り当てる処理のフローチャートである。
【符号の説明】
１　鍵管理機関
２　情報送信者
３　情報受信者
４ａ　復号用鍵
４ｂ　鍵情報
５　暗号化用鍵情報
６　伝送情報
７　情報提供者
８　再生装置
９　記録媒体
５０　コンテンツ記録装置
６０　コンテンツ再生装置
【図１】
2004120008.tif 000017
【図２】
2004120008.tif 000018
【図３】
2004120008.tif 000019
【図４】
2004120008.tif 000020
【図５】
2004120008.tif 000021
【図６】
2004120008.tif 000022
【図７】
2004120008.tif 000023
【図８】
2004120008.tif 000024
【図９】
2004120008.tif 000025
【図１０】
2004120008.tif 000026
【図１１】
2004120008.tif 000027
【図１２】
2004120008.tif 000028
【図１３】
2004120008.tif 000029
【図１４】
2004120008.tif 000030
【図１５】
2004120008.tif 000031
【図１６】
2004120008.tif 000032
【図１７】
2004120008.tif 000033
【図１８】
2004120008.tif 000034