(57)【要約】【課題】端末装置で保持すべき鍵数、及び、暗号化データの復号に要する計算量を低減することが可能な情報処理装置を提供すること。【解決手段】情報処理装置は、ｎ個の葉ノードと、根ノードと、根ノード及び葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、この全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割して、ｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の前記基本部分木の根ノードが上位階層の前記基本部分木の葉ノードとなるように構成する。さらに、上記各基本部分木の各ノードに、上記端末装置の部分集合を割り当てて、座標軸上の座標点を相互に結ぶ有向枝が設定された有向グラフを生成する。【選択図】図１１
2008131076.tif 000002
【特許請求の範囲】
【請求項１】
ｎ個の葉ノードと、根ノードと、前記根ノード及び前記葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、前記全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の前記基本部分木の根ノードが上位階層の前記基本部分木の葉ノードとなるように構成し、
前記全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、
前記基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、
前記基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、
前記基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、
最上位階層の前記基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、
前記最上位階層以外の階層の前記基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付ける木構造設定部と；
前記各基本部分木の根ノード及び中間ノードｖの各々について、前記集合（ｌroot’→ｒroot’）又は前記集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、前記集合（ｌroot’（＋１）←ｒroot’）又は前記集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成する有向グラフ生成部と；
を備えることを特徴とする、情報処理装置。
【請求項２】
前記有向グラフ生成部は、
前記下位階層の基本部分木に対応する前記有向グラフから、前記上位階層の基本部分木に対応する前記有向グラフへの有向枝を設定する部分木間有向枝設定部をさらに備えることを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記部分木間有向枝設定部は、
前記下位階層の基本部分木に対応する前記有向グラフにおける第１座標点から、前記上位階層の基本部分木に対応する前記有向グラフにおける第２座標点への有向枝を設定し、
前記第２座標点に対応する部分集合は、前記第１座標点に対応する部分集合を包含することを特徴とする、請求項２に記載の情報処理装置。
【請求項４】
前記有向グラフ作成部は、座標軸設定部と、有向枝設定部とを含み、
前記座標軸設定部は、
前記各基本部分木の根ノード及び中間ノードｖの各々について、前記集合（ｌroot’→ｒroot’）又は前記集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点を左から右に向かって包含関係が大きくなるように配列した第１水平座標軸、及び／又は、前記集合（ｌroot’（＋１）←ｒroot’）又は前記集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点を左から右に向かって包含関係が大きくなるように配列した第２水平座標軸をそれぞれ設定し、前記第１及び第２水平座標軸の各々の左端及び／又は右端に、少なくとも合計２つの仮座標点を追加設定し、
前記有向枝設定部は、
所定の整数ｋ（ｋはｌｏｇ（ｎ１／ｙ）の約数）を設定し、
ｎ（ｘ−１）／ｋ・ｙ＜（ｒｖ’−ｌｖ’＋１）≦ｎｘ／ｋ・ｙを満たす整数ｘを算定した上で、
前記各第１水平座標軸上の左端にある座標点から開始して、ｎｉ／（ｋ・ｙ）（ｉ＝０〜ｘ−１）だけ離れた座標点へ延びる右向きの有向枝の設定を繰り返し行い、
前記各第２水平座標軸上の右端にある座標点から開始して、ｎｉ／（ｋ・ｙ）（ｉ＝０〜ｘ−１）だけ離れた座標点へ延びる左向きの有向枝の設定を繰り返し行い、
前記各第１及び第２水平座標軸について、前記仮座標点を始点又は終点とする全ての前記有向枝を除外し、
前記各第１及び第２座標軸上の各座標点に到達する前記有向枝のうち、最長の有向枝以外の有向枝を除外することを特徴とする、請求項１に記載の情報処理装置。
【請求項５】
前記有向グラフに基づいて、コンテンツ又はコンテンツ鍵を暗号化するためのセット鍵を生成する鍵生成部をさらに備えることを特徴とする、請求項１に記載の情報処理装置。
【請求項６】
前記鍵生成部は、
前記有向グラフにおけるある座標点に対応する部分集合Ｓの中間鍵ｔ（Ｓｉ）の入力に応じて、当該座標点に対応する部分集合Ｓｉに対応する前記セット鍵ｋ（Ｓｉ）と、当該座標点Ｓを始点とする前記有向枝の終点の座標点Ｓ１，Ｓ２，・・・，Ｓｋの中間鍵ｔ（Ｓ１），ｔ（Ｓ２），・・・，ｔ（Ｓｋ）と、を出力することを特徴とする、請求項５に記載の情報処理装置。
【請求項７】
前記鍵生成部は、
前記有向グラフにおけるある座標点に対応する部分集合Ｓのセット鍵ｋ（Ｓ）の入力に応じて、当該座標点Ｓを始点とする前記有向枝の終点の座標点Ｓ１，Ｓ２，・・・，Ｓｋのセット鍵ｋ（Ｓ１），ｋ（Ｓ２），・・・，ｋ（Ｓｋ）を出力することを特徴とする、請求項５に記載の情報処理装置。
【請求項８】
前記セット鍵を用いて、前記コンテンツ又は前記コンテンツ鍵を暗号化する暗号化部をさらに備えることを特徴とする、請求項５に記載の情報処理装置。
【請求項９】
前記全体木構造の葉ノード１〜ｎの一部又は全部にそれぞれ対応付けられた端末装置に、前記暗号化部により暗号化された前記コンテンツ又は前記コンテンツ鍵を送信する送信部をさらに備えることを特徴とする、請求項８に記載の情報処理装置。
【請求項１０】
前記全体木構造の葉ノード１〜ｎの部分集合をＳｉと定義したときに、
前記セット鍵または前記コンテンツ鍵で暗号化された前記コンテンツの復号を許可する前記端末装置の集合（Ｎ＼Ｒ）を決定し、前記集合（Ｎ＼Ｒ）＝｛Ｓ１∪Ｓ２∪・・・∪Ｓｍ｝を満たすｍ個の部分集合Ｓ１〜Ｓｍを決定する部分集合決定部をさらに備えることを特徴とする、請求項１に記載の情報処理装置。
【請求項１１】
前記部分集合決定部は、前記ｍが最小となるように、前期部分集合Ｓ１〜Ｓｍを決定することを特徴とする、請求項１０に記載の情報処理装置。
【請求項１２】
前記送信部は、
前記集合（Ｎ＼Ｒ）を表す情報、又は、前記集合（Ｎ＼Ｒ）を構成する前記部分集合Ｓ１〜Ｓｍを表す情報を、前記端末装置に送信することを特徴とする、請求項１０に記載の情報処理装置。
【請求項１３】
前記送信部は、
前記暗号化部により前記各部分集合Ｓ１〜Ｓｍに対応する前記セット鍵でそれぞれ暗号化された前記コンテンツ又は前記コンテンツ鍵を、前記端末装置に送信することを特徴とする、請求項９に記載の情報処理装置。
【請求項１４】
有向グラフに基づいて、暗号化されたコンテンツ又はコンテンツ鍵を復号するためのセット鍵を生成する鍵生成部を備え、
前記有向グラフは、
ｎ個の葉ノードと、根ノードと、前記根ノード及び前記葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、前記全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の前記基本部分木の根ノードが上位階層の前記基本部分木の葉ノードとなるように構成し、
前記全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、
前記基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、
前記基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、
前記基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、
最上位階層の前記基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、
前記最上位階層以外の階層の前記基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付け、
前記各基本部分木の根ノード及び中間ノードｖの各々について、前記集合（ｌroot’→ｒroot’）又は前記集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、前記集合（ｌroot’（＋１）←ｒroot’）又は前記集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成する、
ことによって得られることを特徴とする、端末装置。
【請求項１５】
前記下位階層の基本部分木に対応する前記有向グラフから、前記上位階層の基本部分木に対応する前記有向グラフへの有向枝が設定されていることを特徴とする、請求項１４に記載の端末装置。
【請求項１６】
前記下位階層の基本部分木に対応する前記有向グラフにおける第１座標点から、前記上位階層の基本部分木に対応する前記有向グラフにおける第２座標点への有向枝が設定され、
前記第２座標点に対応する部分集合は、前記第１座標点に対応する部分集合を包含することを特徴とする、請求項１５に記載の端末装置。
【請求項１７】
前記鍵生成部により生成された前記セット鍵を用いて、前記暗号化されたコンテンツ又はコンテンツ鍵を復号する復号部をさらに備えることを特徴とする、請求項１４に記載の端末装置。
【請求項１８】
前記鍵生成部は、
前記有向グラフにおけるある座標点に対応する部分集合Ｓの中間鍵ｔ（Ｓｉ）の入力に応じて、当該座標点に対応する部分集合Ｓに対応する前記セット鍵ｋ（Ｓｉ）と、当該座標点を始点とする前記有向枝の終点の座標点に対応する部分集合Ｓ１，Ｓ２，・・・，Ｓｋの中間鍵ｔ（Ｓ１），ｔ（Ｓ２），・・・，ｔ（Ｓｋ）と、を出力することを特徴とする、請求項１４に記載の端末装置。
【請求項１９】
前記鍵生成部は、
前記有向グラフにおけるある座標点に対応する部分集合Ｓのセット鍵ｋ（Ｓ）の入力に応じて、当該座標点Ｓを始点とする前記有向枝の終点の座標点Ｓ１，Ｓ２，・・・，Ｓｋのセット鍵ｋ（Ｓ１），ｋ（Ｓ２），・・・，ｋ（Ｓｋ）を出力することを特徴とする、請求項１４に記載の端末装置。
【請求項２０】
前記復号部は、前記セット鍵を用いて、前記暗号化されたコンテンツ鍵を復号し、当該復号されたコンテンツ鍵を用いて、前記暗号化されたコンテンツを復号することを特徴とする、請求項１７に記載の端末装置。
【請求項２１】
前記全体木構造の葉ノード１〜ｎの部分集合をＳｉと定義したときに、
前記セット鍵または前記コンテンツ鍵で暗号化された前記コンテンツの復号を許可する前記端末装置の集合（Ｎ＼Ｒ）が決定され、前記集合（Ｎ＼Ｒ）＝｛Ｓ１∪Ｓ２∪・・・∪Ｓｍ｝を満たすｍ個の部分集合Ｓ１〜Ｓｍが決定されたときに、前記集合（Ｎ＼Ｒ）を表す情報、又は、前記集合（Ｎ＼Ｒ）を構成する前記部分集合Ｓ１〜Ｓｍを表す情報を受信する受信部と、
前記受信した情報に基づいて、当該端末装置が前記部分集合Ｓ１〜Ｓｍのいずれかに属しているか否かを判断し、当該判断結果に基づいて、前記暗号化されたコンテンツの復号が許可されているか否かを判断する判断部と、
を備えることを特徴とする、請求項１４に記載の端末装置。
【請求項２２】
前記鍵生成部により生成された前記セット鍵を用いて、前記暗号化されたコンテンツ又はコンテンツ鍵を復号する復号部をさらに備え、
前記復号部は、前記判断部により前記端末装置が前記部分集合Ｓ１〜Ｓｍのいずれかに属していると判断された場合に、前記セット鍵を用いて、前記暗号化されたコンテンツ又はコンテンツ鍵を復号することを特徴とする、請求項２１に記載の端末装置。
【請求項２３】
ｎ個の葉ノードと、根ノードと、前記根ノード及び前記葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、前記全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の前記基本部分木の根ノードが上位階層の前記基本部分木の葉ノードとなるように構成するステップと；
前記全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、
前記基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、
前記基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、
前記基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、
最上位階層の前記基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、
前記最上位階層以外の階層の前記基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付けるステップと；
前記各基本部分木の根ノード及び中間ノードｖの各々について、前記集合（ｌroot’→ｒroot’）又は前記集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、前記集合（ｌroot’（＋１）←ｒroot’）又は前記集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成するステップと；
を含むことを特徴とする、情報処理方法。
【請求項２４】
ｎ個の葉ノードと、根ノードと、前記根ノード及び前記葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、前記全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の前記基本部分木の根ノードが上位階層の前記基本部分木の葉ノードとなるように構成し、
前記全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、
前記基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、
前記基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、
前記基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、
最上位階層の前記基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、
前記最上位階層以外の階層の前記基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付け、
前記各基本部分木の根ノード及び中間ノードｖの各々について、前記集合（ｌroot’→ｒroot’）又は前記集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、前記集合（ｌroot’（＋１）←ｒroot’）又は前記集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成する、
ことによって得られた有向グラフに基づいて、暗号化されたコンテンツ又はコンテンツ鍵を復号するためのセット鍵を生成することを特徴とする、鍵生成方法。
【請求項２５】
ｎ個の葉ノードと、根ノードと、前記根ノード及び前記葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、前記全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の前記基本部分木の根ノードが上位階層の前記基本部分木の葉ノードとなるように構成するステップと；
前記全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、
前記基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、
前記基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、
前記基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、
最上位階層の前記基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、
前記最上位階層以外の階層の前記基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付けるステップと；
前記各基本部分木の根ノード及び中間ノードｖの各々について、前記集合（ｌroot’→ｒroot’）又は前記集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、前記集合（ｌroot’（＋１）←ｒroot’）又は前記集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成するステップと；
をコンピュータに実行させることを特徴とする、プログラム。
【請求項２６】
ｎ個の葉ノードと、根ノードと、前記根ノード及び前記葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、前記全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の前記基本部分木の根ノードが上位階層の前記基本部分木の葉ノードとなるように構成し、
前記全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、
前記基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、
前記基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、
前記基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、
最上位階層の前記基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、
前記最上位階層以外の階層の前記基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、
前記各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付け、
前記各基本部分木の根ノード及び中間ノードｖの各々について、前記集合（ｌroot’→ｒroot’）又は前記集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、前記集合（ｌroot’（＋１）←ｒroot’）又は前記集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成する、
ことによって得られた有向グラフに基づいて、暗号化されたコンテンツ又はコンテンツ鍵を復号するためのセット鍵を生成するステップ
をコンピュータに実行させることを特徴とする、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、端末装置、情報処理方法、鍵生成方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ネットワーク等を介したコンテンツ配信に関する暗号化技術の発展には非常に大きな関心が寄せられている。その中でも、暗号化されたコンテンツを復号するための暗号鍵をより安全かつ効率的に配信する方法に関して特に注目が集まっている。通常、暗号化されたコンテンツを配信する１人の配信者に対して、正当な受信権を有するｎ（ｎは２以上の自然数）人の受信者が存在し、ネットワーク上に存在する無数の傍受者の中で、当該ｎ人の受信者のみが、暗号化されたコンテンツを復号できる仕組みが必要となる。さらに、上記の正当な受信権を有する受信者数ｎが時間と共に変化するため、受信者を要素とする集合の変化に対してフレキシブルに対応できる仕組みが求められる。
【０００３】
また、当然の事ながら、こうした仕組みを実現するにあたって、配信者側には、暗号鍵の生成、保持、配信、及びコンテンツの暗号化等に関する処理負荷が発生し、受信者には、復号鍵の保持、受信、及びコンテンツの復号等に関する処理負荷が発生する。確かに、最近は、情報処理機器が有する演算処理能力及び記憶容量等の向上、情報伝送経路が有する通信速度の向上等の種々の技術的発展に支えられ、上記の暗号配信コストに掛かる負荷が相対的に低減している。しかし、コンテンツ配信サービスの需要者が劇的に増加している上、熟達した悪意の傍受者に対抗できるだけの高い堅牢性を持った暗号化技術が要求されるため、弥が上にも暗号配信に伴う処理負荷が増加してしまう。
【０００４】
このような状況において、同報通信路を用いて、配信者が任意に選択した受信者のグループに情報を安全に送信する手法として、ｒｅｖｏｃａｔｉｏｎ  ｓｃｈｅｍｅやｂｒｏａｄｃａｓｔ  ｅｎｃｒｙｐｔｉｏｎ  ｓｃｈｅｍｅ等の方式が提案されている。このうちｂｒｏａｄｃａｓｔ  ｅｎｃｒｙｐｔｉｏｎ  ｓｃｈｅｍｅの一例として、以下の非特許文献１に開示されている暗号鍵配信方式があり、この方式の特徴は、従来の階層化木構造を用いた鍵配信方式から更に、鍵の導出経路を改良した点にある。つまり、この方式では、受信者の集合を複数の部分集合に分けて考えるが、ある部分集合に当該部分集合に含まれない受信者を加えて新たな部分集合を作り、これを繰り返すことにより部分集合の鎖を作り、それぞれの部分集合に対応する暗号鍵を鎖に沿って導出する。これにより、受信者が保持すべき鍵数、暗号鍵を生成するための計算量、及び鍵配信に係る通信量を低減することが可能である。
【０００５】
【非特許文献１】Ｎｕｔｔａｐｏｎｇ  Ａｔｔｒａｐａｄｕｎｇ  ａｎｄ  Ｈｉｄｅｋｉ  Ｉｍａｉ，“Ｓｕｂｓｅｔ  Ｉｎｃｒｅｍｅｎｔａｌ  Ｃｈａｉｎ  Ｂａｓｅｄ  Ｂｒｏａｄｃａｓｔ  Ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  Ｓｈｏｒｔｅｒ  Ｃｉｐｈｅｒｔｅｘｔ”，Ｔｈｅ  ２８ｔｈ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｈｅｏｒｙ  ａｎｄ  Ｉｔｓ  Ａｐｐｌｉｃａｔｉｏｎｓ（ＳＩＴＡ２００５）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
確かに、上記の非特許文献１の暗号鍵配信方式には、従来のＣＳ方式（Ｃｏｍｐｌｅｔｅ  Ｓｕｂｔｒｅｅ  ｓｃｈｅｍｅ）やＳＤ方式（Ｓｕｂｓｅｔ  Ｄｉｆｆｅｒｅｎｃｅ  ｓｃｈｅｍｅ）等の鍵配信方式に比較すると大きなアドバンテージがあった。しかし、実施を想定した実際的な観点からすると、受信者数が多い場合には、受信者側の端末装置で保持すべき鍵数、及び、暗号鍵を用いた復号時に要する端末装置の計算量が、依然として大きいという問題を有していた。
【０００７】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、端末装置で保持すべき鍵数、及び、暗号化データの復号に要する計算量を低減することが可能な、新規かつ改良された情報処理装置、端末装置、情報処理方法、鍵生成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある観点によれば、ｎ個の葉ノードと、根ノードと、根ノード及び葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の基本部分木の根ノードが上位階層の基本部分木の葉ノードとなるように構成し、全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、最上位階層の基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、最上位階層以外の階層の基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付ける木構造設定部と、各基本部分木の根ノード及び中間ノードｖの各々について、集合（ｌroot’→ｒroot’）又は集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、集合（ｌroot’（＋１）←ｒroot’）又は集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成する有向グラフ生成部と、を備えることを特徴とする、情報処理装置が提供される。
【０００９】
また、上記有向グラフ生成部は、下位階層の基本部分木に対応する有向グラフから、上位階層の基本部分木に対応する有向グラフへの有向枝を設定する部分木間有向枝設定部をさらに備えるようにしてもよい。
【００１０】
また、上記部分木間有向枝設定部は、下位階層の基本部分木に対応する有向グラフにおける第１座標点から、上位階層の基本部分木に対応する有向グラフにおける第２座標点への有向枝を設定し、第２座標点に対応する部分集合は、第１座標点に対応する部分集合を包含するようにしてもよい。
【００１１】
また、上記有向グラフ作成部は、座標軸設定部と、有向枝設定部とを含み、座標軸設定部は、各基本部分木の根ノード及び中間ノードｖの各々について、集合（ｌroot’→ｒroot’）又は集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点を左から右に向かって包含関係が大きくなるように配列した第１水平座標軸、及び／又は、集合（ｌroot’（＋１）←ｒroot’）又は集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点を左から右に向かって包含関係が大きくなるように配列した第２水平座標軸をそれぞれ設定し、第１及び第２水平座標軸の各々の左端及び／又は右端に、少なくとも合計２つの仮座標点を追加設定し、有向枝設定部は、所定の整数ｋ（ｋはｌｏｇ（ｎ１／ｙ）の約数）を設定し、ｎ（ｘ−１）／ｋ・ｙ＜（ｒｖ’−ｌｖ’＋１）≦ｎｘ／ｋ・ｙを満たす整数ｘを算定した上で、各第１水平座標軸上の左端にある座標点から開始して、ｎｉ／（ｋ・ｙ）（ｉ＝０〜ｘ−１）だけ離れた座標点へ延びる右向きの有向枝の設定を繰り返し行い、各第２水平座標軸上の右端にある座標点から開始して、ｎｉ／（ｋ・ｙ）（ｉ＝０〜ｘ−１）だけ離れた座標点へ延びる左向きの有向枝の設定を繰り返し行い、各第１及び第２水平座標軸について、仮座標点を始点又は終点とする全ての有向枝を除外し、各第１及び第２座標軸上の各座標点に到達する有向枝のうち、最長の有向枝以外の有向枝を除外するようにしてもよい。
【００１２】
また、上記有向グラフに基づいて、コンテンツ又はコンテンツ鍵を暗号化するためのセット鍵を生成する鍵生成部をさらに備えるようにしてもよい。
【００１３】
また、上記鍵生成部は、有向グラフにおけるある座標点に対応する部分集合Ｓの中間鍵ｔ（Ｓｉ）の入力に応じて、当該座標点に対応する部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）と、当該座標点Ｓを始点とする有向枝の終点の座標点Ｓ１，Ｓ２，・・・，Ｓｋの中間鍵ｔ（Ｓ１），ｔ（Ｓ２），・・・，ｔ（Ｓｋ）と、を出力するようにしてもよい。
【００１４】
また、上記鍵生成部は、有向グラフにおけるある座標点に対応する部分集合Ｓのセット鍵ｋ（Ｓ）の入力に応じて、当該座標点Ｓを始点とする有向枝の終点の座標点Ｓ１，Ｓ２，・・・，Ｓｋのセット鍵ｋ（Ｓ１），ｋ（Ｓ２），・・・，ｋ（Ｓｋ）を出力するようにしてもよい。
【００１５】
また、上記セット鍵を用いて、コンテンツ又はコンテンツ鍵を暗号化する暗号化部をさらに備えるようにしてもよい。
【００１６】
また、上記全体木構造の葉ノード１〜ｎの一部又は全部にそれぞれ対応付けられた端末装置に、暗号化部により暗号化されたコンテンツ又はコンテンツ鍵を送信する送信部をさらに備えるようにしてもよい。
【００１７】
また、上記全体木構造の葉ノード１〜ｎの部分集合をＳｉと定義したときに、セット鍵またはコンテンツ鍵で暗号化されたコンテンツの復号を許可する端末装置の集合（Ｎ＼Ｒ）を決定し、集合（Ｎ＼Ｒ）＝｛Ｓ１∪Ｓ２∪・・・∪Ｓｍ｝を満たすｍ個の部分集合Ｓ１〜Ｓｍを決定する部分集合決定部をさらに備えるようにしてもよい。
【００１８】
また、上記部分集合決定部は、ｍが最小となるように、前期部分集合Ｓ１〜Ｓｍを決定するようにしてもよい。
【００１９】
また、上記送信部は、集合（Ｎ＼Ｒ）を表す情報、又は、集合（Ｎ＼Ｒ）を構成する部分集合Ｓ１〜Ｓｍを表す情報を、端末装置に送信するようにしてもよい。
【００２０】
また、上記送信部は、暗号化部により各部分集合Ｓ１〜Ｓｍに対応するセット鍵でそれぞれ暗号化されたコンテンツ又はコンテンツ鍵を、端末装置に送信するようにしてもよい。
【００２１】
また、上記課題を解決するために、本発明の別の観点によれば、有向グラフに基づいて、暗号化されたコンテンツ又はコンテンツ鍵を復号するためのセット鍵を生成する鍵生成部を備え、有向グラフは、ｎ個の葉ノードと、根ノードと、根ノード及び葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の基本部分木の根ノードが上位階層の基本部分木の葉ノードとなるように構成し、全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、最上位階層の基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、最上位階層以外の階層の基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付け、各基本部分木の根ノード及び中間ノードｖの各々について、集合（ｌroot’→ｒroot’）又は集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、集合（ｌroot’（＋１）←ｒroot’）又は集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成する、ことによって得られることを特徴とする、端末装置が提供される。
【００２２】
また、上記下位階層の基本部分木に対応する有向グラフから、上位階層の基本部分木に対応する有向グラフへの有向枝が設定されているようにしてもよい。
【００２３】
また、上記下位階層の基本部分木に対応する有向グラフにおける第１座標点から、上位階層の基本部分木に対応する有向グラフにおける第２座標点への有向枝が設定され、第２座標点に対応する部分集合は、第１座標点に対応する部分集合を包含するようにしてもよい。
【００２４】
また、上記鍵生成部により生成されたセット鍵を用いて、暗号化されたコンテンツ又はコンテンツ鍵を復号する復号部をさらに備えるようにしてもよい。
【００２５】
また、上記鍵生成部は、有向グラフにおけるある座標点に対応する部分集合Ｓの中間鍵ｔ（Ｓｉ）の入力に応じて、当該座標点に対応する部分集合Ｓに対応するセット鍵ｋ（Ｓｉ）と、当該座標点を始点とする有向枝の終点の座標点に対応する部分集合Ｓ１，Ｓ２，・・・，Ｓｋの中間鍵ｔ（Ｓ１），ｔ（Ｓ２），・・・，ｔ（Ｓｋ）と、を出力するようにしてもよい。
【００２６】
また、上記鍵生成部は、有向グラフにおけるある座標点に対応する部分集合Ｓのセット鍵ｋ（Ｓ）の入力に応じて、当該座標点Ｓを始点とする有向枝の終点の座標点Ｓ１，Ｓ２，・・・，Ｓｋのセット鍵ｋ（Ｓ１），ｋ（Ｓ２），・・・，ｋ（Ｓｋ）を出力するようにしてもよい。
【００２７】
また、上記復号部は、セット鍵を用いて、暗号化されたコンテンツ鍵を復号し、当該復号されたコンテンツ鍵を用いて、暗号化されたコンテンツを復号するようにしてもよい。
【００２８】
また、上記全体木構造の葉ノード１〜ｎの部分集合をＳｉと定義したときに、セット鍵またはコンテンツ鍵で暗号化されたコンテンツの復号を許可する端末装置の集合（Ｎ＼Ｒ）が決定され、集合（Ｎ＼Ｒ）＝｛Ｓ１∪Ｓ２∪・・・∪Ｓｍ｝を満たすｍ個の部分集合Ｓ１〜Ｓｍが決定されたときに、集合（Ｎ＼Ｒ）を表す情報、又は、集合（Ｎ＼Ｒ）を構成する部分集合Ｓ１〜Ｓｍを表す情報を受信する受信部と、受信した情報に基づいて、当該端末装置が部分集合Ｓ１〜Ｓｍのいずれかに属しているか否かを判断し、当該判断結果に基づいて、暗号化されたコンテンツの復号が許可されているか否かを判断する判断部と、を備えるようにしてもよい。
【００２９】
また、上記鍵生成部により生成されたセット鍵を用いて、暗号化されたコンテンツ又はコンテンツ鍵を復号する復号部をさらに備え、復号部は、判断部により端末装置が部分集合Ｓ１〜Ｓｍのいずれかに属していると判断された場合に、セット鍵を用いて、暗号化されたコンテンツ又はコンテンツ鍵を復号するようにしてもよい。
【００３０】
また、上記課題を解決するために、本発明の別の観点によれば、ｎ個の葉ノードと、根ノードと、根ノード及び葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の基本部分木の根ノードが上位階層の基本部分木の葉ノードとなるように構成するステップと、全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、最上位階層の基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、最上位階層以外の階層の基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付けるステップと、各基本部分木の根ノード及び中間ノードｖの各々について、集合（ｌroot’→ｒroot’）又は集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、集合（ｌroot’（＋１）←ｒroot’）又は集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成するステップと、を含むことを特徴とする、情報処理方法が提供される。
【００３１】
また、上記課題を解決するために、本発明の別の観点によれば、ｎ個の葉ノードと、根ノードと、根ノード及び葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の基本部分木の根ノードが上位階層の基本部分木の葉ノードとなるように構成し、全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、最上位階層の基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、最上位階層以外の階層の基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付け、各基本部分木の根ノード及び中間ノードｖの各々について、集合（ｌroot’→ｒroot’）又は集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、集合（ｌroot’（＋１）←ｒroot’）又は集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成する、ことによって得られた有向グラフに基づいて、暗号化されたコンテンツ又はコンテンツ鍵を復号するためのセット鍵を生成することを特徴とする、鍵生成方法が提供される。
【００３２】
また、上記課題を解決するために、本発明の別の観点によれば、ｎ個の葉ノードと、根ノードと、根ノード及び葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の基本部分木の根ノードが上位階層の基本部分木の葉ノードとなるように構成するステップと、全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、最上位階層の基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、最上位階層以外の階層の基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付けるステップと、各基本部分木の根ノード及び中間ノードｖの各々について、集合（ｌroot’→ｒroot’）又は集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、集合（ｌroot’（＋１）←ｒroot’）又は集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成するステップと、をコンピュータに実行させることを特徴とする、プログラムが提供される。
【００３３】
また、上記課題を解決するために、本発明の別の観点によれば、ｎ個の葉ノードと、根ノードと、根ノード及び葉ノード以外の複数の中間ノードとから構成される２分木の全体木構造を設定し、全体木構造を、ｎ１／ｙ個の葉ノードを有する複数の基本部分木に分割してｙ階層（ｙはｌｏｇ（ｎ）の約数）に階層化し、下位階層の基本部分木の根ノードが上位階層の基本部分木の葉ノードとなるように構成し、全体木構造のノードｗの下位に位置する葉ノードの集合をＡｗと定義し、基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノードをｖ（−ｉ）、ｉ個右に位置する葉ノードをｖ（＋ｉ）と定義し、基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）に関し、集合（ｕ→ｖ）を｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝、集合（ｕ←ｖ）を｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝と定義し、基本部分木のノードｖの下位に位置する複数の葉ノードのうち、左端に位置する葉ノードをｌｖ’、右端に位置する葉ノードをｒｖ’と定義したときに、最上位階層の基本部分木の根ノードｒｏｏｔに対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付け、最上位階層以外の階層の基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、各基本部分木の中間ノードｖが、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付け、各基本部分木の根ノード及び中間ノードｖの各々について、集合（ｌroot’→ｒroot’）又は集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点が、水平座標軸上に左から右に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフ、及び／又は、集合（ｌroot’（＋１）←ｒroot’）又は集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点が、水平座標軸上に右から左に向かって包含関係が大きくなるように配列され、当該座標点を相互に結ぶ有向枝が設定された有向グラフを生成する、ことによって得られた有向グラフに基づいて、暗号化されたコンテンツ又はコンテンツ鍵を復号するためのセット鍵を生成するステップをコンピュータに実行させることを特徴とする、プログラムが提供される。
【発明の効果】
【００３４】
以上説明したように本発明によれば、受信者側の端末装置で保持すべき鍵数、及び、暗号化データの復号に要する計算量を低減することができる。
【発明を実施するための最良の形態】
【００３５】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００３６】
［暗号鍵配信システム１００構成］
まず、本発明の一実施形態に係る暗号鍵配信システム１００の構成について説明する。図１は、本実施形態にかかる暗号鍵配信システム１００の構成を示す説明図である。
【００３７】
図１を参照すると、暗号鍵配信システム１００は、本実施形態にかかる情報処理装置の一例として構成された鍵配信サーバ１０と、複数のユーザがそれぞれ所有する複数の端末装置２０と、これらの鍵配信サーバ１０と端末装置２０とを接続するネットワーク５とから構成される。
【００３８】
ネットワーク５は、鍵配信サーバ１０と端末装置２０を双方向通信又は一方向通信可能に接続する通信回線網である。このネットワーク５は、例えば、インターネット、電話回線網、衛星通信網、同報通信路等の公衆回線網や、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）、ワイヤレスＬＡＮ等の専用回線網などで構成されており、有線／無線を問わない。
【００３９】
鍵配信サーバ１０は、サーバ機能を備えたコンピュータ装置などで構成され、ネットワーク５を介して各種の情報を外部装置に装置可能である。例えば、鍵配信サーバ１０は、ｂｒｏａｄｃａｓｔ  ｅｎｃｒｙｐｔｉｏｎ  ｓｃｈｅｍｅ方式の暗号鍵を生成して、この暗号鍵を端末装置２０に配信できる。また、本実施形態にかかる鍵配信サーバ１０は、映像配信サービスや、電子音楽配信サービス等のコンテンツ配信サービスを提供するコンテンツ配信サーバとしての機能を具備しており、端末装置２０にコンテンツを配信可能である。なお、鍵配信サーバ１０とコンテンツ配信サーバとを別装置として構成することも勿論可能である。
【００４０】
ここで、コンテンツは、例えば、映画、テレビジョン番組、ビデオプログラム、図表等の動画又は静止画からなる映像（Ｖｉｄｅｏ）コンテンツ、音楽、講演、ラジオ番組等の音声（Ａｕｄｉｏ）コンテンツや、ゲームコンテンツ、文書コンテンツ、ソフトウェアなど、任意のコンテンツデータであってよい。映像コンテンツは、映像データのみならず、音声データを含んでもよい。
【００４１】
端末装置２０は、ネットワーク５を介して外部装置とデータ通信可能な情報処理装置であり、各ユーザによって所有される。この端末装置２０は、例えば、図示のようにパーソナルコンピュータ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ：以下「ＰＣ」という。）等のコンピュータ装置（ノート型、デスクトップ型を問わない。）で構成されるが、かかる例に限定されず、ネットワーク５を介した通信機能を有する機器であれば、例えばＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、家庭用ゲーム機、ＤＶＤ／ＨＤＤレコーダ、テレビジョン受像器等の情報家電、テレビジョン放送用のチューナーやデコーダーなどで構成することもできる。また、端末装置２０は、ユーザが持ち運びできるポータブルデバイス（Ｐｏｒｔａｂａｌｅ  Ｄｅｖｉｃｅ）、例えば、携帯型ゲーム機、携帯電話、携帯型映像／音声プレーヤ、ＰＤＡ、ＰＨＳなどであってもよい。
【００４２】
この端末装置２０は、鍵配信サーバ１０から種々の情報を受信することができる。例えば、端末装置２０は、鍵配信サーバ１０から配信されたコンテンツを受信できる。このコンテンツ配信時には、鍵配信サーバ１０は、種々の電子データを暗号化して配信することが可能である。例えば、鍵配信サーバ１０は、コンテンツを暗号化するコンテンツ鍵を生成して配信することが可能である。このコンテンツ鍵は、例えば、擬似乱数生成器により算出された乱数（擬似乱数）、所定の文字列又は数列等により表現されていてもよい。そして、鍵配信サーバ１０は、このコンテンツ鍵を用いて、所定の暗号化ロジックによりコンテンツを暗号化することができる。そして、鍵配信サーバ１０は、このコンテンツ鍵又はコンテンツ鍵に対応する復号鍵を、任意の端末装置２０に対して配信することが可能である。一方で、端末装置２０は、鍵配信サーバ１０から受信した当該コンテンツ鍵又はコンテンツ鍵に対応する復号鍵を用いて、暗号化されたコンテンツを復号することができる。
【００４３】
なお、コンテンツ鍵を生成するために用いる擬似乱数生成器は、所定のシード値を入力することによって、長周期の擬似的な乱数列を出力することが可能な装置又はプログラムであり、一般に、線形合同法やメルセンヌ・ツイスター法等のロジックを用いて実現されるものである。もちろん、本実施形態に適用可能な擬似乱数生成器は、これに限定されるものではなく、他のロジックを用いて擬似乱数を発生させてもよいし、或いは、特殊な情報又は条件を含んだ擬似乱数列を生成することが可能な装置又はプログラムであってもよい。
【００４４】
さらに、本実施形態にかかる鍵配信サーバ１０は、コンテンツ自体のみならず、コンテンツ鍵をも暗号化して配信するようになっている。確かに、コンテンツ自体を暗号化して配信することにより、ある程度のセキュリティレベルを確保できる。しかし、多数のユーザの中から、コンテンツの利用権限を許諾するユーザ（以下「許諾ユーザ」という。）を追加又は削除する際にフレキシブルに対応するためには、コンテンツ鍵自体を暗号化して配信する方式が有利である。この場合、本実施形態では、まず、鍵配信サーバ１０は、コンテンツ鍵を暗号化・復号するための複数のセット鍵を生成する。後段において詳述するが、この複数のセット鍵は、それぞれ、多数のユーザの中から抽出された、複数の許諾ユーザの部分集合群に対応付けされている。つまり、鍵配信サーバ１０は、許諾ユーザの集合だけがコンテンツ鍵を復号できるように設定されたセット鍵により、コンテンツ鍵を暗号化し、全てのユーザの端末装置２０に対して暗号化されたコンテンツ鍵を配信するのである。かかる構成により、許諾ユーザの端末装置２０のみが、暗号化されたコンテンツ鍵を復号することが可能になり、このコンテンツ鍵を用いて暗号化コンテンツを復号し、当該コンテンツを視聴等することができるようになる。もし、許諾ユーザの集合が変更された場合には、鍵配信サーバ１０は、コンテンツ鍵の暗号化に用いるセット鍵を変更することにより対応可能である。上記の暗号鍵配信ロジックが成立するためには、セット鍵の生成や配信に係るアルゴリズムを実現できるように、鍵配信サーバ１０等を構成する必要がある。
【００４５】
以下では、第１に、本実施形態にかかる鍵配信サーバ１０及び端末装置２０のハードウェア構成例について説明する。第２に、本実施形態に係る暗号鍵配信ロジックに関連する基盤技術について説明する。第３に、本実施形態に係る鍵配信サーバ１０及び端末装置２０の構成について詳細に説明し、その構成及び効果に関する基盤技術との相違点を明確に述べる。そして、最後に、本実施形態に係る暗号鍵配信システムの応用例について説明する。
【００４６】
［鍵配信サーバ１０及び端末装置２０のハードウェア構成］
まず、図２を参照しながら、本実施形態にかかる鍵配信サーバ１０及び端末装置２０のハードウェア構成例について説明する。図２は、本実施形態にかかる鍵配信サーバ１０又は端末装置２０の機能を実現可能なハードウェア構成の一例である。
【００４７】
鍵配信サーバ１０及び端末装置２０は、例えば、コントローラ２０２と、演算ユニット２０４と、入出力インタフェース２０６と、セキュア記憶部２０８と、メイン記憶部２１０と、ネットワークインタフェース２１２と、メディアインタフェース２１６と、を備える。
【００４８】
（コントローラ２０２）
コントローラ２０２は、バスを介して他の構成要素に接続されており、主に、メイン記憶部２１０に格納されたプログラム及びデータに基づいて、装置内の各部を制御する役割を担う。なお、コントローラ２０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算処理装置により構成されていてもよい。
【００４９】
（演算ユニット２０４（鍵配信サーバ１０））
鍵配信サーバ１０が備える演算ユニット２０４は、例えば、コンテンツの暗号化、コンテンツ鍵の暗号化、セット鍵の生成、及びセット鍵を生成するために用いる中間鍵の導出を実行することができる。従って、この演算ユニット２０４は、所定のデータ（シード値等）に基づいて擬似乱数を発生させる擬似乱数生成器として機能し得ると同時に、所定のアルゴリズムに基づいてコンテンツ又はコンテンツ鍵を暗号化することが可能である。なお、上記所定のアルゴリズムは、演算ユニット２０４が判読可能なプログラムとしてメイン記憶部２１０に格納されていてもよい。また、上記所定の情報は、メイン記憶部２１０又はセキュア記憶部２０８に格納されていてもよい。なお、演算ユニット２０４は、上記の各種演算処理を実行した出力結果をメイン記憶部２１０又はセキュア記憶部２０８に記録することが可能である。また、この演算ユニット２０４は、例えば、ＣＰＵ等の演算処理装置により構成されていてもよく、上記のコントローラ２０２と一体に構成されてもよい。
【００５０】
（演算ユニット２０４（端末装置２０））
一方、端末装置２０が備える演算ユニット２０４は、例えば、コンテンツの復号、コンテンツ鍵の復号、セット鍵の生成、及びセット鍵を生成するために用いる中間鍵の生成を実行することができる。従って、この演算ユニット２０４は、所定のデータ（シード値等）に基づいて擬似乱数を発生させる擬似乱数生成器として機能し得ると同時に、所定のアルゴリズムに基づいてコンテンツ又はコンテンツ鍵を復号することが可能である。なお、所定のアルゴリズムは、演算ユニット２０４が判読可能なプログラムとしてメイン記憶部２１０に格納されていてもよい。また、所定の情報は、メイン記憶部２１０又はセキュア記憶部２０８に格納されていてもよい。なお、演算ユニット２０４は、上記の各種演算処理を実行した出力結果をメイン記憶部２１０又はセキュア記憶部２０８に記録することが可能である。また、この演算ユニット２０４は、例えば、ＣＰＵ等の演算処理装置により構成されていてもよく、上記のコントローラ２０２と一体に構成されていてもよい。
【００５１】
（入出力インタフェース２０６）
入出力インタフェース２０６は、主に、ユーザが情報を入力するための入力デバイスと、演算結果又はコンテンツの中身を出力する出力デバイスと、に接続されている。例えば、入力デバイスは、キーボード、マウス、トラックボール、タッチペン、キーパッド、又はタッチパネル等であってもよく、入出力インタフェース２０６に対して、有線又は無線により接続されていてもよい。場合によっては、入力デバイスは、有線又は無線により接続された携帯電話やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｒａｌ  Ａｓｓｉｓｔａｎｔ）等の携帯型電子機器であってもよい。一方、出力デバイスは、例えば、ディスプレイ等の表示装置、又はスピーカ等の音声出力デバイス等であってもよく、入出力インタフェース２０６に対して、有線又は無線により接続されていてもよい。なお、上記入出力デバイスは、鍵配信サーバ１０又は端末装置２０に内蔵或いは一体化されていてもよい。
【００５２】
なお、入出力インタフェース２０６は、バスを介して他の構成要素に接続されており、入出力インタフェース２０６を介して入力された情報をメイン記憶部２１０等に伝達することが可能である。逆に、入出力インタフェース２０６は、メイン記憶部２１０等に格納された情報、ネットワークインタフェース２１２等を介して入力された情報、又は演算ユニット２０４がこれらの情報を演算して得られた結果等を出力デバイスに出力することができる。
【００５３】
（セキュア記憶部２０８）
セキュア記憶部２０８は、主に、コンテンツ鍵、セット鍵、及び中間鍵等の秘匿が必要な情報を安全に格納する。セキュア記憶部２０８は、例えば、ハードディスク等の磁気記憶装置、光ディスク等の光記憶装置、光磁気記憶装置、又は半導体記憶装置等により構成されていてもよい。また、セキュア記憶部２０８は、例えば、耐タンパ性を有する記憶装置により構成されていてもよい。
【００５４】
（メイン記憶部２１０）
メイン記憶部２１０は、例えば、他の構成要素を制御するための制御プログラム、コンテンツ又はコンテンツ鍵等を暗号化するための暗号化プログラム、暗号化されたコンテンツ又はコンテンツ鍵等を復号するための復号プログラム、又は、セット鍵又は中間鍵を生成するための鍵生成プログラム等が格納されていてもよい。また、メイン記憶部２１０は、演算ユニット２０４により出力された計算結果を一時的又は永続的に格納したり、入出力インタフェース２０６、ネットワークインタフェース２１２、又はメディアインタフェース２１６等から入力された情報を格納してもよい。なお、メイン記憶部２１０は、例えば、ハードディスク等の磁気記憶装置、光ディスク等の光記憶装置、光磁気記憶装置、又は半導体記憶装置等により構成されていてもよい。また、メイン記憶部２１０は、セキュア記憶部２０８と一体に構成されていてもよい。
【００５５】
（ネットワークインタフェース２１２）
ネットワークインタフェース２１２は、例えば、ネットワーク５上の他の通信装置等に接続されており、例えば、暗号化されたコンテンツ又はコンテンツ鍵、セット鍵、中間鍵等の情報、暗号化に関するパラメータ情報、及び許諾ユーザの集合に関する情報を送受信するためのインタフェース手段である。ネットワークインタフェース２１２は、バスを介して他の構成要素に接続されており、ネットワーク５上の外部装置から受信した情報を他の構成要素に伝達し、又は他の構成要素が有する情報をネットワーク５上の外部装置に送信することが可能である。
【００５６】
（メディアインタフェース２１６）
メディアインタフェース２１６は、情報メディア２１８を着脱して情報を読み書きするためのインタフェースであり、バスを介して他の構成要素に接続されている。このメディアインタフェース２１６は、例えば、装着された情報メディア２１８から情報を読み出して他の構成要素に伝達し、又は他の構成要素から供給された情報を情報メディア２１８に書き込むことが可能である。情報メディア２１８は、例えば、光ディスク、磁気ディスク、半導体メモリ等のポータブル記憶媒体（着脱可能な記憶媒体）であってもいし、又はネットワーク５を介せずに比較的近距離で有線／無線接続された情報端末の記憶媒体等であってもよい。
【００５７】
以上、本実施形態にかかる鍵配信サーバ１０及び端末装置２０の機能を実現可能なハードウェア構成の一例を示した。上記の各構成要素は、汎用的なハードウェアを用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。また、上記のハードウェア構成は、あくまでも一例であり、これに限定されるものでないことは言うまでもない。例えば、コントローラ２０２と演算ユニット２０４とを同一の演算装置により構成してもよいし、セキュア記憶部２０８とメイン記憶部２１０とを同一の記憶装置により構成してもよい。また、利用形態によっては、メディアインタフェース２１６、又は入出力インタフェース２０６等を省略する構成も可能である。以下、上記のようなハードウェア構成を有する鍵配信サーバ１０及び端末装置２０により実現される暗号鍵配信方式について詳述する。
【００５８】
［基盤技術に係る暗号鍵配信方式］
まず、本実施形態にかかる暗号鍵配信方式について詳細なる説明をするに先立ち、本実施形態を実現する上で基盤を成す技術的事項について述べる。なお、本実施形態は、以下に記載する基盤技術に改良を加えることにより、より顕著な効果を得ることができるように構成されたものである。従って、その改良に係る技術こそが本実施形態の特徴を成す部分である。つまり、本実施形態は、ここで述べる技術的事項の基礎概念を踏襲するが、その本質はむしろ改良部分に集約されており、その構成が明確に相違すると共に、その効果において基盤技術とは一線を画するものであることに注意されたい。
【００５９】
以下で説明する基盤技術に係る暗号鍵配信方式のことを基盤方式と呼ぶことにする。この基盤方式は、コンテンツが配信されるユーザの端末装置の集合を、複数の部分集合に分け、各部分集合に割り当てられたセット鍵によってコンテンツ鍵を暗号化して配信する方式である。この基盤方式は、暗号鍵配信に伴う通信量、各ユーザが保持すべき復号鍵の数、又は各ユーザが復号鍵を生成するための計算量等を削減する為に、どのような部分集合を選択するか、どのようにセット鍵を生成するか、どのようにセット鍵を配信するか、という課題に対して一つの解決手段を提供している。そこで、図３〜図７を参照しながら、この基盤方式について説明する。
【００６０】
（木構造の設定）
まず、基盤方式では、コンテンツ配信の対象となる端末装置（ユーザ）の集合を複数の部分集合に分けて考える。そこで、図３を参照しながら、基盤方式に係る部分集合の分け方について説明する。もちろん、部分集合の分け方は一通りではないが、基盤方式では、２分木構造を用いた部分集合の分け方を採用している。以下で詳細に説明するが、概略的に説明すると、基盤方式は、２分木構造を構成する各結節点（ノード）に対し、ノード間の位置関係を考慮して所定の部分集合を割り当てることにより、所定の組合せを有するユーザの部分集合を網羅的に選択しているのである。この選択方法の妙は、図３に示した２分木構造の具体例により、より明確に理解されるものと思われる。そこで、図３を参照しながら、２分木構造の構築方法について述べる。
【００６１】
まず、以下の説明に用いる集合を定義する。
・全ての端末装置（ユーザ）の集合Ｎ＝｛１，２，・・・，ｎ｝（ｎは２のべき乗）
自然数ｉ及びｊ（ｉ≦ｊ）について、
・［ｉ，ｊ］＝｛ｉ，ｉ＋１，ｉ＋２，・・・，ｊ｝
・（ｉ→ｉ）＝（ｉ←ｉ）＝｛｛ｉ｝｝
・（ｉ→ｊ）＝｛｛ｉ｝，｛ｉ，ｉ＋１｝，・・・，｛ｉ，ｉ＋１，・・・，ｊ｝｝
＝｛［ｉ，ｉ］，［ｉ，ｉ＋１］，［ｉ，ｉ＋２］，・・・，［ｉ，ｊ］｝
・（ｉ←ｊ）＝｛｛ｊ｝，｛ｊ，ｊ−１｝，・・・，｛ｊ，ｊ−１，・・・，ｉ｝｝
＝｛［ｊ，ｊ］，［ｊ−１，ｊ］，［ｊ−２，ｊ］，・・・，［ｉ，ｊ］｝
【００６２】
以下では、２分木構造（ＢＴ；Ｂｉｎａｒｙ  Ｔｒｅｅ）上の末端に位置するノードを葉ノード、頂点に位置するノードを根ノード、根ノードと葉ノードとの間に位置する各ノードを中間ノードと呼ぶことにする。また、葉ノードが各端末装置に対応する。また、以下では、説明の便宜上、端末装置とユーザとが１：１対応していると仮定し、葉ノードに対応付けられる「端末装置」を「ユーザ」と表記して説明する場合もある。なお、図３は、ＢＴの葉ノード数ｎ６４の例である。
【００６３】
まず、葉ノードの数がｎ（＝６４）となるようにＢＴを作成する。そして、各葉ノードに対し、左端から右方向に向かって番号１，２，・・・，ｎを割り当てる。
【００６４】
次に、ある中間ノードｖに割り当てる部分集合を規定するための指標ｌｖ、ｒｖを定義する。ある中間ノードｖの下位に位置する葉ノードのうち、最左にある葉ノードの番号をｌｖ、最右にある葉ノードの番号をｒｖと定義する。但し、ｖは、各中間ノードに割り当てられた連続する番号であると考えてもよい。つまり、中間ノードｖは、ｖを指標とするＢＴ上の中間ノードを示すものである。
【００６５】
次に、ＢＴ上の中間ノードを２つの集合に分類して定義する。ＢＴ上の中間ノードのうち、親ノードの左側に位置する中間ノードの集合をＢＴＬと定義し、親ノードの右側に位置する中間ノードの集合をＢＴＲと定義する。なお、ここで言う親子関係とは、ＢＴ上で接続されたノード間の上下関係を意味し、親ノードが上位に位置して子ノードが下位に位置する関係を示している。
【００６６】
次に、ＢＴ上の根ノードに、各葉ノードに対応付けられたユーザ集合の部分集合を対応付ける。まず、根ノードに対して集合（１→ｎ）と集合（２←ｎ）とを対応付ける。根ノードは、その下位に全ての葉ノードが連結されているため、これらの葉ノードを網羅的又は選択的に包含する集合により表現されるのである。具体的には、図３の根ノードには、集合（１→６４）と集合（２←６４）とが対応付けられている。そこで、集合（１→６４）について考える。集合（１→６４）は、その要素として、部分集合［１，１］，［１，２］，・・・，［１，６４］を含んでいる。例えば、全てのユーザ（葉ノード）を表現するには、部分集合［１，６４］を用いればよく、これは集合（１→６４）の要素として含まれる。また、番号１６のユーザを除く全てのユーザを表現するには、部分集合［１，１５］及び［１７，６４］を用いればよく、それぞれ、集合（１→６４）及び集合（２←６４）の要素として含まれる。このように、根ノードの下位に位置する葉ノード（ユーザ）の組合せを、対応付けられた集合の部分集合により表現できるのである。
【００６７】
次に、ＢＴ上の中間ノードにユーザ集合の部分集合を対応付ける。まず、上記の集合ＢＴＬに属する中間ノードｖに対して、集合（ｌｖ＋１←ｒｖ）を対応付ける。一方、上記の集合ＢＴＲに属する中間ノードｖに対して、集合（ｌｖ→ｒｖ−１）を対応付ける。もちろん、ＢＴ上の全ての中間ノードｖに対して、これらの集合を対応付ける。図３を参照すると、各中間ノードの脇にこれらの集合が記載されていることが分かる。例えば、集合（２←４）が対応付けられた中間ノードを見ると、この中間ノードの下位には、集合（２←２）と集合（３→３）とが対応付けられた２つの中間ノードがあり、さらに、番号１〜４までの葉ノードが連結されている。そこで、これらの葉ノードから番号３を除く葉ノードの組合せを表現しようとすれば、｛［１，１］［２，２］，［４，４］｝又は｛［１，２］，［４，４］｝という部分集合の組により表現することができる。部分集合［１，１］及び［１，２］は、根ノードに割り当てられた集合（１→６４）の要素であるが、部分集合［２，２］及び［４，４］は、それぞれ、集合（２←２）及び（２←４）の要素である。
【００６８】
このように、基盤方式では、２分木構造ＢＴを用いてユーザ集合の部分集合を定義している。この方法によって様々な組合せを有するユーザの部分集合を表現することが可能になる。なお、これらの部分集合により構築された全体集合のことをセットシステムΦと呼び、下式（１）のように定義する。つまり、下式（１）は、上記の方法で構築した２分木構造を数学的に表現したものである。
【００６９】
【数１】
2008131076.tif 000003
【００７０】
以上、部分集合を規定する２分木構造の設定方法について述べた。基盤方式の基本コンセプトは、これらの各部分集合に対して、コンテンツ鍵を暗号化するためのセット鍵を設定し、各セット鍵によりコンテンツ鍵を暗号化して全ユーザに配信することにある。上記のように部分集合を定義したことにより、少なくともユーザの組合せを分類する一手段が規定された。以下では、これらの部分集合を利用してセット鍵を生成するアルゴリズムについて説明する。
【００７１】
（有向グラフの生成）
ここでは、図４を参照しながら、セット鍵を生成するアルゴリズムを表現した有向グラフの生成方法について説明する。しかし、これに先立って、コンテンツ鍵を暗号化するセット鍵と、セット鍵を生成するための中間鍵と、の関係について述べる。
【００７２】
先に簡単に触れたが、基盤方式では、セット鍵を生成するために特殊な擬似乱数生成器ＰＲＳＧ（Ｐｓｅｕｄｏ−Ｒａｎｄｏｍ  Ｓｅｑｕｅｎｃｅ  Ｇｅｎｅｒａｔｏｒ）を用いる。このＰＲＳＧは、ある部分集合Ｓ０に対応する中間鍵ｔ（Ｓ０）が入力されると、部分集合Ｓ０に対応するセット鍵ｋ（Ｓ０）と、部分集合Ｓ０に関連する部分集合Ｓ１、Ｓ２、・・・、Ｓｋに対応する中間鍵ｔ（Ｓ１）、ｔ（Ｓ２）、・・・、ｔ（Ｓｋ）と、を出力する。もちろん、集合Ｓ０及びＳ１、・・・、Ｓｋは、上記のセットシステムΦを構成する部分集合のいずれかである。つまり、このＰＲＳＧこそが鍵生成装置なのである。基盤方式の特徴は、ＰＲＳＧの入力と出力との関係を規定するロジックにある。そこで、上記の集合Ｓ０と集合Ｓ１、Ｓ２、・・・、Ｓｋとの関係を規定する有向グラフについて説明する。
【００７３】
ここで、以下の説明に用いる記号を定義する。
・部分集合Ｓｉに対応する中間鍵  ：  ｔ（Ｓｉ）
・部分集合Ｓｉに対応するセット鍵：  ｋ（Ｓｉ）
・コンテンツ鍵                  ：  ｍｅｋ
・擬似乱数生成器                ：  ＰＲＳＧ
（但し、ｔ（Ｓ０）を入力することをＰＲＳＧ（ｔ（Ｓ０））と表記する。
一方、ＰＲＳＧの出力を
ｔ（Ｓ１）｜｜・・・｜｜ｔ（Ｓｋ）｜｜ｋ（Ｓ０）←ＰＲＳＧ（ｔ（Ｓ０））
のように表記する。）
・有向グラフ                    ：  Ｈ
（但し、集合（ｉ←ｊ）に対応する有向グラフをＨ（ｉ←ｊ）と表記する。）
・有向枝                        ：  Ｅ
・有向パス                      ：  Ｖ
【００７４】
まず、パラメータｋ（ｋは自然数）を決める。ここでは簡単のために、ｋ｜ｌｏｇ（ｎ）（以下、ｌｏｇの底は２）とする。このパラメータｋは、結果的に端末装置２０が保持すべき中間鍵の個数、及びセット鍵を生成するのに必要な計算量に関係するため、状況に応じて、適宜、設定されるべきパラメータである。図４では、例えば、ｋ＝６が設定されている。
【００７５】
次に、具体的な有向グラフの描き方について述べる。まず、一例として、ＢＴＲに属する中間ノードｖに対応した有向グラフＨ（ｌｖ→ｒｖ−１）について説明する。
【００７６】
（Ｓ１）有向グラフＨ（ｌｖ→ｒｖ−１）を構成するための水平座標軸を設定する。この座標軸には、集合（ｌｖ→ｒｖ−１）の要素を成す部分集合Ｓｉが座標点として割り当てられる。これらの座標点を成す部分集合Ｓｉは、左から右向かって包含関係が大きくなるように配列される。例えば、有向グラフＨ（５→７）＝Ｈ（｛［５，５］，［５，６］，［５，７］｝）を例に挙げると、座標軸は、左から順に部分集合［５，５］，［５，６］，［５，７］が割り当てられた３つの座標点を有する。
【００７７】
なお、第１水平座標軸上の右向きの有向グラフＨにおいてその始点が位置する縦線がｘである場合、この有効グラフＨと縦線ｙとの交点は［ｘ，ｙ］を表し、また、第２水平座標軸上の左向きの有向グラフＨにおいてその始点が位置する縦線がｚである場合、この有効グラフＨと縦線ｙとの交点は［ｙ，ｚ］を表す。
【００７８】
その後、座標軸の最左に位置する座標点の左側に始点となる仮座標点を設定して始点とし、座標軸の最右に位置する座標点の右側に終点となる仮座標点を設定して、終点とする。このように設定された座標軸は、左端の仮座標点（始点）から右端の仮座標点（終点）までの長さＬｖが、Ｌｖ＝ｒｖ−ｌｖ＋１となる。
【００７９】
（Ｓ２）有向グラフＨ（ｌｖ→ｒｖ−１）を構成する有向枝を設定する。
（Ｓ２−１）ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たす整数ｘを算出する。この整数ｘは、１≦ｘ≦ｋを満たす。
（Ｓ２−２）カウンタｉを０からｘ−１まで動かしながら、次の操作を繰り返し行う。水平座標軸の左端にある始点から開始し、その座標点からｎｉ／ｋ（ｉ＝０〜ｘ−１）だけ離れた座標点へ延びる右向きの有向枝の設定（その座標点からｎｉ／ｋだけ離れた座標点へのジャンプ）を、有向枝の終端が水平座標軸の右端にある終点に到達するか、或いは、次に設定される有向枝の終端が当該終点を超えるまで、繰り返し行う。
【００８０】
（Ｓ３）仮座標点を始点又は終点とする有向枝を全て削除する。
【００８１】
（Ｓ４）ある座標点に到達する有向枝が複数ある場合には、最長の有向枝のみを残し、この最長の有向枝以外の有向枝を全て削除する。
【００８２】
以上のステップ（Ｓ１）〜（Ｓ４）を実行すると、有向グラフＨ（ｌｖ→ｒｖ−１）が完成する。例えば、図４の上から３段目の右側に位置する有向グラフＨ（３３→６３）を一例として参照すると、アーチ状の曲線の有効枝と、アーチ状の曲線の一端に接続され、水平方向に延伸した直線と、により構成される線の組が有向グラフＨ（３３→６３）の実体である。また、有向グラフＨ（３３→６３）を構成する各曲線及び直線が有向枝である。そして、有向枝の端部と縦線との交点が座標点である。図４には水平座標軸を明示していないが、縦線と有向枝の端部との交点の組により水平座標軸が構成されている。さらに、有向グラフＨ（３３→６３）の上部には、白抜き矢印が描画されているが、これが有向枝の方向を示すものである。つまり、有向グラフＨ（３３→６３）を構成する有向枝は全て右向きであることを示している。
【００８３】
上記有向グラフＨ（ｌｖ→ｒｖ−１）と同様にして、ＢＴＬに属する中間ノードｖに対応付けられた有向グラフＨ（ｌｖ＋１←ｒｖ）、及び根ノードに対応付けられた有向グラフＨ（１→ｎ）及びＨ（２←ｎ）を設定する。但し、有向グラフＨ（ｌｖ＋１←ｒｖ）及びＨ（２←ｎ）の座標軸を設定する際には、水平座標軸上に右から左に向かって包含関係が大きくなるように部分集合Ｓｉを配列し、有向枝の向きを左向きにする。また、有向グラフＨ（１→ｎ）は、有向グラフＨ（１→ｎ−１）に有向枝Ｅ（［１，ｎ−１］，［１，ｎ］）を付加して生成される。一方、有向グラフＨ（２←ｎ）は、有向グラフＨ（ｌｖ＋１←ｒｖ）と同一の方法により設定される。
【００８４】
ここで、図４の有向グラフＨ（１→６４）を例に挙げて説明を加える。まず、有向グラフＨ（１→６４）の水平座標軸は、最左にある座標点（縦線１との交点）が［１，１］＝｛１｝、その右隣の座標点（縦線２との交点）が［１，２］＝｛１，２｝、その右隣の座標点が［１，３］＝｛１，２，３｝となる。また、各有向グラフの直上又は直下に描いた矢印は、その有向グラフＨを構成する全ての有向枝が示す向きを表している。例えば、有向グラフＨ（１→６４）には、座標点［１，１］から［１，２］への有向枝があり、座標点［１，２］から［１，３］と［１，４］とへ伸びる２本の有向枝がある。また、図４の最下段に描かれた黒丸は、左からそれぞれ、有向グラフＨ（２→２）、Ｈ（３→３）、・・・、Ｈ（６３→６３）を表している。
【００８５】
以上、有向グラフＨの設定方法について説明した。上記の方法により、ＢＴ上の各中間ノード及び根ノードにそれぞれ対応する有向グラフＨを描画したものが図４である。この例は、ｎ＝６４、ｋ＝６の場合である。以下では、この有向グラフＨを用いてセット鍵を生成するロジックについて述べる。
【００８６】
（セット鍵の生成）
既に述べたように、基盤方式では、上記のセットシステムΦを構成する各部分集合Ｓｉに割り当てられたセット鍵ｋ（Ｓｉ）を用いて、コンテンツ鍵ｍｅｋを暗号化して配信する。つまり、上記の有向グラフＨの各座標点は、それぞれ、１人以上のユーザから構成される部分集合Ｓｉに対応しており、セット鍵ｋ（Ｓｉ）が割り当てられる。また、中間鍵ｔ（Ｓｉ）についても、上記の各部分集合Ｓｉに割り当てられ、セット鍵ｋ（Ｓｉ）を生成するために利用される。
【００８７】
ところで、上述した有効グラフＨ生成時のステップ（Ｓ２−２）の処理における繰り返し回数がｘ回であり、１≦ｘ≦ｋであるため、有向グラフＨの各座標点からは、最大でｋ本の有向枝が出ている。ある座標点（部分集合Ｓ０）から出ている１又は２以上の有向枝の到達先の座標点の部分集合を、上記ある座標点に近い順（有向枝が短い順）に、Ｓ１，Ｓ２，・・・，Ｓｋとする。ただし、座標点（部分集合Ｓ０）から出ている有向枝の数がｑ本（ｑ＜ｋ）である場合には、Ｓｑ＋１，Ｓｑ＋２，・・・，Ｓｋはダミーとし、実際には使用しない。
【００８８】
基盤方式では、セット鍵ｋ（Ｓｉ）を生成するために、λビットの入力に対して（ｋ＋１）λビットの出力を出す上述のＰＲＳＧを利用する。このＰＲＳＧは、ある座標点（部分集合Ｓ０）に対応する中間鍵ｔ（Ｓ０）を入力すると、当該座標点を始点とする有向枝の終点の各座標点（部分集合Ｓ１、Ｓ２、・・・、Ｓｋ）に対応する中間鍵ｔ（Ｓ１）、ｔ（Ｓ２）、・・・、ｔ（Ｓｋ）と、当該部分集合Ｓ０のセット鍵ｋ（Ｓ０）と、を出力する。つまり、ｔ（Ｓ１）｜｜・・・｜｜ｔ（Ｓｋ）｜｜ｋ（Ｓ０）←ＰＲＳＧ（ｔ（Ｓ０））である。このＰＲＳＧの出力を左からλビットごとに区切ることで、中間鍵ｔ（Ｓ１）、ｔ（Ｓ２）、・・・、ｔ（Ｓｋ）と、セット鍵ｋ（Ｓ０）とが得られる。
【００８９】
例えば、図４の有向グラフＨ（１→６４）を参照し、座標点（部分集合Ｓ０）＝［１，８］（左端から８番目の座標点）に注目すると、この座標点Ｓ０からは４本の有向枝が出ており、その終点は、それぞれ、Ｓ１＝［１，９］，Ｓ２＝［１，１０］，Ｓ３＝［１，１２］，Ｓ４＝［１，１６］である。このため、中間鍵ｔ（Ｓ０）をＰＲＳＧに入力すると、ｋ（Ｓ０）、ｔ（Ｓ１）、ｔ（Ｓ２）、ｔ（Ｓ３）、ｔ（Ｓ４）を得ることができる。さらに、得られたｔ（Ｓ４）をＰＲＳＧに入力すると、ｋ（Ｓ４）と、Ｓ１１＝［１，１７］，Ｓ１２＝［１，１８］，Ｓ１３＝［１，２０］，Ｓ１４＝［１，２４］，Ｓ１５＝［１，３２］に対応したｔ（Ｓ１１）、ｔ（Ｓ１２）、ｔ（Ｓ１３）、ｔ（Ｓ１４）、ｔ（Ｓ１５）と、を得ることができる。このように、ＰＲＳＧを繰り返し用いることにより、複数のセット鍵ｋ（Ｓｉ）を算出することができる。
【００９０】
上記の例から容易に推察される通り、ある中間鍵は、ＰＲＳＧを反復して用いることにより、その中間鍵に対応する座標点から伸びた有向枝の鎖によって到達可能な座標点に対応する中間鍵とセット鍵とを導き出すことができるのである。従って、各ユーザは、自身が含まれる部分集合に対応する中間鍵を全て導出できる最低限の数の中間鍵を保持していればよいのである。一方、コンテンツ鍵を暗号化するためのセット鍵を生成する鍵配信サーバは、少なくとも各有向グラフＨの先頭座標点に対応する中間鍵のみを保持していれば、ＰＲＳＧによる演算を繰り返し行うことで、当該有向グラフの他の座標点に対応するセット鍵を導出することができる。
【００９１】
従って、鍵配信システムの管理者は、鍵配信システムのセットアップ時に、鍵配信サーバにおいて各有向グラフＨの先頭座標点（ルート）の中間鍵として、例えばλビットの乱数を設定する。ここで、有向グラフＨの先頭座標点（ルート）とは、その座標点から有向枝が出ているが、その座標点に到達することのない座標点である。例えば、図４の有向グラフＨ（１→６４）の先頭座標点は、水平座標軸の左端の［１，１］座標点である。
【００９２】
なお、中間鍵は、安全性を高める目的で使用している。安全性に格段の注意を払わなくてもよいが、セット鍵生成のための演算量を減らしたい場合には、中間鍵を使わず、あるセット鍵から別のセット鍵を直接計算するようにしてもよい。たとえば、上記の例では、部分集合Ｓ０のセット鍵ｋ（Ｓ０）をＰＲＳＧに入力した場合の出力を，ｋ（Ｓ１）、ｋ（Ｓ２）、ｋ（Ｓ３）、ｋ（Ｓ４）とし、それぞれの部分集合Ｓ１〜４のセット鍵としてもよい。
【００９３】
以上、セット鍵の生成方法について説明した。上記のセット鍵生成方法は、コンテンツ鍵の送信者側の鍵生成サーバで用いられるだけでなく、受信者側の端末装置でも用いられる。
【００９４】
（中間鍵の配信）
ここで、鍵配信サーバから、各ユーザの端末装置への中間鍵の配信について述べる。既に簡単に述べたが、各ユーザの端末装置に対しては、そのユーザの端末装置が含まれる全ての部分集合に対応するセット鍵を導出可能な複数の中間鍵を与えねばならない。もちろん、そのユーザの端末装置が含まれない部分集合に対応するセット鍵を導出可能な中間鍵を与えてはならないし、与える中間鍵の数は、メモリ量の効率化の観点から最小限であることが好ましい。
【００９５】
そこで、中間鍵の配信者は、ユーザｕの端末装置が所属する部分集合（以下、「ユーザｕが属する部分集合」や、「ユーザｕが含まれる部分集合」と表記する場合もある。）を要素に有する有向グラフＨを全て抽出する。そして、有向グラフＨの先頭座標点（ルート）に対応する部分集合にユーザｕが含まれる場合には、その先頭座標点に対応する中間鍵のみをユーザｕの端末装置に与える。また、有向グラフＨの先頭座標点以外の座標点に対応する部分集合のいずれかにユーザｕが属する場合には、ユーザｕが部分集合Ｓ０には含まれるが、その部分集合Ｓ０の親である部分集合ｐａｒｅｎｔ（Ｓ０）には含まれないような、部分集合Ｓ０を見つけ、この部分集合Ｓ０の中間鍵Ｓ０を、ユーザｕの端末装置に与える。換言すると、有向グラフＨにおいて、先頭座標点以外の座標点の中で、その座標点に対応する部分集合にユーザｕが含まれる座標点が複数存在する場合には、その中から、部分集合Ｓ０に対応する座標点に到達する有向枝の始点に対応した部分集合ｐａｒｅｎｔ（Ｓ０）にユーザｕを含まないような座標点Ｓ０を抽出し、その座標点Ｓ０の中間鍵ｔ（Ｓ０）を、ユーザｕの端末装置に与える。もし、そのような座標点Ｓ０が複数個存在する場合には、それぞれの中間鍵ｔ（Ｓ０）を与える。ここで、座標点の親子関係は、有向枝によって定められ、有向枝の始点座標点が終点座標点の親となり、有向枝の終点座標点が始点座標点の子となる。以下、ある座標点Ｓ０に到達する有向枝の始点座標点ｐａｒｅｎｔ（Ｓ０）を親座標点と呼ぶことにする。ある座標点Ｓ０が，有効グラフＨの始点である場合、親座標点は存在せず、有効グラフＨの始点ではない場合、親座標点がただ１つ存在する。１つの有効グラフＨについて、自分自身に対応する部分集合にユーザｕを含み、その親座標点に対応する部分集合にはユーザｕを含まない座標点は、複数存在する場合もある。
【００９６】
図４の例を参照しながら、上記の中間鍵の配信方法について具体的に述べる。
（例１）ユーザ１に対して配信される中間鍵について考える。まず、ユーザ１が属する部分集合を要素に持つ有向グラフＨを検索すると、有向グラフＨ（１→６４）のみであることが分かる。そして、ユーザ１は、有向グラフＨ（１→６４）の先頭座標点である部分集合［１，１］に属している。従って、ユーザ１には、中間鍵ｔ（［１，１］）のみが与えられる。
【００９７】
（例２）ユーザ３に対して配信される中間鍵について考える。まず、ユーザ３が属する部分集合を要素に持つ有向グラフＨを検索すると、有向グラフＨ（１→６４）、Ｈ（２←６４）、Ｈ（２←３２）、Ｈ（２←１６）、Ｈ（２←８）、Ｈ（２←４）、Ｈ（３→３）が該当する。そこで、有向グラフＨ（１→６４）について検討すると、ユーザ３は、先頭座標点の部分集合［１，１］には属しておらず、３番目の座標点以降の部分集合［１，３］，［１，４］，・・・，［１，６４］に属していることが分かる。これらの座標点のうち、親座標点にユーザ３を含まない座標点は、［１，３］，［１，４］のみである。つまり、ユーザ３を含む座標点［１，３］，［１，４］の親座標点ｐａｒｅｎｔ（［１，３］）およびｐａｒｅｎｔ（［１，４］）である座標点「１，２」には、ユーザ３は含まれない。従って、ユーザ３には、有向グラフＨ（１→６４）に対応する中間鍵として、ｔ（［１，３］）及びｔ（［１，４］）が与えられる。これと同様にして、他の有向グラフＨ（２←６４）、Ｈ（２←３２）、Ｈ（２←１６）、Ｈ（２←８）、Ｈ（２←４）、Ｈ（３→３）についても該当する中間鍵が選択され、ユーザ３に与えられる。その結果、ユーザ３には、合計８個の中間鍵が与えられる。
【００９８】
ここで、図５を参照しながら、中間鍵を各ユーザの端末装置に配布するまでの処理について簡単に整理する。図５は、システムセットアップ時の鍵配信サーバにおける中間鍵配信に関する処理フローを表すフローチャートである。
【００９９】
図５に示すように、まず、鍵配信システムの鍵配信サーバは、各種パラメータ等を設定する。例えば、ユーザ数ｎ、セット鍵及び中間鍵のビット数λ、所定のパラメータｋ、及びＰＲＳＧによる擬似乱数生成アルゴリズム等を決定し、全ユーザの端末装置に公開する（Ｓ１０２）。次に、鍵配信サーバは、ユーザの集合を所定の部分集合に分けて、その和集合により表現されるセットシステムΦ（上記式（１）参照。）を決定して公開する（Ｓ１０４）。そして、有向グラフＨと、有向グラフＨを構成する有向枝Ｔとを決定して公開する（Ｓ１０６）。さらに、セットシステムΦを構成する各部分集合に対応する中間鍵を決定する（Ｓ１０８）。その後、各ユーザの端末装置２０に対し、各ユーザが自身を含む部分集合に対応するセット鍵を導出できるように、必要な中間鍵を配布する（Ｓ１１０）。
【０１００】
以上、中間鍵の配信方法について説明した。この配信方法を用いると、各許諾ユーザの端末装置がセット鍵を生成するために必要な最低限の中間鍵が配信され、鍵配信サーバと端末装置と間の通信量、及び各ユーザの端末装置における中間鍵のメモリ量を節約することができる。
【０１０１】
（コンテンツ鍵の配信）
ここで、鍵配信サーバによる、暗号化されたコンテンツ鍵ｍｅｋの配信方法について説明する。まず、鍵配信サーバは、許諾ユーザの端末装置２０のみが生成可能なセット鍵を用いてコンテンツ鍵ｍｅｋを暗号化する。より具体的には、鍵配信サーバは、排除すべきユーザ（以下、排除ユーザ）の端末装置の集合Ｒを決定し、全ユーザの端末装置１〜ｎの集合Ｎから、排除ユーザの端末装置の集合Ｒ（以下「排除ユーザの集合（Ｒ）」）を除外した許諾ユーザの端末装置の集合Ｎ＼Ｒ（以下、「許諾ユーザの集合（Ｎ＼Ｒ）」）を決定する。そして、セットシステムΦを構成する部分集合の中から選択された部分集合Ｓｉ（ｉ＝１，２，・・・，ｍ）の和集合により、許諾ユーザの集合（Ｎ＼Ｒ）＝Ｓ１∪Ｓ２∪・・・∪Ｓｍを表現する。このとき、部分集合Ｓｉの組合せは多数存在するが、ｍが最小となるような部分集合Ｓｉを選択する。このように部分集合Ｓｉを選択した後、各部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）により、コンテンツ鍵ｍｅｋを暗号化する。つまり、コンテンツ鍵ｍｅｋは、セット鍵ｋ（Ｓ１）、ｋ（Ｓ２）、・・・、ｋ（Ｓｍ）によって暗号化され、ｍ個の暗号化されたコンテンツ鍵ｍｅｋとなる。そして、ｍ個の暗号化されたコンテンツ鍵ｍｅｋが全ユーザの端末装置１〜ｎに対して配信される。このとき、許諾ユーザの集合（Ｎ＼Ｒ）を表す情報、又はｍ個の部分集合Ｓｉを表す情報も全ユーザの端末装置１〜ｎに対して配信される。
【０１０２】
ここで、図６を参照しながら、暗号化されたコンテンツ鍵ｍｅｋの配信に係る処理フローについて簡単に整理する。図６は、コンテンツ鍵の配信に係る処理フローを表すフローチャートである。
【０１０３】
図６に示すように、まず、鍵配信サーバは、排除ユーザの集合（Ｒ）を決定し、許諾ユーザの集合（Ｎ＼Ｒ）を求める（Ｓ１１２）。次に、セットシステムΦを構成する部分集合から、和集合がＮ＼Ｒとなるｍ個の部分集合Ｓｉ（ｉ＝１，２，・・・，ｍ）を、ｍが最小となるように選択する（Ｓ１１４）。そして、選択された各部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を用いてコンテンツ鍵ｍｅｋをそれぞれ暗号化する（Ｓ１１６）。さらに、許諾ユーザの集合（Ｎ＼Ｒ）又は各部分集合Ｓｉを表す情報と、ｍ個の暗号化されたコンテンツ鍵ｍｅｋと、を全ユーザの端末装置１〜ｎに対して配信する（Ｓ１１８）。
【０１０４】
以上、コンテンツ鍵ｍｅｋの暗号化方法、及び配信方法について説明した。この暗号化方法を用いると、セット鍵数が必要最小限となるように効率的に部分集合Ｓｉを選択する。このため、必要最小限のセット鍵でコンテンツ鍵ｍｅｋを暗号化するので、暗号化に要する計算量を節減できると同時に、配信すべき暗号化されたコンテンツ鍵ｍｅｋの数を低減させ、通信量を削減することが可能になる。
【０１０５】
（コンテンツ鍵の復号）
次に、各ユーザの端末装置における、暗号化されたコンテンツ鍵の復号処理について説明する。この復号処理は、端末装置が、上記鍵配信サーバから受信した、許諾ユーザの集合Ｎ＼Ｒ又はｍ個の部分集合Ｓｉを表す情報と、ｍ個の暗号文とに基づいて、コンテンツ鍵ｍｅｋを得る処理である。
【０１０６】
端末装置は、上記鍵配信サーバから、暗号化されたコンテンツ鍵と、許諾ユーザの集合Ｎ＼Ｒを表す情報、又はｍ個の部分集合Ｓｉを表す情報と、を受信する。さらに、端末装置は、当該情報を解析して、自身がｍ個の部分集合Ｓｉのいずれかに所属しているか否かを判断する。もし、自身がいずれの部分集合にも所属していない場合には、自身は排除ユーザの端末装置であることになるので、復号処理を終了する。一方、自身が所属する部分集合Ｓｉを発見したら、端末装置は、上記のＰＲＳＧを用いて、その部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を導出する。ＰＲＳＧの構成については既に述べた通りである。
【０１０７】
このとき、端末装置は、事前のシステムセットアップ時に鍵配信サーバから上記部分集合Ｓｉに対応する中間鍵ｔ（Ｓｉ）を与えられ、予め保持していれば、この中間鍵ｔ（Ｓｉ）をＰＲＳＧに入力すれば、上記部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を導出することが可能である。一方、上記中間鍵ｔ（Ｓｉ）を保持していない場合には、端末装置は、保持している中間鍵をＰＲＳＧに繰り返し入力することにより所望のセット鍵ｋ（Ｓｉ）を導出することができる。さらに、端末装置は、このようにして導出したセット鍵ｋ（Ｓｉ）を用いて、暗号化されたコンテンツ鍵ｍｅｋを復号する。
【０１０８】
ここで、端末装置における上記セット鍵ｋ（Ｓｉ）の導出について図４の例で具体的に説明する。ユーザ３の端末装置において、自身が属する部分集合として「１，８」が選択されたと仮定する。ユーザ３の端末装置は、上述のように、部分集合［１，４］の中間鍵を保持している。図４の有向グラフＨ（１→６４）を参照すると、［１，４］の座標点から、［１，８］の座標点に延びる有向枝が設定されており、この有向枝は、［１，４］の座標点を始点とする有向枝のうち３番目に長さ（ジャンプの距離）が短いものである。このため、［１，４］の中間鍵ｔ（［１，４］）をＰＲＳＧに入力した際の出力のうち、先頭から第３番目のλビットの部分が、部分集合［１，８］の中間鍵ｔ（［１，８］）となっている。端末装置は、ＰＲＳＧの出力から、この中間鍵ｔ（［１，８］）を抽出し、再度ＰＲＳＧに入力した際の最終部分のλビットを抽出することにより、所望のセット鍵ｋ（［１，８］）を得ることができる。
【０１０９】
同様に、ユーザ１の端末装置において、自身が属する部分集合として「１，８」が選択されたと仮定する。ユーザ１の端末装置は、部分集合［１，１］の中間鍵を保持している。この場合、端末装置２０は、［１，１］の中間鍵ｔ（［１，１］）をＰＲＳＧに入力した際の出力のうち、先頭から第１番目のλビットの部分（中間鍵ｔ（［１，２］）に相当する。）を抽出し、次いで、この中間鍵ｔ（［１，２］）をＰＲＳＧに入力した際の出力のうち、先頭から第２番目のλビットの部分（中間鍵ｔ（［１，４］）に相当する。）を抽出し、さらに、この中間鍵ｔ（［１，４］）をＰＲＳＧに入力した際の出力のうち、先頭から第３番目のλビットの部分（中間鍵ｔ（［１，８］）に相当する。）を抽出し、最後に、この中間鍵ｔ（［１，８］）をＰＲＳＧに入力した際の出力のうち、最終部分（セット鍵ｋ（［１，８］）に相当する。）を抽出することで、所望のセット鍵ｋ（［１，８］）を得ることができる。
【０１１０】
ここで、図７を参照しながら、各ユーザの端末装置における、暗号化されたコンテンツ鍵ｍｅｋを復号する処理フローについて整理する。図７は、各ユーザの端末装置における、コンテンツ鍵の復号に関する鍵生成処理フローを示したフローチャートである。
【０１１１】
図７に示すように、まず、各ユーザの端末装置は、鍵配信サーバから、ｍ個の暗号化されたコンテンツ鍵ｍｅｋと、許諾ユーザの集合Ｎ＼Ｒを表す情報、又はｍ個の部分集合Ｓｉ（ｉ＝１，２，・・・，ｍ）を表す情報と、を受信する（Ｓ１２０）。次いで、端末装置は、当該情報に基づき、自身が所属する部分集合Ｓｉを検索し（Ｓ１２２）、自身がｍ個の部分集合Ｓｉのいずれかに所属しているか否かを判断する（ステップＳ１２４）。
【０１１２】
この結果、自身が所属する部分集合Ｓｉを発見したら、上記のＰＲＳＧを用いて、その部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を導出する（Ｓ１２６）。ＰＲＳＧの構成については既に述べた通りである。もし、その部分集合Ｓｉに対応する中間鍵ｔ（Ｓｉ）を、セットアップ時に鍵配信サーバから与えられて予め保持していれば、一度ＰＲＳＧを利用することによりセット鍵ｋ（Ｓｉ）を導出することが可能であるし、一方、当該中間鍵ｔ（Ｓｉ）を保持していない場合には、ＰＲＳＧを繰返し利用することにより所望のセット鍵ｋ（Ｓｉ）を導出することができる。次いで、端末装置は、このようにして導出したセット鍵ｋ（Ｓｉ）を用いて、暗号化されたコンテンツ鍵ｍｅｋを復号する（Ｓ１２８）。
【０１１３】
一方、上記Ｓ１２４で、自身がいずれの部分集合Ｓｉにも所属していないと判断した場合には、端末装置は、自身が、コンテンツを利用可能な端末装置から排除されている旨（排除ユーザである旨）を表示出力して（Ｓ１３０）、コンテンツ鍵の復号処理を終了する。
【０１１４】
以上、端末装置におけるコンテンツ鍵の復号方法について説明した。上記の復号方式は、有向グラフＨの情報に基づいて中間鍵及びセット鍵を生成するＰＲＳＧを用いて実行される。従って、各ユーザの端末装置側にも、有向グラフの情報とＰＲＳＧとが必要とされる。しかし、このＰＲＳＧを用いる方法であれば、各ユーザの端末装置が保持する中間鍵の数を最小限にすることができる。
【０１１５】
以上までで、本実施形態の基盤技術に係る暗号鍵配信方式について説明してきた。この基盤方式を用いると、各ユーザの端末装置が保持すべき中間鍵の個数はＯ（ｋ＊ｌｏｇ（ｎ））であり、セット鍵の生成に要する計算量（ＰＲＳＧの動作回数）は（２ｋ−１）＊（ｎ１／ｋ−１）を超えないとされている。しかし、基盤技術に係る暗号鍵配信方式では、後述の図１３（Ａ）に示すように、各ユーザの端末装置が保持すべき中間鍵の個数が依然として大きいとう問題があった。
【０１１６】
また、暗号化されたコンテンツ鍵ｍｅｋの復号時に、端末装置が必要とする計算量のうち支配的なものは、所望の中間鍵を導出するためにＰＲＳＧを何回実行させるかに依存している。この最悪値は、有向グラフＨにおける先頭座標点（ルート）から最も遠い末尾座標点（有向枝が出ていないリーフ）までの、有向枝の本数（即ち、ジャンプ回数）により表される。図４で示した例では、有向グラフＨ（１→６４）の先頭座標点［１，１］から末尾座標点［１，６４］まで到達するために、１１本の有向枝を経由（１１回のジャンプを実行）しなければならず、これは、ＰＲＳＧを１１回も実行しなければならないことを示している。このように、基盤技術に係る暗号鍵配信方式では、ＰＲＳＧの実行回数多いため、中間鍵を導出するための計算量が多いという問題もあった。
【０１１７】
そこで、本願発明者らは上記問題を解決すべく鋭意努力して、以下に説明するような、本発明の一実施形態にかかる暗号鍵配信方式を開発した。この本実施形態にかかる暗号化配信方式は、上記全ユーザの端末装置を示す大きな２分木構造ＢＴを、複数の小さな基本部分木に分割して階層構造化し、各基本部分木に対して上記基盤方式の鍵導出方法を用いるとともに、これらの基本部分木間で有向枝を設定している。これにより、端末装置２０が保持する中間鍵数及び端末装置２０の計算量の双方の低減を実現できる。以下では、本実施形態にかかる暗号鍵配信方式を実現する鍵配信サーバ１０及び端末装置２０の機能構成とともに、この暗号鍵配信方式の特徴及び作用効果について詳述する。
【０１１８】
［鍵配信サーバ１０の構成］
まず、図８を参照しながら、本実施形態に係る鍵配信サーバ１０の機能構成について詳細に説明する。図８は、本実施形態に係る鍵配信サーバ１０及び端末装置２０の機能構成を示すブロック図である。
【０１１９】
図８に示すように、鍵配信サーバ１０は、木構造設定部１０２と、座標軸設定部１０４と、有向枝設定部１０６と、部分木間有向枝設定部１０８と、初期中間鍵設定部１１２と、鍵生成部１１４と、暗号化部１１６と、送信部１１８と、部分集合決定部１２０とを備える。このうち、座標軸設定部１０４、有向枝設定部１０６及び部分木間有向枝設定部１０８は、有向グラフ生成部を構成する。また、木構造設定部１０２と、有向グラフ設定部１１０とを纏めて、鍵生成ロジック構築ブロックと呼ぶことにする。同様に、初期中間鍵設定部１１２と、鍵生成部１１４とを纏めて、鍵生成ブロックと呼ぶことにする。
【０１２０】
まず、鍵生成ロジック構築ブロックを構成する各構成要素について説明する。この鍵生成ロジック構築ブロックは、上記の［基盤技術の説明］における（木構造の設定）及び（有向グラフの生成）に対応する処理を行う。
【０１２１】
（木構造設定部１０２）
木構造設定部１０２は、ｎ（ｎは２のべき乗）個の端末装置２０に対応する番号１〜ｎ（ｎは自然数）が割り当てられたｎ個の葉ノードを有する全体木構造ＢＴを、複数の基本部分木に分割してｙ階層に階層化した木構造を設定する。このように、本実施形態では、木構造設定部１０２において、基本部分木で階層化された木構造を設定する点が特徴である。なお、以下では、説明の便宜上、端末装置２０の全数ｎが２のべき乗個であるとして説明するが、かかる例に限定されず、例えば、端末装置２０の全数が２のべき乗個に一致しない場合には、その端末装置２０の全数を超えるような、ｎ（＝２のべき乗）個の葉ノードを有する全体木構造を設定すればよい。
【０１２２】
本実施形態では、上記の基盤技術で用いた各種のパラメータに加えて、全体木構造ＢＴの階層数を示すパラメータｙを新たに用いる。ただし、ｙ｜ｌｏｇ（ｎ）、即ち、ｙはｌｏｇ（ｎ）の約数である。そして、木構造設定部１０２は、各ユーザの端末装置２０の全てを表す２分木の全体木構造ＢＴを、ｎ１／ｙ個の葉ノードを有する基本部分木を用いて階層化する。
【０１２３】
全体木構造ＢＴは、上記基盤技術の２分木構造ＢＴ（図３参照）に相当する高さｌｏｇ（ｎ）の完全２分木構造である。この全体木構造ＢＴは、端末装置２０が割り当てられたｎ個の葉ノードと、全体木構造ＢＴの頂点にある根ノードと、これら根ノード及び葉ノード以外の複数の中間ノードと、から構成される。一方、基本部分木は、高さ（（ｌｏｇ（ｎ））／ｙ）の完全２分木構造である。この基本部分木は、ｎ１／ｙ個の葉ノードと、基本部分木の頂点にある根ノードと、これら根ノード及び葉ノード以外の複数の中間ノードとから構成される。
【０１２４】
木構造設定部１０２は、まず、葉ノードの数ｎが、端末装置２０の全数以上となるように全体木構造を作成し、各葉ノードに対し、左端から右方向に向かって番号１，２，・・・，ｎを割り当てる。
【０１２５】
さらに、木構造設定部１０２は、上記の全体木構造ＢＴを複数の基本部分木で分割して、ｙ階層に階層化し、下位階層の基本部分木の根ノードが、その上位階層の基本部分木の葉ノードと一致するように基本部分木を組み合わせて、全体木構造ＢＴを構成する。
【０１２６】
このように階層化された木構造の具体例を図９に示す。図９の例では、端末装置２０の数ｎ＝６４、パラメータｙ＝２に設定されている。図９に示すように、全体木構造ＢＴ（高さ６，葉ノード数６４）は、９個の基本部分木（高さ３、葉ノード数８）に分割されており、２階層構造となっている。このうち、上位階層の基本部分木は１個であり、下位階層の基本部分木は８個である。上位階層の基本部分木の根ノードは、全体木構造ＢＴの根ノード（ｒｏｏｔ）と同一であり、この上位階層の基本部分木の葉ノードは、ａ，ｂ，ｃ，・・・，ｈの８個である。また、下位階層の各基本部分木の根ノードは、それぞれ、上記上位階層の基本部分木の各葉ノードａ，ｂ，ｃ，・・・，ｈと一致しており、下位階層の基本部分木の葉ノードは、上記全体木構造ＢＴの葉ノード１〜６４の一部である８個の葉ノード（例えば、１〜８，９〜１６，１７〜２４，・・・，５７〜６４）である。
【０１２７】
このように、図９中のａ，ｂ，ｃ，・・・，ｈは、上位階層の基本部分木の葉ノード並びに下位階層の基本部分木の根ノードを表すとともに、当該根ノードの下位に位置する葉ノードの集合｛Ａａ｝，｛Ａｂ｝，｛Ａｃ｝，・・・，｛Ａｈ｝も表している。例えば、ａは、集合｛Ａａ｝＝部分集合｛１，２，・・・，８｝を，ｂは、集合｛Ａｂ｝＝部分集合部分｛９，・・・，１６｝を表している。
【０１２８】
なお、最下位階層の基本部分木の各葉ノードが各端末装置２０にそれぞれ対応する。また、以下では、説明の便宜上、端末装置２０とユーザとが１：１対応していると仮定し、全体木構造ＢＴの葉ノード（最下位階層の各基本部分木の葉ノード）１〜ｎに対応付けられる「端末装置２０」を「ユーザ」と表記して説明する場合もある。なお、図９は、ＢＴの葉ノード数がｎ＝６４、ｙ＝２の例であるが、かかる例に限定されず、ｎ＝４（＝２２），８（＝２３），１６（＝２４），３２（＝２５），１２８（＝２７），・・・など、ｎは任意の２のべき乗数であってよい。また、階層化パラメータｙも、図のｙ＝２の例以外にも、ｌｏｇ（ｎ）の約数であれば、任意に設定可能である。
【０１２９】
さらに、木構造設定部１０２は、上記のように設定した全体木構造ＢＴを構成する各結節点（ノード）、即ち、各基本部分木の根ノード及び中間ノードに対し、ノード間の位置関係を考慮して、各ユーザの端末装置２０に対応する葉ノード１〜ｎを組み合わせた集合をそれぞれ対応付ける。このように、木構造設定部１０２は集合対応付け部としても機能する。以下に、この集合の対応付けについて詳述する。
【０１３０】
まず、以下の説明に用いる集合、記号を定義する。
Ｎ          ：  全ての端末装置２０（ユーザ）の集合｛１，２，・・・，ｎ｝
Ａｗ        ：  全体木構造ＢＴのノードｗの下位に位置する葉ノードの集合。ただし、ノードｗが全体木構造ＢＴの葉ノードである場合（即ち、ノードｗが最下位階層の基本部分木の葉ノードである場合）には、Ａｗは当該葉ノード（即ち、ノードｗ）のみの集合を表す。以下、これらの葉ノードを総称して、「Ａｗに属する葉ノードの集合」という。
ｐｗ        ：  Ａｗに属する葉ノードの集合のうち最左に位置する葉ノード
ｑｗ        ：  Ａｗに属する葉ノードの集合のうち最右に位置する葉ノード
［ｐｗ，ｑｗ］  ：  ｛ｐｗ，ｐｗ＋１，ｐｗ＋２，・・・，ｑｗ−１，ｑｗ｝
ｖ（−ｉ）    ：  各基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個左に位置する葉ノード
ｖ（＋ｉ）    ：  各基本部分木の葉ノードのうち、ある葉ノードｖよりもｉ個右に位置する葉ノード
基本部分木の２つの葉ノードｕ，ｖ（ｖはｕの右にある）について、
集合（ｕ→ｖ）＝｛Ａｕ，Ａｕ∪Ａｕ（＋１），・・・，Ａｕ∪・・・∪Ａｖ｝
＝｛［ｐｕ，ｑｕ］，［ｐｕ，ｑｕ（＋１）］，・・・，［ｐｕ，ｑｖ（−１）］，［ｐｕ，ｑｖ］｝
集合（ｕ←ｖ）  ：  ｛Ａｖ，Ａｖ∪Ａｖ（−１），・・・，Ａｖ∪・・・∪Ａｕ｝
ｌｖ’      ：  基本部分木のノードｖ（根ノード又は中間ノード）の下位に位置する複数の葉ノードのうち、左端に位置する葉ノード
ｒｖ’      ：  基本部分木のノードｖ（根ノード又は中間ノード）の下位に位置する複数の葉ノードのうち、右端に位置する葉ノード
Ａ          ：  基本部分木の根ノードの集合から、全体木構造の根ノード（ｒｏｏｔ）を除いた集合
ＢＴＬ      ：  基本部分木の中間ノードのうち、親ノードの左側に位置する中間ノードの集合
ＢＴＲ      ：  基本部分木の中間ノードのうち、親ノードの右側に位置する中間ノードの集合
なお、ここで言う親子関係とは、基本部分木上で接続されたノード間の上下関係を意味し、親ノードが上位に位置して子ノードが下位に位置する関係を示している。
【０１３１】
上記定義された集合及び記号を用いて、木構造設定部１０２は、上記のように階層構造化した全体木構造ＢＴの各ノード、即ち、各基本部分木の根ノード及び中間ノードに対し、ノード間の位置関係を考慮して、端末装置２０に対応する葉ノード１〜ｎを組み合わせた集合をそれぞれ対応付ける。
【０１３２】
詳細には、木構造設定部１０２は、最上位階層の基本部分木の根ノードｒｏｏｔ（全体木構造ＢＴの根ノードｒｏｏｔに対応する。）に対して、集合（ｌroot’→ｒroot’）及び集合（ｌroot’（＋１）←ｒroot’）を対応付ける。図９の例では、上位階層の基本部分木の根ノードｒｏｏｔに対して、集合（ａ→ｈ）と集合（ｂ←ｈ）が対応付けられている。
また、木構造設定部１０２は、最下位階層以外の基本部分木の中間ノードに対しては、各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、一方、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付ける。図９の例では、上位階層の基本部分木の６つの中間ノードｖに対して、それぞれ、集合（ｂ←ｄ）、集合（ｅ→ｇ）、集合（ｂ←ｂ）、集合（ｃ→ｃ）、集合（ｆ←ｆ）、集合（ｇ→ｇ）が対応付けられている。例えば、ｅ，ｆ，ｇはそれぞれ、部分集合｛３３，・・・，４０｝，部分集合｛４１，・・・，４８｝，部分集合｛４９，・・・，５６｝を表しているので、集合（ｅ→ｇ）は、これらの部分集合の集合｛Ａｅ，Ａｅ∪Ａｆ，Ａｅ∪Ａｆ∪Ａｇ｝＝｛｛３３，・・・，４０｝，｛３３，・・・，４８｝，｛３３，・・・，５６｝｝を表す。
【０１３３】
このように、本実施形態では、上位階層の基本部分木のノードに対しては、全体木構造の葉ノード１〜ｎ単位ではなく、当該上位階層の基本部分木の葉ノードａ〜ｈ単位で、部分集合が対応付けられる。なお、図９の例では、２階層構造であるため中間階層の基本部分木は存在しないが、例えば、３階層以上に階層構造化した場合には、中間階層の基本部分木のノードに対しても、当該中間階層の基本部分木の葉ノード単位で、部分集合が対応付けられる。
【０１３４】
また、木構造設定部１０２は、最上位階層以外の階層の基本部分木の根ノードｖに対して、集合（ｌｖ’→ｒｖ’（−１））及び（ｌｖ’（＋１）←ｒｖ’）を対応付ける。図９の例では、下位階層の８つの基本部分木の根ノードａ，ｂ，ｃ，・・・，ｈに対して、それぞれ２つの集合が対応付けられている。例えば、根ノードａに対しては集合（２←８）及び集合（１→７）が対応付けられている。このように本実施形態では、根ノードｒｏｏｔ以外であっても、基本部分木の根ノードであれば、２つの集合が対応付けられる。
【０１３５】
また、木構造設定部１０２は、最下位階層の各基本部分木の中間ノードｖが、その親ノードの左側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’（＋１）←ｒｖ’）を対応付け、一方、その親ノードの右側に位置する場合には、当該中間ノードｖに対して集合（ｌｖ’→ｒｖ’（−１））を対応付ける。例えば、図９の下位階層の左端の基本部分木の各中間ノードについてはそれぞれ、集合（２←４），集合（５→７），集合（２→２）などが対応付けられている。
【０１３６】
以上のように、本実施形態にかかる暗号鍵配信方式では、複数の基本部分木で階層化された２分木構造ＢＴを用いてユーザ集合の部分集合を定義している。この方法によって様々な組合せ持つユーザの部分集合を表現することが可能になる。なお、これらの部分集合により構築された全体集合のことをセットシステムΨと呼び、下式（２）のように定義する。つまり、下式（２）は、上記の方法で構築した２分木の全体木構造ＢＴを数学的に表現したものである。
【０１３７】
【数２】
2008131076.tif 000004
【０１３８】
以上、本実施形態にかかる木構造設定部１０２により、ユーザの端末装置２０の部分集合を規定する２分木構造を設定する方法について述べた。本実施形態にかかる暗号鍵配信方式の基本コンセプトは、これらの各部分集合に対して、コンテンツ鍵を暗号化するためのセット鍵を設定し、各セット鍵によりコンテンツ鍵を暗号化して全ユーザに配信することにある。上記のように部分集合を定義したことにより、少なくともユーザの組合せを分類する一手段が規定された。以下では、これらの部分集合を利用した有向グラフを作成し、この有向グラフに基づきセット鍵を生成するアルゴリズムについて説明する。
【０１３９】
有向グラフ生成部１１０は、上記木構造設定部１０２により設定された階層型の全体木構造ＢＴの各ノードに対応付けられた集合（ｌroot’→ｒroot’）、集合（ｌｖ’→ｒｖ’（−１））、集合（ｌroot’（＋１）←ｒroot’）及び集合（ｌｖ’（＋１）←ｒｖ’）に対応する有向グラフＨ’をそれぞれ作成する。有向グラフＨ’は、これらの集合に含まれる部分集合に対応する座標点を、部分集合の包含関係が大きくなるように順次配列した水平座標軸と、この水平座標軸上の座標点を相互に結ぶ有向枝と、からなる。
【０１４０】
この有向グラフ生成部１１０は、各有向グラフＨ’の水平座標軸を設定する座標軸設定部１０４と、各有向グラフＨ’の水平座標軸上に有向枝を設定する有向枝設定部１０６と、相異なる基本部分木に対応する有向グラフＨ’間に有向枝を追加設定する部分木間有向枝設定部１０８と、を備える。以下に有向グラフ生成部１１０の各部について説明する。
【０１４１】
（座標軸設定部１０４）
座標軸設定部１０４は、上記最上位階層の基本部分木の根ノードｒｏｏｔに対応付けられた集合（ｌroot’→ｒroot’）に含まれる各部分集合に対応する座標点を、左から右に向かって包含関係が大きくなるように配列した第１水平座標軸（例えば、図１０のＨ’（ａ→ｈ）の座標軸）を設定する。また、座標軸設定部１０４は、上記最上位階層以外の基本部分木の根ノードｖ、又は、各基本部分木の中間ノードｖに対応付けられた集合（ｌｖ’→ｒｖ’（−１））に含まれる各部分集合に対応する座標点を、左から右に向かって包含関係が大きくなるように配列した第１水平座標軸（例えば、図１０のＨ’（ｅ→ｇ）、Ｈ’（１→７）、Ｈ’（５→７）等の座標軸）をそれぞれ設定する。
【０１４２】
また、座標軸設定部１０４は、上記最上位階層の基本部分木の根ノードｒｏｏｔに対応付けられた集合（ｌroot’（＋１）←ｒroot’）に含まれる各部分集合に対応する座標点を、右から左に向かって包含関係が大きくなるように配列した第２水平座標軸（例えば、図１０のＨ’（ｂ←ｈ）の座標軸）を設定する。また、座標軸設定部１０４は、上記最上位階層以外の基本部分木の根ノードｖ、又は、各基本部分木の中間ノードｖに対応付けられた集合（ｌｖ’（＋１）←ｒｖ’）に含まれる各部分集合に対応する座標点を、右から左に向かって包含関係が大きくなるように配列した第２水平座標軸（例えば、図１０のＨ’（ｂ←ｄ）、Ｈ’（２←８）、Ｈ’（２←４）等の座標軸）をそれぞれ設定する。
【０１４３】
上記のように、座標軸設定部１０４は、木構造設定部１０２により設定された基本部分木の各ノードに対応する有向グラフＨ’を構築するための座標軸を設定する。このとき、第１水平座標軸は右向きの座標軸であり、第２水平座標軸は左向きの座標軸である。これらの第１及び第２水平座標軸は、各基本部分木の各根ノードや中間ノードｖに対して設定されるため、それぞれ、複数の座標軸が設定される。
【０１４４】
さらに、座標軸設定部１０４は、これらの第１及び第２水平座標軸の各々の左端及び／又は右端に、少なくとも合計２つの仮座標点を追加設定する。本実施形態では、例えば、第１及び第２水平座標軸の各々の左端にある座標点の更に左側と、右端端にある座標点の更に右側とに、仮座標点をそれぞれ１つずつ追加設定する。この場合、第１水平座標軸の左端に設定された仮座標点は有向枝設定時の始点となり、第１水平座標軸の右端に設定された仮座標点は、有向枝設定時の終点となる。一方、第２水平座標軸の左端に設定された仮座標点は有向枝設定時の終点となり、第２水平座標軸の右端に設定された仮座標点は、有向枝設定時の始点となる。なお、仮座標点の設定手法は、上記例に限定されず、例えば、第１及び第２水平座標軸の左端又は右端のいずれか一方に、少なくとも２つの仮座標点を設定してもよい。
【０１４５】
（有向枝設定部１０６）
有向枝設定部１０６は、上記座標軸設定部１０４により設定された座標点間に、有効グラフＩを構成する有効枝を設定する機能を有する。
【０１４６】
詳細には、有向枝設定部１０６は、まず、所定の整数ｋ（ただし、ｋ｜ｌｏｇ（ｎ１／ｙ）。即ち、ｋはｌｏｇ（ｎ１／ｙ）の約数）を設定し、ｎ（ｘ−１）／ｋ・ｙ＜（ｒｖ’−ｌｖ’＋１）≦ｎｘ／ｋ・ｙを満たす整数ｘを算定する。
【０１４７】
さらに、有向枝設定部１０６は、上記第１水平座標軸を有する有効グラフＩについては、各第１水平座標軸上の左端にある仮座標点（始点）から開始して、ｎｉ／（ｋ・ｙ）（ｉ＝０〜ｘ−１）だけ離れた座標点へ延びる右向きの有向枝の設定を繰り返し行う。また、有向枝設定部１０６は、上記第２水平座標軸を有する有効グラフＩについては、各第２水平座標軸上の右端にある仮座標点から開始して、ｎｉ／（ｋ・ｙ）（ｉ＝０〜ｘ−１）だけ離れた座標点へ延びる左向きの有向枝の設定を繰り返し行う。
【０１４８】
次いで、有向枝設定部１０６は、上記各第１及び第２水平座標軸について、座標軸左端および右端に１つずつある仮座標点を始点又は終点とする全ての有向枝を除外する。さらに、有向枝設定部１０６は、各第１及び第２座標軸上の各座標点に到達する前記有向枝のうち、最長の有向枝以外の有向枝を除外する。このようにして、有効枝設定部１０６は、上記各基本部分木の各根ノードおよび中間ノードの各々に対応づけられた各有効グラフＩの各水平座標軸上に、座標点間を結ぶ鎖である複数の有効枝を設定する。
【０１４９】
以上のような本実施形態にかかる座標軸設定部１０４及び有効枝設定部１０６による有効グラフＩの生成手法は、葉ノード数がｎ１／ｙであることを除けば、上記の基盤技術にかかる有効グラフＨの生成手法と、略同一である。以下に、その具体例について説明する。ここでは、有効グラフＩの生成手法の一例として、図９に示す最上位階層の基本部分木の根ノード（全体木構造ＢＴの根ノードｒｏｏｔ）に対応づけられた有向グラフＩ（ｌroot’→ｒroot’）＝有向グラフＩ（ａ→ｈ）の例について説明する。
【０１５０】
上記基盤技術と同様に，根ノードｒｏｏｔに対応付けられる右向きのグラフである有向グラフＩ（ａ→ｈ）は、まず、集合（ｌｖ’→ｒｖ’（−１））に対応する有向グラフＩ（ａ→ｇ）を作成し、その後に有向枝Ｅ（［ａ，ｇ］，［ａ，ｈ］）を加えることで作成する。このため、まず、有向グラフＩ（ａ→ｇ）を下記のように作成する。
【０１５１】
（Ｓ１０）まず、座標軸設定部１０４により、有向グラフＩ（ａ→ｇ）を構成するための第１水平座標軸を設定する。この第１水平座標軸には、集合（ａ→ｇ）の要素を成す部分集合Ｓｉが座標点として割り当てられる。これらの座標点を成す部分集合Ｓｉは、左から右向かって包含関係が大きくなるように配列される。例えば、有向グラフＨ（ａ→ｈ）＝Ｈ（｛［ａ，ａ］，［ａ，ｂ］，・・・，［ａ，ｇ］｝）では、座標軸は、左から順に部分集合［ａ，ａ］，［ａ，ｂ］，・・・，［ａ，ｇ］が割り当てられた７つの座標点を有する。その後、座標軸の最左に位置する座標点の左側に始点となる仮座標点を設定して始点とし、座標軸の最右に位置する座標点の右側に終点となる仮座標点を設定して、終点とする。このように設定された座標軸は、左端の仮座標点（始点）から右端の仮座標点（終点）までの長さＬｖが、Ｌｖ＝ｒｖ’−ｌｖ’＋１＝ｈ−ａ＋１＝８となる。
【０１５２】
（Ｓ２０）有効枝設定部１０６により、有向グラフＩ（ａ→ｇ）を構成する有向枝を設定する。
（Ｓ２０−１）ｎ（ｘ−１）／ｋ・ｙ＜（ｈ−ａ＋１）≦ｎｘ／ｋ・ｙを満たす整数ｘを算出する。この整数ｘは、１≦ｘ≦ｋを満たす。
（Ｓ２０−２）カウンタｉを０からｘ−１まで動かしながら、次の操作を繰り返し行う。第１水平座標軸の左端にある始点（仮座標点）から開始し、その座標点からｎｉ／（ｋ・ｙ）（ｉ＝０〜ｘ−１）だけ離れた座標点へ延びる右向きの有向枝の設定（その座標点からｎｉ／（ｋ・ｙ）だけ離れた座標点へのジャンプ）を、有向枝の終端が水平座標軸の右端にある終点（仮座標点）に到達するか、或いは、次に設定される有向枝の終端が当該終点を超えるまで、繰り返し行う。
【０１５３】
（Ｓ３０）第１水平座標軸の両端にある仮座標点を始点又は終点とする有向枝を全て削除する。
【０１５４】
（Ｓ４０）ある座標点に到達する有向枝が複数ある場合には、最長の有向枝のみを残し、この最長の有向枝以外の有向枝を全て削除する。
【０１５５】
以上のステップ（Ｓ１０）〜（Ｓ４０）を実行すると、有向グラフＩ（ａ→ｇ）が完成する。そして、この有向グラフＩ（ａ→ｇ）に有向枝Ｅ（［ａ，ｇ］，［ａ，ｈ］）を加えることで，有向グラフＩ（ａ→ｈ）が完成する。例えば、図１０に示す有向グラフＩ（ａ→ｈ）を参照すると、部分集合［ａ，ａ］（“ａ”のボックスで表示），［ａ，ｂ］（“ｂ”のボックスで表示），・・・，［ａ，ｈ］（“ｈ”のボックスで表示）に対応する座標点と、これらの座標点を相互に結ぶ直線状の有効枝又はアーチ状の曲線の有効枝とが設定されている。図１０には水平座標軸を明示していないが、座標点と有向枝の端部との交点の組により水平座標軸が構成されている。さらに、有向グラフＩ（ａ→ｈ）の上部には、右向きの白抜き矢印が描画されているが、これが有向枝の方向を示すものである。つまり、有向グラフＩ（ａ→ｈ）を構成する有向枝は全て右向きであることを示している。よって、有向グラフＩ（ａ→ｈ）では、例えば、部分集合［ａ，ａ］の座標点ａからは、部分集合［ａ，ｂ］の座標点ｂに到達する右向きの有効枝が１本だけ設定され、部分集合［ａ，ｂ］の座標点ｂからは、部分集合［ａ，ｃ］の座標点ｃと部分集合［ａ，ｄ］の座標点ｄとに到達する右向きの有効枝が２本設定されている。
【０１５６】
上記有向グラフＩ（ａ→ｇ）と同様にして、最上位階層の基本部分木の根ノードｒｏｏｔに対応づけられた有効グラフＩ（ｌroot’（＋１）←ｒroot’）や、他の各基本部分木の根ノード又は各基本部分木の核中間ノードに対応づけられた有効グラフＩ（ｌｖ’→ｒｖ’（−１））、有効グラフＩ（ｌｖ’（＋１）←ｒｖ’）が生成される。但し、有効グラフＩ（ｌｖ’→ｒｖ’（−１））、有効グラフＩ（ｌｖ’（＋１）←ｒｖ’）の座標軸を設定する際には、第２水平座標軸上に右から左に向かって包含関係が大きくなるように部分集合Ｓｉを配列し、有向枝の向きを左向きにする。
【０１５７】
以上のようにして、各々の有効グラフＩが生成される。図１０は、図９で示したセットシステムΨを、これらの有効グラフＩで表したものである。ただし、図１０は、ｙ＝２、ｋ＝３と設定したときのものである。
【０１５８】
図１０に示す有向グラフＩ（ａ→ｈ）及びＩ（ｂ←ｈ）は、最上位階層の基本部分木の根ノードｒｏｏｔに対応づけられた有効グラフＩである。また、有向グラフＩ（ｂ←ｄ）及びＩ（ｅ→ｇ）は、最上位階層の基本部分木の上位の中間ノードに対応づけられた有効グラフＩであり、有向グラフＩ（ｂ←ｂ）、Ｉ（ｃ→ｃ）、Ｉ（ｆ←ｆ）、Ｉ（ｇ→ｇ）は、最上位階層の基本部分木の下位の中間ノードに対応づけられた有効グラフＩである。
【０１５９】
また、有向グラフＩ（１→７）及びＩ（２←８）、有向グラフＩ（９→１５）及びＩ（１０←１６）、・・・、有向グラフＩ（５７→６３）及びＩ（５８←６４）は、それぞれ、下位階層の８つの基本部分木の根ノードｖに対応づけられた有効グラフＩである。また、有向グラフＩ（２←４）、Ｉ（５→７）、・・・、Ｉ（５８←６０）、Ｉ（６１→６３）は、それぞれ、当該下位階層の８つの基本部分木の上位の中間ノードｖに対応づけられた有効グラフＩである。さらに、１つの座標点（黒丸）で表す有向グラフＩ（２←２）、Ｉ（３→３）、・・・、Ｉ（６２←６２）、Ｉ（６３→６３）は、それぞれ、当該下位階層の８つの基本部分木の下位の中間ノードｖに対応づけられた有効グラフＩである。
【０１６０】
この図１０のように、全体木構造ＢＴを複数の基本部分木に分割、階層化して、これに対応する有効グラフＩを生成することで、各有効グラフＩの長さを短くできるとともに、各有効グラフＩにおける有効枝の本数及び長さ（ジャンプ回数及び距離）を小さくできる。従って、端末装置２０が保持すべき鍵数と、端末装置２０の計算量を低減できる。
【０１６１】
（部分木間有向枝設定部１０８）
図８に示す部分木間有向枝設定部１０８は、階層構造化された全体木構造ＢＴにおける下位階層の基本部分木に対応する有向グラフＩから、上位階層の基本部分木に対応する有向グラフＩへの有向枝を追加設定する。詳細には、部分木間有向枝設定部１０８は、上記下位階層の基本部分木に対応する有向グラフＩにおける第１座標点（例えば、図１１の有効グラフＩ（１→７）の部分集合［１，７］の座標点）から、上位階層の基本部分木に対応する有向グラフＩにおける第２座標点（例えば、図１１の有効グラフＩ（ａ→ｈ）の部分集合［ａ，ａ］の座標点）への有向枝を設定する。この第２座標点が表す部分集合（例えば［ａ，ａ］）は、第１座標点に対応する部分集合（例えば［１，７］）を包含する関係にある。
【０１６２】
図１１は、部分木間有向枝設定部１０８により、相異なる基本部分木に対応する有向グラフＩ間に、部分集合Ｓｉが包含関係を有するように有向枝を設定した状態の有向グラフＩを示す。
【０１６３】
図１０及び図１１に示すように、“ａ”のボックスで表示される第２座標点の部分集合［ａ，ａ］＝｛１，２，・・・，８｝は、部分集合｛１，２，・・・，７｝を含んでいる、即ち、部分集合［ａ，ａ］は部分集合［１，７］の親集合となっている。そこで、部分木間有向枝設定部１０８は、有効グラフＩ（１→７）における部分集合［１，７］に対応する座標点（第１座標点）から、有効グラフＩ（ａ→ｈ）における部分集合［ａ，ａ］に対応する座標点（第２座標点）まで、有効枝を追加設定する。
【０１６４】
同様に、部分木間有向枝設定部１０８は、有効グラフＩ（５８←６４）における部分集合［６４，５８］に対応する座標点（第１座標点）から、有効グラフＩ（ｂ←ｈ）における部分集合［ｈ，ｈ］に対応する座標点（第２座標点）まで、有効枝を追加設定する。さらに同様に、部分木間有向枝設定部１０８は、有効グラフＩ（２６←３２）における部分集合［３２，２６］に対応する座標点（第１座標点）から、有効グラフＩ（ｂ←ｄ）における部分集合［ｄ，ｄ］に対応する座標点（第２座標点）まで、有効枝を追加設定し、また、有効グラフＩ（３３→３９）における部分集合［３３，３９］に対応する座標点（第１座標点）から、有効グラフＩ（ｅ→ｇ）における部分集合［ｅ，ｅ］に対応する座標点（第２座標点）まで、有効枝を追加設定する。さらに同様に、部分木間有向枝設定部１０８は、有効グラフＩ（１０←１６）、Ｉ（１７→２３）、Ｉ（４２←４８）、Ｉ（４９→５５）の部分集合［１６，１０］、［１７，２３］、［４８，４２］、［４９，５５］の座標点（第１座標点）から、それらを包含する、有効グラフＩ（１０←１６）、Ｉ（１７→２３）、Ｉ（４２←４８）、Ｉ（４９→５５）の部分集合［ｂ，ｂ］、［ｃ，ｃ］、［ｆ，ｆ］、［ｇ，ｇ］の座標点（第２座標点）に対して、それぞれ有効枝を追加設定する。
【０１６５】
このように、有効グラフＩ間で有効枝を追加設定することで、端末装置２０の保持すべき中間鍵の鍵数を更に低減できる。例えば、有効グラフＩ（１→７）の部分集合［１，７］から、有効グラフＩ（ａ→ｈ）の部分集合［ａ，ａ］まで有効枝を追加設定することにより、１〜７番の端末装置２０は、部分集合［ａ，ａ］等の中間鍵を保持していなくても、自身の保持する中間鍵（例えば、中間鍵ｔ（［１，７］））をＰＲＳＧに入力することで、８つの部分集合［ａ，ａ］、［ａ，ｂ］、・・・、［ａ，ｈ］の中間鍵ｔ（［ａ，ａ］）、ｔ（［ａ，ｂ］）、・・・、ｔ（［ａ，ｈ］）を導出することができる。このため。これらの端末装置２０は、保持する中間鍵ｔ（Ｓ）の鍵数を低減できる。他の基本部分木間の有効枝についても同様に、端末装置２０の保持すべき中間鍵ｔ（Ｓ）の鍵数を低減する作用を奏する。
【０１６６】
以上、鍵配信サーバ１０の鍵生成ロジック構築ブロックの各部について説明した。さらに、図８を参照すると、鍵配信サーバ１０は、上記の鍵生成ロジック構築ブロックの他に、初期中間鍵設定部１１２及び鍵生成部１１４を有する鍵生成ブロックと、暗号化部１１６と、送信部１１８と、部分集合決定部１２０と、を備える。
【０１６７】
（初期中間鍵設定部１１２）
初期中間鍵設定部１１２は、基本部分木の各ノードに対応する各有向グラフＩについて、有向グラフＩの先頭座標点に対応する中間鍵を生成する。先頭座標点とは、右向きの第１水平座標軸を有する有効グラフＩでは、左端に位置する座標点（例えば、有効グラフＩ（１→７）では、部分集合［１，１］の座標点）であり、一方、左向きの第２水平座標軸を有する有効グラフＩでは、右端に位置する座標点（例えば、有効グラフＩ（５８←６４）では、部分集合［６４，６４］の座標点）である。初期中間鍵は、この先頭座標点の中間鍵ｔ（Ｓ）である。この初期中間鍵が得られれば、例えば擬似乱数生成器ＰＲＳＧを用いて、当該初期中間鍵に対応する有効グラフＩに基づき、有効グラフＩに含まれる他の座標点の中間鍵を順次、導出できる。初期中間鍵設定部１１２は、例えば、擬似乱数生成器ＰＲＳＧにより乱数を発生させて、各中間鍵として当該乱数を設定してもよいし、又は所定の数値を各中間鍵に設定してもよい。
【０１６８】
（鍵生成部１１４）
鍵生成部１１４は、上記グラフ生成部１１０により生成された有向グラフＩに基づいて、コンテンツ鍵ｍｅｋを暗号化するためのセット鍵Ｋ（Ｓｉ）を、有効グラフＩ内の座標点に対応する部分集合Ｓｉごとに生成する。詳細には、鍵生成部１１４は、有向グラフＩにおけるある座標点に対応する部分集合Ｓの中間鍵ｔ（Ｓ０）が入力されると、当該部分集合Ｓ０に対応するセット鍵ｋ（Ｓ０）と、当該座標点Ｓを始点とする各有向枝の終点の座標点に対応する部分集合Ｓ１，Ｓ２，・・・，Ｓｋの中間鍵ｔ（Ｓ１），ｔ（Ｓ２），・・・，ｔ（Ｓｋ）と、を出力する。つまり、鍵生成部１１４は、有向グラフＩを構成するある有向枝について、その有向枝の始点が示す座標点に対応する所定の中間鍵ｔ（Ｓ０）が入力されると、その有向枝の始点が示す座標点に対応するセット鍵ｋ（Ｓ０）と、その有向枝の始点から伸びる、多くともｋ本の全ての有向枝の終点に対応する中間鍵ｔ（Ｓ１），ｔ（Ｓ２），・・・，ｔ（Ｓｋ）を出力する。
【０１６９】
この鍵生成部１１４は、例えば、上記基盤技術にかかる疑似乱数生成器（ＰＲＳＧ）と、このＰＲＳＧを制御する制御部とから構成される。鍵生成部１１４のＰＲＳＧとしては、セット鍵ｋ（Ｓｉ）を生成するために、例えば、λビットの入力に対して（ｋ＋１）λビットの出力を出す上述のＰＲＳＧを利用する。このＰＲＳＧは、ある座標点（部分集合Ｓ０）に対応する中間鍵ｔ（Ｓ０）を入力すると、当該座標点を始点とする有向枝の終点の各座標点（部分集合Ｓ１、Ｓ２、・・・、Ｓｋ）に対応する中間鍵ｔ（Ｓ１）、ｔ（Ｓ２）、・・・、ｔ（Ｓｋ）と、当該部分集合Ｓ０のセット鍵ｋ（Ｓ０）と、を出力する。つまり、ｔ（Ｓ１）｜｜・・・｜｜ｔ（Ｓｋ）｜｜ｋ（Ｓ０）←ＰＲＳＧ（ｔ（Ｓ０））である。このＰＲＳＧの出力を左からλビットごとに区切ることで、中間鍵ｔ（Ｓ１）、ｔ（Ｓ２）、・・・、ｔ（Ｓｋ）と、セット鍵ｋ（Ｓ０）とが得られる。
【０１７０】
（暗号化部１１６）
暗号化部１１６は、セット鍵ｋ（Ｓｉ）を用いて、コンテンツを暗号化するためのコンテンツ鍵ｍｅｋを暗号化する。コンテンツ鍵ｍｅｋは一つであるが、セット鍵ｋ（Ｓｉ）はセットシステムΨを構成する部分集合Ｓｉの数だけ存在する。暗号化部１１６は、セットシステムＳを構成する全ての部分集合のうち、後述する部分集合決定部１２０において選択された部分集合に対応する各セット鍵を用いてコンテンツ鍵を暗号化する。つまり、暗号鍵１１６は、各セット鍵ｋ（Ｓｉ）に対応する暗号化されたコンテンツ鍵ｍｅｋを生成する。その為、選択された部分集合の数がｍであれば、暗号化されたコンテンツ鍵ｍｅｋもｍ個作成される。なお、暗号化部１１６は、コンテンツ自体を暗号化することもできる。例えば、暗号化部１１６は、コンテンツ鍵ｍｅｋを用いてコンテンツ自体を暗号化してもよいし、上記の各セット鍵ｋ（Ｓｉ）を用いてコンテンツ自体を暗号化してもよい。但し、セット鍵ｋ（Ｓｉ）を用いてコンテンツ自体を暗号化する構成は、本実施形態の一変形例である。
【０１７１】
（送信部１１８）
送信部１１８は、ネットワーク５を介して、各端末装置２０に各種情報を送信する。例えば、送信部１１８は、全体木構造ＢＴの葉ノード１〜ｎに対応付けられた全ての端末装置２０に対し、上記暗号部１１６により各セット鍵ｋ（Ｓｉ）で暗号化されたコンテンツ鍵ｍｅｋを送信する。なお、送信部１１８は、上記暗号化されたコンテンツ鍵ｍｅｋの代わりに、各セット鍵ｋ（Ｓｉ）で暗号化されたコンテンツ自体を端末装置２０に送信してもよい。
【０１７２】
また、送信部１１８は、セットアップ時に、各端末装置２０に中間鍵を配信する。例えば、送信部１１８は、上記の有向グラフＩを参照しながら、各端末装置２０に対して、その端末装置２０が属する部分集合Ｓｉの中間鍵ｔ（Ｓｉ）を配信してもよい。このとき、送信部１１８は、各端末装置２０が、自身の所属する全ての部分集合Ｓｉの中間鍵を導出できるように、必要最低限の中間鍵を配信してもよい。つまり、送信部１１８は、セットシステムΨを構成する部分集合の中から、端末装置２０が所属する部分集合Ｓｉを抽出し、その抽出された部分集合Ｓｉに対応する有向グラフＩの座標点のうち、その座標点に到達する有向枝の始点に対応する部分集合Ｓｊに当該端末装置２０が含まれないような座標点を選択して、その選択された座標点に対応する中間鍵ｔ（Ｓｊ）のみを当該端末装置２０に配信してもよい。但し、送信部１１８は、中間鍵ｔ（Ｓｉ）の配信先の端末装置２０が所属する部分集合Ｓｉが、有向グラフＩの先頭座標点に対応する場合には、当該先頭座標点に対応する中間鍵ｔ（Ｓｉ）のみを当該配信先ユーザに配信してもよい。
【０１７３】
また、送信部１１８は、例えば、セットシステムΨに関する情報（例えば、ｎ，λ、ｋ，ｙ、ＰＲＳＧの情報など）、及び、有向グラフＩに関する情報（例えば、上記有向グラフ生成部１１０により生成された複数の有向グラフＩ自体など）を、各端末装置２０に配信する有向グラフ情報配信部としても機能することができる。具体的には、例えば、送信部１１８は、各中間鍵ｔ（Ｓｉ）を入力することにより、有向グラフＩに基づいて所定の中間鍵ｔ（Ｓｉ）とセット鍵ｋ（Ｓｉ）とを出力するＰＲＳＧの鍵生成アルゴリズムに関する情報（例えば、鍵生成プログラム）を配信してもよい。
【０１７４】
なお，この送信部１１８による中間鍵ｔ（Ｓｉ）の配布は、コンテンツの配布に先立ち，コンテンツの配信とは別の通信路を用いて行ってもよい。例えば、鍵配信サーバ１０が各端末装置２０用の中間鍵ｔ（Ｓｉ）を出力して記録媒体に記録し，端末装置２０を製造する工場において，端末装置２０の製造時に、この記録媒体から読み出した各端末装置２０ごとの中間鍵ｔ（Ｓｉ）を各端末装置２０に格納してもよい。
【０１７５】
（部分集合決定部１２０）
部分集合決定部１２０は、セット鍵ｋ（Ｓｉ）によるコンテンツ鍵ｍｅｋ又はコンテンツの復号を不能にすべき排除対象の端末装置２０の集合（Ｒ）（以下「排除ユーザの集合（Ｒ）」という。）を決定し、全体木構造ＢＴの葉ノード１〜ｎに割り当てられた全ての端末装置２０の集合（Ｎ）から、上記排除ユーザの集合（Ｒ）を除外することで、セット鍵ｋ（Ｓｉ）によるコンテンツ鍵ｍｅｋ又はコンテンツの復号を許可する端末装置２０の集合（Ｎ＼Ｒ）（以下「許諾ユーザの集合（Ｎ＼Ｒ）」という。）を決定する。さらに、部分集合決定部１２０は、許諾ユーザの集合（Ｎ＼Ｒ）＝｛Ｓ１∪Ｓ２∪・・・∪Ｓｍ｝を満たすｍ個（ｍは自然数）の部分集合Ｓ１〜Ｓｍを、ｍが最小となるように決定する。
【０１７６】
なお、部分集合決定部１２０は、許諾ユーザの集合（Ｎ＼Ｒ）を決定する許諾ユーザ集合決定部と、許諾ユーザの集合（Ｎ＼Ｒ）を構成する部分集合Ｓｉの組を決定する許諾ユーザ部分集合決定部とから構成されていてもよい。このようにｍを最小化するように部分集合Ｓｉを決定することで、保持すべき中間鍵ｔ（Ｓｍ）およびセット鍵ｋ（Ｓｍ）の鍵数およびこれらの鍵の生成に要する計算量を低減できる。
上記のように、部分集合決定部１２０により許諾ユーザの集合（Ｎ＼Ｒ）＝｛Ｓ１∪Ｓ２∪・・・∪Ｓｍ｝を満たす部分集合（Ｓ１、Ｓ２、・・・、Ｓｍ）が決定されると、送信部１１８は、コンテンツ鍵ｍｅｋ等の復号が許諾された端末装置２０を識別するための許諾端末識別情報を、各端末装置２０に送信する。この許諾端末識別情報は、例えば、許諾ユーザの集合（Ｎ＼Ｒ）を表す情報、排除ユーザの集合（Ｒ）を表す情報、許諾ユーザの集合（Ｎ＼Ｒ）を構成する部分集合（Ｓ１、Ｓ２、・・・、Ｓｍ）を示す情報、又は、コンテンツ鍵ｍｅｋを暗号化するために用いた１又は２以上のセット鍵ｋ（Ｓｊ）を示す情報などである。かかる許諾端末識別情報に基づき、端末装置２０は、自身が排除されているか否かを判断できる。
【０１７７】
また、暗号化部１１６は、部分集合決定部１２０により決定された部分集合（Ｓ１、Ｓ２、・・・、Ｓｍ）に対応するセット鍵を用いてコンテンツ鍵ｍｅｋを暗号化し、そして、送信部１１８は、その暗号化されたコンテンツ鍵ｍｅｋを各端末装置２０に配信する。
【０１７８】
以上、本発明の好適な実施形態に係る鍵配信サーバ１０の構成について説明した。このように、本実施形態の特徴は、主に、鍵生成ロジック構築ブロックの構成にある。特に、鍵生成ロジックを決定する有向グラフＩを生成するための部分木間有向枝設定部１０８を、基本部分木で階層化する点に特徴を有している。本実施形態に係る部分木間有向枝設定部１０８は、各ユーザの端末装置２０がセット鍵ｋ（Ｓｉ）を生成する際に要する計算量を増加させずに、それぞれの端末装置２０が保持すべき中間鍵ｔ（Ｓｉ）の鍵数を低減させることが可能な鍵生成ロジック（有向グラフ）を生成することができる。その結果、各端末装置２０が中間鍵ｔ（Ｓｉ）を保持するために必要とするメモリ量を削減できるとともに、端末装置２０に中間鍵ｔ（Ｓｉ）を配信するための配信コストを低減することが可能になる。
【０１７９】
以上、鍵配信サーバ１０の各部の機能構成について説明した。本実施形態では、上記鍵配信サーバ１０の各部は、上記各機能を実現するプログラムを鍵配信サーバ１０にインストールすることにより構成されるが、かかる例に限定されず、上記各部の一部又は全部を専用のハードウェアで構成してもよい。なお、上記プログラムは、ポータブル記憶媒体等のコンピュータ読み取り可能な記憶媒体に記憶されて鍵配信サーバ１０に提供されてもよいし、或いは、外部装置からネットワーク５等の通信路を介して鍵配信サーバ１０に伝送されてもよい。
【０１８０】
［端末装置２０の構成］
次に、さらに図８を参照しながら、本実施形態に係る端末装置２０の機能構成について説明する。図８は、本実施形態にかかる端末装置２０の機能構成を示すブロック図である。
【０１８１】
図８に示すように、端末装置２０は、受信部１２４と、判断部１２６と、鍵生成部１２８と、復号部１３０とを備える。なお、端末装置２０は、全体木構造の末端の各葉ノード１〜ｎのいずれかに割り当てられている。
【０１８２】
（受信部１２４）
受信部１２４は、鍵配信サーバ１０が備える送信部１１８からネットワーク５を介して送信された各種の情報を受信する。例えば、受信部１２４は、鍵配信サーバ１０から、コンテンツ鍵ｍｅｋ又は各セット鍵ｋ（Ｓｉ）で暗号化されたコンテンツ、各セット鍵ｋ（Ｓｉ）で暗号化されたコンテンツ鍵ｍｅｋ、所定の１又は２以上の中間鍵ｔ（Ｓｉ）、セットシステムΨ又は有向グラフＩに関する情報、又は上記の許諾端末識別情報（例えば、上記許諾ユーザの集合（Ｎ＼Ｒ）を表す情報、又は許諾ユーザの集合（Ｎ＼Ｒ）を構成する部分集合（Ｓ１、Ｓ２、・・・、Ｓｍ）を示す情報等）などを受信する。
【０１８３】
また、受信部１２４は、一つの情報源から情報を受信するだけでなく、複数の情報源から情報を収集してもよい。例えば、受信部１２４は、有線又は無線のネットワーク５に接続された複数の情報源（例えば、鍵配信サーバ１０）、又はネットワーク５を介さずに直接的又は間接的に接続された情報源（例えば、光ディスク装置、磁気ディスク装置、又は携帯型端末装置等の情報メディア）から情報を取得してもよい。もちろん、受信部１２４は、他の端末装置２０から情報を受信してもよいため、例えば、有向グラフＩの情報を、同一の配信先グループに属する他の端末装置２０との間で共有するように構成されていてもよい。この場合、同一の配信先グループとは、例えば、同一又は複数の鍵配信サーバ１０から配信されるコンテンツの視聴者ユーザグループとして認定された複数の端末装置２０のグループを意味し、上記の全体木構造ＢＴの葉ノード１〜ｎのいずれかに対応する。なお、中間鍵は、上述のように、あらかじめ端末装置２０に与えられ、端末装置２０が保持しておいてもよい。
【０１８４】
（判断部１２６）
判断部１２６は、上記受信部１２４により、上記の許諾端末識別情報が受信された場合に、当該受信された許諾端末識別情報に基づいて、当該端末装置２０が、上記許諾ユーザの集合（Ｎ＼Ｒ）に含まれる部分集合Ｓ１〜Ｓｍのいずれかに属しているか否かを判断する。この許諾端末識別情報は、許諾ユーザの集合（Ｎ＼Ｒ）を表す情報、又は、この集合（Ｎ＼Ｒ）を構成する部分集合Ｓ１〜Ｓｍを表す情報などである。さらに、判断部１２６は、当該判断結果に基づいて、端末装置２０が、暗号化されたコンテンツの復号を許可されているか否かを判断する。
【０１８５】
つまり、端末装置２０は、自身が所属する部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を生成するための中間鍵ｔ（Ｓｉ）しか保持していない。このため、鍵配信サーバ１０が、上記許諾ユーザの集合（Ｎ＼Ｒ）を表す情報、又は、この集合（Ｎ＼Ｒ）を構成する部分集合Ｓ１〜Ｓｍを表す情報に基づいて、この集合（Ｎ＼Ｒ）を構成する部分集合Ｓ１〜Ｓｍの中に、端末装置２０自身が所属する部分集合Ｓｉが含まれるか否かを予め判断する必要がある。この判断を行うのが判断部１２６である。なお、この判断基準となる鍵配信サーバ１０からの受信情報は、上記以外にも、例えば、コンテンツ鍵ｍｅｋを暗号化するために用いた１又は２以上のセット鍵ｋ（Ｓｊ）を示す情報であってもよい。
【０１８６】
なお、上記許諾端末識別情報等は、例えば、鍵配信サーバ１０から予め又はコンテンツ鍵ｍｅｋと同時に配信されており、受信部１２４により受信されている。もし、記許諾ユーザの集合（Ｎ＼Ｒ）を構成する部分集合Ｓ１〜Ｓｍの中に、端末装置２０自身が所属する部分集合Ｓｉが含まれていないと判断された場合には、自身の保持する中間鍵ｔ（Ｓｉ）からセット鍵ｋ（Ｓｊ）を生成する処理を実行できないので、コンテンツ鍵ｍｅｋの復号処理を終了する。逆に、端末装置２０自身の所属する部分集合Ｓ１〜Ｓｍの中に、端末装置２０自身が所属する部分集合Ｓｉが含まれていると判断された場合には、端末装置２０の鍵生成部１２８は、ＰＲＳＧを用いて自身の保持する中間鍵ｔ（Ｓｉ）からそのセット鍵ｋ（Ｓｉ）を生成する。
【０１８７】
（鍵生成部１２８）
鍵生成部１２８は、鍵配信サーバ１０から受信した有向グラフＩの情報等に基づいて、暗号化されたコンテンツ又はコンテンツ鍵ｍｅｋを復号するためのセット鍵を生成する。鍵生成部１２８は、上記鍵配信サーバ１０から受信した有向グラフＩに基づいて、コンテンツ鍵ｍｅｋを暗号化するためのセット鍵ｋ（Ｓｉ）を、有効グラフＩ内の座標点に対応する部分集合Ｓｉごとに生成する。詳細には、鍵生成部１２８は、有向グラフＩにおけるある座標点に対応する部分集合Ｓの中間鍵ｔ（Ｓ０）が入力されると、当該部分集合Ｓ０に対応するセット鍵ｋ（Ｓ０）と、当該座標点Ｓを始点とする各有向枝の終点の座標点に対応する部分集合Ｓ１，Ｓ２，・・・，Ｓｋの中間鍵ｔ（Ｓ１），ｔ（Ｓ２），・・・，ｔ（Ｓｋ）と、を出力する。この鍵生成部１２８は、上記の鍵配信サーバ１０の鍵生成部１１４と略同一の機能構成を有するので、詳細説明は省略する。
【０１８８】
（復号部１３０）
復号部１３０は、セット鍵ｋ（Ｓｉ）を用いてコンテンツ鍵ｍｅｋを復号する。具体的には、復号部１３０は、セット鍵ｋ（Ｓｉ）に対応する部分集合Ｓｉの中から、自身が要素として含まれる部分集合Ｓｉｉを抽出し、当該部分集合Ｓｉｉに対応するセット鍵ｋ（Ｓｉｉ）を用いてコンテンツ鍵ｍｅｋを復号する。
【０１８９】
以上、端末装置２０の各部の機能構成について説明した。本実施形態では、上記端末装置２０の各部は、上記各機能を実現するプログラムを端末装置２０にインストールすることにより構成されるが、かかる例に限定されず、上記各部の一部又は全部を専用のハードウェアで構成してもよい。なお、上記プログラムは、ポータブル記憶媒体等のコンピュータ読み取り可能な記憶媒体に記憶されて端末装置２０に提供されてもよいし、或いは、外部装置からネットワーク５等の通信路を介して端末装置２０に伝送されてもよい。
【０１９０】
以上のように、本実施形態にかかる端末装置２０は、上記の鍵配信サーバ１０が備える有向グラフ生成部１１０により生成された特殊な鍵生成ロジック（有向グラフＩ）に基づいて、所望のセット鍵ｋ（Ｓｉ）を生成することができる。その結果、端末装置２０は、コンテンツ鍵ｍｅｋ等の復号に用いるセット鍵ｋ（Ｓｉ）を生成するために保持すべき中間鍵ｔ（Ｓｉ）の鍵数を抑えることが可能になる。また、上記全体木構造ＢＴの階層構造化により、有向グラフＩにおける有向枝が効率的に設定されているので、セット鍵ｋ（Ｓｉ）を生成するための鍵生成部１２８による計算量をも低減することができる。
【０１９１】
［鍵配信サーバ１０及び端末装置２０の動作］
（中間鍵の配信）
次に、鍵配信サーバ１０から、各ユーザの端末装置２０への中間鍵の配信動作について説明する。上記のように、多数の排除ユーザや許諾ユーザの追加／削除に柔軟に対処するためには、各端末装置２０に対しては、その端末装置２０が含まれる全ての部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を導出可能な複数の中間鍵ｔ（Ｓｉ）を与える必要がある。もちろん、その端末装置２０が含まれない部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を導出可能な中間鍵ｔ（Ｓｉ）を与えてはならないし、与える中間鍵ｔ（Ｓｉ）の鍵数は、端末装置２０のメモリ量の効率化の観点から最小限であることが好ましい。
【０１９２】
そこで、鍵配信システム１００のセットアップ時に、鍵配信サーバ１０から端末装置２０に中間鍵ｔ（Ｓｉ）を配信する場合には、各端末装置２０が所属する部分集合Ｓｉを要素に有する有向グラフＩを全て抽出する。そして、有向グラフＩの先頭座標点（ルート）に対応する部分集合Ｓｉに端末装置２０が含まれる場合には、その先頭座標点に対応する中間鍵ｔ（Ｓｉ）のみを端末装置２０に与える。また、有向グラフＩの先頭座標点以外の座標点に対応する部分集合Ｓｉのいずれかに端末装置２０が属する場合には、端末装置２０が部分集合Ｓ０には含まれるが、その部分集合Ｓ０の親である部分集合ｐａｒｅｎｔ（Ｓ０）には含まれないような、部分集合Ｓ０を見つけ、この部分集合Ｓ０の中間鍵Ｓ０を、当該端末装置２０に与える。もし、そのような部分集合Ｓ０が複数個存在する場合には、それぞれの中間鍵ｔ（Ｓ０）を与える。ここで、部分集合Ｓｉの親子関係は、有向枝によって定められ、有向枝の始点座標点が終点座標点の親となり、有向枝の終点座標点が始点座標点の子となる。以下、ある座標点Ｓ０に到達する有向枝の始点座標点ｐａｒｅｎｔ（Ｓ０）を親座標点と呼ぶことにする。ある座標点Ｓ０が，有効グラフＩの始点である場合，親座標点は存在せず，有効グラフＩの始点ではない場合，親座標点がただ１つ存在する。１つの有効グラフＩについて，自分自身に対応する部分集合にユーザｕを含み，その親座標点に対応する部分集合にはユーザｕを含まない座標点は，複数存在する場合もある。
【０１９３】
図１１の例を参照しながら、上記の中間鍵の配信方法について具体的に述べる。
（例１）ユーザ１の端末装置２０に対して配信される中間鍵ｔ（Ｓｉ）について考える。まず、ユーザ１が属する部分集合Ｓｉを要素に持つ有向グラフＩを検索すると、有向グラフＩ（１→７）と有向グラフＩ（ａ→ｈ）であることが分かる。そして、ユーザ１の端末装置２０は、有向グラフＩ（１→７）の先頭座標点である部分集合［１，１］に属している。従って、ユーザ１には、中間鍵ｔ（［１，１］）が与えられる。
【０１９４】
また、ユーザ１の端末装置２０は、有向グラフＩ（ａ→ｈ）の部分集合［ａ，ａ］に属しているが、有向グラフＩ（１→７）から有向グラフＩ（ａ→ｈ）にグラフ間有向枝が設定されているので、ユーザ１の端末装置２０は、上記中間鍵ｔ（［１，１］）を保持していれば、有向グラフＩ（１→７）と上記グラフ間有向枝とに基づいて、中間鍵ｔ（［ａ，ａ］）を導出可能である。よって、ユーザ１の端末装置２０に中間鍵ｔ（［ａ，ａ］）を与える必要はない。従って、ユーザ１の端末装置２０が保持すべき中間鍵は、中間鍵ｔ（［１，１］）の１つでよい。
【０１９５】
このユーザ１の端末装置２０と同様、ユーザ１〜７の端末装置２０には、有向グラフＩ（１→７）に関し、部分集合［１，７］＝｛１，２，・・・，７｝の中間鍵、又は、ＰＲＳＧを用いて当該部分集合［１，７］の中間鍵を導出可能な中間鍵が与えられる。この場合、上記のように、有向グラフＩ（１→７）から有向グラフＩ（ａ→ｈ）にグラフ間有向枝が設定されているので、ユーザ１〜７の端末装置２０は、当該部分集合［１，７］の中間鍵をＰＲＳＧに適用することで、中間鍵ｔ（［ａ，ａ］）を導出可能であり、さらにこの中間鍵ｔ（［ａ，ａ］）から、中間鍵ｔ（［ａ，＊］）を導出することができる（ただし、＊はｂ〜ｈのいずれかである。）。このため、ユーザ１〜７の端末装置２０に、有向グラフＩ（ａ→ｈ）に関する中間鍵を与える必要はない。
【０１９６】
（例２）次に、ユーザ１２の端末装置２０に対して配信される中間鍵について考える。まず、ユーザ１２の端末装置２０が属する部分集合Ｓｉを要素に持つ有向グラフＩを検索すると、有向グラフＩ（ａ→ｈ）、Ｉ（ｂ←ｈ）、Ｉ（ｂ←ｄ）、Ｉ（ｂ←ｂ）、Ｉ（９→１５）、Ｉ（１０←１６）、Ｉ（１０←１２）が該当する。そこで、有向グラフＩ（１０←１６）について検討すると、ユーザ１２の端末装置２０は、先頭座標点の部分集合［１６，１６］には属しておらず、５番目の座標点以降の部分集合［１６，１２］，［１６，１１］，［１６，１０］に属していることが分かる。これらの座標点のうち、親座標点にユーザ１２を含まない座標点は、［１６，１２］，［１６，１１］のみである。つまり、ユーザ１２を含む座標点［１６，１２］，［１６，１１］の親座標点ｐａｒｅｎｔ（［１６，１２］），ｐａｒｅｎｔ（［１６，１１］）である座標点「１６，１３」には、ユーザ１２は含まれない。従って、ユーザ１２には、有向グラフＩ（１０←１６）に対応する中間鍵として、ｔ（［１６，１２］）およびｔ（［１６，１１］）が与えられる。
【０１９７】
これと同様にして、他の有向グラフＩ（ａ→ｈ）、Ｉ（ｂ←ｈ）、Ｉ（ｂ←ｄ）、Ｉ（９→１５）、Ｉ（１０←１２）についても該当する中間鍵が選択され、ユーザ１２に与えられる。ところが、Ｉ（ｂ←ｂ）については、Ｉ（１０←１６）からグラフ間有向枝が設定されているので、ユーザ１２の端末装置２０は、上記中間鍵ｔ（［１６，１３］）を用いて、中間鍵ｔ（［ｂ，ｂ］）を導出可能であるので、当該中間鍵ｔ（［ｂ，ｂ］）はユーザ１２の端末装置２０に与えなくてよい。この結果、ユーザ１２には、合計７個の中間鍵が与えられる。
【０１９８】
次に、図１２を参照しながら、システムセットアップ時に、中間鍵を各ユーザの端末装置２０に配布するまでの処理について簡単に整理する。図１２は、本実施形態にかかるシステムセットアップ時の鍵配信サーバ１０における中間鍵配信に関する処理フローを表すフローチャートである。
【０１９９】
図１２に示すように、まず、鍵配信システム１００の鍵配信サーバ１０は、各種パラメータ等を設定する。例えば、各端末装置２０を割り当てるための全体木構造ＢＴの葉ノードの数（ユーザ数）ｎ、セット鍵及び中間鍵のビット数λ、全体木構造ＢＴの階層数を示すパラメータｙ、所定のパラメータｋ、及びＰＲＳＧによる擬似乱数生成アルゴリズム等を決定し、全ユーザの端末装置２０に公開する（Ｓ２０２）。このように本実施形態では、上記の基盤技術で公開されたｎ、λ、ｋ及びＰＲＳＧのアルゴリズムに加えて、全体木構造ＢＴの階層数を示すパラメータｙも決定して公開する。
【０２００】
次いで、鍵配信サーバ１０は、葉ノードに割り当てられた各端末装置２０の集合を所定の部分集合Ｓｉに分けて、その和集合により表現されるセットシステムΨ（上記式（２）参照。）を決定し、このセットシステムΨを公開する（Ｓ２０４）。
【０２０１】
さらに、鍵配信サーバ１０は、上記の複数の有向グラフＩを生成し、これら有向グラフＩの集合で構成された構成Τを決定し、かかる複数の有向グラフＩの構成Τを公開する（Ｓ２０６）。さらに、鍵配信サーバ１０は、セットシステムΨを構成する各部分集合に対応する中間鍵を決定する（Ｓ２０８）。その後、鍵配信サーバ１０は、この決定した中間鍵と鍵生成部１１４のＰＲＳＧとを用いて、その他の座標点に対応する中間鍵を導出し、各ユーザの端末装置２０に対し、各端末装置２０を含む全ての部分集合に対応するセット鍵を導出できるように、必要な中間鍵を配信する（Ｓ２１０）。すると、端末装置２０は、鍵配信サーバ１０からこれらの中間鍵等の情報を受信して、セキュア記憶部２０８等に安全に保存しておく。
【０２０２】
以上、本実施形態にかかるセットアップ時における、中間鍵の配信方法について説明した。この配信方法を用いると、各許諾ユーザの端末装置２０がセット鍵を生成するために必要な最低限の中間鍵が配信され、鍵配信サーバ１０と端末装置２０と間の通信量、及び各ユーザの端末装置２０における中間鍵のメモリ量を節約することができる。
【０２０３】
（コンテンツ鍵の配信）
次に、本実施形態にかかる鍵配信サーバ１０における、暗号化されたコンテンツ鍵ｍｅｋの配信に係る処理フローについて簡単に整理する。なお、本実施形態にかかるコンテンツ鍵の配信方法は、上述した基盤技術にかかるコンテンツ配信方法と略同一であるので、図６を再び参照して説明する。
【０２０４】
図６に示すように、コンテンツ鍵の配信時に、本実施形態にかかる鍵配信サーバ１０は、まず、排除ユーザの集合（Ｒ）を決定し、許諾ユーザの集合（Ｎ＼Ｒ）を求める（Ｓ１１２）。次に、セットシステムΨを構成する部分集合から、和集合が（Ｎ＼Ｒ）となるｍ個の部分集合Ｓｉ（ｉ＝１，２，・・・，ｍ）を、ｍが最小となるように選択する（Ｓ１１４）。そして、選択された各部分集合Ｓｉに対応するｍ個のセット鍵ｋ（Ｓｉ）を用いてコンテンツ鍵ｍｅｋをそれぞれ暗号化する（Ｓ１１６）。さらに、許諾ユーザの集合（Ｎ＼Ｒ）又はこの各部分集合Ｓｉを表す情報等の許諾端末識別情報と、ｍ個の暗号化されたコンテンツ鍵ｍｅｋとを、全ユーザの端末装置２０に対して配信する（Ｓ１１８）。
【０２０５】
以上、本実施形態にかかる鍵配信サーバ１０における、コンテンツ鍵ｍｅｋの暗号化方法、及び配信方法について説明した。この暗号化方法を用いると、セット鍵数が必要最小限となるように効率的に部分集合Ｓｉを選択する。このため、必要最小限の個数ｍのセット鍵でコンテンツ鍵ｍｅｋを暗号化するので、暗号化に要する計算量を節減できると同時に、配信すべき暗号化されたコンテンツ鍵ｍｅｋの数を低減させ、通信量を削減することができる。
【０２０６】
（コンテンツ鍵の復号）
次に、本実施形態にかかる各ユーザの端末装置２０における、暗号化されたコンテンツ鍵の復号処理フローについて説明する。なお、本実施形態にかかるコンテンツ鍵の復号方法は、上述した基盤技術にかかるコンテンツ鍵の復号方法と略同一であるので、図７を再び参照して説明する。
【０２０７】
図７に示すように、まず、各ユーザの端末装置は２０、鍵配信サーバ１０から、ｍ個の暗号化されたコンテンツ鍵ｍｅｋと、許諾ユーザの集合（Ｎ＼Ｒ）を表す情報、又はｍ個の部分集合Ｓｉ（ｉ＝１，２，・・・，ｍ）を表す情報などの許諾端末識別情報を受信する（Ｓ１２０）。次いで、端末装置２０は、当該許諾端末識別情報に基づき、自身が所属する部分集合Ｓｉを検索し（Ｓ１２２）、自身がｍ個の部分集合Ｓｉのいずれかに所属しているか否かを判断する（ステップＳ１２４）。
【０２０８】
この結果、端末装置２０は、自身が所属する部分集合Ｓｉを発見したら、上記の鍵生成部１２８のＰＲＳＧを用いて、予め鍵配信サーバ１０から与えられた中間鍵と有向グラフＩとに基づいて、上記部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を導出する（Ｓ１２６）。ＰＲＳＧの構成については既に述べた通りである。もし、その部分集合Ｓｉに対応する中間鍵ｔ（Ｓｉ）を、セットアップ時に鍵配信サーバから与えられて予め保持していれば、端末装置２０は、一度ＰＲＳＧを利用することによりセット鍵ｋ（Ｓｉ）を導出することが可能である。一方、当該中間鍵ｔ（Ｓｉ）を保持していない場合には、端末装置２０は、ＰＲＳＧを繰返し利用することにより所望のセット鍵ｋ（Ｓｉ）を導出することができる。次いで、端末装置２０は、このようにして導出したセット鍵ｋ（Ｓｉ）を用いて、暗号化されたコンテンツ鍵ｍｅｋを復号し、暗号化コンテンツを復号可能となる（Ｓ１２８）。
【０２０９】
一方、上記Ｓ１２４で、自身がいずれの部分集合Ｓｉにも所属していないと判断した場合には、端末装置は、自身が、コンテンツを利用可能な端末装置２０から排除されている旨（排除ユーザである旨）を表示出力して（Ｓ１３０）、コンテンツ鍵ｍｅｋの復号処理を終了する。
【０２１０】
以上のような、本実施形態にかかるコンテンツ鍵復号処理では、全体木構造ＢＴを基本部分木に階層化して、有向グラフＩの有向枝を好適に構成しているのみならず、グラフ間有向枝も設定されているので、端末装置２０は、上記の基盤技術と比べて、中間鍵やセット鍵を得るためのＰＲＳＧを用いた計算量を低減できる。
【０２１１】
［本実施形態の効果］
以上、本実施形態にかかる鍵配信システム１００について詳細に説明した。本実施形態では、上記の基盤技術と比べて、端末装置２０の部分集合からなるセットシステムΨを上記式（２）のように変更し、有向グラフＩを改良している。これは、全ての端末装置２０が割り当てられた大きな全体木構造ＢＴを、小さな基本部分木に分割してｙ階層に階層化し、各基本部分木の中で、上記の基盤技術にかかる鍵導出方法を利用し、さらに、基本部分木間にまたがる部分集合間にも、有向グラフＩの有向枝を設定して、疑似乱数生成器ＰＲＳＧを用いた鍵導出方法を適用するものである。
【０２１２】
かかる構成により、各ユーザの端末装置２０が保持すべき中間鍵の鍵数を低減することができるとともに、鍵導出に要する端末装置２０の計算量も低減することができる。端末装置２０が保持すべき中間鍵の鍵数は、ｋ・ｌｏｇ（ｎ）と正の相関があり、また、鍵導出のための端末装置２０の計算量は、ｋ・ｎ（１／ｋ）と正の相関がある。本実施形態では大きな全体木構造ＢＴを、葉ノード数がｎ（１／ｙ）の小さな基本部分木に分割し、木構造の葉ノード数ｎを小さくして、セットシステムΨや有向グラフＩを設定しているので、端末装置２０の保持すべき鍵数や、鍵導出に要する計算量を低減することができる。
【０２１３】
ここで、図１３を参照して、上記の基盤技術にかかる鍵配信方式と、本実施形態にかかる鍵配信方式とにおける、端末装置２０の保持すべき中間鍵の鍵数を比較する。なお、図１３（Ａ）は、上記基盤技術の鍵配信方式（図４のｎ＝６４、ｋ＝６の例）において各端末装置が保持すべき中間鍵の鍵数を示し、図１３（Ｂ）は、本実施形態の鍵配信方式（図１１のｎ＝６４、ｙ＝２、ｋ＝３の例）において各端末装置２０が保持すべき中間鍵の鍵数を示す表である。
【０２１４】
図１３に示すように、本実施形態の鍵配信方式と基盤技術の鍵配信方式とを比較すると、ユーザ１と６４の端末装置２０では、いずれの方式も、中間鍵の鍵数は１つ、２つであり差異はないものの、それ以外の全てのユーザ２〜６３の端末装置２０では、本実施形態の鍵配信方式の方が基盤技術の鍵配信方式よりも鍵数が少なくなっている。また、全ての端末装置２０が保持すべき鍵数の合計は、基盤技術の鍵配信方式が７０５個であるのに対し、本実施形態の鍵配信方式が４００個である。また、端末装置２０の１つ当たりの鍵数平均値は、基盤技術の鍵配信方式が約１１．０２個であるのに対し、本実施形態の鍵配信方式が６．２５個である。このように、本実施形態の鍵配信方式は、基盤技術の鍵配信方式と比べて、約５６．７％にまで鍵数を低減することができ、各端末装置２０の保持すべき鍵数を大幅に削減して、端末装置２０のメモリの負担を低減できる。
【０２１５】
次に、端末装置２０におけるコンテンツ鍵ｍｅｋ等の復号時に必要な、端末装置２０の計算量について検討する。当該計算量の最悪値は、有向グラフにおいて、有向グラフの先頭座標点（ルート）から最も遠い末尾座標点（有向枝リーフ）までの有向枝の本数（即ち、有向枝設定時のジャンプ回数）で表される。図４で示した例の基盤技術の鍵配信方式では、有向グラフＨ（１→６４）の先頭座標点［１，１］から末尾座標点［１，６４］まで到達するために、１１本の有向枝を経由（１１回のジャンプを実行）しなければならず、これは、ＰＲＳＧを１１回も実行しなければならないことを示している。
【０２１６】
これに対し、図１１で示した例の本実施形態の鍵配信方式では、有向グラフＩ（１→７）及びＩ（ａ→ｈ）において、先頭座標点［１，１］から末尾座標点［１，ｈ］までが最も遠くなるが、このとき必要な有向枝の本数（ジャンプ回数）は１０回であり、上記基盤技術の鍵配信方式の１１回よりも少ない。このように、本実施形態の鍵配信方式では、上記基盤技術の鍵配信方式と比べて、復号時等における鍵計算のための各端末装置２０の計算量も低減することが可能である。
【０２１７】
なお、上記基盤技術の鍵配信方式では、パラメータｋを小さくすれば、図４における長い有向枝（長い距離のジャンプ）を消去して、短い有向枝（短いジャンプ）のみを残るため、各端末装置２０の保持すべき鍵数は削減できるが、各有向グラフＨで先頭座標点から末尾座標点までの有向枝の本数で表される、端末装置２０の計算量が増加してしまうという問題が生じてしまう。
【０２１８】
以上のように、本実施形態の鍵配信方式では、端末装置２０（受信者）数が多い場合であっても、端末装置２０で保持すべき鍵数、及び、暗号鍵を用いた復号時に要する端末装置の計算量の双方を低減することができるといえる。
【０２１９】
［暗号鍵配信システム１００の応用例］
最後に、上記の暗号鍵配信システム１００の応用例を示す。
【０２２０】
（応用例１）
まず、応用例１として、放送暗号化システム３００の構成を図１４に示す。
図１４は、放送衛星を用いた放送暗号化システム（ｂｒｏａｄｃａｓｔ  ｅｎｃｒｙｐｔｉｏｎ  ｓｙｓｔｅｍ）の構成を示すブロック図である。放送暗号化システム３００は、放送チャンネルを介して暗号化されたデータ（所謂、暗号テキスト；ｃｉｐｈｅｒｔｅｘｔ）を受信機３１０に送信する。ここで、放送暗号化システム３００における放送チャンネルは、例えば、衛星放送配信チャンネルである。また、暗号テキストとして送信されるデータは、例えば、暗号鍵、音声データ、映像データ、又はテキストデータ等を含むコンテンツである。衛星放送局３０２における管理センタ（ｂｒｏａｄｃａｓｔ  ｔｒｕｓｔｅｄｃｅｎｔｅｒ）３０４は、放送衛星３０６にデータを送信する。放送管理センタ３０４は、例えば、暗号化用の鍵を選択したり、データの暗号化、及びデータ配信を制御する。放送衛星３０６は、データを放送する。住居３０８に設置された受信機３１０は、例えば、衛星放送受信機を備え、放送されてくるデータを受信する。他の複数の受信機３１０も放送されてくるデータを受信することができる。このようにして、管理センタ３０４は、受信機３１０から成る受信機グループ内の各受信機３１０にデータを送信することができる。後述するように、管理センタ３０４は、認証されている受信機３１０のみが放送されたデータを復号することができるように、放送データを暗号化する。なお、図１４には、放送衛星３０６を用いた放送システムを示しているが、ケーブルテレビジョンやコンピュータネットワーク等、この他の放送チャンネルを用いてもよい。
【０２２１】
以上、暗号鍵配信システム１００の一応用例である放送暗号化システム３００の構成について述べた。簡単に暗号鍵配信システム１００との関係を整理しておくと、管理センタ３０４が鍵配信サーバ１０（本発明の情報処理装置）に対応し、受信機３１０が端末装置２０（本発明の端末装置）に対応する。そして、これらを接続するネットワークを仲介するのが放送衛星３０６である。
【０２２２】
（応用例２）
次に、応用例２として、放送暗号化システム４００の構成を図１５に示す。
図１５は、データ媒体を用いた放送暗号化システム４００の構成を示すブロック図である。放送暗号化システム４００において、放送チャンネルは、データ記憶媒体の配布である。媒体製造業者４０２内の管理センタ４０４は、例えば、読出専用記憶媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）、又は書換可能記憶媒体（例えば、ＣＤ−ＲＷ、ＤＶＤ−ＲＷ等）等の記憶媒体４０６の各個体（ａｒｔｉｃｌｅ  ｏｆ  ｄａｔａ  ｍｅｄｉａ）にデータを保存する。読出専用記憶媒体については、管理センタ４０４は、暗号化されたコンテンツ鍵及び暗号化されたコンテンツを記録し、認証されたユーザのみがデータを復号し、暗号化されているコンテンツ（例えば、音声、映像、又はテキスト等）にアクセスできるようにしている。一方、書換可能記憶媒体に対し、管理センタ４０４は、暗号化されたコンテンツ鍵を記録し、認証された記録装置のみが対応するデータを記録媒体に記録できるようにしている。媒体製造業者４０２は、例えば、小売店等の配布仲介者（ｄｉｓｔｒｉｂｕｔｉｏｎ  ｏｕｔｌｅｔ）４０８に記憶媒体４０６を送付する。配布仲介者４０８は、記憶媒体４１０を住居４１２の受信機４１４に提供する。例えば、配布仲介者４０８は、記憶媒体４１０を個人に販売し、この個人が記憶媒体４１０を住居４１２に持ち帰り、記憶媒体４１０を受信機４１４に挿入する。例えば、受信機４１４は、ＣＤプレーヤ、ＤＶＤプレーヤ、又はコンピュータ等、記憶媒体４１０に記録されているデータを読み出して再生する装置であってもよい。他の具体例としては、受信機４１４は、例えば、ＤＶＤ−ＲＷドライブ等、記憶媒体４１０にデータを記録し、及び記憶媒体４１０からデータを読み出すことが可能なディスク装置であってもよい。管理センタ４０４は、認証されている受信機４１４のみが、暗号化されているデータを復号することができるように、データを暗号化する。
【０２２３】
以上、暗号鍵配信システム１００の一応用例である放送暗号化システム４００の構成について述べた。簡単に暗号鍵配信システム１００との関係を整理しておくと、管理センタ４０４が鍵配信サーバ１０（本発明の情報処理装置）に対応し、受信機４１４が端末装置２０（本発明の端末装置）に対応する。そして、これらを接続するネットワークの代わりに、配布仲介者４０８により配布される記憶媒体４０６、４１０が介在している。
【０２２４】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０２２５】
例えば、上記の木構造設定部１０２は、上から下に枝が広がった木構造を想定していたが、必ずしもこれに限定されず、下から上、左から右、又は右から左など、任意の方向に向かって枝が広がった木構造を有していてもよい。この場合、各中間ノードに対応付けされる部分集合の定義は、これに適合するように変更されねばならない。しかし、この変更は、上記の木構造設定部１０２が設定した木構造を回転して配置するだけであり、いずれの場合においても意味するところは完全に同一である。また、上記の有向枝設定部１０６及び部分木間有向枝設定部１０８は、左から右、又は右から左に座標軸を設定して有向グラフＩ’及びＩを構築したが、この座標軸の方向を反転させたり、左右方向以外にも上下方向等の任意の方向に変更したりすることも可能である。つまり、上記の説明においては、便宜的に上下方向、又は左右方向を基準にして各種パラメータの定義を行ったが、一般庶民又は当業者の有すべき常識に照らして考えると、仮に木構造又は有向グラフを回転又は反転して上下左右の関係を変更したとしても、完全に同一の技術的範囲に属するものと了解される。
【０２２６】
また、上記実施形態では、図９のように、葉ノード数ｎ＝６４の全体木構造ＢＴをｙ＝２階層に階層化したが、本発明は、かかる例に限定されず、階層数を表すパラメータｙは、任意の自然数に設定可能であり、３以上の階層に階層化してもよい。例えば、ｎ＝６４の全体木構造ＢＴを、４個の葉ノードを有する高さ２の基本部分木に分割して、ｙ＝３階層に階層化しもよい。この場合、全体木構造ＢＴを、１つの最上位階層の基本部分木と、４つの中間階層の基本部分木と、１６つの最下位階層の基本部分木とに分割し、最上位階層の基本部分木の葉ノードに各中間階層の基本部分木の根ノードを一致させ、各中間階層の基本部分木の葉ノードに各最下位階層の基本部分木の根ノードを一致させるように木構造を構成することができる。
【０２２７】
また、部分木間有向枝設定部１０８によって、相異なる基本部分木の有向グラフＩ間に跨って設定される有向枝の設定手法は、図１１の例に限定されず、多様に設計変更可能である。このとき、下位階層の基本部分木の有向グラフＩの部分集合が、上位階層の基本部分木の有向グラフＩの部分集合に包含されるように、部分集合間に有向枝を設定することが鍵数低減の観点から好ましいが、かかる例に限定されず、包含関係とは無関係に有向枝を設定することも可能である。
【図面の簡単な説明】
【０２２８】
【図１】本発明の一実施形態に係る暗号鍵配信システムを示す説明図である。
【図２】同実施形態に係る鍵配信サーバ及び端末装置のハードウェア構成を示すブロック図である。
【図３】基盤方式に係る２分木構造を示す説明図である。
【図４】基盤方式に係る有向グラフを示す説明図である。
【図５】基盤方式に係る有向グラフ算出方法を示す流れ図である。
【図６】基盤方式に係るコンテンツ鍵の配信方法を示す流れ図である。
【図７】基盤方式に係るセット鍵生成方法を示す流れ図である。
【図８】本発明の一実施形態に係る鍵配信サーバ及び端末装置の機能構成を示すブロック図である。
【図９】同実施形態に係る２分木の全体木構造を示す説明図である。
【図１０】同実施形態に係る有向グラフを示す説明図である。
【図１１】同実施形態に係る部分木間の有向枝が設定された有向グラフを示す説明図である。
【図１２】同実施形態に係るコンテンツ鍵の配信方法を示す流れ図である。
【図１３】基盤方式と同実施形態に係る鍵配信方式との比較を示した比較表である。
【図１４】同実施形態に係る暗号鍵配信システムの一応用例を示した説明図である。
【図１５】同実施形態に係る暗号鍵配信システムの一応用例を示した説明図である。
【符号の説明】
【０２２９】
５        ネットワーク
１０      鍵配信サーバ
２０      端末装置
１００    暗号鍵配信システム
１０２    木構造設定部
１０４    座標軸設定部
１０６    有向枝設定部
１０８    部分木間有向枝設定部
１１０    有向グラフ生成部
１１２    初期中間鍵設定部
１１４    鍵生成部
１１６    暗号化部
１１８    送信部
１２０    部分集合決定部
１２４    受信部
１２６    判断部
１２８    鍵生成部
１３０    復号部
２０２    コントローラ
２０４    演算ユニット
２０６    入出力インタフェース
２０８    セキュア記憶部
２１０    メイン記憶部
２１２    ネットワークインタフェース
２１６    メディアインタフェース
２１８    情報メディア
【図１】
2008131076.tif 000005
【図２】
2008131076.tif 000006
【図３】
2008131076.tif 000007
【図４】
2008131076.tif 000008
【図５】
2008131076.tif 000009
【図６】
2008131076.tif 000010
【図７】
2008131076.tif 000011
【図８】
2008131076.tif 000012
【図９】
2008131076.tif 000013
【図１０】
2008131076.tif 000014
【図１１】
2008131076.tif 000015
【図１２】
2008131076.tif 000016
【図１３】
2008131076.tif 000017
【図１４】
2008131076.tif 000018
【図１５】
2008131076.tif 000019