(57)【要約】【課題】各種のブロードキャスト・エンクリプション方式の鍵配信方法における有向グラフ生成方法を改良した鍵提供システム、端末装置、及び情報処理方法を提供すること。【解決手段】複数の端末装置の組合せを表す複数の集合の中から選択され、前記複数の端末装置の一部又は全部を表す前記集合に関する情報を取得する取得部と、前記情報に含まれ、かつ、自身が属する前記集合を抽出する抽出部と、複数の有向枝により形成された所定の有向グラフの中で、抽出された前記集合に対応する鍵を生成するのに必要な前記有向枝のみを生成する有向グラフ生成部と、を備えることを特徴とする、端末装置が提供される。【選択図】図１０
2008236380.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末装置と、データの暗号化又は復号に用いる鍵を所定の前記端末装置に提供することが可能な情報処理装置とにより構成される鍵提供システムであって、
前記情報処理装置は、
複数の前記端末装置の組合せを表す集合が各々に対応付けられた複数の座標点を有する座標軸上に、前記座標点間を結ぶ有向枝を配置して形成された所定の有向グラフを取得する取得部と、
前記複数の端末装置の一部又は全部を表す前記集合を選択する選択部と、
前記所定の有向グラフに基づき、選択された前記集合に対応する前記鍵を生成する鍵生成部と、
生成された前記鍵と前記選択された集合に関する情報とを前記複数の端末装置に提供する提供部と、
を備え、
前記端末装置は、
前記生成された鍵と前記選択された集合に関する情報とを取得する取得部と、
前記所定の有向グラフを形成する前記有向枝の中で、自身が属する前記選択された集合に対応する前記鍵を生成するのに必要な前記有向枝を生成する有向グラフ生成部と、
生成された前記有向枝により形成される有向グラフに基づいて、前記自身が属する選択された集合に対応する前記鍵を生成する鍵生成部と、
を備えることを特徴とする、鍵提供システム。
【請求項２】
複数の端末装置の組合せを表す複数の集合の中から選択され、前記複数の端末装置の一部又は全部を表す前記集合に関する情報を取得する取得部と、
前記情報に含まれ、かつ、自身が属する前記集合を抽出する抽出部と、
複数の有向枝により形成された所定の有向グラフの中で、抽出された前記集合に対応する鍵を生成するのに必要な前記有向枝を生成する有向グラフ生成部と、
を備えることを特徴とする、端末装置。
【請求項３】
前記所定の有向グラフは、所定の第１の有向グラフに基づき、前記第１の有向グラフを形成する複数の有向枝の一部又は全部をより短い有向枝に置換して生成された第２の有向グラフであることを特徴とする、請求項２に記載の端末装置。
【請求項４】
前記所定の有向グラフは、所定の第１の有向グラフに基づき、前記第１の有向グラフを形成する複数の有向枝の一部又は全部をより長い有向枝に置換して生成された第３の有向グラフであることを特徴とする、請求項２に記載の端末装置。
【請求項５】
前記所定の有向グラフは、所定の第１の有向グラフに基づき、前記第１の有向グラフを形成する複数の有向枝の一部又は全部をより長い有向枝に置換して生成された第３の有向グラフについて、さらに、前記第３の有向グラフを形成する複数の有向枝の一部又は全部をより短い有向枝に置換して生成された第４の有向グラフであることを特徴とする、請求項２に記載の端末装置。
【請求項６】
前記有向グラフ生成部により生成された前記有向枝に基づいて前記鍵を生成する鍵生成部をさらに備えることを特徴とする、請求項２に記載の端末装置。
【請求項７】
前記取得部は、前記集合に関する情報と共に、当該集合に対応する前記鍵で暗号化されたコンテンツ又はコンテンツ鍵を取得し、
前記鍵生成部により生成された前記鍵を用いて前記暗号化されたコンテンツ又はコンテンツ鍵を復号する復号部をさらに備えることを特徴とする、請求項６に記載の端末装置。
【請求項８】
前記取得部は、ネットワークを介して前記集合に関する情報を受信することを特徴とする、請求項２に記載の端末装置。
【請求項９】
前記取得部は、所定の記録媒体に記録された前記集合に関する情報を読み出すことを特徴とする、請求項２に記載の端末装置。
【請求項１０】
前記鍵生成部は、前記有向枝の始端Ｓ０に対応する前記鍵ｋ（Ｓ０）の入力に応じて、前記有向枝の終端の座標点Ｓ１に対応する前記鍵ｋ（Ｓ１）を生成することを特徴とする、請求項６に記載の端末装置。
【請求項１１】
前記鍵は、前記コンテンツ又はコンテンツ鍵を暗号化又は復号するためのセット鍵ｋと、当該セット鍵ｋを生成するための中間鍵ｔとにより構成され、
前記鍵生成部は、前記有向枝の始端Ｓ０に対応する前記中間鍵ｔ（Ｓ０）の入力に応じて、前記有向枝の始端Ｓ０に対応する前記セット鍵ｋ（Ｓ０）と、前記有向枝の終端Ｓ１に対応する前記中間鍵ｔ（Ｓ１）とを生成することを特徴とする、請求項６に記載の端末装置。
【請求項１２】
端末装置における情報処理方法であって、
複数の端末装置の組合せを表す複数の集合の中から選択され、前記複数の端末装置の一部又は全部を表す前記集合に関する情報を取得する取得ステップと、
前記情報に含まれ、かつ、自身が属する前記集合を抽出する抽出ステップと、
複数の有向枝により形成された所定の有向グラフの中で、抽出された前記集合に対応する鍵を生成するのに必要な前記有向枝を生成する有向グラフ生成ステップと、
を含むことを特徴とする、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵提供システム、端末装置、及び端末装置に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータ（以下、ＰＣ）、携帯電話、及びデジタル家電等の情報機器が一般にも広く普及してきている。また、これらの情報機器やそれらの間を繋ぐ情報通信に関する技術が非常に大きく発達してきており、これらの情報機器を利用した音楽配信や映像配信といったコンテンツ配信サービスが広く展開されるようになってきている。例えば、ＣＡＴＶ（Ｃｏｍｍｕｎｉｔｙ  Ａｎｔｅｎｎａ  ＴｅｌｅＶｉｓｉｏｎ）、衛星放送、又はインターネット等を利用した有料放送、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）又はＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等物理メディアを利用したコンテンツ販売等がコンテンツ配信サービスの一例である。
【０００３】
しかし、このようなコンテンツ配信サービスを提供するには、当該サービスの提供者（以下、システム管理者）と視聴者との間で締結した契約に基づき、その契約者のみがコンテンツを取得できるようにする仕組みが必要とされる。この問題に対し、例えば、システム管理者が契約者に対して所定の鍵を提供しておき、暗号化されたコンテンツＣと共に、コンテンツＣを暗号化するために利用したコンテンツ鍵ｍｅｋを前記所定の鍵により生成するためのヘッダ情報ｈとを配信する仕組みが考案されている。
【０００４】
上記の仕組みを実現させる具体的な一手段として、ブロードキャスト・エンクリプション（Ｂｒｏａｄｃａｓｔ  Ｅｎｃｒｙｐｔｉｏｎ）方式と呼ばれるコンテンツ配信方式が知られている。このブロードキャスト・エンクリプション方式とは、各契約者を集合の要素に対応付けた上で、契約者全体を表す契約者集合を複数の部分集合に分割し、特定の部分集合に属する契約者のみがコンテンツ鍵ｍｅｋを取得できるようなヘッダｈを配信する方式である。つまり、当該方式を適用すると、システム管理者が指定した特定の契約者を排除してコンテンツＣの配信を実現することができる。しかし、現実的には、システム管理者側のサーバ装置（以下、センタ）及び契約者側の端末装置におけるコンテンツ鍵ｍｅｋの生成に係る演算負荷、及びサーバ装置と端末装置との間の通信負荷等を考慮すると、従来のブロードキャスト・エンクリプション方式をより効率化する必要がある。
【０００５】
具体的には、上記のコンテンツ配信をする際に、センタが配信するヘッダｈのサイズに応じて増大する通信量、各端末装置が保持すべき鍵数に応じて増大するメモリ量、及び各端末装置がコンテンツ鍵ｍｅｋを生成するために必要な計算量を如何にして低減させるかということが問題となる。上記の各量は、契約者集合の分割方法によって大きく異なる。そこで、効率的なコンテンツ配信を実現させるため、契約者集合の分割方法に工夫を凝らした種々のブロードキャスト・エンクリプション方式が提案されている。例えば、下記の非特許文献１には、上記の各量を低減させるための一つの手段として、Ｎｕｔｔａｐｏｎｇ  Ａｔｔｒａｐａｄｕｎｇ  ａｎｄ  Ｈｉｄｅｋｉ  Ｉｍａｉらにより、Ｓｕｂｓｅｔ  Ｉｎｃｒｅｍｅｎｔａｌ  Ｃｈａｉｎ  Ｂａｓｅｄ  Ｂｒｏａｄｃａｓｔ  Ｅｎｃｒｙｐｔｉｏｎ方式（以下、ＡＩ０５方式）と呼ばれるコンテンツ配信方式が開示されている。
【０００６】
【非特許文献１】Nuttapong Attrapadung andHideki Imai,”Subset Incremental Chain Based Broadcast Encryption with ShorterCiphertext”,The 28th Symposium on Information Theory and ItsApplications(SITA2005)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
また、本件出願人は、上記の非特許文献１に記載のコンテンツ配信方式よりも、各端末装置が鍵を保持するために要求されるメモリ量を低減することが可能な第１の改良方式（以下、Ａ０６（Ａ）方式）、各端末装置がコンテンツ鍵を生成するために要求される計算量を低減することが可能な第２の改良方式（以下、Ａ０６（Ｂ）方式）、及び上記のメモリ量と計算量とを低減させることが可能な第３の改良方式（以下、Ａ０６（Ａ＋Ｂ）方式）を開発し、既に日本国特許庁に特許出願している（Ａ０６（Ａ）方式：特願２００６−３１０１８２、Ａ０６（Ｂ）方式：特願２００６−３１０２１３、Ａ０６（Ａ＋Ｂ）方式：特願２００６−３１０２２６）。当該各方式の特徴は、擬似乱数生成器を利用してコンテンツ鍵ｍｅｋを生成する際に、各方式固有の有向グラフにより表現される鍵生成アルゴリズムに基づき、擬似乱数生成演算を実行する点にある。
【０００８】
しかし、上記の各方式では、各端末装置がコンテンツ鍵ｍｅｋを生成する際に、予め各端末装置が保持している各有向グラフの情報を利用することが示唆されているのみであり、具体的な手段については示されていなかった。そもそも、契約者数が多い場合には、各端末装置が保持すべき有向グラフの情報量が膨大になるため、その情報を端末装置に格納しておくのは現実的に困難である。さらに、各端末装置がセンタと同様に有向グラフを算出するという方法も考えられるが、各端末装置の演算量が膨大になり実現が困難である。
【０００９】
そこで、本件出願人は、各端末装置が鍵生成する際、必ずしも全ての有向グラフが必要とされない点に着目し、端末装置毎に必要とされる有向グラフを算出することが可能な技術を開発した。この技術により、各端末装置が全ての有向グラフの情報を算出する必要がなくなり、鍵生成の際に要求される演算負荷が低減されるため、各端末装置が各々所要の有向グラフを生成して鍵を導出するというアプローチが実現可能になる。
【００１０】
つまり、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、各端末装置が鍵生成に用いる所要の有向グラフを算出するために必要とされる演算量を低減させることが可能な、新規かつ改良された鍵提供システム、端末装置、及び情報処理方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明のある観点によれば、複数の端末装置と、データの暗号化又は復号に用いる鍵を所定の前記端末装置に提供することが可能な情報処理装置とにより構成される鍵提供システムが提供される。前記情報処理装置は、複数の前記端末装置の組合せを表す集合が各々に対応付けられた複数の座標点を有する座標軸上に、前記座標点間を結ぶ有向枝を配置して形成された所定の有向グラフを取得する取得部と、前記複数の端末装置の一部又は全部を表す前記集合を選択する選択部と、前記所定の有向グラフに基づき、選択された前記集合に対応する前記鍵を生成する鍵生成部と、生成された前記鍵と前記選択された集合に関する情報とを前記複数の端末装置に提供する提供部と、を備えることを特徴とする。また、前記端末装置は、前記生成された鍵と前記選択された集合に関する情報とを取得する取得部と、前記所定の有向グラフを形成する前記有向枝の中で、自身が属する前記選択された集合に対応する前記鍵を生成するのに必要な前記有向枝を生成する有向グラフ生成部と、生成された前記有向枝により形成される有向グラフに基づいて、前記自身が属する選択された集合に対応する前記鍵を生成する鍵生成部と、を備えることを特徴とする。なお、所定の有向グラフには、有向枝が存在しない空集合に対応する有向グラフを含んでいてもよい。その場合、上記の取得部は、複数の前記端末装置の組合せを表す集合が各々に対応付けられた複数の座標点を有する座標軸上に、前記座標点間を結ぶ０本以上の有向枝を配置して形成された所定の有向グラフを取得する。
【００１２】
そして、上記課題を解決するために、本発明の別の観点によれば、複数の端末装置の組合せを表す複数の集合の中から選択され、前記複数の端末装置の一部又は全部を表す前記集合に関する情報を取得する取得部と、前記情報に含まれ、かつ、自身が属する前記集合を抽出する抽出部と、複数の有向枝により形成された所定の有向グラフの中で、抽出された前記集合に対応する鍵を生成するのに必要な前記有向枝を生成する有向グラフ生成部と、を備えることを特徴とする、端末装置が提供される。
【００１３】
また、前記所定の有向グラフは、所定の第１の有向グラフに基づき、前記第１の有向グラフを形成する複数の有向枝の一部又は全部をより短い有向枝に置換して生成された第２の有向グラフであることを特徴とする構成であってもよい。
【００１４】
また、前記所定の有向グラフは、所定の第１の有向グラフに基づき、前記第１の有向グラフを形成する複数の有向枝の一部又は全部をより長い有向枝に置換して生成された第２の有向グラフであることを特徴とする構成であってもよい。
【００１５】
また、前記所定の有向グラフは、所定の第１の有向グラフに基づき、前記第１の有向グラフを形成する複数の有向枝の一部又は全部をより長い有向枝に置換して生成された第２の有向グラフについて、さらに、前記第２の有向グラフを形成する複数の有向枝の一部又は全部をより短い有向枝に置換して生成された第３の有向グラフであることを特徴とする構成であってもよい。
【００１６】
また、前記有向グラフ生成部により生成された前記有向枝に基づいて前記鍵を生成する鍵生成部をさらに備えることを特徴とする構成であってもよい。
【００１７】
また、前記取得部は、前記集合に関する情報と共に、当該集合に対応する前記鍵で暗号化されたコンテンツ又はコンテンツ鍵を取得する構成であってもよい。さらに、前記鍵生成部により生成された前記鍵を用いて前記暗号化されたコンテンツ又はコンテンツ鍵を復号する復号部をさらに備えることを特徴とする構成であってもよい。
【００１８】
また、前記取得部は、ネットワークを介して前記集合に関する情報を受信することを特徴とする構成であってもよい。
【００１９】
また、前記取得部は、所定の記録媒体に記録された前記集合に関する情報を読み出すことを特徴とする構成であってもよい。
【００２０】
また、前記鍵生成部は、前記有向枝の始端Ｓ０に対応する前記鍵ｋ（Ｓ０）の入力に応じて、前記有向枝の終端の座標点Ｓ１に対応する前記鍵ｋ（Ｓ１）を生成することを特徴とする構成であってもよい。
【００２１】
また、前記鍵は、前記コンテンツ又はコンテンツ鍵を暗号化又は復号するためのセット鍵ｋと、当該セット鍵ｋを生成するための中間鍵ｔとにより構成されていてもよい。さらに、前記鍵生成部は、前記有向枝の始端Ｓ０に対応する前記中間鍵ｔ（Ｓ０）の入力に応じて、前記有向枝の始端Ｓ０に対応する前記セット鍵ｋ（Ｓ０）と、前記有向枝の終端Ｓ１に対応する前記中間鍵ｔ（Ｓ１）とを生成することを特徴とする構成であってもよい。
【００２２】
そして、上記課題を解決するために、本発明の別の観点によれば、端末装置における情報処理方法が提供される。当該情報処理方法は、複数の端末装置の組合せを表す複数の集合の中から選択され、前記複数の端末装置の一部又は全部を表す前記集合に関する情報を取得する取得ステップと、前記情報に含まれ、かつ、自身が属する前記集合を抽出する抽出ステップと、複数の有向枝により形成された所定の有向グラフの中で、抽出された前記集合に対応する鍵を生成するのに必要な前記有向枝を生成する有向グラフ生成ステップと、を含むことを特徴とする。
【００２３】
かかる構成により、各種のブロードキャストエンクリプション方式において、情報処理装置の一例である鍵配信サーバにより選択された各集合に対応する鍵を導出する際に、各端末装置が所要の有向グラフを算出して鍵生成することが可能になる。
【発明の効果】
【００２４】
以上説明したように本発明によれば、各端末装置が鍵生成に用いる所要の有向グラフを算出するために必要とされる演算量を低減させることが可能になる。
【発明を実施するための最良の形態】
【００２５】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２６】
［概要］
まず、本発明の実施形態について説明するに先立ち、本発明の技術を適用することが可能なＡＩ０５方式、Ａ０６（Ａ）方式、Ａ０６（Ｂ）方式、及びＡ０６（Ａ＋Ｂ）方式について簡単に説明し、その問題点を指摘する。もちろん、本発明の技術を適用可能な鍵配信方式はこれらの方式に限定されるものではなく、当業者であればこれらの例を参考にして容易に他の鍵配信方式に本発明の技術を適用することが可能である。
【００２７】
（ＡＩ０５方式の概要）
ＡＩ０５方式では、従来のブロードキャスト・エンクリプション方式と同様、鍵提供システムに含まれる各端末装置を集合の要素に対応付け、端末装置全体の集合を考える。そして、当該集合を分割して得られる複数の部分集合を利用して鍵配信を実行する。まず、鍵配信サーバは、論理二分木（ＢＴ；Ｂｉｎａｒｙ  Ｔｒｅｅ）を形成して各端末装置を葉ノードに対応付ける。次いで、鍵配信サーバは、所定の規則に則って上記の部分集合を要素とする複数の「部分集合の集合」を生成し、当該各部分集合の集合をＢＴの根ノード、及び各中間ノードに対応付ける。さらに、鍵配信サーバは、上記の部分集合の集合に含まれる複数の部分集合を所定の規則（以下、ジャンプと呼ぶことがある）に基づいて関連付ける。そして、この部分集合間の関連を表すのが有向グラフ又は有向枝である。
【００２８】
上記の有向グラフは、上記の部分集合の集合に含まれる各部分集合が各座標点に対応付けられた座標軸上に形成され、複数の座標点間を連結する有向枝（上記のジャンプを表す）により構成されている。鍵配信サーバは、上記のＢＴに含まれる根ノード、及び各中間ノードに対応付けられた部分集合の集合毎に、それに含まれる複数の部分集合間の関係が表現された有向グラフを形成する。
【００２９】
さらに、鍵配信サーバは、配信先となる端末装置が含まれる部分集合を選択し、当該部分集合が含まれる有向グラフを特定する。そして、鍵配信サーバは、特定された有向グラフに基づいて擬似乱数生成器（ＰＲＳＧ；Ｐｓｅｕｄｏ−Ｒａｎｄｏｍ  Ｓｅｑｕｅｎｃｅ  Ｇｅｎｅｒａｔｏｒ）による演算を繰り返すことによって鍵を生成する。ＡＩ０５方式の特徴は、従来のブロードキャスト・エンクリプション方式に比べて、通信量、端末装置が保持すべき鍵数、鍵生成に要する計算量を削減するように、全ての端末装置を表す集合を部分集合に分割し、上記の有向グラフに基づいて鍵生成する点にある。
【００３０】
（Ａ０６（Ａ）、Ａ０６（Ｂ）、Ａ０６（Ａ＋Ｂ）方式の概要）
Ａ０６（Ａ）方式は、有向グラフを構成する有向枝の長さを短くする処理を加えることにより、上記のＡＩ０５方式よりも各端末装置が保持すべき鍵数を低減させる改良が施された改良方式である。また、Ａ０６（Ｂ）方式は、有向枝の長さが長くなるように有向グラフを形成することにより、上記のＡＩ０５方式よりも鍵生成に要する計算量を低減させる改良が施された改良方式である。そして、Ａ０６（Ａ＋Ｂ）方式は、Ａ０６（Ｂ）方式と同様にして有向枝の長い有向グラフを形成した後、Ａ０６（Ａ）方式と同様に所定の有向枝を短い有向枝に置換することにより、上記のＡＩ０５方式よりも各端末装置が保持すべき鍵数、及び鍵生成に要する計算量を低減させる改良が施された改良方式である。
【００３１】
（問題点の指摘）
上記のＡＩ０５方式、Ａ０６（Ａ）方式、Ａ０６（Ｂ）方式、及びＡ０６（Ａ＋Ｂ）方式は、通信量、端末装置が保持すべき鍵数、及び鍵生成に要する計算量を低減させる効果において非常に優れた方式であるが、各端末装置が鍵生成に要する有向グラフの情報を如何にして取得するかということについて明確な手段が示されていない。但し、当業者であれば、各端末装置が予め有向グラフの情報を全て保持しているか、又は各端末装置が鍵配信サーバと同じアルゴリズムに基づいて有向グラフを生成すればよいことは容易に発想できるであろう。
【００３２】
しかし、実際に利用される鍵提供システムを想定すると、各端末装置が保持すべき有向グラフの情報量、及び有向グラフを生成するための計算量が膨大であるため、一般的な端末装置が有する限られたリソースの中で有向グラフの保持又は生成をすることは非常に困難であることが分かる。より具体的に、上記のＡ０６（Ｂ）方式の場合で考えてみると、通常、鍵提供システムに含まれる端末装置の数ｎはｎ＝２３２程度であるため、有向枝１本の情報を８ｂｙｔｅ程度で表現できたとしても、各端末装置が保持すべき情報量は約３２ＧＢｙｔｅにもなるため、一般的な端末装置の記憶部に保持することは困難である。もちろん、このような膨大な有向グラフの情報をネットワーク又は記録媒体を利用して配信することが困難であることも容易に理解されるであろう。
【００３３】
一方、有向グラフを生成する場合には、端末装置の数ｎ＝２３２に対して（ｎ−１）本の有向枝を算出する必要があるため、各端末装置が有向グラフを生成するために要する演算負荷が非常に大きいことも容易に理解されるであろう。このように、これまでの鍵配信方式は、各端末装置が鍵生成に要する有向グラフの情報を取得する手段に関する非常に深刻な問題を孕んでおり、これを解決する手段を提供することが本発明の目的とするところである。特に、各端末装置が有向グラフを生成するために要する演算負荷を低減させ、各端末装置が所要の有向グラフを生成することができる手段を提供することを目的とする。
【００３４】
以上、本発明の技術を適用可能な鍵配信方式について簡単に説明し、その問題点を指摘すると共に、本発明の目的とするところを明確に示した。以下、上記の各鍵配信方式に対して本発明の技術を適用する手段を開示すると共に上記の各鍵配信方式の詳細についても説明する。
【００３５】
＜第１実施形態＞
以下、本発明の第１実施形態に係る鍵提供システム１００の構成、及び鍵配信に係る具体的な方式について詳細に説明する。本実施形態は、ＡＩ０５方式の鍵提供システム１００において、端末装置が効率的に有向グラフを生成する手段を備える点に特徴を有する。
【００３６】
［鍵提供システム１００の構成］
まず、図１を参照しながら、本発明の第１実施形態に係る鍵提供システム１００の構成について簡単に説明する。図１は、本実施形態に係る鍵提供システム１００の構成を示す説明図である。
【００３７】
図１を参照すると、鍵提供システム１００は、主に、鍵配信サーバ１０２と、端末装置１２２と、ネットワーク１０とにより構成される。なお、鍵配信サーバ１０２は、情報処理装置の一例である。
【００３８】
（ネットワーク１０）
まず、ネットワーク１０について説明する。ネットワーク１０は、鍵配信サーバ１０２と端末装置１２２とを双方向通信又は一方向通信可能に接続する通信回線網である。ネットワーク１０は、例えば、インターネット、電話回線網、衛星通信網、同報通信路等の公衆回線網、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＩＰ−ＶＰＮ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ−Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）、ワイヤレスＬＡＮ等の専用回線網等により構成されており有線／無線を問わない。
【００３９】
（鍵配信サーバ１０２）
次に、鍵配信サーバ１０２について簡単に説明する。鍵配信サーバ１０２が有する詳細な機能構成については後述する。鍵配信サーバ１０２は、種々の電子データを暗号化して配信することが可能である。鍵配信サーバ１０２は、例えば、コンテンツを暗号化して配信することが可能である。このとき、鍵配信サーバ１０２は、コンテンツを暗号化又は復号するためのコンテンツ鍵を用いてコンテンツを暗号化する。さらに、鍵配信サーバ１０２は、所定の端末装置１２２に対してコンテンツ鍵を暗号化して配信することが可能である。このとき、鍵配信サーバ１０２は、コンテンツ鍵を所定の端末装置１２２だけが復号できるように、所定のアルゴリズムに基づいて生成された鍵を利用してコンテンツ鍵を暗号化することが可能である。かかる構成により、コンテンツの再生を許諾していない端末装置１２２に対してコンテンツ鍵が配信されたとしても、所定の端末装置１２２しか復号できないため、高いセキュリティが保たれる。なお、コンテンツ鍵は、暗号化用のコンテンツ鍵と復号用のコンテンツ鍵とにより構成されてもよいし、復号用のコンテンツ鍵が暗号化されて配信される構成であってもよい。
【００４０】
上記の構成を実現するため、鍵配信サーバ１０２は、例えば、コンテンツ鍵を暗号化又は復号に用いるセット鍵を生成する。このとき、鍵配信サーバ１０２は、複数の端末装置１２２を複数のグループに分け、各グループに各々対応する複数のセット鍵を生成する。但し、鍵配信サーバ１０２は、所定の集合を構成する複数の部分集合によってグループを表現し、各部分集合間の関係を表す有向グラフを利用してセット鍵を生成する。そのため、鍵配信サーバ１０２は、有向グラフを他の装置から取得するか、若しくは所定のアルゴリズムに基づいて生成することが可能である。
【００４１】
また、鍵配信サーバ１０２は、所定のセット鍵を用いてコンテンツ鍵を暗号化する。このとき、鍵配信サーバ１０２は、コンテンツの再生を許諾する端末装置１２２が含まれる少なくとも１つの部分集合を選択し、選択された各部分集合に対応する各セット鍵を利用してコンテンツ鍵を暗号化する。但し、選択された全ての部分集合の和集合に全ての許諾された端末装置１２２が所属するように選択される。
【００４２】
そして、鍵配信サーバ１０２は、暗号化されたコンテンツと共に、暗号化されたコンテンツ鍵と、選択された部分集合の情報とを一部又は全部の端末装置１２２に配信する。なお、端末装置１２２には、自身が所属する全ての部分集合に対応するセット鍵を生成するために必要な少なくとも１つの鍵（セット鍵又は中間鍵）が提供されていると仮定している。また、鍵配信サーバ１０２は、各端末装置１２２が必要とする有向グラフの一部又は全部を生成するための所定のアルゴリズムを提供することも可能である。
【００４３】
上記の構成により、鍵配信サーバ１０２は、所定の端末装置１２２だけが配信されるコンテンツを再生可能にすることができる上、その再生を許可する端末装置１２２の組合せを変更する場合も、暗号化に用いるセット鍵の組合せを変更するだけで容易に対応することが可能になる。
【００４４】
なお、鍵配信サーバ１０２は、セット鍵を生成する際に擬似乱数生成器（ＰＲＳＧ）を利用する。このＰＲＳＧは、所定のシード値を入力することにより長周期の擬似的な乱数列を出力することが可能な装置又はプログラムである。その擬似乱数生成ロジックは、例えば、線形合同法やメルセンヌ・ツイスター法等を用いて実現されるものである。もちろん、他のロジックを用いて擬似乱数を発生させてもよいし、或いは、所定の特殊な擬似乱数列を利用することも可能である。
【００４５】
また、鍵配信サーバ１０２は、サーバ機能を備えたパーソナルコンピュータ（ＰＣ；Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等の情報処理装置により構成することが可能である。従って、鍵配信サーバ１０２は、ネットワーク１０を介して各種の情報を外部装置に送信することが可能である。例えば、鍵配信サーバ１０２は、複数の端末装置１２２にネットワーク１０を介してコンテンツやコンテンツ鍵を配信することが可能である。
【００４６】
また、鍵配信サーバ１０２は、例えば、映像配信サービス、又は電子音楽配信サービス等のコンテンツ配信サービスを提供する機能を有していてもよい。つまり、鍵配信サーバ１０２は、例えば、映画、テレビジョン番組、ビデオプログラム、図表等の動画又は静止画から成る映像（Ｖｉｄｅｏ）コンテンツ、音楽、講演、ラジオ番組等の音声（Ａｕｄｉｏ）コンテンツ、ゲームコンテンツ、文書コンテンツ、又はソフトウェア等のコンテンツを配信することが可能である。但し、鍵配信サーバ１０２は、暗号化されたコンテンツ鍵を配信する構成とすることも可能である。例えば、外部装置により暗号化されたコンテンツを配信させ、鍵配信サーバ１０２は、暗号化されたコンテンツ鍵を配信する構成とすることも可能である。
【００４７】
（端末装置１２２）
次に、端末装置１２２について簡単に説明する。端末装置１２２が有する詳細な機能構成については後述する。端末装置１２２は、ネットワーク１０を介して鍵配信サーバ１０２から種々の情報を取得することが可能である。端末装置１２２は、例えば、暗号化されたコンテンツ及びコンテンツ鍵を取得することが可能である。それと共に、端末装置１２２は、鍵配信サーバ１０２により選択された上記の部分集合に関する情報を取得することが可能である。
【００４８】
また、端末装置１２２は、自己が所属する部分集合に対応するセット鍵を生成するための鍵と、そのセット鍵を生成するための有向グラフを生成する所定のアルゴリズムの情報とを保持している。従って、端末装置１２２は、所定のアルゴリズムに基づいて所要のセット鍵を生成するために必要な有向グラフを算出することが可能である。さらに、端末装置１２２は、予め保持している鍵と、算出した有向グラフとを利用して所望のセット鍵を生成することが可能である。
【００４９】
また、端末装置１２２は、生成したセット鍵を用いてコンテンツ鍵を復号することが可能である。さらに、端末装置１２２は、復号したコンテンツ鍵を用いてコンテンツを復号することが可能である。なお、端末装置１２２は、セット鍵を生成する際、擬似乱数生成器（ＰＲＳＧ）を利用する。このＰＲＳＧは、鍵配信サーバ１０２がセット鍵の生成に利用したものと実質的に同一の構成を有する。
【００５０】
上記の構成により、端末装置１２２は、自己が所属する部分集合に対応するセット鍵を導出するための所要の有向グラフを生成することが可能になる。そのため、端末装置１２２は、全ての有向グラフの情報を保持する必要がない上、現実的な演算負荷の下に有向グラフを生成することが可能になる。その結果、端末装置１２２は、自己が生成した有向グラフに基づいて所要のセット鍵を生成することができる。
【００５１】
また、端末装置１２２は、ネットワーク１０を介して外部装置と情報通信が可能な情報処理端末により構成される。端末装置１２２は、例えば、ＰＣ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、家庭用ゲーム機、ＤＶＤ／ＨＤＤレコーダ、又はテレビジョン受像器等の情報家電、テレビジョン放送用のチューナやデコーダ等により構成される。さらに、端末装置１２２は、携帯型ゲーム機、携帯電話、携帯型映像／音声プレーヤ、ＰＤＡ、又はＰＨＳ等の契約者が持ち運び可能な携帯端末（Ｐｏｒｔａｂｌｅ  Ｄｅｖｉｃｅ）により構成されてもよい。
【００５２】
以上、本実施形態に係る鍵提供システム１００の構成について、図１を参照しながら簡単に説明した。次に、上記の機能を実現することが可能な鍵配信サーバ１０２、及び端末装置１２２のハードウェアの構成について、図２を参照しながら具体的に説明する。
【００５３】
［鍵配信サーバ１０２及び端末装置１２２のハードウェア構成］
ここで、図２を参照しながら、本実施形態に係る鍵配信サーバ１０２及び端末装置１２２のハードウェア構成の一例について説明する。図２は、鍵配信サーバ１０２、又は端末装置１２２の機能を実現することが可能なハードウェア構成を示す説明図である。
【００５４】
図２に示すように、鍵配信サーバ１０２、及び端末装置１２２は、例えば、コントローラ７０２と、演算ユニット７０４と、入出力インターフェース７０６と、セキュア記憶部７０８と、メイン記憶部７１０と、ネットワークインターフェース７１２と、メディアインターフェース７１６とにより構成される。
【００５５】
（コントローラ７０２）
コントローラ７０２は、バスを介して他の構成要素に接続されており、例えば、メイン記憶部７１０に格納されたプログラム及びデータに基づいて各部を制御する機能を実現する。コントローラ７０２は、中央処理装置（ＣＰＵ；Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算処理装置により構成することが可能である。
【００５６】
（演算ユニット７０４）
鍵配信サーバ１０２が備える演算ユニット７０４は、例えば、コンテンツの暗号化／復号、コンテンツ鍵の暗号化／復号、有向グラフの生成、セット鍵の生成、及びセット鍵を生成するために用いる中間鍵の生成を実現することが可能である。また、演算ユニット７０４は、上記の擬似乱数生成器（ＰＲＳＧ）の機能を実現することが可能である。
【００５７】
演算ユニット７０４は、例えば、中央処理装置（ＣＰＵ；Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の演算処理装置により構成されており、メイン記憶部７１０に格納されたプログラム及びデータに基づいて上記の各機能を実現することが可能である。例えば、演算ユニット７０４は、メイン記憶部７１０に記録されているプログラムに基づいて有向グラフを生成することができる。従って、有向グラフを生成するための所定のアルゴリズムは、例えば、メイン記憶部７１０、又はセキュア記憶部７０８等に記録されたプログラムにより表現されうる。また、演算ユニット７０４は、出力結果をメイン記憶部７１０又はセキュア記憶部７０８に記録することができる。なお、演算ユニット７０４は、上記のコントローラ７０２と一体に形成されていてもよい。
【００５８】
（入出力インターフェース７０６）
入出力インターフェース７０６は、主に、ユーザがデータを入力するための入力デバイスと、演算結果又はコンテンツの中身を出力する出力デバイスとに接続されている。例えば、入力デバイスは、キーボード、マウス、トラックボール、タッチペン、キーパッド、又はタッチパネル等であってもよい。これらの入力デバイスは、入出力インターフェース７０６に対して有線又は無線により接続されていてもよい。また、入力デバイスは、有線又は無線により接続された携帯電話やＰＤＡ等の携帯情報端末であってもよい。一方、出力デバイスは、例えば、ディスプレイ等の表示装置、又はスピーカ等の音声出力デバイス等であってもよい。そして、出力デバイスは、入出力インターフェース７０６に対して有線又は無線により接続されていてもよい。
【００５９】
なお、入出力インターフェース７０６は、バスを介して他の構成要素に接続されており、入出力インターフェース７０６を介して入力されたデータをメイン記憶部７１０等に伝達することが可能である。逆に、入出力インターフェース７０６は、メイン記憶部７１０等に格納されたデータ、ネットワークインターフェース７１２等を介して入力されたデータ、又は演算ユニット７０４から出力された演算結果等を出力デバイスに出力する。
【００６０】
（セキュア記憶部７０８）
セキュア記憶部７０８は、主に、コンテンツ鍵、セット鍵、及び中間鍵等の秘匿が必要なデータを安全に格納するための記憶装置である。セキュア記憶部７０８は、例えば、ハードディスク等の磁気記憶装置、光ディスク等の光記憶装置、光磁気記憶装置、又は半導体記憶装置等により構成されていてもよい。また、セキュア記憶部７０８は、例えば、耐タンパ性を有していてもよい。
【００６１】
（メイン記憶部７１０）
メイン記憶部７１０は、例えば、コンテンツ又はコンテンツ鍵等を暗号化するための暗号化プログラム、暗号化されたコンテンツ又はコンテンツ鍵等を復号するための復号プログラム、又はセット鍵や中間鍵を生成するための鍵生成プログラム等が格納される。また、メイン記憶部７１０は、演算ユニット７０４から出力された計算結果を一時的又は永続的に格納したり、入出力インターフェース７０６、ネットワークインターフェース７１２、又はメディアインターフェース７１６等から入力されたデータを記録することができる。メイン記憶部７１０は、例えば、ハードディスク等の磁気記憶装置、光ディスク等の光記憶装置、光磁気記憶装置、又は半導体記憶装置等により構成されていてもよい。
【００６２】
（ネットワークインターフェース７１２）
ネットワークインターフェース７１２は、ネットワーク１０を介して他の通信装置等に接続されており、例えば、暗号化されたコンテンツ又はコンテンツ鍵、セット鍵、中間鍵等、暗号化に用いるパラメータ、及びコンテンツの再生が許可された端末装置１２２の部分集合に関するデータを送受信するための通信部である。ネットワークインターフェース７１２は、バスを介して他の構成要素に接続されており、ネットワーク１０上にある外部装置から受信したデータを他の構成要素に伝達し、又は他の構成要素が有するデータをネットワーク１０上にある外部装置に送信することが可能である。
【００６３】
（メディアインターフェース７１６）
メディアインターフェース７１６は、情報メディア７１８を着脱してデータを読み書きするためのインターフェースであり、バスを介して他の構成要素に接続されている。このメディアインターフェース７１６は、例えば、装着された情報メディア７１８からデータを読み出して他の構成要素に伝達し、又は他の構成要素から供給されたデータを情報メディア７１８に書き込む機能を有する。情報メディア７１８は、例えば、光ディスク、磁気ディスク、半導体メモリ等のポータブル記憶媒体（着脱可能な記憶媒体）であってもよいし、又はネットワーク１０を介さずに比較的近距離で有線／無線接続された情報端末の記憶媒体等であってもよい。
【００６４】
以上、本実施形態に係る鍵配信サーバ１０２、及び端末装置１２２の機能を実現することが可能なハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化した専用のハードウェアにより構成されていてもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。また、利用形態に応じて、メディアインターフェース７１６、又は入出力インターフェース７０６等の構成要素を省略することも可能である。
【００６５】
［鍵配信サーバ１０２の構成］
次に、図３を参照しながら、本実施形態に係る鍵配信サーバ１０２の機能構成について詳細に説明する。図３は、鍵配信サーバ１０２の機能構成を示す説明図である。
【００６６】
図３に示すように、鍵配信サーバ１０２は、主に、木構造設定部１０４と、座標軸設定部１０６と、有向グラフ生成部１１０と、初期中間鍵設定部１１２と、鍵生成部１１４と、暗号化部１１６と、通信部１１８と、部分集合決定部１２０とにより構成される。また、木構造設定部１０４と、座標軸設定部１０６と、有向グラフ生成部１１０とを纏めて「鍵生成ロジック構築ブロック」と呼ぶことにする。そして、初期中間鍵設定部１１２と、鍵生成部１１４とを纏めて「鍵生成ブロック」と呼ぶことにする。
【００６７】
［鍵生成ロジック構築ブロック］
まず、鍵生成ロジック構築ブロックの機能構成について説明する。
【００６８】
（木構造設定部１０４）
まず、図４を参照しながら木構造設定部１０４の機能構成について説明する。木構造設定部１０４は、図４に示す論理二分木ＢＴを生成する機能を有する。以下、木構造設定部１０４による論理二分木ＢＴの構築方法について詳細に説明する。但し、以下の説明の中で、契約者ｕの端末装置１２２のことを単に契約者ｕと表現することがある。また、以下に定義する数学的な表現を用いる。
【００６９】
（１）全ての契約者（１，…，ｎ）を表す集合ＮをＮ＝｛１，…，ｎ｝と定義する。
（但し、ｎは２のべき乗）
（２）自然数ｉ及びｊに対して下記の表現を定義する。
［ｉ，ｊ］＝｛ｉ，ｉ＋１，…，ｊ｝（但し、ｉ＜ｊ）
［ｊ，ｉ］＝｛ｉ，ｉ−１，…，ｊ｝（但し、ｉ＜ｊ）
（ｉ→ｉ）＝（ｉ←ｉ）＝｛｛ｉ｝｝
（ｉ→ｊ）＝｛｛ｉ｝，｛ｉ，ｉ＋１｝，…，｛ｉ，ｉ＋１，…，ｊ｝｝
＝｛［ｉ，ｉ］，［ｉ，ｉ＋１］，…，［ｉ，ｊ］｝（但し、ｉ＜ｊ）
（ｉ←ｊ）＝｛｛ｊ｝，｛ｊ，ｊ−１｝，…，｛ｊ，ｊ−１，…，ｉ｝｝
＝｛［ｊ，ｊ］，［ｊ，ｊ−１］，…，［ｊ，ｉ］｝（但し、ｉ＜ｊ）
【００７０】
また、論理二分木ＢＴ上の末端に位置するノードを葉ノード、頂点に位置するノードを根ノード、根ノードと葉ノードとの間に位置する各ノードを中間ノードと呼ぶことにする。さらに、各葉ノードは、各契約者１，…，ｎに対応付けられている。図４の例では、ＢＴの葉ノード数ｎがｎ＝６４の場合が示されている。
【００７１】
（論理二分木の形成）
まず、木構造設定部１０４は、葉ノードの数がｎ（例えば、ｎ＝６４）の論理二分木ＢＴを作成する。そして、木構造設定部１０４は、各葉ノードに対し、左端から右方向に向かって番号１，…，ｎを対応付ける。そして、木構造設定部１０４は、番号１，…，ｎの葉ノードを契約者１，…，ｎに対応付ける。
【００７２】
次いで、木構造設定部１０４は、中間ノードｖに対応付ける部分集合を決定する指標ｌｖ及びｒｖを定義する。但し、ｖは、論理二分木ＢＴに含まれる各中間ノードに対して所定の順番で付された番号であり、中間ノードの位置を表す指標である。次いで、木構造設定部１０４は、中間ノードｖから伸びるブランチの末端に位置する葉ノードのうち、最左にある葉ノードの番号をｌｖ、最右にある葉ノードの番号をｒｖと設定する。
【００７３】
次いで、木構造設定部１０４は、論理二分木ＢＴを構成する各中間ノードを２つの集合（ＢＴＬ、ＢＴＲ）に分類する。木構造設定部１０４は、論理二分木ＢＴ上に存在する中間ノードのうち、その親ノードの左側に位置する中間ノードの集合をＢＴＬと定義し、親ノードの右側に位置する中間ノードの集合をＢＴＲと定義する。但し、親ノードとは、ブランチで接続された２つのノードのうち上位に位置するノードを意味する。
【００７４】
（根ノードについて）
次いで、木構造設定部１０４は、論理二分木ＢＴ上の根ノードに集合（１→ｎ）と集合（２←ｎ）とを対応付ける。集合（１→ｎ）と集合（２←ｎ）とに含まれる複数の部分集合を組み合わせることにより、根ノードの下位に存在する葉ノードの一部又は全部を表す集合を構成することが可能になる。例えば、集合（１→ｎ）に含まれる部分集合｛１，…，ｕ−１｝と集合（２←ｎ）に含まれる部分集合｛ｎ，…，ｕ＋１｝との和集合を用いると、葉ノードｕ（１≦ｕ≦ｎ）を除く全ての葉ノードを表現することができる。
【００７５】
（具体例）
図４に示す論理二分木ＢＴ（ｎ＝６４）の根ノードには、集合（１→６４）と集合（２←６４）とが対応付けられる。集合（１→６４）は、部分集合［１，１］，…，［１，６４］を要素として含んでいる。例えば、全ての葉ノード１，…，６４が含まれる葉ノードのグループは、部分集合［１，６４］＝｛１，…，６４｝により表現される。また、葉ノード１６と葉ノード１７とを除く全ての葉ノードのグループは、部分集合［１，１５］と部分集合［６４，１８］とにより表現される。但し、部分集合［１，１５］は集合（１→６４）に含まれており、部分集合［６４，１８］は集合（２←６４）に含まれている。
【００７６】
（中間ノードについて）
次いで、木構造設定部１０４は、論理二分木ＢＴを構成する各中間ノードに部分集合を対応付ける。木構造設定部１０４は、集合ＢＴＬに属する中間ノードｖに対して集合（ｌｖ＋１←ｒｖ）を対応付ける。また、木構造設定部１０４は、集合ＢＴＲに属する中間ノードｖに対して集合（ｌｖ→ｒｖ−１）を対応付ける。
【００７７】
（具体例）
例えば、図４を参照すると、ｌｖ＝１，ｒｖ＝４に対応する中間ノードｖには、集合（２←４）が対応付けられている。また、ｌｖ＝１，ｒｖ＝４であるから、中間ノードｖの末端には、葉ノード１，…，４が位置する。例えば、葉ノード１，２，４の組合せは、中間ノードｖの上位に位置する根ノードの集合（１→６４）に含まれる部分集合［１，２］＝｛１，２｝と、中間ノードｖの部分集合（２←４）に含まれる部分集合［４，４］＝｛４｝との組合せにより表現される。
【００７８】
上記の具体例からも推察される通り、論理二分木ＢＴの根ノード及び各中間ノードに対応付けられる上記の集合に含まれる部分集合を組み合わせることにより、葉ノードの任意のグループを表現することが可能になる。つまり、複数の契約者の中から、所定の契約者が含まれるグループを上記の部分集合の組合せにより表現することができる。以下では、論理二分木ＢＴ上の各ノードに対応付けられた集合全体を表す和集合をセットシステムＳＳと呼ぶことにし、下式（１）のように定義する。
【００７９】
【数１】
2008236380.tif 000003
【００８０】
以上、本実施形態に係る木構造設定部１０４の機能構成について説明した。上記の通り、木構造設定部１０４は、論理二分木ＢＴ上の各ノードに所定の部分集合を対応付け、契約者のグループを当該部分集合の組合せにより表現する手段を提供する。次に、上記の各部分集合の間の関係を規定する有向グラフの生成手段について説明する。
【００８１】
（座標軸設定部１０６）
次に、図５を参照しながら座標軸設定部１０６の機能構成について説明する。座標軸設定部１０６は、有向グラフを形成するための複数の水平座標軸を設定する機能を有する。
【００８２】
まず、座標軸設定部１０６は、集合（１→ｎ−１）に含まれる複数の部分集合を右方向に向かって包含関係が大きくなるように一つの水平座標軸上の各座標点に対応付け、集合（１→ｎ−１）の水平座標軸を形成する。また、座標軸設定部１０６は、論理二分木ＢＴ上のｖ∈ＢＴＲである中間ノードｖについて、中間ノードｖに対応付けられた集合（ｌｖ→ｒｖ−１）に含まれる複数の部分集合を右方向に向かって包含関係が大きくなるように一つの水平座標軸上の座標点に対応付け、集合（ｌｖ→ｒｖ−１）の水平座標軸を形成する。なお、座標軸設定部１０６は、ｖ∈ＢＴＲである全てのｖに対して集合（ｌｖ→ｒｖ−１）の水平座標軸を形成する。
【００８３】
次いで、座標軸設定部１０６は、集合（２←ｎ）に含まれる複数の部分集合を左方向に向かって包含関係が大きくなるように一つの水平座標軸上の各座標点に対応付け、集合（２←ｎ）の水平座標軸を形成する。また、座標軸設定部１０６は、集合（ｌｖ＋１←ｒｖ）に含まれる複数の部分集合を左方向に向かって包含関係が大きくなるように一つの水平座標軸上の各座標点に対応付け、集合（ｌｖ＋１←ｒｖ）の水平座標軸を形成する。なお、座標軸設定部１０６は、ｖ∈ＢＴＲである全てのｖに対して集合（ｌｖ＋１←ｒｖ）の水平座標軸を形成する。
【００８４】
具体的には、例えば、集合（５→７）＝｛［５，５］，［５，６］，［５，７］｝の水平座標軸の各座標点に対し、左から順に部分集合［５，５］，［５，６］，［５，７］が対応付けられる。
【００８５】
次いで、座標軸設定部１０６は、集合（１→ｎ−１）の水平座標軸の右端に位置する座標点の右側と、当該水平座標軸の左端に位置する座標点の左側とに各々１つの仮座標点を配置する。また、座標軸設定部１０６は、集合（ｌｖ→ｒｖ−１）の水平座標軸の右端に位置する座標点の右側と、集合（ｌｖ→ｒｖ−１）の水平座標軸の左端に位置する座標点の左側とに各々１つの仮座標点を配置する。さらに、座標軸設定部１０６は、集合（２←ｎ）の水平座標軸の右端に位置する座標点の右側と、集合（２←ｎ）の水平座標軸の左端に位置する座標点の左側とに各々１つの仮座標点を配置する。そして、座標軸設定部１０６は、集合（ｌｖ＋１←ｒｖ）の水平座標軸の右端に位置する座標点の右側と、集合（ｌｖ＋１←ｒｖ）の水平座標軸の左端に位置する座標点の左側とに各々１つの仮座標点を配置する。
【００８６】
以上、座標軸設定部１０６の機能構成について説明した。上記の構成により、座標軸設定部１０６は、ＡＩ０５方式の有向グラフを形成するために必要な複数の水平座標軸を生成することができる。以下、座標軸設定部１０６により生成された水平座標軸上に有向グラフを生成する手段について説明する。
【００８７】
（有向グラフ生成部１１０）
次に、図５を参照しながら有向グラフ生成部１１０の機能構成について説明する。有向グラフ生成部１１０は、上記の各水平座標軸上に有向グラフＨを生成する機能を有する。
【００８８】
まず、有向グラフ生成部１１０は、パラメータｋ（ｋは整数）を設定する。また、有向グラフ生成部１１０は、ｎ（ｘ−１）／ｋ＜ｒｖ−ｌｖ＋１≦ｎｘ／ｋを満たす整数ｘを決定する。但し、ｋ｜ｌｏｇ（ｎ）（以下、ｌｏｇの底は２）と仮定してもよい。また、パラメータｋは、端末装置１２２が保持すべき中間鍵の個数、及びセット鍵を生成するのに必要な計算量に関係する量である。
【００８９】
次いで、有向グラフ生成部１１０は、集合（１→ｎ−１）の水平座標軸上、及び集合（ｌｖ→ｒｖ−１）の水平座標軸上に長さｎｉ／ｋ（ｉ＝０〜ｘ−１）を有する右方向を向いた有向枝を形成する。具体的には、カウンタｉを０からｘ−１まで動かしながら、最小要素数の部分集合に対応する最左の座標点の左に置いた仮座標点から、長さｎｉ／ｋを有する右方向を向いた有向枝を連続して、有向枝が最右の座標点の右に置いた仮座標点に達するか次の有向枝がこの仮座標点を超えるまで形成する。さらに、有向グラフ生成部１１０は、集合（２←ｎ）の水平座標軸上、及び集合（ｌｖ＋１←ｒｖ）の水平座標軸上に長さｎｉ／ｋ（ｉ＝０〜ｘ−１）を有する左方向を向いた有向枝を形成する。但し、有向グラフ生成部１１０は、全てのｖに対応する上記の水平座標軸上に有向枝を形成する。これは、上記の方法を左右逆にする方法により実行される。
【００９０】
次いで、有向グラフ生成部１１０は、各水平座標軸上に配置された仮座標点を始端又は終端とする全ての有向枝を消去する。さらに、有向グラフ生成部１１０は、複数の有向枝が一つの座標点に到達する場合、複数の有向枝の中から最長の有向枝のみを残し、他の有向枝を全て消去する。以上の処理により、集合（１→ｎ−１）の有向グラフＨ（１→ｎ−１）、集合（２←ｎ）の有向グラフＨ（２←ｎ）、集合（ｌｖ→ｒｖ−１）の有向グラフＨ（ｌｖ→ｒｖ−１）、及び集合（ｌｖ＋１←ｒｖ）の有向グラフＨ（ｌｖ＋１←ｒｖ）が生成される。
【００９１】
次いで、有向グラフ生成部１１０は、集合（１→ｎ−１）の水平座標軸の右側に配置された仮座標点を終端とする長さ１の右向き有向枝を有向グラフＨ（１→ｎ−１）に追加する。つまり、有向グラフ生成部１１０は、下式（２）の処理を実行して集合（１→ｎ）の有向グラフＨ（１→ｎ）を生成する。但し、Ｅ（Ｈ（…））は有向枝を表す。
【００９２】
【数２】
2008236380.tif 000004
【００９３】
以上、有向グラフ生成部１１０の機能構成について説明した。上記の構成により、有向グラフ生成部１１０は、ＡＩ０５方式の有向グラフＨを形成することができる。
【００９４】
（有向グラフの具体例）
ここで、図５の有向グラフＨ（３３→６３）を例に挙げて有向グラフの構成について具体的に説明する。有向グラフＨ（３３→６３）は、複数のアーチ状の曲線と、各アーチ状の曲線の一端に接続されて水平方向に延伸した直線とにより構成される。このアーチ状の曲線と水平方向に延伸した直線とが有向枝である。なお、直線は長さ１の有向枝を表し、曲線は長さ２以上の有向枝を表しているが、直線であるか曲線であるかという違いは表記上の問題であり本質とは無関係である。
【００９５】
また、有向グラフＨ（３３→６３）の中央上側に表示された白抜きの矢印は有向枝の方向を示している。そして、図５の最下段に描かれた黒丸は、左から順に有向グラフＨ（２←２），…，Ｈ（６３→６３）を表している。
【００９６】
図５を参照すると、論理二分木ＢＴの根ノード及び中間ノードに対応する複数の有向グラフＨと、各有向グラフＨに交差する複数の縦線ｚ（ｚ＝１〜６４）とが描かれている。縦線ｚと有向グラフＨとの交点が水平座標軸上の座標点を表している。有向グラフＨ（ｌｖ＋１←ｒｖ）と縦線ｚとの交点は部分集合［ｒｖ，ｚ］に対応する座標点を表し、有向グラフＨ（ｌｖ→ｒｖ−１）と縦線ｚとの交点は部分集合［ｌｖ，ｚ］に対応する座標点を表す。例えば、有向グラフＨ（１→６４）と縦線１０との交点は部分集合［１，１０］を表す座標点である。以下、この有向グラフＨを用いてセット鍵を生成する鍵生成ブロックの構成について説明する。
【００９７】
［鍵生成ブロック］
次に、鍵生成ブロックの機能構成について詳細に説明する。
【００９８】
（鍵生成部１１４）
まず、鍵生成部１１４の機能構成について説明する。鍵生成部１１４は、上記の有向グラフＨに基づいて中間鍵又はセット鍵を生成する機能を有する。以下、鍵生成部１１４によるセット鍵の生成方法について詳細に説明する。但し、以下の説明の中で、部分集合Ｓが対応付けられた座標点のことを単に座標点Ｓと表記することがある。また、説明の都合上、下記の表現を用いる。
【００９９】
部分集合Ｓｉに対応する中間鍵    ：  ｔ（Ｓｉ）
部分集合Ｓｉに対応するセット鍵  ：  ｋ（Ｓｉ）
コンテンツ鍵                    ：  ｍｅｋ
擬似乱数生成器                  ：  ＰＲＳＧ
有向枝                          ：  Ｅ
有向パス                        ：  Ｐ
【０１００】
鍵生成部１１４は、ＡＩ０５方式と本実施形態に係る方式との間で相違する点が存在するため、その点について説明する。鍵生成部１１４は、セット鍵を生成するために擬似乱数生成器ＰＲＳＧを用いる。ＡＩ０５方式の鍵生成部１１４は、擬似乱数生成器ＰＲＳＧに部分集合Ｓ０の中間鍵ｔ（Ｓ０）を入力し、部分集合Ｓ０のセット鍵ｋ（Ｓ０）と、所定の部分集合Ｓ１，Ｓ２，…，Ｓｄに各々対応する中間鍵ｔ（Ｓ１），ｔ（Ｓ２），…，ｔ（Ｓｑ）とを取得することができる。但し、部分集合Ｓ０と、他の部分集合Ｓ１，…，Ｓｑとの関係は、有向グラフＨにより規定されている。また、集合Ｓ０，Ｓ１，…，Ｓｑは、上記のセットシステムＳＳを構成する部分集合のいずれかである。なお、ｑは、有向グラフＨにおいて、部分集合Ｓ０に対応する座標点を始点とする有向枝の数である。
【０１０１】
以下の説明において、擬似乱数生成器ＰＲＳＧに中間鍵ｔ（Ｓ０）が入力された結果、セット鍵ｋ（Ｓ０）と、複数の中間鍵ｔ（Ｓ１），…，ｔ（Ｓｑ）とが出力されることを下式（３）のように表現する。また、有向グラフＨを参照する際、座標点Ｓ０を始端とするｋ本の有向枝が存在し、それらの終端を示す座標点がＳ１，Ｓ２，…，Ｓｑである場合、座標点Ｓ０に近い順に座標点Ｓ１，Ｓ２，…，Ｓｑと表記する。
【０１０２】
【数３】
2008236380.tif 000005
【０１０３】
ＡＩ０５方式に係る擬似乱数生成器ＰＲＳＧは、水平座標軸上の座標点Ｓ０に対応する中間鍵ｔ（Ｓ０）が入力されると、ＡＩ０５方式の有向グラフＨに基づき、座標点Ｓ０を始端とする有向枝の終端に対応付けられた部分集合Ｓ１，Ｓ２，Ｓ３，…，Ｓｑに応じて、中間鍵ｔ（Ｓ１），ｔ（Ｓ２），ｔ（Ｓ３），…，ｔ（Ｓｑ）と、座標点Ｓ０に対応するセット鍵ｋ（Ｓ０）とが出力される。
【０１０４】
なお、有向グラフ生成部１１０により決定される整数ｘが１≦ｘ≦ｋであるから、有向グラフＨの各座標点を始端とする有向枝の本数は最大でｋ本である。
【０１０５】
また、上記の擬似乱数生成器ＰＲＳＧがλビットのデータ入力ｔ（Ｓ０）に対して（ｑ＋１）＊λビットのデータ出力ｔ（Ｓ１）｜｜…｜｜ｔ（Ｓｑ）｜｜ｋ（Ｓ０）←ＰＲＳＧ（ｔ（Ｓ０））が得られるように設定すると、鍵生成部１１４は、ＰＲＳＧの出力を左からλビット毎に区切って抽出することにより、中間鍵ｔ（Ｓ１），ｔ（Ｓ２），…，ｔ（Ｓｑ）と、セット鍵ｋ（Ｓ０）とを取得することが可能になる。
【０１０６】
具体例として、図５に示した有向グラフＨ（１→６４）を参照すると、座標点Ｓ０＝［１，８］（左端から８番目の座標点）からは４本の有向枝が出ていることが分かる。また、４本の有向枝の終端は、それぞれ、座標点Ｓ１＝［１，９］，Ｓ２＝［１，１０］，Ｓ３＝［１、１２］，Ｓ４＝［１、１６］であることが分かる。
【０１０７】
従って、中間鍵ｔ（Ｓ０）を上記の擬似乱数生成器ＰＲＳＧに入力すると、中間鍵ｔ（Ｓ１），ｔ（Ｓ２），ｔ（Ｓ３），ｔ（Ｓ４）と、セット鍵ｋ（Ｓ０）とが生成される。さらに、得られた中間鍵ｔ（Ｓ４）をＰＲＳＧに入力すると、座標点Ｓ４を始点とする有向枝の終端座標点Ｓ１１＝［１，１７］，Ｓ１２＝［１，１８］，Ｓ１３＝［１，２０］，Ｓ１４＝［１，２４］，Ｓ１５＝［１，３２］に対応する中間鍵ｔ（Ｓ１１），ｔ（Ｓ１２），ｔ（Ｓ１３），ｔ（Ｓ１４），ｔ（Ｓ１５）と、セット鍵ｋ（Ｓ４）とが生成される。
【０１０８】
一方、本実施形態に係るＰＲＳＧの入出力は、ｔ（Ｓ１）｜｜・・・｜｜ｔ（Ｓｋ）｜｜ｋ（Ｓ０）←ＰＲＳＧ（ｔ（Ｓ０））のように表現される。
【０１０９】
すなわち、ＡＩ０５方式で用いていたＰＲＳＧの出力は、入力される中間鍵に対応する座標点を始点とする有効枝の数をｑとしたときに、λビットの入力に対して（ｑ＋１）λビットの出力を得るように構成されていた。これに対し、本実施形態で用いるＰＲＳＧは、ｑの値に関わらず、（ｋ＋１）λビットの出力を得られるように構成されている。但し、ｋはシステムパラメータである。
【０１１０】
本実施形態では、部分集合Ｓ０に対応する中間鍵ｔ（Ｓ０）が上記のＰＲＳＧに入力して得られる出力をｔ（Ｓ１）｜｜・・・｜｜ｔ（Ｓｋ）｜｜ｋ（Ｓ０）としている。このうち、ｔ（Ｓ１）｜｜・・・｜｜ｔ（Ｓｋ）の部分は、部分集合Ｓ０に対応する座標点を始点とする有効枝の終点である座標点のそれぞれに対応する部分集合Ｓ１，・・・，Ｓｋの中間鍵であり、部分集合Ｓ０に対応する座標点と部分集合Ｓｉに対応する座標点とを結ぶ有向枝の長さがｎ（ｉ−１）／ｋとなる。
【０１１１】
例えば、部分集合Ｓ０に対応する座標点と部分集合Ｓｉに対応する座標点とを結ぶ有向枝の長さがｎ２／ｋであるとき、ＰＲＳＧ（ｔ（Ｓ０））の出力の最初から３番目のλビットの部分がｔ（Ｓｉ）となる。
【０１１２】
もし、部分集合Ｓ０に対応する座標点から長さｎ（i−１）／ｋの枝が出ていない場合には、ｔ（Ｓｉ）の部分がＰＲＳＧから出力されるても使用されない。例えば、ｎ１／ｋ＝２であるシステムの有効グラフにおいて、ある座標点Ｓ０から長さ１と長さ４の有向枝が出ているが、長さ２の有向枝が出ていない場合、ＰＲＳＧ（ｔ（Ｓ０））の出力の最初のλビットの部分は、長さ１の有向枝の終点である座標点に対応する部分集合の中間鍵となり、３番目のλビットの部分は、長さ４の有向枝の終点である座標点に対応する部分集合の中間鍵となる。このとき、長さ２の有向枝は存在しないので、２番目のλビットの部分は使用されない。
【０１１３】
ある座標点の中間鍵となるＰＲＳＧの出力部分が、親座標点から出る他の有向枝の有無に依存していたＡＩ０５方式に対し、本実施形態では、上記のようにＰＲＳＧの利用方法を定めることによって、ある座標点とその親座標点との間の距離だけに依存してＰＲＳＧの出力のどの部分を使用すればよいかが一意に定まることになるため、他の枝を知る必要がないというメリットが得られる。
【０１１４】
このように、鍵生成部１１４は、有向グラフＨに基づいて上記の擬似乱数生成演算を繰り返し実行することで、複数の有向枝により連絡された複数の座標点に対応するセット鍵を導出することができる。以下、複数の有向枝により構成される２つの座標点間の経路を有向パスＰと呼ぶことにする。
【０１１５】
ところで、安全性に格段の注意を払わなくてもよい場面、又はセット鍵生成のための演算量を減らしたい場合には、有向グラフＨに基づいてセット鍵ｋ（Ｓ０）から別のセット鍵ｋ（Ｓ１），…，ｋ（Ｓｑ）を算出することが可能な擬似乱数生成器ＰＲＳＧを利用する構成にすることも可能である。この構成によれば、例えば、セット鍵ｋ（Ｓ０）が擬似乱数生成器ＰＲＳＧに入力されると、座標点Ｓ０から伸びる有向枝の到達先に対応するセット鍵ｋ（Ｓ１），ｋ（Ｓ２），ｋ（Ｓ３），…，ｋ（Ｓｑ）が出力される。
【０１１６】
以上、鍵生成部１１４の機能構成について説明した。上記の例から容易に理解される通り、鍵生成部１１４は、ある中間鍵を保持していると、その中間鍵を利用し、擬似乱数生成器ＰＲＳＧを反復して実行することにより、その中間鍵に対応する座標点から伸びた有向枝の鎖（有向パスＰ）によって到達可能な全ての座標点に対応する中間鍵とセット鍵とを導き出すことができるのである。
【０１１７】
（初期中間鍵設定部１１２）
次に、初期中間鍵設定部１１２の機能構成について説明する。初期中間鍵設定部１１２は、鍵配信サーバ１０２が所要のセット鍵を生成するために保持すべき中間鍵を設定する機能を有する。
【０１１８】
上記の通り、鍵生成部１１４は、上記の擬似乱数生成器ＰＲＳＧを反復して実行することにより、入力する中間鍵ｔ（Ｓ）に対応する座標点Ｓを始点とする有向パスが到達可能な全ての座標点に対応するセット鍵を生成することが可能である。従って、鍵配信サーバ１０２は、鍵生成部１１４により、論理二分木ＢＴを構成する根ノードと中間ノードとに対応付けられた全ての集合に含まれる部分集合のセット鍵を生成する場合、少なくとも、各集合の有向グラフＨの始点に対応する座標点（以下、ルートと呼ぶ）の中間鍵を保持している必要がある。
【０１１９】
そこで、初期中間鍵設定部１１２は、各有向グラフＨのルートに対応する中間鍵を生成する。例えば、初期中間鍵設定部１１２は、鍵提供システム１００をセットアップする際にλビットの乱数を生成し、各有向グラフＨのルートに対応する中間鍵として設定する。なお、有向グラフＨのルートとは、その座標点から有向枝が出ているが、その座標点に到達する有向枝がない座標点として定義される。図５に示す有向グラフＨ（１→６４）の座標点［１，１］が有向グラフＨ（１→６４）のルートである。なお、グラフＨ（３→３）のように座標点が１つだけのグラフについては、有向枝は出ていないが、その座標点をルートと考える。
【０１２０】
以上、初期中間鍵設定部１１２の機能構成について説明した。上記の通り、初期中間鍵設定部１１２により、全ての部分集合に対応するセット鍵を生成するために必要な中間鍵が設定され、鍵生成部１１４によって全てのセット鍵を生成することが可能になる。
【０１２１】
［その他の構成］
次に、上記の鍵生成ロジック構築ブロック、及び鍵生成ブロック以外の各構成要素の機能構成について説明する。
【０１２２】
（部分集合決定部１２０）
部分集合決定部１２０は、コンテンツ鍵の暗号化に用いるセット鍵を決定する。つまり、部分集合決定部１２０は、コンテンツの再生を許可する契約者（以下、許諾契約者）が含まれる少なくとも１つの部分集合を抽出し、各契約者に配布されるセット鍵の種類（つまり、対応する部分集合）を決定する。例えば、部分集合決定部１２０は、コンテンツの再生を許可しない契約者（以下、排除契約者）の集合（Ｒ）と、全ての契約者の集合（Ｎ）から排除契約者の集合（Ｒ）を除外した許諾契約者の集合（Ｎ＼Ｒ）とを決定する。
【０１２３】
次いで、部分集合決定部１２０は、セットシステムＳＳに含まれる部分集合を用いて、許諾契約者の集合（Ｎ＼Ｒ）を和集合（Ｎ＼Ｒ＝Ｓ１∪Ｓ２∪…∪Ｓｍ）により構成することが可能な部分集合の組（Ｓ１，Ｓ２，…，Ｓｍ）を決定する。このとき、部分集合の数ｍは小さい方が好ましい。次いで、部分集合決定部１２０は、上記の各部分集合Ｓｊ＝［ＳＰｊ，ＴＰｊ］（但し、ｊ＝１，…，ｍ）に対し、部分集合Ｓｊを要素に持つ有向グラフＨ（ＳＰｊ→ＥＰｊ）又はＨ（ＥＰｊ←ＳＰｊ）の終点ＥＰｊを抽出する。但し、ＳＰｊは、Ｓｊを要素に持つ有向グラフの始点を示す番号を表す。以下、この部分集合に関する情報をｓｇｉ（ｓｕｂ−ｇｒｏｕｐ  ｉｎｆｏｒｍａｔｉｏｎ）と呼び、下式（４）のように表現する。
【０１２４】
【数４】
2008236380.tif 000006
【０１２５】
（暗号化部１１６）
次に、暗号化部１１６の機能構成について説明する。暗号化部１１６は、セット鍵を用いてコンテンツ鍵を暗号化して暗号文を生成する。暗号化部１１６は、セットシステムＳＳを構成する全ての部分集合のうち、所定の部分集合に対応する複数のセット鍵を用いてコンテンツ鍵を暗号化する。このとき、暗号化部１１６は、鍵生成部１１４により生成された全てのセット鍵を用いてコンテンツ鍵を暗号化してもよいが、部分集合決定部１２０により決定された部分集合の組（Ｓ１，Ｓ２，…，Ｓｍ）に対応するセット鍵ｋ（Ｓ１），ｋ（Ｓ２），…，ｋ（Ｓｍ）を用いてコンテンツ鍵を暗号化してもよい。その結果、一つのコンテンツ鍵に対して一又は複数の暗号文が生成される。また、暗号化部１１６は、コンテンツ鍵を用いてコンテンツを暗号化する。
【０１２６】
例えば、有向グラフ生成部１１０により、有向グラフＨ（ＳＰｊ→ＥＰｊ）又はＨ（ＥＰｊ←ＳＰｊ）を構成する少なくとも１つの有向枝の中で、座標点［ＳＰｊ，ＳＰｊ］から座標点Ｓｊ＝［ＳＰｊ，ＴＰｊ］に到達する有向パスＰｊを特定し、有向パスＰｊの情報に基づき、セット鍵ｋ（Ｓｊ）が生成されたとする。すると、暗号化部１１６は、セット鍵ｋ（Ｓｊ）を用いてコンテンツ鍵ｍｅｋを暗号化する。さらに、暗号化部１１６は、コンテンツ鍵ｍｅｋを用いてコンテンツＣを暗号化する。以下、セット鍵ｋ（Ｓｊ）により暗号化されたコンテンツ鍵ｍｅｋをＥｋ（Ｓｊ）（ｓ）と表現し、コンテンツ鍵ｍｅｋにより暗号化されたコンテンツＣをＥｓ（Ｍ）と表現することにする。また、許諾契約者のみを含む上記の部分集合のセット鍵ｋ（Ｓ１），ｋ（Ｓ２），…，ｋ（Ｓｍ）により暗号化されたコンテンツ鍵Ｅｋ（Ｓ１）（ｓ），Ｅｋ（Ｓ２）（ｓ），…，Ｅｋ（Ｓｍ）（ｓ）をヘッダｈ＝｛Ｅｋ（Ｓ１）（ｓ），Ｅｋ（Ｓ２）（ｓ），…，Ｅｋ（Ｓｍ）（ｓ）｝と呼ぶことがある。
【０１２７】
（通信部１１８）
次に、通信部１１８の機能構成について説明する。通信部１１８は、主にシステムセットアップ時において、有向グラフＨに基づいて所定の中間鍵を各契約者に配信する。このとき、通信部１１８は、各契約者が、自身が含まれる部分集合のセット鍵を全て導出するのに必要な中間鍵を全て配信する。また、システム運用時において、通信部１１８は、暗号化部１１６により暗号化されたコンテンツ又はコンテンツ鍵を全ての契約者に対して配信する。また、通信部１１８は、有向グラフの一部又は全部を生成するための情報を各契約者に配信する。さらに、通信部１１８は、許諾契約者の集合（Ｎ＼Ｒ）、又は許諾契約者の集合（Ｎ＼Ｒ＝Ｓ１∪Ｓ２∪…∪Ｓｍ）に関する情報（例えば、部分集合（Ｓ１，Ｓ２，…，Ｓｍ）の情報）を各契約者に配信する。
【０１２８】
つまり、通信部１１８は、少なくとも許諾契約者の部分集合に関する情報ｓｇｉと、ヘッダｈと、暗号化されたコンテンツＥｓ（Ｍ）とを契約者の端末装置１２２に配信することができる。例えば、契約者数ｎ＝６４に対し、部分集合Ｓ１＝［１，４８］，Ｓ２＝［６４，５６］に含まれる契約者にコンテンツの復号を許諾する場合を考える。すると、部分集合Ｓ１，Ｓ２を要素として持つ有向グラフが有向グラフＨ（１→６４）及びＨ（２←６４）であるから、通信部１１８は、下式（５）の情報を各契約者の端末装置１２２に配信する。
【０１２９】
【数５】
2008236380.tif 000007
【０１３０】
以上、本実施形態に係る鍵配信サーバ１０２の機能構成について説明した。上記の構成により、ＡＩ０５方式の有向グラフＨに基づいてセット鍵を生成し、コンテンツ鍵を暗号化して配信することができる。また、許諾契約者の集合に対して効率的にコンテンツ配信サービスを提供することが可能になる。
【０１３１】
［鍵配信方法］
ここで、図６及び図７を参照しながら鍵配信サーバ１０２による鍵配信方法について説明する。図６は、システムセットアップ時の鍵配信処理の流れを示す説明図である。図７は、コンテンツ鍵を配信する処理の流れを示す説明図である。
【０１３２】
（システムセットアップ時の鍵配信方法）
まず、図６を参照しながら、システムセットアップ時の鍵配信方法について説明する。
【０１３３】
図６に示すように、鍵配信サーバ１０２は、契約者数ｎ、セット鍵及び中間鍵のビット数λ、所定のパラメータｋ、及びＰＲＳＧによる擬似乱数生成アルゴリズム等を決定し、全ての端末装置１２２に対して公開する（Ｓ１０２）。次いで、鍵配信サーバ１０２は、端末装置１２２の集合を所定の部分集合に分けた後、その和集合によって表現されるセットシステムＳＳ（上式（１））を決定して全ての端末装置１２２に対して公開する（Ｓ１０４）。次いで、鍵配信サーバ１０２は、複数の有向枝Ｅにより形成される有向グラフＨを決定し、その情報の一部又は全部を全ての端末装置１２２に対して公開する（Ｓ１０６）。次いで、セットシステムＳＳを構成する各部分集合に対応する中間鍵を決定する（Ｓ１０８）。次いで、各端末装置１２２が有向グラフに基づいて自身が所属する全ての部分集合のセット鍵を導出するために必要な中間鍵を各端末装置１２２に対して配布する（Ｓ１１０）。
【０１３４】
上記の通り、システムセットアップの際、各契約者には、その契約者が含まれる全ての部分集合のセット鍵を導出することが可能な複数の中間鍵が予め与えられる。但し、各契約者に対し、自身が含まれていない部分集合のセット鍵を導出することが可能な中間鍵を与えてはならない。また、各契約者に与える中間鍵の数が最小限になる方が好ましい。そこで、このような中間鍵を選択する方法について簡単に説明する。
【０１３５】
まず、鍵配信サーバ１０２は、契約者ｕが含まれる部分集合の座標点に到達可能な有向グラフＨを全て抽出する。有向グラフＨのルートに対応する部分集合に契約者ｕが含まれる場合、そのルートに対応する中間鍵のみを契約者ｕに与える。
【０１３６】
また、鍵配信サーバ１０２は、有向グラフＨのルート以外の座標点に対応する部分集合のいずれかに契約者ｕが含まれる場合、契約者ｕが部分集合Ｓ０に含まれ、かつ、部分集合Ｓ０の親である部分集合ｐａｒｅｎｔ（Ｓ０）に含まれない部分集合Ｓ０を抽出する。そして、その部分集合Ｓ０に対応する中間鍵ｔ（Ｓ０）を契約者ｕに対して与える。
【０１３７】
つまり、鍵配信サーバ１０２は、有向グラフＨのルート以外の複数の座標点に対応する部分集合に契約者ｕが含まれる場合、各座標点に到達する有向枝の始端を参照し、各座標点の始端に対応する部分集合が契約者ｕを含まないような座標点を選択する。この座標点に対応する部分集合をＳ０とし、座標点Ｓ０に到達する有向枝の始端（親）に対応する部分集合をｐａｒｅｎｔ（Ｓ０）とすると、鍵配信サーバ１０２は、親座標点に対応する部分集合ｐａｒｅｎｔ（Ｓ０）は契約者ｕを含まないが、この座標点に対応する部分集合Ｓ０が契約者ｕを含むような座標点Ｓ０に対応する中間鍵ｔ（Ｓ０）を契約者ｕに与える。以下、１つの有向枝の始端ｐａｒｅｎｔ（Ｓ）をその有向枝の終端Ｓの親と表現する。また、座標点Ｓ０の親をｐａｒｅｎｔ（Ｓ０）と表記する。
【０１３８】
さらに、鍵配信サーバ１０２は、そのような座標点Ｓ０が複数個存在する場合、それらに対応する複数の中間鍵ｔ（Ｓ０）を契約者ｕに与える。もちろん、座標点Ｓ０が有効グラフＨのルートである場合には座標点Ｓ０の親は存在しない。そして、有効グラフＨのルートではない場合には座標点Ｓ０の親はただ１つ存在する。
【０１３９】
（具体例１）
契約者１に対して配信される中間鍵について考える。まず、契約者１が含まれる部分集合に到達可能な有向グラフＨを抽出する。図５を参照すると、そのような有向グラフＨは、有向グラフＨ（１→６４）であることが分かる。そして、契約者１は、有向グラフＨ（１→６４）のルートに対応する部分集合［１，１］に属している。従って、契約者１には、中間鍵ｔ（［１，１］）が配信される。
【０１４０】
（具体例２）
契約者３に対して配信される中間鍵について考える。まず、契約者３が含まれる部分集合に到達可能な有向グラフＨを抽出する。図５を参照すると、そのような有向グラフＨは、有向グラフＨ（１→６４），Ｈ（２←６４），Ｈ（２←３２），Ｈ（２←１６），Ｈ（２←８），Ｈ（２←４），Ｈ（３→３）であることが分かる。まず、有向グラフＨ（１→６４）について検討すると、契約者３は、有向グラフＨ（１→６４）のルートに対応する部分集合［１，１］に含まれていないことが分かる。
【０１４１】
しかし、契約者３は、３番目の座標点以降の部分集合［１，３］，［１，４］，…，［１，６４］に含まれている。そこで、これらの座標点の親の部分集合を参照すると、親の部分集合に契約者３を含まない座標点は、［１，３］及び［１，４］のみであることが分かる。従って、座標点［１，３］，［１，４］の親ｐａｒｅｎｔ（［１，３］）及びｐａｒｅｎｔ（［１，４］）に該当する座標点［１，２］は、契約者３を含んでいないことが分かる。
【０１４２】
その結果、契約者３には、有向グラフＨ（１→６４）に対応する中間鍵ｔ（［１，３］）及びｔ（［１，４］）が配信される。同様に、他の有向グラフＨ（２←６４），Ｈ（２←３２），Ｈ（２←１６），Ｈ（２←８），Ｈ（２←４），Ｈ（３→３）についても中間鍵が選択されて契約者３に配信される。結局、契約者３には、合計８個の中間鍵が配信される。
【０１４３】
（コンテンツ鍵の配信方法）
次に、図７を参照しながら、コンテンツ鍵ｍｅｋの配信方法について説明する。
【０１４４】
図７に示すように、鍵配信サーバ１０２は、排除契約者の集合Ｒを決定し、許諾契約者の集合Ｎ＼Ｒを決定する（Ｓ１１２）。次いで、セットシステムＳＳを構成する部分集合から、和集合がＮ＼Ｒとなるｍ個の部分集合Ｓｉ（ｉ＝１，２，・・・，ｍ）を選択する（Ｓ１１４）。次いで、選択された各部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を用いてコンテンツ鍵ｍｅｋをそれぞれ暗号化する（Ｓ１１６）。次いで、集合Ｎ＼Ｒ又は各部分集合Ｓｉを表す情報と、ｍ個の暗号化されたコンテンツ鍵ｍｅｋとを全ての端末装置１２２に対して配信する（Ｓ１１８）。
【０１４５】
以上、鍵配信サーバ１０２によるセットアップ時の鍵配信方法、及びコンテンツ鍵ｍｅｋの配信方法について説明した。この配信方法によると、各許諾契約者がセット鍵を生成するために必要な中間鍵を効率的に配信することが可能になる。
【０１４６】
［有向グラフＨの生成方法］
次に、図９を参照しながら、有向グラフＨの生成方法について説明する。図９は、有向グラフＨ（ｌｖ→ｒｖ−１）の生成処理の流れを示す説明図である。
【０１４７】
図９に示すように、座標軸設定部１０６は、集合（ｌｖ→ｒｖ−１）の要素を水平直線上に左から右に包含関係が大きくなるように配置する。次いで、最左の座標点の左側に１つの仮座標点Ｓｔａｒｔを配置し、最右の座標点の右側に１つの仮座標点Ｅｎｄを配置する。すると、仮座標点Ｓｔａｒｔから仮座標点Ｅｎｄまでの長さは、Ｌｖ＝ｒｖ−ｌｖ＋１となる。さらに、ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たす整数ｘ（１≦ｘ≦ｋ）が算定される（Ｓ１５０）。
【０１４８】
次いで、有向グラフ生成部１１０は、カウンタｉを０〜ｘ−１まで動かしながら下記の操作を行う。仮座標点Ｓｔａｒｔから開始し、その座標点からｎｉ／ｋだけ離れた座標点へのジャンプを続け、仮座標点Ｅｎｄに到達するか、次のジャンプが仮座標点Ｅｎｄを超えたところで終了する。その後、各ジャンプに対応する有向枝を生成する（Ｓ１５２）。次いで、仮座標点Ｓｔａｒｔ又はＥｎｄに到達する有向枝を全て消去する（Ｓ１５４）。さらに、ある座標点Ｔに到達する有向枝が複数ある場合には、ジャンプの距離が一番長いもののみを残し、それ以外の有向枝を消去する（Ｓ１５６）。
【０１４９】
以上、有向グラフＨの生成方法について説明した。上記の処理を実行することにより、例えば、図５に示す有向グラフＨを生成することができる。
【０１５０】
［端末装置１２２の機能構成］
次に、図１０を参照しながら、本実施形態に係る端末装置１２２の機能構成について説明する。図１０は、端末装置１２２の機能構成を示す説明図である。
【０１５１】
図１０に示すように、端末装置１２２は、主に、通信部１２４と、判断部１２６と、有向グラフ生成部１２７と、鍵生成部１２８と、復号部１３０とにより構成される。
【０１５２】
（通信部１２４）
まず、通信部１２４の機能構成について説明する。通信部１２４は、鍵配信サーバ１０２から配信された情報を取得する取得部の一例である。例えば、通信部１２４は、鍵配信サーバ１０２から配信されたコンテンツ、コンテンツ鍵、中間鍵、有向グラフに関する情報、又は許諾契約者に関する情報等を受信する機能を有する。
【０１５３】
また、通信部１２４は、有線又は無線のネットワークに接続された複数の情報源（例えば、鍵配信サーバ１０２）、又はネットワークを介さずに直接的又は間接的に接続された情報源（例えば、光ディスク装置、磁気ディスク装置、又は携帯型端末装置等の情報メディア）から情報を取得する取得部であってもよい。
【０１５４】
（判断部１２６）
次に、判断部１２６の機能構成について説明する。判断部１２６は、コンテンツ鍵の暗号化に利用されたセット鍵に対応する部分集合のいずれかに自身が要素として含まれるか否かを判断する。つまり、判断部１２６は、鍵配信サーバ１０２の部分集合決定部１２０により選択された部分集合のいずれかに自身が含まれるか否かを判断する。このとき、判断部１２６は、鍵配信サーバ１０２から取得した許諾契約者の部分集合を参照する。
【０１５５】
（有向グラフ生成部１２７）
次に、有向グラフ生成部１２７の機能構成について説明する。有向グラフ生成部１２７は、鍵配信サーバ１０２がセット鍵を導出するために利用した有向グラフＨの中で、自身が属する部分集合のセット鍵を導出するために必要な有向パスのみを生成する機能を有する。つまり、有向グラフ生成部１２７は、自身が必要なセット鍵を導出可能な有向パスのみにより構成される有向グラフＧを生成することができる。
【０１５６】
上記の説明において、有向グラフＨ（ａ→ｂ）及びＨ（ｂ←ａ）と縦線ｚとの交点を座標点［ａ，ｚ］と表記したが、以下の説明では、これに加えて有向グラフＨと縦線ｚとの交点を座標ｚと表現することがある。従って、座標点と座標とは異なることに注意されたい。
【０１５７】
（有向グラフＧの生成方法）
ここで、図１３及び図１４を参照しながら、有向グラフＧの生成方法について詳細に説明する。図１３及び図１４は、契約者ｉが、自身が所属する部分集合Ｓｊのセット鍵ｋ（Ｓｊ）を導出するために必要な有向グラフＧを生成する処理の流れを示す説明図である。
【０１５８】
但し、図１３の最下段と図１４の最上段に記載されたＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆの各記号は，図１３と図１４とに跨る処理の推移において、その移動先を明示するための記号である。例えば、図１３のＡに達するステップは、図１４のＡに達したものと看做す。
【０１５９】
なお、端末装置１２２は、契約者数ｎ、及びパラメータｋの情報を予め保持している。また、有向グラフＧは、座標点の集合Ｖ（Ｇ（ｉ））と有向枝の集合Ｅ（Ｇ（ｉ））とにより構成され、Ｇ（ｉ）＝｛Ｖ（Ｇ（ｉ），Ｅ（Ｇ（ｉ））｝と表現される。そして、有向グラフＧ（ｉ）に含まれる座標点が１つの場合、有向枝の集合Ｅ（Ｇ（ｉ））は、Ｅ（Ｇ（ｉ））＝φ（記号φは空集合）と表現される。また、［ａ，ｂ］×［ａ，ｃ］は、始端の座標点が［ａ，ｂ］であり、終端の座標点が［ａ，ｃ］である有向枝を表す。さらに、説明の便宜上、鍵配信サーバ１０２から下式（６）の情報を取得したものと仮定する。
【０１６０】
【数６】
2008236380.tif 000008
【０１６１】
図１３に示すように、通信部１２４が取得した許諾契約者の部分集合に関する情報ｓｇｉの中に自身（契約者ｉ）が含まれる部分集合Ｓｊ（ｊ∈Ｓｊ）が存在するか否かを判断する（Ｓ９２２）。部分集合Ｓｊが存在する場合、ステップＳ９２４に進む。部分集合Ｓｊが存在しない場合、自身が排除された（コンテンツを取得する権利無し）ものとして、有向グラフＧの生成処理を終了する。ステップＳ９２２の処理は、主に、上記の判断部１２６により実行される。
【０１６２】
次いで、有向グラフ生成部１２７は、契約者の番号ｉがＴＰｊと一致するか否かを判断する（Ｓ９２４）。ｉ＝ＴＰｊである場合、契約者ｉがセット鍵を導出する際に生成が必要な有向グラフＧ（ｉ）＝｛Ｖ（Ｇ（ｉ），Ｅ（Ｇ（ｉ））｝をＶ（Ｇ（ｉ））＝｛［ＳＰｊ，ｉ］｝，Ｅ（Ｇ（ｉ））＝φとして出力し（Ｓ９７８）、有向グラフＧの生成処理を終了する。ｉ＝ＴＰｊでない場合、ステップＳ９２６に進む。
【０１６３】
次いで、有向グラフ生成部１２７は、契約者ｉの現在位置の座標ｃｕｐ、現在考慮中の範囲の始点の座標ｓｐ及び終点の座標ｅｐ、カウンタｍ、カウンタｚ、座標点の集合Ｖ（Ｇ（ｉ））、及び有向枝の集合Ｅ（Ｇ（ｉ））を次のように初期化する（Ｓ９２６）。
【０１６４】
ｓｐ＝ＳＰｊ，ｅｐ＝ＥＰｊ，ｃｕｐ＝ｉ，ｍ＝１，ｚ＝０，Ｖ（Ｇ（ｉ））＝φ，Ｅ（Ｇ（ｉ））＝φ。但し、ｊは、ｉ∈Ｓｊを満たす部分集合Ｓｊのインデックスｊを表す。
【０１６５】
次いで、有向グラフ生成部１２７は、ＳＰｊ＝１か否かを判断する（Ｓ９２８）。ＳＰｊ＝１である場合、ステップＳ９３０に進む。そして、有向グラフ生成部１２７は、Ｌｖ＝｜ＥＰｊ−ＳＰｊ｜＋１を計算し、さらに、ｅｐにｅｐ−１を代入した後（Ｓ９３０）、ステップＳ９３４に進む。逆に、ＳＰｊ＝１でない場合、ステップＳ９３２に進む。そして、有向グラフ生成部１２７は、Ｌｖ＝｜ＥＰｊ−ＳＰｊ｜＋２を計算し（Ｓ９３２）、ステップＳ９３４に進む。
【０１６６】
次いで、有向グラフ生成部１２７は、ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たすｘ（１≦ｘ≦ｋ）を算出する（Ｓ９３４）。次いで、有向グラフ生成部１２７は、ｃｕｐ＝ＴＰｊであるか否かを判断する（Ｓ９３６）。ｃｕｐ＝ＴＰｊである場合、ステップＳ９７６に進む。そして、契約者ｉが部分集合の鍵を導出するために利用する有向グラフＧ｛Ｖ（Ｇ（ｉ）），Ｅ（Ｇ（ｉ））｝を出力し（Ｓ９７６）、有向グラフＧの生成処理を終了する。
【０１６７】
逆に、ｃｕｐ＝ＴＰｊでない場合、ステップＳ９３８に進む。そして、有向グラフ生成部１２７は、ｚ＝０であるか否かを判断する（Ｓ９３８）。ｚ＝０である場合、ステップＳ９４０に進む。ｚ＝０でない場合、ステップＳ９４６に進み、ｓｐからｅｐに到達するジャンプの回数が最小となる最大有向パス（ＭＰ；ＭａｘＰａｔｈ）を決定する（Ｓ９４６）。この処理については後述する。
【０１６８】
次いで、有向グラフ生成部１２７は、ＳＰｊ＜ＥＰｊであるか否かを判断する（Ｓ９４０）。ＳＰｊ＜ＥＰｊである場合、ステップＳ９４２に進む。そして、ｓｐを下式（７）のように設定し（Ｓ９４２）、ステップＳ９４６に進む。一方、ＳＰｊ＜ＥＰｊでない場合、ステップＳ９４４に進む。そして、ｓｐを下式（８）のように設定し（Ｓ９４４）、ステップＳ９４６に進む。
【０１６９】
【数７】
2008236380.tif 000009
【０１７０】
次いで、有向グラフ生成部１２７は、ＡＩ０５方式における有向グラフＨの一部と一致するように、ｓｐからｅｐに至る有向パスの中で、ジャンプの回数が最小となる有向パスをＭＰ（ＭａｘＰａｔｈ）と決定する（Ｓ９４６）。このＭＰを決定する処理については後述する。
【０１７１】
次いで、有向グラフ生成部１２７は、ｚ＝０であるか否かを判断する（Ｓ９４８）。ｚ＝０でない場合、ステップＳ９５８に進む。一方、ｚ＝０である場合、ステップＳ９５２に進む。そして、ＭＰ上の有向枝数をｗとし、［ＳＰｊ，ｓｐ］を始端とする有向枝を１番目の有向枝として、ＭＰ上のｉ番目の有向枝の距離をｄｔｉと定義する。但し、ｄｔｗ＋１＝０とする。ここで、［ＳＰｊ，ＳＰｊ］を始点として、カウンタｉをｗから１まで動かしながら、距離ｄｔｉのジャンプを実行し、それに対応する有向枝を生成する。このとき、ｉ番目のジャンプにおける到達点はｉ−１番目のジャンプの出発点になることに注意が必要である。さらに、ステップＳ９４６で決定したＭＰと、ここで（Ｓ９５２）で生成した有向枝とを新たなＭＰとし、ｚ＝１とする（Ｓ９５２）。
【０１７２】
次いで、有向グラフ生成部１２７は、ＳＰｊ＝１であるか否かを判断する（Ｓ９５４）。ＳＰｊ＝１でない場合、ステップＳ９５８に進む。一方、ＳＰｊ＝１である場合、ステップＳ９５６に進む。そして、有向グラフ生成部１２７は、ＭＰ上に有向枝［ＳＰｊ，ＥＰｊ−１］×［ＳＰｊ，ＥＰｊ］を追加して新たなＭＰとする（Ｓ９５６）。
【０１７３】
次いで、有向グラフ生成部１２７は、ＭＰ上に存在する各有向枝の中で、始端と終端との間に座標点［ＳＰｊ，ｃｕｐ］が含まれる有向枝を特定する（Ｓ９５８）。但し、始端又は終端の座標点と座標点［ＳＰｊ，ｃｕｐ］とが一致する場合も含む。また、特定された有向枝をＣＵＥ（Ｃｕｒｒｅｎｔ  Ｕｓｅｒ’ｓ  Ｅｄｇｅ）と呼ぶことにする。なお、座標点［ＳＰｊ，ｃｕｐ］がＭＰ上に存在し、隣接する２つの有向枝の始端及び終端に座標点［ＳＰｊ，ｃｕｐ］が一致する場合は、座標点［ＳＰｊ，ｃｕｐ］を始点とする有向枝をＣＵＥとする。
【０１７４】
次いで、有向グラフ生成部１２７は、座標点［ＳＰｊ，ＴＰｊ］がＣＵＥの終端に一致せず、かつ、ＣＵＥの終端よりも有向グラフＨの終点側に近くない場合、ステップＳ９７０に進む。一方、座標点［ＳＰｊ，ＴＰｊ］がＣＵＥの終端に一致するか、又はＣＵＥの終端よりも有向グラフＨの終点側に近い場合、ステップＳ９６２に進む（Ｓ９６０）。
【０１７５】
次いで、有向グラフ生成部１２７は、Ｖ（Ｇ（ｉ））、及びＥ（Ｇ（ｉ））を次のように設定する（Ｓ９６２）。
【０１７６】
Ｖ（Ｇ（ｉ））＝φである場合、Ｖ（Ｇ（ｉ））＝［ＳＰｊ，ｓｐｉ，ｍ］∪［ＳＰｊ，ｅｐｉ，ｍ］とする。一方、Ｖ（Ｇ（ｉ））＝φでない場合、Ｖ（Ｇ（ｉ））＝Ｖ（Ｇ（ｉ））∪［ＳＰｊ，ｅｐｉ，ｍ］とする。また、Ｅ（Ｇ（ｉ））＝Ｅ（Ｇ（ｉ））∪｛［ＳＰｊ，ｓｐｉ，ｍ］×［ＳＰｊ，ｅｐｉ，ｍ］｝とする。
【０１７７】
但し、ｓｐｉ，ｍ，ｅｐｉ，ｍは、各々現在のＣＵＥの始端及び終端の座標を表す。なお、Ｖ（Ｇ（ｉ））＝φである場合とＶ（Ｇ（ｉ））＝φでない場合とで処理が異なるのは次の理由による。Ｖ（Ｇ（ｉ））＝φの場合には、有向枝の始端及び終端の両方を座標点として追加する必要があるが、Ｖ（Ｇ（ｉ））＝φでない場合には、追加される有向枝の始端は、既にＶ（Ｇ（ｉ））の座標点として追加されており、重複を避けるため、Ｖ（Ｇ（ｉ））には終端となる座標点のみを追加するのである。
【０１７８】
次いで、有向グラフ生成部１２７は、ｍにｍ＋１を代入する（Ｓ９６４）。次いで、有向グラフ生成部１２７は、ＣＵＥの次の有向枝（ＣＵＥの終端を始端とする有向枝）が存在するか否かを判断する（Ｓ９６６）。ＣＵＥの次の有向枝が存在する場合、ステップＳ９６８に進み、ＭＰ上に存在するＣＵＥの次の有向枝を新たなＣＵＥとして設定し、ステップＳ９６０の処理に戻る。一方、ＣＵＥの次の有向枝が存在しない場合、ステップＳ９７０に進む。
【０１７９】
次いで、有向グラフ生成部１２７は、ｓｐにＣＵＥの始端の座標を設定し、ｅｐにＣＵＥの終端の一つ手前に位置する座標点の座標を設定する（Ｓ９７０）。次いで、有向グラフ生成部１２７は、ｍ＝１か否かを判断する（Ｓ９７２）。ｍ＝１である場合、ステップＳ９３６の処理に戻る。一方、ｍ＝１でない場合、ステップＳ９７４に進む。
【０１８０】
次いで、有向グラフ生成部１２７は、ｃｕｐ＝ｅｐｉ，（ｍ−１）を設定し（Ｓ９７４）、ステップＳ９３６の処理に戻る。
【０１８１】
以上、本実施形態に係る有向グラフＧの生成方法について説明した。上記の生成方法では、ｓｇｉに有向グラフＨの終点に関する情報ＥＰｊが含まれることを前提としているが、ＳＰｊが決まるとＥＰｊは論理二分木ＢＴにより一意に特定可能であるため、契約者自身がＥＰｊを特定するように構成することも可能である。この構成は、例えば、ステップＳ９２６の処理にＥＰｊを導出するステップを追加することにより実現される。
【０１８２】
（最大有向パスＭＰの決定方法）
次に、図１５を参照しながら、図１３のステップＳ９４６における最大有向パスＭＰの決定方法について説明する。図１５は、最大有向パスＭＰの決定処理の流れを示す説明図である。
【０１８３】
図１５に示すように、まず、有向グラフ生成部１２７は、カウンタｌ、現在考慮中のジャンプの到達点の座標ｔｓｐ、及び現在考慮中の距離ｄｔを次のように初期化する（Ｓ９８２）。ｌ＝ｘ，ｔｓｐ＝ｓｐ，ｄｔ＝｜ｅｐ−ｔｓｐ｜。
【０１８４】
次いで、有向グラフ生成部１２７は、ｌにｌ−１を代入する（Ｓ９８４）。次いで、有向グラフ生成部１２７は、ｌ≧０であるか否かを判断する（Ｓ９８６）。ｌ≧０でない場合、ステップＳ９９６に進み、座標点［ＳＰｊ，ｓｐ］から［ＳＰｊ，ｅｐ］に達する少なくとも１つの有向枝の鎖により形成される有向パスをＭＰと設定し（Ｓ９９６）、ＭＰの決定処理を終了する。一方、ｌ≧０である場合、ステップＳ９８８に進む。
【０１８５】
次いで、有向グラフ生成部１２７は、ｄｔ−ｎｌ／ｋ≧０であるか否かを判断する（Ｓ９８８）。ｄｔ−ｎｌ／ｋ≧０でない場合、ステップＳ９８４の処理に戻る。一方、ｄｔ−ｎｌ／ｋ≧０である場合、ステップＳ９９０に進む。
【０１８６】
次いで、有向グラフ生成部１２７は、［ＳＰｊ，ｔｓｐ］を出発点として距離ｎｌ／ｋのジャンプを実行し、対応する有向枝を生成する（Ｓ９９０）。次いで、有向グラフ生成部１２７は、ステップＳ９９０で生成された有向枝の終端の座標を新たにｔｓｐとする（Ｓ９９２）。次いで、有向グラフ生成部１２７は、ｄｔにｄｔ−ｎｌ／ｋを代入し（Ｓ９９４）、ステップＳ９８８の処理に戻る。
【０１８７】
以上、最大有向パスＭＰの決定方法について説明した。上記の決定処理により、上記の有向グラフＧの生成処理を実施することが可能になる。
【０１８８】
（具体例）
ここで、図１１及び図１２を参照しながら、上記の生成方法に基づき、有向グラフ生成部１２７により生成される有向グラフＧの具体例について説明する。図１１及び図１２は、契約者数ｎ＝６４、パラメータｋ＝６の場合に生成される有向グラフＧを示す説明図である。特に、集合（１→６４）に対応する有向グラフのみを示している。図１１及び図１２の上側に描いた図は、ＡＩ０５方式のアルゴリズムを用いた場合に契約者が導出する有向グラフＨである。一方、下側に描いた図は、本実施形態のアルゴリズムを用いた場合に契約者が導出する有向グラフＧである。
【０１８９】
（具体例１）
まず、図１１を参照すると、契約者１が部分集合［１，２］のセット鍵を導出するために生成する有向グラフＧが示されている。また、図中の実線は、契約者１がセット鍵を導出する際に、最終的に導出する必要のある有向枝を示している。つまり、契約者１は、部分集合［１，２］のセット鍵を導出する際、実線で示した有向枝の始端に対応する中間鍵ｔ（［１，１］）をＰＲＳＧに入力し、その終端に対応するｔ（［１，２］）を導出する必要があることを意味している。さらに、実線と破線とにより構成される有向グラフＧは、契約者１が導出する必要がある最大有向パスＭＰを表している。
【０１９０】
（具体例２）
次に、図１２を参照すると、契約者７が部分集合［１，４４］のセット鍵を生成するために生成する有向グラフＧが示されている。また、図中の実線は、契約者７がセット鍵を導出する際に、最終的に導出する必要のあるジャンプに対応した有向枝を示している。つまり、契約者７は、部分集合［１，４４］のセット鍵を導出する際、予め保持している中間鍵ｔ（［１，４］）を利用し、実線で示した有向枝に沿ってＰＲＳＧを繰り返し実行して中間鍵ｔ（［１，４４］）を導出する必要があることを意味している。さらに、実線と破線とにより構成される有向グラフＧは、契約者７が導出する必要がある最大有向パスＭＰを表している。
【０１９１】
（鍵生成部１２８）
次に、鍵生成部１２８の機能構成について説明する。鍵生成部１２８は、予め配信された中間鍵とＰＲＳＧとを利用して所望の中間鍵又はセット鍵を生成する。このとき、鍵生成部１２８は、有向グラフ生成部１２７により生成された有向グラフＧに基づき、所望の中間鍵又はセット鍵を生成する。なお、判断部１２６により自身が含まれる部分集合が存在しないと判断された場合、鍵生成部１２８は、中間鍵又はセット鍵の生成処理を実行しない。但し、上記のＰＲＳＧは、鍵配信サーバ１０２が保持するＰＲＳＧと実質的に同一であり、所定の有向グラフに基づき、有向枝の始端に対応する中間鍵が入力されると、当該中間鍵に対応するセット鍵と、当該有向枝の終端に対応する中間鍵が出力される機能を有する。もちろん、一つの座標点から複数の有向枝が伸びている場合、ＰＲＳＧは、全ての有向枝の終端に対応する中間鍵を出力する。
【０１９２】
（鍵生成方法）
ここで、図１６を参照しながら、本実施形態に係る鍵生成方法について説明する。図１６は、鍵生成部１２８による鍵生成処理の流れを示す説明図である。なお、以下の説明では、契約者ｉが有向グラフＧ（ｉ）を既に導出していることを前提とする。また、有向グラフＧ（ｉ）を構成する有向枝の集合Ｅ（Ｇ（ｉ））は、下式（９）のように表現されるものとする。また、Ｅ（Ｇ（ｉ））に含まれ、下式（１０）と下式（１１）とで表現される隣接する２つの有向枝において、必ずｅｐｉ，（ｗ−１）＝ｓｐｉ，ｗとなっている。但し、ｗ＝２，…，ｍ−１である。
【０１９３】
【数８】
2008236380.tif 000010
【０１９４】
図１６に示すように、まず、鍵生成部１２８は、ｉ＝ＴＰｊとなるＴＰｊが存在するか否かを判断する（Ｓ５７２）。ｉ＝ＴＰｊとなるＴＰｊが存在する場合、ステップＳ５７４に進む。そして、鍵生成部１２８は、ＴＰｊと、中間鍵ｔ（Ｓｊ）＝ｔ（［ＳＰｊ，ｅｐｉ，ｗ］）（ｗ＝１，…，ｚ）に対応する部分集合Ｓｊの座標ｅｐｉ，ｗとが一致する中間鍵ｔ（Ｓｊ）を特定する（Ｓ５７４）。そして、中間鍵ｔ（Ｓｊ）を中間鍵ＣＴＫ（Ｃｕｒｒｅｎｔ  Ｔｅｍｐｏｌａｒｙ  Ｋｅｙ）に設定し、ステップＳ５９０に進む。
【０１９５】
一方、ステップＳ５７２において、ｉ＝ＴＰｊとなるＴＰｊが存在しない場合、ステップＳ５７６に進む。そして、鍵生成部１２８は、カウンタｌに１を代入する（Ｓ５７６）。次いで、鍵生成部１２８は、［ＳＰｊ，ｓｐｉ，ｌ］×［ＳＰｊ，ｅｐｉ，ｌ］∈Ｅ（Ｇ（ｉ））の終端を示す座標と、中間鍵ｔ（Ｓｊ）＝ｔ（［ＳＰｊ，ｅｐｉ，ｗ］）（ｗ＝１，…，ｚ）に対応する部分集合Ｓｊの座標ｅｐｗとが一致する中間鍵ｔ（Ｓｊ）を現在の中間鍵ＣＴＫに設定する（Ｓ５７８）。
【０１９６】
次いで、鍵生成部１２８は、［ＳＰｊ，ｓｐｉ，ｌ］×［ＳＰｊ，ｅｐｉ，ｌ］∈Ｅ（Ｇ（ｉ））の次の有向枝（ある有向枝の終端を始端とする有向枝）が存在するか否かを判断する（Ｓ５８０）。次の有向枝が存在する場合、ステップＳ５８２に進む。逆に、次の有向枝が存在しない場合、ステップＳ５９０に進む。
【０１９７】
次いで、鍵生成部１２８は、ＣＴＫをＰＲＳＧに入力して（ｋ＋１）＊λビットの値を出力させる（Ｓ５８２）。次いで、鍵生成部１２８は、ｌにｌ＋１を代入する（Ｓ５８４）。さらに、鍵生成部１２８は、｜ｅｐｉ，ｌ−ｓｐｉ，ｌ｜＝ｎｐ／ｋを満たすｐを決定する（Ｓ５８６）。次いで、鍵生成部１２８は、ステップＳ５８２で取得した出力のＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を１ビット目とし、ｐ＊λ＋１ビット目から（ｐ＋１）＊λビット目までの値を新たなＣＴＫとする（Ｓ５８８）。そして、ステップＳ５８０の処理に戻る。
【０１９８】
次いで、鍵生成部１２８は、ＣＴＫをＰＲＳＧに入力し、（ｋ＋１）＊λビットの値を出力される（Ｓ５９０）。そして、鍵生成部１２８は、ステップＳ５９０で得られた出力のＭＳＢを１ビット目とし、ｋ＊λ＋１ビット目から（ｋ＋１）＊λビット目までの値をセット鍵ｋ（Ｓｊ）として取得する（Ｓ５９２）。
【０１９９】
以上、本実施形態に係る鍵生成方法について説明した。上記の処理により、鍵生成部１２８は、有向グラフＧに基づいて所望のセット鍵を生成することが可能になる。
【０２００】
（復号部１３０）
次に、復号部１３０の機能構成について説明する。復号部１３０は、鍵生成部１２８により生成されたセット鍵を用いてコンテンツ鍵を復号する。また、復号部１３０は、コンテンツ鍵を用いてコンテンツを復号することも可能である。
【０２０１】
（コンテンツ鍵の復号方法）
次に、図８を参照しながら、暗号化されたコンテンツ鍵ｍｅｋの復号処理について説明する。図８は、コンテンツ鍵の復号処理の流れを示す説明図である。
【０２０２】
図８に示すように、通信部１２４は、鍵配信サーバ１０２からｍ個の暗号化されたコンテンツ鍵ｍｅｋと、集合Ｎ＼Ｒを表す情報又はｍ個の部分集合Ｓｉ（ｉ＝１，２，・・・，ｍ）を表す情報とを取得する（Ｓ１２０）。次いで、判断部１２６は、自身が含まれる部分集合Ｓｉを検索し（Ｓ１２２）、自身がｍ個の部分集合Ｓｉのいずれかに含まれているか否かを判断する（Ｓ１２４）。
【０２０３】
自身が含まれる部分集合Ｓｉが存在する場合、鍵生成部１２８は、擬似乱数生成器ＰＲＳＧを利用して、その部分集合Ｓｉに対応するセット鍵ｋ（Ｓｉ）を導出する（Ｓ１２６）。次いで、復号部１３０は、導出したセット鍵ｋ（Ｓｉ）を用いて暗号化されたコンテンツ鍵ｍｅｋを復号する（Ｓ１２８）。一方、自身がいずれの部分集合Ｓｉにも含まれない場合、判断部１２６は、自身が排除契約者である旨を表示出力し（Ｓ１３０）、コンテンツ鍵の復号処理を終了する。
【０２０４】
上記の通り、端末装置１２２は、鍵配信サーバ１０２から取得した集合Ｎ＼Ｒ又はｍ個の部分集合Ｓｉの情報と、ｍ個の暗号化されたコンテンツ鍵ｋ（Ｓｉ）とに基づいてコンテンツ鍵ｍｅｋを復号することができる。
【０２０５】
［鍵提供システム１００の応用例］
ここで、図１７及び図１８を参照しながら、上記の各実施形態に係る鍵提供システム１００の応用例について簡単に説明する。
【０２０６】
（応用例１）
まず、鍵提供システム１００の一応用例として、放送暗号化システム８００の構成について説明する。図１７は、放送衛星を用いた放送暗号化システム（Ｂｒｏａｄｃａｓｔ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｙｓｔｅｍ）８００の構成を示す説明図である。
【０２０７】
図１７を参照すると、放送暗号化システム８００は、主に、衛星放送局８０２と、管理センタ８０４と、放送衛星８０６と、住居８０８と、受信機８１０とにより構成される。ここで、放送暗号化システム８００は、放送チャンネルを介して暗号化されたデータ（暗号テキスト；Ｃｉｐｈｅｒｔｅｘｔ）を住居８０８に設置された受信機８１０に対して配信するシステムである。但し、放送チャンネルとは、例えば、衛星放送配信チャンネルである。また、暗号テキストとは、例えば、暗号鍵、音声データ、映像データ、又はテキストデータ等を含むコンテンツである。
【０２０８】
まず、衛星放送局８０２には、放送衛星８０６を介して暗号テキスト等のデータを送信する管理センタ（Ｂｒｏａｄｃａｓｔ  Ｔｒｕｓｔｅｄ  Ｃｅｎｔｅｒ）８０４が設置される。管理センタ８０４は、例えば、暗号化用の鍵を選択したり、データの暗号化、及びデータの配信制御を実行する。つまり、管理センタ８０４は、上記の各実施形態に係る鍵配信サーバ１０２の一例である。また、住居８０８に設置された受信機８１０は、上記の各実施形態に係る端末装置１２２の一例である。
【０２０９】
放送衛星８０６は、管理センタ８０４と各住居８０８に設置された受信機８１０との間を媒介し、当該受信機８１０に対して暗号テキスト等のデータを放送する。また、受信機８１０は、例えば、衛星放送受信機等であり、放送衛星８０６を介して放送されたデータを受信する。なお、図１７に示すように、放送暗号化システム８００には複数の受信機８１０が含まれていてもよく、その場合、管理センタ８０４は、複数の受信機８１０から成る受信機グループに対してデータを配信する。このとき、管理センタ８０４は、認証された受信機８１０のみがデータを復号できるように放送データを暗号化して配信する。
【０２１０】
以上、鍵提供システム１００の一応用例である放送暗号化システム８００について説明した。図１７では、衛星放送の例を挙げたが、放送暗号化システム８００は、例えば、ケーブルテレビジョンやコンピュータネットワーク等の他の放送チャンネルを利用した暗号化システムに対しても容易に応用することが可能である。
【０２１１】
（応用例２）
次に、鍵提供システム１００の他の応用例として、放送暗号化システム９００の構成について説明する。図１８は、記録媒体を用いた放送暗号化システム９００の構成を示す説明図である。
【０２１２】
図１８を参照すると、放送暗号化システム９００は、主に、媒体製造業者９０２と、管理センタ９０４と、記録媒体９０６と、配布仲介者９０８と、住居９１２と、受信機９１４とにより構成される。ここで、放送暗号化システム９００における放送チャンネルはデータが記録された記録媒体９０６である。
【０２１３】
まず、媒体製造業者９０２には、記録媒体９０６を利用し、配布仲介者９０８を介して暗号テキスト等のデータを住居９１２に提供する管理センタ９０４が設置されている。但し、管理センタ９０４は、記録媒体９０６に暗号テキスト等のデータを記録するだけであり、記録媒体９０６を用いて間接的に暗号テキスト等のデータを提供する。また、記録媒体９０６は、例えば、読出専用媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）、又は書換可能媒体（例えば、ＣＤ−ＲＷ、ＤＶＤ−ＲＷ等）等である。上記の応用例１と同様、管理センタ９０４は、上記の各実施形態に係る鍵配信サーバ１０２に相当する。但し、暗号テキスト等のデータを記録媒体に記録して提供する点で若干相違するが、本発明に係る鍵配信サーバは、この応用例のように、実施形態に応じて暗号テキスト等の情報を配信する手段を適宜変更することが可能である。
【０２１４】
媒体製造業者９０２は、例えば、小売店等の配布仲介者（Ｄｉｓｔｒｉｂｕｔｉｏｎ  Ｏｕｔｌｅｔ）９０８に対して暗号テキスト等のデータが記録された記録媒体９０６を送付する。次いで、配布仲介者９０８は、媒体９０６を各住居９１２に対して提供する。例えば、配布仲介者９０８は、記録媒体９０６を各住居９１２に対応する個人に対して販売する。この個人は、記録媒体９０６を住居９１２に持ち帰り、受信機９１４を利用して記録媒体９０６に記録されたデータを再生する。この受信機９１４は、上記の各実施形態に係る端末装置１２２の一例であるが、暗号テキスト等のデータを記録媒体を介して取得する点で若干相違する。しかし、本発明に係る端末装置は、この応用例のように、実施形態に応じて暗号テキスト等の情報を取得する手段を適宜変更することが可能である。また、受信機９１４は、例えば、ＣＤプレーヤ、ＤＶＤプレーヤ、又はＤＶＤ−ＲＷドライブを備えたコンピュータ等であり、記録媒体９０６に記録されているデータを読み出して再生することが可能な装置により構成されうる。
【０２１５】
以上、鍵提供システム１００の一応用例である放送暗号化システム９００について説明した。図１８では、記録媒体９０６を介して暗号テキスト等のデータを契約者に提供する手段を例に挙げて説明した。このように、本発明に係る鍵配信サーバ及び端末装置は、実施形態に応じて、各種情報の配布手段に関する構成を変更することが可能である。
【０２１６】
［効果］
従来、各契約者は、自身が所属する部分集合に対応する全ての有向グラフＨを保持するか、又は自身で全ての有向グラフＨを導出する必要があった。しかし、本実施形態は、各契約者が、自身の所属する部分集合に対応する有向グラフＨの中で、自身が鍵導出の際に必要とする有向枝のみで構成される有向グラフＧを導出する手段を提供する。従って、従来の鍵配信方式と比較し、各契約者が算出すべき有向枝の数を大幅に削減することが可能となり、各契約者が各々有向グラフＧを生成して高速に所望のセット鍵を導出することが可能になる。その結果、コンテンツの復号に掛かる時間を大幅に短縮することができる。
【０２１７】
＜第２実施形態＞
以下、図面を参照しながら、本発明の第２実施形態に係る鍵提供システム１００の構成、及び鍵配信に係る具体的な方式について詳細に説明する。但し、上記の第１実施形態に係る鍵提供システム１００と実質的に同一の構成要素については同一の符号を付することにより重複する説明を省略し、相違する構成要素について詳細に説明する。なお、本実施形態は、Ａ０６（Ｂ）方式の鍵提供システム１００において、端末装置が効率的に有向グラフを生成する手段を備える点に特徴を有する。
【０２１８】
［第２実施形態の特徴］
ここで、本発明の第２実施形態と上記の第１実施形態とを対比して説明することで両実施形態の相違点を明確にし、当該第２実施形態の特徴を明らかにする。まず、上記の第１実施形態と本実施形態との最大の相違点は、本発明の技術を適用する鍵配信方式の違いである。上記の第１実施形態がＡＩ０５方式に適用可能であるのに対し、本実施形態はＡ０６（Ｂ）方式に対して適用することが可能である。
【０２１９】
（ＡＩ０５方式とＡ０６（Ｂ）方式との対比）
そこで、ＡＩ０５方式とＡ０６（Ｂ）方式との相違点について簡単に説明し、Ａ０６（Ｂ）方式の特徴を明確にする。ＡＩ０５方式とＡ０６（Ｂ）方式との違いは、鍵生成に要する計算量にあることは本稿の冒頭で既に述べた。具体的には、次の通りである。
【０２２０】
上記の第１実施形態の説明において述べた通り、ＡＩ０５方式では、論理二分木ＢＴの根ノードに有向グラフＨ（１→ｎ）及びＨ（２←ｎ）が対応付けられ、他の中間ノードｖに対し、有向グラフＨ（ｌｖ→ｒｖ＋１）又はＨ（ｌｖ＋１←ｒｖ）が対応付けられる。契約者ｕが所属する有向グラフＨは、論理二分木ＢＴ上の葉ノードｕから根ノードに到達する経路の中に存在するノードのうち、葉ノードと根ノードとを除くｌｏｇ（ｎ）−１個の中間ノードｖ（ｖ＝１，…，ｌｏｇ（ｎ）−１）に各１つ、又は根ノードに対応付けられた２つの有向グラフのいずれかである。従って、合計ｌｏｇ（ｎ）＋１個の有向グラフＨが存在する。そして、各有向グラフＨについて、契約者が保持すべき鍵数の最大値は、ある座標点を出発点とする有向パスに含まれる有向枝の最大数を下回る。従って、有向枝の最大数がパラメータｋに等しいことから、各契約者が保持すべき鍵数は、最悪でもｋ＊（ｌｏｇ（ｎ）＋１）以下になる。また、漸近的には、Ｏ（ｋ＊ｌｏｇ（ｎ））になる。
【０２２１】
より正確には、有向グラフＨを生成する際に用いる線分の長さＬｖについて、ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たすｘ（１≦ｘ≦ｋ）を算出することで得られる。そこで、論理二分木ＢＴ上の各中間ノードに対してｘを算出すると、各契約者が保持すべき鍵数の上限は、下式（１２）により表現することができる。その結果、ＡＩ０５方式では、各契約者の計算量が依然として大きいというのが一つの問題である。
【０２２２】
【数９】
2008236380.tif 000011
【０２２３】
次に、各契約者がセット鍵を生成する際に必要な計算量について考察する。各契約者に要求される計算量を決める支配的な要因は、所望の中間鍵を生成するのに要するＰＲＳＧの演算回数にある。この最悪値は、有向グラフＨのルートから最も遠いリーフ（有向枝が出ていない座標点）に至る有向パスに含まれる有向枝の本数により表現される。この最悪値が最大になるのは、有向グラフＨ（１→ｎ）の座標点［１，１］から［１，ｎ］に至る有向パスである。いま、ｔ＝ｎ１／ｋ−１とおき、距離ｂのジャンプ（有向枝に相当）をａ回連続して実行する処理をＪ（ａ，ｂ）と表現すると、この有向パスは、下式（１３）のように表現される。
【０２２４】
【数１０】
2008236380.tif 000012
【０２２５】
つまり、この有向パスを構成する有向枝の数（ジャンプの回数）は、下式（１４）となる。例えば、契約者数ｎ＝６４、パラメータｋ＝６の場合、有向グラフＨ（１→６４）の座標点［１，１］から［１，６４］に達する有向パスには、１１本の有向枝が存在する。結局、ＡＩ０５方式では、この有向枝数が多いため、各契約者が実行すべきジャンプの回数、即ち計算量が依然として多いというのがもう一つの問題である。
【０２２６】
【数１１】
2008236380.tif 000013
【０２２７】
これに対し、Ａ０６（Ｂ）方式では、有向グラフをより長い有向枝により構成するように改良した点に特徴を有する。例えば、図２０にＡ０６（Ｂ）方式の有向グラフＩを示したが、図５に示したＡＩ０５方式の有向グラフＨに比べて、長さがより長い有向枝が含まれていることが容易に分かる。もちろん、これらの有向グラフは、いずれも同じ論理二分木ＢＴに基づいて構成されており、契約者数ｎ及びパラメータｋも同じである。その結果、Ａ０６（Ｂ）方式を適用すると、ＡＩ０５方式に比べて各契約者に要求される計算量を削減できることが直感的にも明らかである。
【０２２８】
そこで、上記の式（１３）と同様に、Ａ０６（Ｂ）方式の有向グラフＩ（１→ｎ）の座標点［１，１］から［１，ｎ］に至る有向パスを表現すると、下式（１５）のように表される。但し、Ｊ（ａ，ｂ）の定義はＡＩ０５方式と同じである。
【０２２９】
【数１２】
2008236380.tif 000014
【０２３０】
従って、この有向パスを構成する有向枝数（ジャンプ回数）は、ｋ＊（ｎ１／ｋ−１）となり、ＡＩ０５方式の（２ｋ−１）＊（ｎ１／ｋ−１）に比べて約半分程度に減少していることが分かる。このように、Ａ０６（Ｂ）方式を適用することにより、各契約者に要求される計算量を大きく減少させることが可能である。
【０２３１】
（共通の課題）
上記の通り、Ａ０６（Ｂ）方式は、ＡＩ０５方式に比べて演算量を半分程度にまで削減しているが、実施を想定した現実的な状況を想定すると、各契約者に要求される演算負荷が依然として高いという問題がある。Ａ０６（Ｂ）方式においても、ＡＩ０５方式と同様に、有向グラフＩの情報を全て保持しているか、又は全ての有向グラフＩを生成する必要があり、各契約者の端末装置に掛かる演算負荷は、一般的な端末装置の有効なリソースを大きく圧迫するという問題がある。
【０２３２】
具体的には、契約者数ｎの状況でＡ０６（Ｂ）方式を適用する場合、有向グラフＩ（１→ｎ）に含まれる有向枝数は、下式（１６）により表現される。
【０２３３】
【数１３】
2008236380.tif 000015
【０２３４】
従って、契約者数ｎ＝６４の場合、６３本の有向枝に関する情報を保持するか、又は導出する必要がある。有向枝に関する情報は、有向枝の始端と終端との情報が必要であり、例えば、一方を３２ｂｉｔ＝４Ｂｙｔｅで表現できたとしても、有向グラフＩ（１→ｎ）だけで２５２Ｂｙｔｅのデータ領域を必要とする。現実的には、契約者数ｎがｎ＝２３２程度であるため、有向グラフＩ（１→ｎ）の情報は、約３２ＧＢｙｔｅ程度になる。端末装置のストレージリソースを大きく圧迫することはもちろんのこと、リムーバブルメディアに記録して配布することも困難である。また、有向グラフＩ（１→ｎ）を各契約者が生成するにしても、ｎ−１＝４２９４９６７２９５本の有向枝を算出しなくてはならず、有向グラフの生成だけで膨大な時間が掛かってしまうという問題がある。
【０２３５】
（本実施形態の目的）
そこで、本実施形態の目的は、Ａ０６（Ｂ）方式の有向グラフＩに基づく鍵提供システム１００において、各々の契約者が必要とする有向グラフの情報のみを生成することにより、各契約者に掛かる演算負荷を大きく低減させる手段を提供することにある。
【０２３６】
［鍵提供システム１００の構成］
ここで、本実施形態に係る鍵提供システム１００の構成について説明する。但し、基本的なシステム構成は、図１に示した第１実施形態の構成と実質的に同一であるため、その詳細な説明を省略する。また、本実施形態に係る鍵提供システム１００に含まれる鍵配信サーバ２０２、及び端末装置２２２のハードウェア構成についても、図２に示した鍵配信サーバ１０２、及び端末装置１２２のハードウェア構成と実質的に同一であるため、その詳細な説明を省略する。
【０２３７】
［鍵配信サーバ２０２の機能構成］
そこで、図１９を参照しながら、本実施形態に係る鍵配信サーバ２０２の機能構成について説明する。図１９は、鍵配信サーバ２０２の機能構成を示す説明図である。
【０２３８】
図１９に示すように、鍵配信サーバ２０２は、主に、木構造設定部１０４と、座標軸設定部２０６と、有向グラフ生成部２１０と、初期中間鍵設定部１１２と、鍵生成部１１４と、暗号化部１１６と、通信部１１８と、部分集合決定部１２０とにより構成される。但し、本実施形態の特徴的な構成は、主に、座標軸設定部２０６、及び有向グラフ生成部２１０であり、他の構成要素については、第１実施形態に係る鍵配信サーバ１０２の構成要素と実質的に同一である。従って、座標軸設定部２０６、及び有向グラフ生成部２１０の機能構成のみについて詳細に説明する。
【０２３９】
（座標軸設定部２０６）
まず、座標軸設定部２０６の機能構成について説明する。座標軸設定部２０６は、有向グラフＩを形成するための複数の水平座標軸を設定する機能を有する。
【０２４０】
まず、座標軸設定部２０６は、集合（１→ｎ−１）に含まれる複数の部分集合を右方向に向かって包含関係が大きくなるように一つの水平座標軸上の各座標点に対応付け、集合（１→ｎ−１）の水平座標軸を形成する。また、座標軸設定部２０６は、論理二分木ＢＴ上のｖ∈ＢＴＲである中間ノードｖについて、中間ノードｖに対応付けられた集合（ｌｖ→ｒｖ−１）に含まれる複数の部分集合を右方向に向かって包含関係が大きくなるように一つの水平座標軸上の座標点に対応付け、集合（ｌｖ→ｒｖ−１）の水平座標軸を形成する。なお、座標軸設定部２０６は、ｖ∈ＢＴＲである全てのｖに対して集合（ｌｖ→ｒｖ−１）の水平座標軸を形成する。
【０２４１】
次いで、座標軸設定部２０６は、集合（２←ｎ）に含まれる複数の部分集合を左方向に向かって包含関係が大きくなるように一つの水平座標軸上の各座標点に対応付け、集合（２←ｎ）の水平座標軸を形成する。また、座標軸設定部２０６は、集合（ｌｖ＋１←ｒｖ）に含まれる複数の部分集合を左方向に向かって包含関係が大きくなるように一つの水平座標軸上の各座標点に対応付け、集合（ｌｖ＋１←ｒｖ）の水平座標軸を形成する。なお、座標軸設定部２０６は、ｖ∈ＢＴＲである全てのｖに対して集合（ｌｖ＋１←ｒｖ）の水平座標軸を形成する。
【０２４２】
次いで、座標軸設定部２０６は、集合（１→ｎ−１）の水平座標軸の右端に位置する座標点の右側に２つの仮座標点を配置する。また、座標軸設定部２０６は、集合（ｌｖ→ｒｖ−１）の水平座標軸の右端に位置する座標点の右側に２つの仮座標点を配置する。さらに、座標軸設定部２０６は、集合（２←ｎ）の水平座標軸の左端に位置する座標点の左側に２つの仮座標点を配置する。そして、座標軸設定部２０６は、集合（ｌｖ＋１←ｒｖ）の水平座標軸の左端に位置する座標点の左側に２つの仮座標点を配置する。
【０２４３】
以上、座標軸設定部２０６の機能構成について説明した。上記の構成により、座標軸設定部２０６は、Ａ０６（Ｂ）方式の有向グラフを形成するために必要な複数の水平座標軸を生成することができる。以下、座標軸設定部２０６により生成された水平座標軸上に有向グラフＩを生成する手段について説明する。
【０２４４】
（有向グラフ生成部２１０）
次に、有向グラフ生成部２１０の機能構成について説明する。有向グラフ生成部２１０は、上記の各水平座標軸上に有向グラフＩを生成する機能を有する。
【０２４５】
まず、有向グラフ生成部２１０は、パラメータｋ（ｋは整数）を設定する。また、有向グラフ生成部２１０は、ｎ（ｘ−１）／ｋ＜ｒｖ−ｌｖ＋１≦ｎｘ／ｋを満たす整数ｘを決定する。但し、ｋ｜ｌｏｇ（ｎ）（以下、ｌｏｇの底は２）と仮定してもよい。また、パラメータｋは、端末装置２２２が保持すべき中間鍵の個数、及びセット鍵を生成するのに必要な計算量に関係する量である。
【０２４６】
次いで、有向グラフ生成部２１０は、集合（１→ｎ−１）の水平座標軸上、及び集合（ｌｖ→ｒｖ−１）の水平座標軸上に長さｎｉ／ｋ（ｉ＝０〜ｘ−１）を有する右方向を向いた有向枝を形成する。さらに、有向グラフ生成部２１０は、集合（２←ｎ）の水平座標軸上、及び集合（ｌｖ＋１←ｒｖ）の水平座標軸上に長さｎｉ／ｋ（ｉ＝０〜ｘ−１）を有する左方向を向いた有向枝を形成する。但し、有向グラフ生成部２１０は、全てのｖに対応する上記の水平座標軸上に有向枝を形成する。
【０２４７】
具体的には、集合（１→ｎ−１）の水平座標軸上、及び集合（ｌｖ→ｒｖ−１）の水平座標軸上について、集合（１→ｎ−１）又は集合（ｌｖ→ｒｖ−１）の要素を水平直線上に左から右に包含関係が大きくなるように並べる。そして、最左の座標点を始点とする。さらに、最右の座標点の右に２つの仮座標点を配置する。次いで、カウンタｉを０〜ｘ−１まで動かしながら下記の操作を行う。始点から開始し、その座標点からｎｉ／ｋだけ離れた座標点へのジャンプを続け、仮座標点に到達するか、次のジャンプが仮座標点を超えたところで終了する。その後、各ジャンプに対応する有向枝を生成する。集合（２←ｎ）の水平座標軸上、及び集合（ｌｖ＋１←ｒｖ）についても同様の処理を行うが左右を逆にした方法により有向枝が生成される点に注意が必要である。
【０２４８】
次いで、有向グラフ生成部２１０は、各水平座標軸上に配置された仮座標点を始端又は終端とする全ての有向枝を消去する。さらに、有向グラフ生成部２１０は、複数の有向枝が一つの座標点に到達する場合、複数の有向枝の中から最長の有向枝のみを残し、他の有向枝を全て消去する。以上の処理により、集合（１→ｎ−１）の有向グラフＨ（１→ｎ−１）、集合（２←ｎ）の有向グラフＨ（２←ｎ）、集合（ｌｖ→ｒｖ−１）の有向グラフＨ（ｌｖ→ｒｖ−１）、及び集合（ｌｖ＋１←ｒｖ）の有向グラフＨ（ｌｖ＋１←ｒｖ）が生成される。
【０２４９】
次いで、有向グラフ生成部２１０は、集合（１→ｎ−１）の水平座標軸の右側に配置された２つの仮座標点の中で、左側に位置する仮座標点を終端とする長さ１の右向き有向枝を有向グラフＨ（１→ｎ−１）に追加する。つまり、有向グラフ生成部２１０は、下式（１７）の処理を実行して集合（１→ｎ）の有向グラフＨ（１→ｎ）を生成する。但し、Ｅ（…）は有向枝を表す。
【０２５０】
【数１４】
2008236380.tif 000016
【０２５１】
以上、有向グラフ生成部２１０の機能構成について説明した。上記の構成により、有向グラフ生成部２１０は、Ａ０６（Ｂ）方式の有向グラフＩを形成することができる。
【０２５２】
［有向グラフＩの生成方法］
ここで、図２２を参照しながら、有向グラフＩの生成方法について説明する。図２２は、有向グラフＩ（ｌｖ→ｒｖ−１）の生成処理の流れを示す説明図である。
【０２５３】
まず、集合（ｌｖ→ｒｖ−１）の要素を水平直線上に左から右に包含関係が大きくなるように並べる。そして、最左の座標点を始点とする。さらに、最右の座標点の右に２つの仮座標点を配置する（Ｓ１４０）。すると、始点から最右の仮座標点までの長さは、Ｌｖ＝ｒｖ−ｌｖ＋１となる。さらに、ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たす整数ｘ（１≦ｘ≦ｋ）を算定する。次いで、カウンタｉを０〜ｘ−１まで動かしながら下記の操作を行う。始点から開始し、その座標点からｎｉ／ｋだけ離れた座標点へのジャンプを続け、仮座標点に到達するか、次のジャンプが仮座標点を超えたところで終了する。その後、各ジャンプに対応する有向枝を生成する（Ｓ１４２）。次いで、仮座標点に到達する有向枝を全て消去する（Ｓ１４４）。ある座標点Ｔに到達する有向枝が複数ある場合には、ジャンプの距離が一番長いもののみを残し、それ以外の有向枝は消去する（Ｓ１４６）。
【０２５４】
以上、本実施形態に係る鍵配信サーバ２０２の機能構成について説明した、上記の構成により、Ａ０６（Ｂ）方式の有向グラフＩを生成することが可能である。なお、図２０及び図２１に有向グラフＩの例を示した。図２０は、契約者数ｎ＝６４、パラメータｋ＝６の条件下で生成された有向グラフＩを示す説明図である。一方、図２１は、契約者数ｎ＝６４、パラメータｋ＝３の条件下で生成された有向グラフＩを示す説明図である。
【０２５５】
［端末装置２２２の機能構成］
次に、図２３を参照しながら、本実施形態に係る端末装置２２２の機能構成について説明する。図２３は、端末装置２２２の機能構成を示す説明図である。
【０２５６】
図２３に示すように、端末装置２２２は、主に、通信部１２４と、判断部１２６と、有向グラフ生成部２２７と、鍵生成部１２８と、復号部１３０とにより構成される。但し、本実施形態の特徴的な構成は、主に、有向グラフ生成部２２７であり、他の構成要素については、第１実施形態に係る端末装置１２２の構成要素と実質的に同一である。従って、有向グラフ生成部２２７の機能構成のみについて詳細に説明する。
【０２５７】
（有向グラフ生成部２２７）
まず、有向グラフ生成部２２７の機能構成について説明する。有向グラフ生成部２２７は、鍵配信サーバ２０２がセット鍵を導出するために利用した有向グラフＩの中で、自身が属する部分集合のセット鍵を導出するために必要な有向パスのみを生成する機能を有する。つまり、有向グラフ生成部２２７は、自身が必要なセット鍵を導出可能な有向パスのみにより構成される有向グラフＧを生成することができる。
【０２５８】
（有向グラフＧの生成方法）
ここで、図２６及び図２７を参照しながら、有向グラフＧの生成方法について詳細に説明する。図２６及び図２７は、契約者ｉが、自身が所属する部分集合Ｓｊのセット鍵ｋ（Ｓｊ）を導出するために必要な有向グラフＧを生成する処理の流れを示す説明図である。
【０２５９】
但し、図２６の最下段と図２７の最上段に記載されたＡ，Ｂ，Ｃ，Ｄ，Ｅの各記号は，図２６と図２７とに跨る処理の推移において、その移動先を明示するための記号である。例えば、図２６のＡに達するステップは、図２７のＡに達したものと看做す。
【０２６０】
なお、端末装置２２２は、契約者数ｎ、及びパラメータｋの情報を予め保持している。また、有向グラフＧは、座標点の集合Ｖ（Ｇ（ｉ））と有向枝の集合Ｅ（Ｇ（ｉ））とにより構成され、Ｇ（ｉ）＝｛Ｖ（Ｇ（ｉ），Ｅ（Ｇ（ｉ））｝と表現される。そして、有向グラフＧ（ｉ）に含まれる座標点が１つの場合、有向枝の集合Ｅ（Ｇ（ｉ））は、Ｅ（Ｇ（ｉ））＝φ（記号φは空集合）と表現される。また、［ａ，ｂ］×［ａ，ｃ］は、始端の座標点が［ａ，ｂ］であり、終端の座標点が［ａ，ｃ］である有向枝を表す。さらに、説明の便宜上、鍵配信サーバ２０２から下式（１８）の情報を取得したものと仮定する。
【０２６１】
【数１５】
2008236380.tif 000017
【０２６２】
図２６に示すように、通信部１２４が取得した許諾契約者の部分集合に関する情報ｓｇｉの中に自身（契約者ｉ）が含まれる部分集合Ｓｊ（ｊ∈Ｓｊ）が存在するか否かを判断する（Ｓ５０２）。部分集合Ｓｊが存在する場合、ステップＳ５０４に進む。部分集合Ｓｊが存在しない場合、自身が排除された（コンテンツを取得する権利無し）ものとして、有向グラフＧの生成処理を終了する。ステップＳ５０２の処理は、主に、上記の判断部１２６により実行される。
【０２６３】
次いで、有向グラフ生成部２２７は、契約者の番号ｉがＴＰｊと一致するか否かを判断する（Ｓ５０４）。ｉ＝ＴＰｊである場合、契約者ｉがセット鍵を導出する際に生成が必要な有向グラフＧ（ｉ）＝｛Ｖ（Ｇ（ｉ），Ｅ（Ｇ（ｉ））｝をＶ（Ｇ（ｉ））＝｛［ＳＰｊ，ｉ］｝，Ｅ（Ｇ（ｉ））＝φとして出力し（Ｓ５４０）、有向グラフＧの生成処理を終了する。ｉ＝ＴＰｊでない場合、ステップＳ５０６に進む。
【０２６４】
次いで、有向グラフ生成部２２７は、契約者ｉの現在位置の座標ｃｕｐ、現在考慮中の範囲の始点の座標ｓｐ及び終点の座標ｅｐ、カウンタｍ、座標点の集合Ｖ（Ｇ（ｉ））、及び有向枝の集合Ｅ（Ｇ（ｉ））を次のように初期化する（Ｓ５０６）。
【０２６５】
ｓｐ＝ＳＰｊ，ｅｐ＝ＥＰｊ，ｃｕｐ＝ｉ，ｍ＝１，Ｖ（Ｇ（ｉ））＝φ，Ｅ（Ｇ（ｉ））＝φ。但し、ｊは、ｉ∈Ｓｊを満たす部分集合Ｓｊのインデックスｊを表す。
【０２６６】
次いで、有向グラフ生成部２２７は、ＳＰｊ＝１か否かを判断する（Ｓ５０８）。ＳＰｊ＝１である場合、ステップＳ５１０に進む。そして、有向グラフ生成部２２７は、Ｌｖ＝｜ＥＰｊ−ＳＰｊ｜＋１を計算し（Ｓ５１０）、ステップＳ５１４に進む。逆に、ＳＰｊ＝１でない場合、ステップＳ５１２に進む。そして、有向グラフ生成部２２７は、Ｌｖ＝｜ＥＰｊ−ＳＰｊ｜＋２を計算し（Ｓ５１２）、ステップＳ５１４に進む。
【０２６７】
次いで、有向グラフ生成部２２７は、ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たすｘ（１≦ｘ≦ｋ）を算出する（Ｓ５１４）。次いで、有向グラフ生成部２２７は、ｃｕｐ＝ＴＰｊであるか否かを判断する（Ｓ５１６）。ｃｕｐ＝ＴＰｊである場合、ステップＳ５３８に進む。そして、契約者ｉが部分集合の鍵を導出するために利用する有向グラフＧ｛Ｖ（Ｇ（ｉ）），Ｅ（Ｇ（ｉ））｝を出力し（Ｓ５３８）、有向グラフＧの生成処理を終了する。
【０２６８】
逆に、ｃｕｐ＝ＴＰｊでない場合、ステップＳ５１８に進む。そして、有向グラフ生成部２２７は、ｓｐからｅｐに到達するジャンプの回数が最小となる最大有向パス（ＭＰ；ＭａｘＰａｔｈ）を決定する（Ｓ５１８）。この処理については後述する。
【０２６９】
次いで、有向グラフ生成部２２７は、ＭＰ上に存在する各有向枝の中で、始端と終端との間に座標点［ＳＰｊ，ｃｕｐ］が含まれる有向枝を特定する（Ｓ５２０）。但し、始端又は終端の座標点と座標点［ＳＰｊ，ｃｕｐ］とが一致する場合も含む。また、特定された有向枝をＣＵＥ（Ｃｕｒｒｅｎｔ  Ｕｓｅｒ’ｓ  Ｅｄｇｅ）と呼ぶことにする。なお、座標点［ＳＰｊ，ｃｕｐ］がＭＰ上に存在し、隣接する２つの有向枝の始端及び終端の座標点に［ＳＰｊ，ｃｕｐ］が一致する場合は、座標点［ＳＰｊ，ｃｕｐ］を始点とする有向枝をＣＵＥとする。
【０２７０】
次いで、有向グラフ生成部２２７は、座標点［ＳＰｊ，ＴＰｊ］がＣＵＥの終端に一致せず、かつ、ＣＵＥの終端よりも有向グラフＩの終点側に近くない場合、ステップＳ５３２に進む（Ｓ５２２）。一方、座標点［ＳＰｊ，ＴＰｊ］がＣＵＥの終端に一致するか、又はＣＵＥの終端よりも有向グラフＩの終点側に近い場合、ステップＳ５２４に進む（Ｓ５２２）。
【０２７１】
次いで、有向グラフ生成部２２７は、Ｖ（Ｇ（ｉ））、及びＥ（Ｇ（ｉ））を次のように設定する（Ｓ５２４）。
【０２７２】
Ｖ（Ｇ（ｉ））＝φである場合、Ｖ（Ｇ（ｉ））＝［ＳＰｊ，ｓｐｉ，ｍ］∪［ＳＰｊ，ｅｐｉ，ｍ］とする。一方、Ｖ（Ｇ（ｉ））＝φでない場合、Ｖ（Ｇ（ｉ））＝Ｖ（Ｇ（ｉ））∪［ＳＰｊ，ｅｐｉ，ｍ］とする。また、Ｅ（Ｇ（ｉ））＝Ｅ（Ｇ（ｉ））∪｛［ＳＰｊ，ｓｐｉ，ｍ］×［ＳＰｊ，ｅｐｉ，ｍ］｝とする。
【０２７３】
但し、ｓｐｉ，ｍ，ｅｐｉ，ｍは、各々現在のＣＵＥの始端及び終端の座標を表す。なお、Ｖ（Ｇ（ｉ））＝φである場合とＶ（Ｇ（ｉ））＝φでない場合とで処理が異なるのは次の理由による。Ｖ（Ｇ（ｉ））＝φの場合には、有向枝の始端及び終端の両方を座標点として追加する必要があるが、Ｖ（Ｇ（ｉ））＝φでない場合には、追加される有向枝の始端は、既にＶ（Ｇ（ｉ））の座標点として追加されており、重複を避けるため、Ｖ（Ｇ（ｉ））には終端となる座標点のみを追加するのである。
【０２７４】
次いで、有向グラフ生成部２２７は、ｍにｍ＋１を代入する（Ｓ５２６）。次いで、有向グラフ生成部２２７は、ＣＵＥの次の有向枝（ＣＵＥの終端を始端とする有向枝）が存在するか否かを判断する（Ｓ５２８）。ＣＵＥの次の有向枝が存在する場合、ステップＳ５３０に進み、ＭＰ上に存在するＣＵＥの次の有向枝を新たなＣＵＥとして設定し、ステップＳ５２２の処理に戻る。一方、ＣＵＥの次の有向枝が存在しない場合、ステップＳ５３２に進む。
【０２７５】
次いで、有向グラフ生成部２２７は、ｓｐにＣＵＥの始端の座標を設定し、ｅｐにＣＵＥの終端の一つ手前に位置する座標点の座標を設定する（Ｓ５３２）。次いで、有向グラフ生成部２２７は、ｍ＝１か否かを判断する（Ｓ５３４）。ｍ＝１である場合、ステップＳ５１６の処理に戻る。一方、ｍ＝１でない場合、ステップＳ５３６に進む。
【０２７６】
次いで、有向グラフ生成部２２７は、ｃｕｐ＝ｅｐｉ，（ｍ−１）を設定し（Ｓ５３６）、ステップＳ５１６の処理に戻る。
【０２７７】
以上、本実施形態に係る有向グラフＧの生成方法について説明した。上記の生成方法では、ｓｇｉに有向グラフＩの終点に関する情報ＥＰｊが含まれることを前提としているが、ＳＰｊが決まるとＥＰｊは論理二分木ＢＴにより一意に特定可能であるため、契約者自身がＥＰｊを特定するように構成することも可能である。この構成は、例えば、ステップＳ５０６の処理にＥＰｊを導出するステップを追加することにより実現される。
【０２７８】
（最大有向パスＭＰの決定方法）
次に、図２８を参照しながら、図２６のステップＳ５１８における最大有向パスＭＰの決定方法について説明する。図２８は、最大有向パスＭＰの決定処理の流れを示す説明図である。
【０２７９】
図２８に示すように、まず、有向グラフ生成部２２７は、カウンタｌ、現在考慮中のジャンプの到達点の座標ｔｓｐ、及び現在考慮中の距離ｄｔを次のように初期化する（Ｓ５５２）。ｌ＝ｘ，ｔｓｐ＝ｓｐ，ｄｔ＝｜ｅｐ−ｔｓｐ｜。
【０２８０】
次いで、有向グラフ生成部２２７は、ｌにｌ−１を代入する（Ｓ５５４）。次いで、有向グラフ生成部２２７は、ｌ≧０であるか否かを判断する（Ｓ５５６）。ｌ≧０でない場合、ステップＳ５６６に進み、座標点［ＳＰｊ，ｓｐ］から［ＳＰｊ，ｅｐ］に達する少なくとも１つの有向枝の鎖により形成される有向パスをＭＰと設定し（Ｓ５６６）、ＭＰの決定処理を終了する。一方、ｌ≧０である場合、ステップＳ５５８に進む。
【０２８１】
次いで、有向グラフ生成部２２７は、ｄｔ−ｎｌ／ｋ≧０であるか否かを判断する（Ｓ５５８）。ｄｔ−ｎｌ／ｋ≧０でない場合、ステップＳ５５４の処理に戻る。一方、ｄｔ−ｎｌ／ｋ≧０である場合、ステップＳ５６０に進む。
【０２８２】
次いで、有向グラフ生成部２２７は、［ＳＰｊ，ｔｓｐ］を出発点として距離ｎｌ／ｋのジャンプを実行し、対応する有向枝を生成する（Ｓ５６０）。次いで、有向グラフ生成部２２７は、ステップＳ５６０で生成された有向枝の終端の座標を新たにｔｓｐとする（Ｓ５６２）。次いで、有向グラフ生成部２２７は、ｄｔにｄｔ−ｎｌ／ｋを代入し（Ｓ５６４）、ステップＳ５５８の処理に戻る。
【０２８３】
以上、最大有向パスＭＰの決定方法について説明した。上記の決定処理により、上記の有向グラフＧの生成処理を実施することが可能になる。
【０２８４】
（具体例）
ここで、図２４及び図２５を参照しながら、上記の生成方法に基づき、有向グラフ生成部２２７により生成される有向グラフＧの具体例について説明する。図２４及び図２５は、契約者数ｎ＝６４、パラメータｋ＝６の場合に生成される有向グラフＧを示す説明図である。特に、集合（１→６４）に対応する有向グラフのみを示している。また、図２４及び図２５の上側に描いた図は、Ａ０６（Ｂ）方式のアルゴリズムを用いた場合に契約者が導出する有向グラフＩである。一方、下側に描いた図は、本実施形態のアルゴリズムを用いた場合に契約者が導出する有向グラフＧである。
【０２８５】
（具体例１）
まず、図２４を参照すると、契約者１が部分集合［１，２］のセット鍵を導出するために生成する有向グラフＧが示されている。また、図中の実線は、契約者１がセット鍵を導出する際に、最終的に導出する必要のあるジャンプに対応した有向枝を示している。つまり、契約者１は、部分集合［１，２］のセット鍵を導出する際、実線で示した有向枝の始端に対応する中間鍵ｔ（［１，１］）をＰＲＳＧに入力し、その終端に対応するｔ（［１，２］）を導出する必要があることを意味している。さらに、実線と破線とにより構成される有向グラフＧは、契約者１が導出する必要がある最大有向パスＭＰを表している。
【０２８６】
（具体例２）
次に、図２５を参照すると、契約者７が部分集合［１，４４］のセット鍵を生成するために生成する有向グラフＧが示されている。また、図中の実線は、契約者７がセット鍵を導出する際に、最終的に導出する必要のあるジャンプに対応した有向枝を示している。つまり、契約者７は、部分集合［１，４４］のセット鍵を導出する際、予め保持している中間鍵ｔ（［１，３３］）を利用し、実線で示した有向枝に沿ってＰＲＳＧを繰り返し実行して中間鍵ｔ（［１，４４］）を導出する必要があることを意味している。さらに、実線と破線とにより構成される有向グラフＧは、契約者７が導出する必要がある最大有向パスＭＰを表している。
【０２８７】
（鍵生成方法）
ここで、図１６を参照しながら、本実施形態に係る鍵生成処理の流れについて具体例を挙げて説明する。本実施形態に係る鍵生成部１２８の機能構成は、上記の第１実施形態に係る鍵生成部１２８と実質的に同一であるが、鍵生成の際に参照する有向グラフの形状が相違する。
【０２８８】
まず、図２０及び図２４を参照しながら、契約者７が部分集合［１，４４］のセット鍵を導出する工程について説明する。図２０を参照すると、契約者７は、７つの有向グラフＩ（１→６４），Ｉ（２←６４），Ｉ（２←３２），Ｉ（２←１６），Ｉ（２←８），Ｉ（６→７），Ｉ（７→７）の要素に対応する部分集合に属していることが分かる。このうち、有向グラフＩ（１→６４）には、契約者７が属している部分集合であって、その部分集合の親に対応する部分集合に契約者７が属していない４つの部分集合［１，７］，［１，９］，［１，１７］，［１，３３］が存在する。従って、契約者７には、有向グラフＩ（１→６４）に関し、中間鍵ｔ（［１，７］），ｔ（［１，９］），ｔ（［１，１７］），ｔ（［１，３３］）がシステムセットアップの際に与えられる。他の有向グラフＩ（２←６４），Ｉ（２←３２），Ｉ（２←１６），Ｉ（２←８），Ｉ（６→７），Ｉ（７→７）についても、同様に所定の中間鍵が与えられる。
【０２８９】
まず、契約者７は、上記の有向グラフ生成部２２７の機能により、図２４の下図（発明方式）に示した有向グラフＧを生成する。その後、契約者７は、次の手順により部分集合［１，４４］のセット鍵ｋ（［１，４４］）を取得する（図１６を参照）。
【０２９０】
まず、ｉ＝ＴＰｊとなるＴＰｊが存在しないことを確認し、カウンタｌを１に初期化する。その後、自身が予め保持する上記の中間鍵ｔ（［１，７］），ｔ（［１，９］），ｔ（［１，１７］），ｔ（［１，３３］）の中から、最初の有向枝［１，１］×［１，３３］∈Ｅ（Ｇ（７））の終端の座標と一致する部分集合［１，３３］に対応する中間鍵ｔ（［１，３３］）を特定し、これをＣＴＫとする。
【０２９１】
次いで、次の有向枝の有無を確認する。このとき、現時点では有向枝［１，３３］×［１，４１］∈Ｅ（Ｇ（７））が存在するので、ＣＴＫ＝ｔ（［１，３３］）をＰＲＳＧに入力し、下式（１９）に示すような（ｋ＋１）＊λビットの出力を得る。
【０２９２】
【数１６】
2008236380.tif 000018
【０２９３】
但し、ｔ（［１，６５］）は、ダミーの中間鍵を表しているため、実際には利用しない。次いで、カウンタｌをインクリメントした後、出力された中間鍵の中から利用する中間鍵を決定する。ここで、カウンタｌは、インクリメントされてｌ＝２となるため、有向枝［１，３３］×［１，４１］∈Ｅ（Ｇ（７））に関し、｜４１−３３｜＝８＝２３＝ｎｐ／ｋを満たすｐ（ｐ＝３）を決定する。この結果を受け、上式（１９）の出力から、ｔ（［１，４１］）を取得し、ＣＴＫをｔ（［１，４１］）に更新する。同様に、有向枝［１，４１］×［１，４３］∈Ｅ（Ｇ（７））の存在を確認し、ＣＴＫをＰＲＳＧに入力して、下式（２０）の出力を得る。
【０２９４】
【数１７】
2008236380.tif 000019
【０２９５】
次いで、カウンタｌをｌ＝３に設定し、有向枝［１，４１］×［１，４３］∈Ｅ（Ｇ（７））に関してｐ＝１を算出した後、ＣＴＫをｔ（［１，４３］）に更新する。以上の処理をさらにもう一度繰り返し実行することにより、次の有向枝が存在しない状態となる。このとき、ＣＴＫ＝ｔ（［１，４４］）となっているため、ＣＴＫをＰＲＳＧに入力して出力される値のｋ＊λ＋１ビット目から（ｋ＋１）＊λビット目までをセット鍵ｋ（［１，４４］）として抽出する。
【０２９６】
以上説明した通り、契約者７が、自己の保持する中間鍵を利用して部分集合［１，４４］のセット鍵ｋ（［１，４４］）を取得することが可能である。このように、各契約者は、自己が保持する中間鍵を利用して所望のセット鍵を算出することができる。
【０２９７】
［効果］
本実施形態は、各契約者が自身の所属する部分集合のセット鍵を導出する際、Ａ０６（Ｂ）方式の有向グラフ生成方法を改良した有向グラフ生成方法を用いて、各契約者が必要とする有向枝のみを含む新たな有向グラフＧを生成する手段を提供する。そこで、Ａ０６（Ｂ）方式により生成される有向グラフＩの有向枝数と、本実施形態の方式により生成される有向グラフＧの有向枝数とを比較し、本実施形態の効果を明らかに示す。
【０２９８】
Ａ０６（Ｂ）方式では、各契約者がセット鍵を導出するために、最大でｎ−１本の有向枝が必要である。これに対して本実施形態の方式では、有向枝数が最大となる場合（契約者１が部分集合［１，２］に対応するセット鍵を導出する場合）の有向枝数が下式（２１）により表現される。
【０２９９】
【数１８】
2008236380.tif 000020
【０３００】
例えば、契約者数ｎ＝２３２、パラメータｋ＝３２とした場合、Ａ０６（Ｂ）方式では、ｎ−１＝４２９４９６７２９５本の有向枝を必要としたが、本実施形態では、ｋ＊（ｋ＋１）＊（ｎ１／ｋ−１）／２＝５２８本の有向枝のみで済む。つまり、このケースでは、約８００万分の一の計算量で済むのである。図２４の有向グラフの例では、有向グラフＩ（１→６４）がｎ−１＝６３本の有向枝を必要とするのに対し、有向グラフＧ（１→６４）では、僅か１２本の有向枝を導出すればよい。また、図２４の場合、契約者が実際に生成する有向枝の本数は、僅か４本である。その結果、本実施形態を適用することにより、各契約者が効率良く所要の有向グラフＧを生成することができるため、高速に鍵を導出することが可能になる。
【０３０１】
＜第３実施形態＞
以下、図面を参照しながら、本発明の第３実施形態に係る鍵提供システム１００の構成、及び鍵配信に係る具体的な方式について詳細に説明する。但し、上記の第１実施形態に係る鍵提供システム１００と実質的に同一の構成要素については同一の符号を付することにより重複する説明を省略し、相違する構成要素について詳細に説明する。なお、本実施形態は、Ａ０６（Ａ）方式の鍵提供システム１００において、端末装置が効率的に有向グラフを生成する手段を備える点に特徴を有する。
【０３０２】
［第３実施形態の特徴］
ここで、本発明の第３実施形態と上記の第１実施形態との相違点について簡単に説明する。まず、上記の第１実施形態と本実施形態との最大の相違点は、本発明の技術を適用する鍵配信方式の違いである。上記の第１実施形態がＡＩ０５方式に適用可能であるのに対し、本実施形態はＡ０６（Ａ）方式に対して適用することが可能である。ＡＩ０５方式が抱える問題については、上記の第２実施形態に関する説明の中で詳細に説明したが、その一つである各契約者が保持すべき鍵数が大きいという問題について解決手段を提供するのがＡ０６（Ａ）方式である。Ａ０６（Ａ）方式は、ＡＩ０５方式の有向グラフＨにおいて有向パスを構成する有向枝数が最大となる最長有向パスの有向枝数を超えないという条件の下、有向グラフを構成する有向枝の長さを短く置換する構成に特徴を有する。つまり、Ａ０６（Ａ）方式は、ＡＩ０５方式と同程度の演算量を維持しながら、各契約者が保持すべき鍵数を削減しているのである。しかしながら、ＡＩ０５方式、Ａ０６（Ｂ）方式と同様に、各契約者が保持又は算出すべき有向グラフの情報が膨大であり、一般的な端末装置でこれを実現するのは困難であるという共通の問題を抱えている。
【０３０３】
（本実施形態の目的）
そこで、本実施形態の目的は、Ａ０６（Ａ）方式の有向グラフＩに基づく鍵提供システム１００において、各々の契約者が必要とする有向グラフの情報のみを生成することにより、各契約者に掛かる演算負荷を大きく低減させる手段を提供することにある。
【０３０４】
［鍵提供システム１００の構成］
ここで、本実施形態に係る鍵提供システム１００の構成について説明する。但し、基本的なシステム構成は、図１に示した第１実施形態の構成と実質的に同一であるため、その詳細な説明を省略する。また、本実施形態に係る鍵提供システム１００に含まれる鍵配信サーバ３０２、及び端末装置３２２のハードウェア構成についても、図２に示した鍵配信サーバ１０２、及び端末装置１２２のハードウェア構成と実質的に同一であるため、その詳細な説明を省略する。
【０３０５】
［鍵配信サーバ３０２の機能構成］
そこで、図２９を参照しながら、本実施形態に係る鍵配信サーバ３０２の機能構成について説明する。図２９は、鍵配信サーバ３０２の機能構成を示す説明図である。
【０３０６】
図２９に示すように、鍵配信サーバ３０２は、主に、木構造設定部１０４と、座標軸設定部１０６と、仮有向グラフ生成部３０８と、有向グラフ生成部３１０と、初期中間鍵設定部１１２と、鍵生成部１１４と、暗号化部１１６と、通信部１１８と、部分集合決定部１２０とにより構成される。但し、本実施形態の特徴的な構成は、主に、仮有向グラフ生成部３０８、及び有向グラフ生成部３１０であり、他の構成要素については、第１実施形態に係る鍵配信サーバ１０２の構成要素と実質的に同一である。従って、仮有向グラフ生成部３０８、及び有向グラフ生成部３１０の機能構成のみについて詳細に説明する。
【０３０７】
（仮有向グラフ生成部３０８）
まず、仮有向グラフ生成部３０８の機能構成について説明する。仮有向グラフ生成部３０８は、上記の第１実施形態に係る有向グラフ生成部１１０と実質的に同一の機能構成を有し、ＡＩ０５方式の有向グラフＨと同じ形状を有する仮有向グラフＩ’を生成する機能を有する。例えば、ｎ＝６４、パラメータｋ＝６の場合、仮有向グラフＩ’は、図５に示す有向グラフＨと一致する。
【０３０８】
（有向グラフ生成部３１０）
次に、有向グラフ生成部３１０について説明する。有向グラフ生成部３１０は、仮有向グラフＩ’を構成する複数の有向枝の一部を置換して有向グラフＩを生成する機能を有する。まず、有向グラフ生成部３１０は、仮有向グラフＩ’に含まれる有向パスのうち、それを構成する有向枝数が最大の有向パスを選択する。その有向パスを最長有向パスＬＰ（Ｌｏｎｇｅｓｔ  Ｐａｔｈ）と呼ぶことにする。そして、有向グラフ生成部３１０は、全ての有向パスの有向枝数が最長有向パスＬＰの有向枝数を超えないという条件の下で、仮有向グラフＩ’に含まれる一部の有向パスをより短い複数の有向枝の鎖で構成される有向パスに置換することで、有向グラフＩを生成する。
【０３０９】
（有向グラフＩの生成方法）
まず、図３０〜図３４を参照しながら、有向グラフＩの生成方法について説明する。図３０は、有向グラフＩを生成する処理の全体的な流れを示した説明図である。図３１は、仮有向グラフＩ’の生成処理を示した説明図である。図３２は、最長有向パスＬＰを抽出する処理の流れを示した説明図である。図３３は、最長有向パスＬＰ以外の有向パスの中から最長の有向パスＰＬＰ（Ｐｅｒｔｉａｌｌｙ  Ｌｏｎｇｅｓｔ  Ｐａｔｈ）を抽出する処理の流れを示した説明図である。図３４は、仮有向グラフＩ’の有向パスをより短い有向枝の組で構成される有向パスに置換する処理を示した説明図である。
【０３１０】
図３０に示すように、まず、仮有向グラフ生成部３０８により、仮有向グラフＩ’が生成される（Ｓ１４０）。次いで、仮有向グラフＩ’を形成する有向パスの中から最長有向パスＬＰが抽出される（Ｓ１４２）。次いで、仮有向グラフＩ’の最長有向パスＬＰ以外の有向パスの中から最長の有向パスＰＬＰが抽出される（Ｓ１４４）。なお、各部分集合に対応する仮有向グラフＩ’について最長の有向パスＰＬＰが抽出されてもよい。次いで、仮有向グラフＩ’の有向パスを構成する有向枝がより短い有向枝に置換される（Ｓ１４６）。このとき、全ての有向パスの有向枝数が最長有向パスＬＰの有向枝数を超えないように有向枝が置換される。つまり、この置換処理を実行したとしても、ＡＩ０５方式よりも鍵生成に要する計算量の最悪値が増加しないようにする。
【０３１１】
以下、図３０に示した各ステップについて、より詳細に説明する。
【０３１２】
（Ｓ１４０の詳細）
まず、図３１を参照しながら、仮有向グラフＩ’の生成処理について説明する。図３１は、仮有向グラフＩ’（ｌｖ→ｒｖ−１）の生成処理の流れを示す説明図である。
【０３１３】
まず、集合（ｌｖ→ｒｖ−１）の要素を水平直線上に左から右に包含関係が大きくなるように並べる。そして、最右の座標点の右側と左側とに各々１つの仮座標点（Ｓｔａｒｔ，Ｅｎｄ）を配置する。すると、最左の仮座標点Ｓｔａｒｔから最右の仮座標点Ｅｎｄまでの長さは、Ｌｖ＝ｒｖ−ｌｖ＋１となる。さらに、ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たす整数ｘ（１≦ｘ≦ｋ）を算定する（Ｓ１５０）。この処理は、主に、座標軸設定部１０６により実行される。
【０３１４】
次いで、カウンタｉを０〜ｘ−１まで動かしながら下記の操作を行う。仮座標点Ｓｔａｒｔから開始し、その座標点からｎｉ／ｋだけ離れた座標点へのジャンプを続け、仮座標点Ｅｎｄに到達するか、次のジャンプが仮座標点Ｅｎｄを超えたところで終了する。その後、各ジャンプに対応する有向枝を生成する（Ｓ１５２）。次いで、仮座標点に到達する有向枝を全て消去する（Ｓ１５４）。さらに、ある座標点Ｔに到達する有向枝が複数ある場合には、ジャンプの距離が一番長いもののみを残し、それ以外の有向枝は消去する（Ｓ１５６）。この処理は、主に、仮有向グラフ生成部３０８により実行される。
【０３１５】
（Ｓ１４２の詳細）
次に、図３２を参照しながら、最長有向パスＬＰを抽出するステップ（Ｓ１６０）について詳細に説明する。ここで、以下に示す２つの表記を導入する。
【０３１６】
・ＤＤＴ      ：  最長有向パスＬＰの有向枝数を示す。
・Ｊ（ａ，ｂ）：  長さｂの有向枝がａ本連続して存在することを示す。
【０３１７】
まず、ｔ＝ｎ１／ｋ−１とおく。次いで、仮有向グラフＩ’（１→ｎ）の座標点［１，１］から座標点［１，ｎ］までの有向パスＰ（［１，１］，［１，ｎ］）を考える。有向パスＰ（［１，１］，［１，ｎ］）は、Ｊ（ｔ，１），Ｊ（ｔ，ｎ１／ｋ），…，Ｊ（ｔ，ｎ（ｋ−２）／ｋ），Ｊ（ｔ−１，ｎ（ｋ−１）／ｋ），Ｊ（ｔ，ｎ（ｋ−２）／ｋ），…，Ｊ（ｔ，ｎ１／ｋ），Ｊ（ｔ＋１，１）と表現される。この有向パスを最長有向パスＬＰと呼ぶ。このとき、最長有向パスＬＰの有向枝数ＤＤＴは、ＤＤＴ＝（２ｋ−１）＊（ｎ１／ｋ−１）となる。次いで、最長有向パスＬＰを構成する全ての有向枝に対してａｃｔｉｖｅマークを設定する（Ｓ１６０）。
【０３１８】
（Ｓ１４４の詳細）
次に、図３３を参照しながら、最長有向パスＬＰを含む仮有向グラフＩ’以外の全ての部分集合に対応する仮有向グラフＩ’について、最長の有向パスＰＬＰを抽出する処理（Ｓ１６２〜Ｓ１７６）について説明する。ここで、以下に示す２つの表記を導入する。
【０３１９】
・ＣＰ（Ｃｕｒｒｅｎｔ  Ｐａｔｈ）  ：  参照中の有向パス（現在パス）
・＃ＪＰ（ＣＰ）                    ：  現在パスの有向枝数
【０３２０】
まず、有向グラフＩ’の始点から終点への現在パスＣＰを決定する。このとき、現在パスが有向グラフＩ’（ａ→ｂ）に含まれる場合は、有向パスＰ（［ａ，ａ］，［ａ，ｂ］）を現在パスＣＰとし、有向グラフＩ’（ａ←ｂ）に含まれる場合は、有向パスＰ（［ｂ，ｂ］，［ｂ，ａ］）を現在パスＣＰとする（Ｓ１６２）。次いで、現在パスＣＰを構成する有向枝のうち、最長の有向枝を選択して、その長さをＪとする（Ｓ１６４）。次いで、Ｊ≦１か否かを判断する（Ｓ１６６）。
【０３２１】
Ｊ≦１である場合、現在パスＣＰを最長の有向パスＰＬＰと決定して、現在パスＣＰに含まれる全ての有向枝にａｃｔｉｖｅマークを設定する（Ｓ１７６）。Ｊ＞１である場合、＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴか否かを判断する（Ｓ１６８）。＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴでない場合、現在パスＣＰを有向パスＰＬＰと決定して、現在パスに含まれる全ての有向枝にａｃｔｉｖｅマークを設定する（Ｓ１７６）。＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴである場合、Ｊ＝ｎｊ／ｋとなる自然数ｊを算出する（Ｓ１７０）。
【０３２２】
次いで、現在パスＣＰに含まれる長さＪの有向枝の中で現在パスＣＰの始点から最も遠い有向枝を抽出する（Ｓ１７２）。ステップＳ１７２で抽出された有向枝の始点から伸びたｔ個の長さｎ（ｊ−１）／ｋの有向枝の直後にｎ（ｊ−１）／ｋの長さを有する１つの有向枝を追加し、ステップＳ１７２で抽出された有向枝を除去し（Ｓ１７４）、ステップＳ１６２に戻って上記の処理を繰り返し実行する。
【０３２３】
なお、ステップＳ１６２〜ステップＳ１７４の間に生じるループ処理は、有向グラフＩ’の始点から終点への有向パスが全て長さ１の有向枝で構成されるか、又は、それ以上の有向枝の置換を実行することで、その有向パスを構成する有向枝数がＤＤＴを超えてしまう場合にループ処理を終了する。
【０３２４】
（Ｓ１４６の詳細）
次に、図３４を参照しながら、仮有向グラフＩ’に含まれる有向枝を短い有向枝に置換する処理（Ｓ１８０〜Ｓ２０２）について詳細に説明する。
【０３２５】
まず、グラフ中のａｃｔｉｖｅかつ、未実施（ｄｏｎｅマークが付いていない）有向枝のうち、長さＪ’が最長の有向枝を抽出する。もし、最大の有向枝が複数存在する場合は、仮有向グラフＩ’の始点から最も遠い有向枝を選択する（Ｓ１８０）。ここで選択された有向枝をＷＪ（Ｗｏｒｋｉｎｇ  Ｊｕｍｐ）と呼ぶことにする。また、有向枝ＷＪの始点をＷＪＳ、終点をＷＪＥと呼ぶことにする。さらに、仮有向グラフＩ’の始点からＷＪＳまでの有向パスに含まれる有向枝数をＤと表記する。
【０３２６】
次いで、有向枝の長さＪ’がＪ’≦１であるか否かを判断する（Ｓ１８２）。Ｊ’≦１である場合、ａｃｔｉｖｅマークの付いていない有向枝を全て消去し、ａｃｔｉｖｅマークが付いている有向枝を全て集めたものをＥ（Ｉ（ａ→ｂ））又はＥ（Ｉ（ａ←ｂ））と設定する（Ｓ２０２）。逆に、Ｊ’≦１でない場合、ＷＪＳからＷＪＥ−１までの有向パスを現在パスＣＰと設定する（Ｓ１８４）。但し、ＷＪＥ−１は、ＷＪＥの１つ手前の要素を表す。
【０３２７】
次いで、現在パスＣＰに含まれる有向枝の中から最長の有向枝を抽出し、その長さをＪとする（Ｓ１８６）。次いで、有向枝の長さＪがＪ≦１か否かを判断する（Ｓ１８８）。Ｊ≦１である場合、現在パスＣＰに含まれる全ての有向枝にａｃｔｉｖｅマークを付ける（Ｓ１９８）。そして、ＷＪにｄｏｎｅマークを付け（Ｓ２００）、ステップＳ１８０の処理に戻る。逆に、Ｊ≦１でない場合、＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴ−Ｄであるか否かを判断する（Ｓ１９０）。＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴ−Ｄでない場合、ステップＳ１９８及びＳ２００の処理を経てステップＳ１８０の処理に戻る。＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴ−Ｄである場合、Ｊ＝ｎｊ／ｋを満たすｊを算出する（Ｓ１９２）。
【０３２８】
次いで、現在パスＣＰに含まれる長さＪの有向枝が複数存在する場合、現在パスＣＰの始点から最も遠い位置にある有向枝を抽出する（Ｓ１９４）。次いで、ステップＳ１９４で抽出された有向枝の始点から伸びたｎ１／ｋ−１個の長さｎ（ｊ−１）／ｋの有向枝の直後にｎ（ｊ−１）／ｋの長さを有する１つの有向枝を追加し、ステップＳ１９４で抽出された有向枝を消去する（Ｓ１９６）。そして、ステップＳ１８４の処理に戻る。
【０３２９】
但し、ステップＳ１８４〜Ｓ１９６の間に生じるループ処理は、ＷＪＳからＷＪＥ−１への有向パスが全て長さ１の有向枝で構成されるか、又は、それ以上の有向枝を置換することによってＷＪＳからＷＪＥ−１への有向パスに含まれる有向枝数がＤＤＴを超えてしまう場合に終了する。また、上記のステップＳ１８０〜Ｓ２００の間に生じるループ処理は、仮有向グラフＩ’に含まれる有向枝の中から、ｄｏｎｅが設定されておらず、かつ、長さが２以上の有向枝が全てなくなった時点で終了する。
【０３３０】
以上、本実施形態に係る有向グラフＩの生成方法について説明した。
【０３３１】
［端末装置３２２の機能構成］
次に、図３５を参照しながら、本実施形態に係る端末装置３２２の機能構成について説明する。図３５は、端末装置３２２の機能構成を示す説明図である。
【０３３２】
図３５に示すように、端末装置３２２は、主に、通信部１２４と、判断部１２６と、有向グラフ生成部３２７と、鍵生成部１２８と、復号部１３０とにより構成される。但し、本実施形態の特徴的な構成は、主に、有向グラフ生成部３２７であり、他の構成要素については、第１実施形態に係る端末装置１２２の構成要素と実質的に同一である。従って、有向グラフ生成部３２７の機能構成のみについて詳細に説明する。
【０３３３】
（有向グラフ生成部３２７）
まず、有向グラフ生成部３２７の機能構成について説明する。有向グラフ生成部３２７は、鍵配信サーバ３０２がセット鍵を導出するために利用した有向グラフＩの中で、自身が属する部分集合のセット鍵を導出するために必要な有向パスのみを生成する機能を有する。つまり、有向グラフ生成部３２７は、自身が必要なセット鍵を導出可能な有向パスのみにより構成される有向グラフＧを生成することができる。
【０３３４】
（有向グラフＧの生成方法）
ここで、図３８及び図３９を参照しながら、有向グラフＧの生成方法について詳細に説明する。図３８及び図３９は、契約者ｉが、自身が所属する部分集合Ｓｊのセット鍵ｋ（Ｓｊ）を導出するために必要な有向グラフＧを生成する処理の流れを示す説明図である。
【０３３５】
但し、図３８の最下段と図３９の最上段に記載されたＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆの各記号は，図３８と図３９とに跨る処理の推移において、その移動先を明示するための記号である。例えば、図３８のＡに達するステップは、図３９のＡに達したものと看做す。
【０３３６】
なお、端末装置３２２は、契約者数ｎ、及びパラメータｋの情報を予め保持している。また、有向グラフＧは、座標点の集合Ｖ（Ｇ（ｉ））と有向枝の集合Ｅ（Ｇ（ｉ））とにより構成され、Ｇ（ｉ）＝｛Ｖ（Ｇ（ｉ），Ｅ（Ｇ（ｉ））｝と表現される。そして、有向グラフＧ（ｉ）に含まれる座標点が１つの場合、有向枝の集合Ｅ（Ｇ（ｉ））は、Ｅ（Ｇ（ｉ））＝φ（記号φは空集合）と表現される。また、［ａ，ｂ］×［ａ，ｃ］は、始端の座標点が［ａ，ｂ］であり、終端の座標点が［ａ，ｃ］である有向枝を表す。さらに、説明の便宜上、鍵配信サーバ１０２から下式（２２）の情報を取得したものと仮定する。
【０３３７】
【数１９】
2008236380.tif 000021
【０３３８】
図３８に示すように、通信部１２４が取得した許諾契約者の部分集合に関する情報ｓｇｉの中に自身（契約者ｉ）が含まれる部分集合Ｓｊ（ｊ∈Ｓｊ）が存在するか否かを判断する（Ｓ８２２）。部分集合Ｓｊが存在する場合、ステップＳ８２４に進む。部分集合Ｓｊが存在しない場合、自身が排除された（コンテンツを取得する権利無し）ものとして、有向グラフＧの生成処理を終了する。ステップＳ８２２の処理は、主に、上記の判断部１２６により実行される。
【０３３９】
次いで、有向グラフ生成部３２７は、契約者の番号ｉがＴＰｊと一致するか否かを判断する（Ｓ８２４）。ｉ＝ＴＰｊである場合、契約者ｉがセット鍵を導出する際に生成が必要な有向グラフＧ（ｉ）＝｛Ｖ（Ｇ（ｉ），Ｅ（Ｇ（ｉ））｝をＶ（Ｇ（ｉ））＝｛［ＳＰｊ，ｉ］｝，Ｅ（Ｇ（ｉ））＝φとして出力し（Ｓ８８０）、有向グラフＧの生成処理を終了する。ｉ＝ＴＰｊでない場合、ステップＳ８２６に進む。
【０３４０】
次いで、有向グラフ生成部３２７は、契約者ｉの現在位置の座標ｃｕｐ、現在考慮中の範囲の始点の座標ｓｐ及び終点の座標ｅｐ、カウンタｍ、カウンタｚ、現在のパスにおける有向枝の個数ｄｄＴ、座標点の集合Ｖ（Ｇ（ｉ））、及び有向枝の集合Ｅ（Ｇ（ｉ））を次のように初期化する（Ｓ８２６）。
【０３４１】
ｓｐ＝ＳＰｊ，ｅｐ＝ＥＰｊ，ｃｕｐ＝ｉ，ｍ＝１，ｚ＝０，ｄｄＴ＝ＤＤＴ＝（２ｋ−１）＊（ｎ１／ｋ−１），Ｖ（Ｇ（ｉ））＝φ，Ｅ（Ｇ（ｉ））＝φ。但し、ｊは、ｉ∈Ｓｊを満たす部分集合Ｓｊのインデックスｊを表す。
【０３４２】
次いで、有向グラフ生成部３２７は、ＳＰｊ＝１か否かを判断する（Ｓ８２８）。ＳＰｊ＝１である場合、ステップＳ８３０に進む。そして、有向グラフ生成部３２７は、Ｌｖ＝｜ＥＰｊ−ＳＰｊ｜＋１を計算し、さらに、ｅｐにｅｐ−１を代入した後（Ｓ８３０）、ステップＳ８３４に進む。逆に、ＳＰｊ＝１でない場合、ステップＳ８３２に進む。そして、有向グラフ生成部３２７は、Ｌｖ＝｜ＥＰｊ−ＳＰｊ｜＋２を計算し（Ｓ８３２）、ステップＳ８３４に進む。
【０３４３】
次いで、有向グラフ生成部３２７は、ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たすｘ（１≦ｘ≦ｋ）を算出する（Ｓ８３４）。次いで、有向グラフ生成部３２７は、ｃｕｐ＝ＴＰｊであるか否かを判断する（Ｓ８３６）。ｃｕｐ＝ＴＰｊである場合、ステップＳ８７８に進む。そして、契約者ｉが部分集合の鍵を導出するために利用する有向グラフＧ｛Ｖ（Ｇ（ｉ）），Ｅ（Ｇ（ｉ））｝を出力し（Ｓ８７８）、有向グラフＧの生成処理を終了する。
【０３４４】
逆に、ｃｕｐ＝ＴＰｊでない場合、ステップＳ８３８に進む。そして、有向グラフ生成部３２７は、ｚ＝０であるか否かを判断する（Ｓ８３８）。ｚ＝０である場合、ステップＳ８４０に進む。ｚ＝０でない場合、ステップＳ８４６に進み、ｓｐからｅｐに到達するジャンプの回数が最小となる最大有向パス（ＭＰ；ＭａｘＰａｔｈ）を決定する（Ｓ８４６）。この処理については後述する。
【０３４５】
次いで、有向グラフ生成部３２７は、ＳＰｊ＜ＥＰｊであるか否かを判断する（Ｓ８４０）。ＳＰｊ＜ＥＰｊである場合、ステップＳ８４２に進む。そして、ｓｐを下式（２３）のように設定し（Ｓ８４２）、ステップＳ８４６に進む。一方、ＳＰｊ＜ＥＰｊでない場合、ステップＳ８４４に進む。そして、ｓｐを下式（２４）のように設定し（Ｓ８４４）、ステップＳ８４６に進む。
【０３４６】
【数２０】
2008236380.tif 000022
【０３４７】
次いで、有向グラフ生成部３２７は、Ａ０６（Ａ）方式における有向グラフＩの一部と一致するように、ｓｐからｅｐに至る有向パスの中で、ジャンプの回数が最小となる有向パスをＭＰ（ＭａｘＰａｔｈ）と決定する（Ｓ８４６）。このＭＰを決定する処理については後述する。
【０３４８】
次いで、有向グラフ生成部３２７は、ｚ＝０であるか否かを判断する（Ｓ８４８）。ｚ＝０でない場合、ステップＳ８５８に進む。一方、ｚ＝０である場合、ステップＳ８５２に進む。そして、ＭＰ上の有向枝数をｗとし、［ＳＰｊ，ｓｐ］を始端とする有向枝を１番目の有向枝として、ＭＰ上のｉ番目の有向枝の距離をｄｔｉと定義する。但し、ｄｔｗ＋１＝０とする。ここで、［ＳＰｊ，ＳＰｊ］を始点として、カウンタｉをｗから１まで動かしながら、距離ｄｔｉのジャンプを実行し、それに対応する有向枝を生成する。このとき、ｉ番目のジャンプにおける到達点はｉ−１番目のジャンプの出発点になることに注意が必要である。さらに、ステップＳ８４６で決定したＭＰと、ここで（Ｓ８５２）で生成した有向枝とを新たなＭＰとし、ｚ＝１、ｓｐ＝ＳＰｊ、ｅｐ＝ＥＰｊとする（Ｓ８５２）。
【０３４９】
次いで、有向グラフ生成部３２７は、ＳＰｊ＝１であるか否かを判断する（Ｓ８５４）。ＳＰｊ＝１でない場合、ステップＳ８５８に進む。一方、ＳＰｊ＝１である場合、ステップＳ８５６に進む。そして、有向グラフ生成部３２７は、ＭＰ上に有向枝［ＳＰｊ，ＥＰｊ−１］×［ＳＰｊ，ＥＰｊ］を追加して新たなＭＰとする（Ｓ８５６）。
【０３５０】
次いで、有向グラフ生成部３２７は、Ａ０６（Ａ）方式の有向グラフＩの一部に一致するＭＰ上の有向枝をｄｄＴを超えない範囲でなるべく距離の短い有向枝で置換したＣＰを決定する（Ｓ８５８）。ＣＰの決定処理については後述する。
【０３５１】
次いで、有向グラフ生成部３２７は、ＣＰ上に存在する各有向枝の中で、始端と終端との間に座標点［ＳＰｊ，ｃｕｐ］が含まれる有向枝を特定する（Ｓ８６０）。但し、始端又は終端の座標点と座標点［ＳＰｊ，ｃｕｐ］とが一致する場合も含む。また、特定された有向枝をＣＵＥ（Ｃｕｒｒｅｎｔ  Ｕｓｅｒ’ｓ  Ｅｄｇｅ）と呼ぶことにする。なお、座標点［ＳＰｊ，ｃｕｐ］がＣＰ上に存在し、隣接する２つの有向枝の始端及び終端に座標点［ＳＰｊ，ｃｕｐ］が一致する場合は、座標点［ＳＰｊ，ｃｕｐ］を始点とする有向枝をＣＵＥとする。また、ＣＰ上において、［ＳＰｊ，ｃｕｐ］からＣＵＥの始点までに存在する有向枝数をｄとし、ｄｄＴにｄｄＴ−ｄを代入する。
【０３５２】
次いで、有向グラフ生成部３２７は、座標点［ＳＰｊ，ＴＰｊ］がＣＵＥの終端に一致せず、かつ、ＣＵＥの終端よりも有向グラフＩの終点側に近くない場合、ステップＳ８７２に進む。一方、座標点［ＳＰｊ，ＴＰｊ］がＣＵＥの終端に一致するか、又はＣＵＥの終端よりも有向グラフＩの終点側に近い場合、ステップＳ８６４に進む（Ｓ８６２）。
【０３５３】
次いで、有向グラフ生成部３２７は、Ｖ（Ｇ（ｉ））、及びＥ（Ｇ（ｉ））を次のように設定する（Ｓ８６４）。
【０３５４】
Ｖ（Ｇ（ｉ））＝φである場合、Ｖ（Ｇ（ｉ））＝［ＳＰｊ，ｓｐｉ，ｍ］∪［ＳＰｊ，ｅｐｉ，ｍ］とする。一方、Ｖ（Ｇ（ｉ））＝φでない場合、Ｖ（Ｇ（ｉ））＝Ｖ（Ｇ（ｉ））∪［ＳＰｊ，ｅｐｉ，ｍ］とする。また、Ｅ（Ｇ（ｉ））＝Ｅ（Ｇ（ｉ））∪｛［ＳＰｊ，ｓｐｉ，ｍ］×［ＳＰｊ，ｅｐｉ，ｍ］｝とする。
【０３５５】
但し、ｓｐｉ，ｍ，ｅｐｉ，ｍは、各々現在のＣＵＥの始端及び終端の座標を表す。なお、Ｖ（Ｇ（ｉ））＝φである場合とＶ（Ｇ（ｉ））＝φでない場合とで処理が異なるのは次の理由による。Ｖ（Ｇ（ｉ））＝φの場合には、有向枝の始端及び終端の両方を座標点として追加する必要があるが、Ｖ（Ｇ（ｉ））＝φでない場合には、追加される有向枝の始端は、既にＶ（Ｇ（ｉ））の座標点として追加されており、重複を避けるため、Ｖ（Ｇ（ｉ））には終端となる座標点のみを追加するのである。
【０３５６】
次いで、有向グラフ生成部３２７は、ｍにｍ＋１を代入する（Ｓ８６６）。次いで、有向グラフ生成部３２７は、ＣＰ上にＣＵＥの次の有向枝（ＣＵＥの終端を始端とする有向枝）が存在するか否かを判断する（Ｓ８６８）。ＣＵＥの次の有向枝が存在する場合、ステップＳ８７０に進み、ＣＰ上に存在するＣＵＥの次の有向枝を新たなＣＵＥとして設定し、ステップＳ８６２の処理に戻る。一方、ＣＵＥの次の有向枝が存在しない場合、ステップＳ８７２に進む。
【０３５７】
次いで、有向グラフ生成部３２７は、ｓｐにＣＵＥの始端の座標を設定し、ｅｐにＣＵＥの終端の一つ手前に位置する座標点の座標を設定し、ＣＰの始点からＣＵＥの始端までに存在する有向枝数をｄとし、ｄｄＴにｄｄＴ−ｄを代入する（Ｓ８７２）。次いで、有向グラフ生成部３２７は、ｍ＝１か否かを判断する（Ｓ８７４）。ｍ＝１である場合、ステップＳ８６２の処理に戻る。一方、ｍ＝１でない場合、ステップＳ８７６に進む。
【０３５８】
次いで、有向グラフ生成部３２７は、ｃｕｐ＝ｅｐｉ，（ｍ−１）を設定し（Ｓ８７６）、ステップＳ８３６の処理に戻る。
【０３５９】
以上、本実施形態に係る有向グラフＧの生成方法について説明した。上記の生成方法では、ｓｇｉに有向グラフＩの終点に関する情報ＥＰｊが含まれることを前提としているが、ＳＰｊが決まるとＥＰｊは論理二分木ＢＴにより一意に特定可能であるため、契約者自身がＥＰｊを特定するように構成することも可能である。この構成は、例えば、ステップＳ８２６の処理にＥＰｊを導出するステップを追加することにより実現される。
【０３６０】
（最大有向パスＭＰの決定方法）
次に、図４０を参照しながら、図３８のステップＳ８４６における最大有向パスＭＰの決定方法について説明する。図４０は、最大有向パスＭＰの決定処理の流れを示す説明図である。
【０３６１】
図４０に示すように、まず、有向グラフ生成部３２７は、カウンタｌ、現在考慮中のジャンプの到達点の座標ｔｓｐ、及び現在考慮中の距離ｄｔを次のように初期化する（Ｓ８８２）。ｌ＝ｘ，ｔｓｐ＝ｓｐ，ｄｔ＝｜ｅｐ−ｔｓｐ｜。
【０３６２】
次いで、有向グラフ生成部３２７は、ｌにｌ−１を代入する（Ｓ８８４）。次いで、有向グラフ生成部３２７は、ｌ≧０であるか否かを判断する（Ｓ８８６）。ｌ≧０でない場合、ステップＳ８９６に進み、座標点［ＳＰｊ，ｓｐ］から［ＳＰｊ，ｅｐ］に達する少なくとも１つの有向枝の鎖により形成される有向パスをＭＰと設定し（Ｓ８９６）、ＭＰの決定処理を終了する。一方、ｌ≧０である場合、ステップＳ８８８に進む。
【０３６３】
次いで、有向グラフ生成部３２７は、ｄｔ−ｎｌ／ｋ≧０であるか否かを判断する（Ｓ８８８）。ｄｔ−ｎｌ／ｋ≧０でない場合、ステップＳ８８４の処理に戻る。一方、ｄｔ−ｎｌ／ｋ≧０である場合、ステップＳ８９０に進む。
【０３６４】
次いで、有向グラフ生成部３２７は、［ＳＰｊ，ｔｓｐ］を出発点として距離ｎｌ／ｋのジャンプを実行し、対応する有向枝を生成する（Ｓ８９０）。次いで、有向グラフ生成部３２７は、ステップＳ８９０で生成された有向枝の終端の座標を新たにｔｓｐとする（Ｓ８９２）。次いで、有向グラフ生成部３２７は、ｄｔにｄｔ−ｎｌ／ｋを代入し（Ｓ８９４）、ステップＳ８８８の処理に戻る。
【０３６５】
以上、最大有向パスＭＰの決定方法について説明した。
【０３６６】
（現在パスＣＰの決定方法）
次に、図４１を参照しながら、現在パスＣＰの決定方法について説明する。図４１は、ＣＰの決定処理の流れを示す説明図である。
【０３６７】
図４１に示すように、まず、有向グラフ生成部３２７は、ＭＰに含まれる有向枝のうち、距離が最大のものを抽出し、その距離をＪとおく（Ｓ９０２）。次いで、有向グラフ生成部３２７は、Ｊ≦１であるか否かを判断する（Ｓ９０４）。Ｊ≦１である場合、ステップＳ９１４に進み、座標点［ＳＰｊ，ｓｐ］から［ＳＰｊ，ｅｐ］に至る有向パスをＣＰと決定し（Ｓ９１４）、ＣＰの決定処理を終了する。逆に、Ｊ≦でない場合、ステップＳ９０６に進む。
【０３６８】
次いで、有向グラフ生成部３２７は、＃ＪＰ（ＭＰ）＋ｔ≧ｄｄＴであるか否かを判断する（Ｓ９０６）。＃ＪＰ（ＭＰ）＋ｔ≧ｄｄＴである場合、ステップＳ９０８に進む。逆に、＃ＪＰ（ＭＰ）＋ｔ≧ｄｄＴでない場合、ステップＳ９１４に進み、座標点［ＳＰｊ，ｓｐ］から［ＳＰｊ，ｅｐ］に至る有向パスをＣＰと決定し（Ｓ９１４）、ＣＰの決定処理を終了する。
【０３６９】
次いで、有向グラフ生成部３２７は、Ｊ＝ｎｊ／ｋを満たすｊを求める（Ｓ９０８）。そして、有向グラフ生成部３２７は、ＭＰに含まれる距離Ｊの有向枝のうち、ＭＰの始点から最も遠い位置にある有向枝を抽出する（Ｓ９１０）。そして、ステップＳ９１０で抽出された有向枝の始点から距離ｎ（ｊ−１）／ｋを有するｔ個の既存の有向枝の直後に、距離ｎ（ｊ−１）／ｋを有する有向枝を生成し、ステップＳ９１０で抽出された有向枝を消去する。さらに、有向枝が置換されたＭＰを新たなＭＰに設定し（Ｓ９１２）、ステップＳ９０２の処理に戻る。
【０３７０】
以上、現在パスＣＰの決定方法について説明した。上記の決定処理により、上記の有向グラフＧの生成処理を実施することが可能になる。
【０３７１】
（具体例）
ここで、図３６及び図３７を参照しながら、上記の生成方法に基づき、有向グラフ生成部３２７により生成される有向グラフＧの具体例について説明する。図３６及び図３７は、契約者数ｎ＝６４、パラメータｋ＝６の場合に生成される有向グラフＧを示す説明図である。特に、集合（１→６４）に対応する有向グラフのみを示している。図３６及び図３７の上側に描いた図は、Ａ０６（Ａ）方式のアルゴリズムを用いた場合に契約者が導出する有向グラフＩである。一方、下側に描いた図は、本実施形態のアルゴリズムを用いた場合に契約者が導出する有向グラフＧである。
【０３７２】
（具体例１）
まず、図３６を参照すると、契約者１が部分集合［１，２］のセット鍵を導出するために生成する有向グラフＧが示されている。また、図中の実線は、契約者１がセット鍵を導出する際に、最終的に導出する必要のあるジャンプに対応した有向枝を示している。つまり、契約者１は、部分集合［１，２］のセット鍵を導出する際、実線で示した有向枝の始端に対応する中間鍵ｔ（［１，１］）をＰＲＳＧに入力し、その終端に対応するｔ（［１，２］）を導出する必要があることを意味している。さらに、実線と破線とにより構成される有向グラフＧは、契約者１が導出する必要がある最大有向パスＣＰを表している。
【０３７３】
（具体例２）
次に、図３７を参照すると、契約者７が部分集合［１，４４］のセット鍵を生成するために生成する有向グラフＧが示されている。また、図中の実線は、契約者７がセット鍵を導出する際に、最終的に導出する必要のあるジャンプに対応した有向枝を示している。つまり、契約者７は、部分集合［１，４４］のセット鍵を導出する際、予め保持している中間鍵ｔ（［１，８］）を利用し、実線で示した有向枝に沿ってＰＲＳＧを繰り返し実行して中間鍵ｔ（［１，４４］）を導出する必要があることを意味している。さらに、実線と破線とにより構成される有向グラフＧは、契約者７が導出する必要がある最大有向パスＣＰを表している。
【０３７４】
［効果］
従来、各契約者は、自身が所属する部分集合に対応する全ての有向グラフＩを保持するか、又は自身で全ての有向グラフＩを導出する必要があった。しかし、本実施形態は、各契約者が、自身の所属する部分集合に対応する有向グラフＩの中で、自身が鍵導出の際に必要とする有向枝のみで構成される有向グラフＧを導出する手段を提供する。従って、従来の鍵配信方式と比較し、各契約者が算出すべき有向枝の数を大幅に削減することが可能となり、各契約者が各々有向グラフＧを生成して高速に所望のセット鍵を導出することが可能になる。その結果、コンテンツの復号に掛かる時間を大幅に短縮することができる。
【０３７５】
＜第４実施形態＞
以下、図面を参照しながら、本発明の第４実施形態に係る鍵提供システム１００の構成、及び鍵配信に係る具体的な方式について詳細に説明する。但し、上記の第１実施形態に係る鍵提供システム１００と実質的に同一の構成要素については同一の符号を付することにより重複する説明を省略し、相違する構成要素について詳細に説明する。なお、本実施形態は、Ａ０６（Ａ＋Ｂ）方式の鍵提供システム１００において、端末装置が効率的に有向グラフを生成する手段を備える点に特徴を有する。
【０３７６】
［第４実施形態の特徴］
ここで、本発明の第４実施形態と上記の第１実施形態との相違点について簡単に説明する。まず、上記の第１実施形態と本実施形態との最大の相違点は、本発明の技術を適用する鍵配信方式の違いである。上記の第１実施形態がＡＩ０５方式に適用可能であるのに対し、本実施形態はＡ０６（Ａ＋Ｂ）方式に対して適用することが可能である。Ａ０６（Ａ＋Ｂ）方式は、Ａ０６（Ｂ）方式と同様に、より長い有向枝を用いて仮有向グラフを生成した後、仮有向グラフの中で、有向パスを構成する有向枝数が最大となる最長有向パスの有向枝数を超えないという条件の下、有向グラフを構成する有向枝の長さを短く置換する構成に特徴を有する。つまり、Ａ０６（Ａ＋Ｂ）方式は、ＡＩ０５方式に比べ、鍵生成に要する演算量と各契約者が保持すべき鍵数とを削減しているのである。しかしながら、ＡＩ０５方式、Ａ０６（Ｂ）方式、Ａ０６（Ａ）方式と同様、各契約者が保持又は算出すべき有向グラフの情報が膨大であり、一般的な端末装置でこれを実現するのは困難であるという共通の問題を抱えている。
【０３７７】
（本実施形態の目的）
そこで、本実施形態の目的は、Ａ０６（Ａ＋Ｂ）方式の有向グラフＩに基づく鍵提供システム１００において、各々の契約者が必要とする有向グラフの情報のみを生成することにより、各契約者に掛かる演算負荷を大きく低減させる手段を提供することにある。
【０３７８】
［鍵提供システム１００の構成］
ここで、本実施形態に係る鍵提供システム１００の構成について説明する。但し、基本的なシステム構成は、図１に示した第１実施形態の構成と実質的に同一であるため、その詳細な説明を省略する。また、本実施形態に係る鍵提供システム１００に含まれる鍵配信サーバ４０２、及び端末装置４２２のハードウェア構成についても、図２に示した鍵配信サーバ１０２、及び端末装置１２２のハードウェア構成と実質的に同一であるため、その詳細な説明を省略する。
【０３７９】
［鍵配信サーバ４０２の機能構成］
そこで、図４２を参照しながら、本実施形態に係る鍵配信サーバ４０２の機能構成について説明する。図４２は、鍵配信サーバ４０２の機能構成を示す説明図である。
【０３８０】
図４２に示すように、鍵配信サーバ４０２は、主に、木構造設定部１０４と、座標軸設定部２０６と、仮有向グラフ生成部４０８と、有向グラフ生成部４１０と、初期中間鍵設定部１１２と、鍵生成部１１４と、暗号化部１１６と、通信部１１８と、部分集合決定部１２０とにより構成される。但し、本実施形態の特徴的な構成は、主に、仮有向グラフ生成部４０８、及び有向グラフ生成部４１０であり、他の構成要素については、第１又は第２実施形態に係る鍵配信サーバ１０２の構成要素と実質的に同一である。従って、仮有向グラフ生成部４０８、及び有向グラフ生成部４１０の機能構成のみについて詳細に説明する。
【０３８１】
（仮有向グラフ生成部４０８）
まず、仮有向グラフ生成部４０８の機能構成について説明する。仮有向グラフ生成部４０８は、上記の第２実施形態に係る有向グラフ生成部２１０と実質的に同一の機能構成を有し、Ａ０６（Ｂ）方式の有向グラフＩと同じ形状を有する仮有向グラフＩ’を生成する機能を有する。例えば、ｎ＝６４、パラメータｋ＝６の場合、図４３に示す仮有向グラフＩ’は、図２０に示す有向グラフＩと一致する。同様に、ｎ＝６４、パラメータｋ＝３の場合、図４４に示す仮有向グラフＩ’は、図２１に示す有向グラフＩと一致する。
【０３８２】
（有向グラフ生成部４１０）
次に、有向グラフ生成部４１０について説明する。有向グラフ生成部４１０は、仮有向グラフＩ’を構成する複数の有向枝の一部を置換して有向グラフＩを生成する機能を有する。まず、有向グラフ生成部４１０は、仮有向グラフＩ’に含まれる有向パスのうち、それを構成する有向枝数が最大の有向パスを選択する。その有向パスを最長有向パスＬＰ（Ｌｏｎｇｅｓｔ  Ｐａｔｈ）と呼ぶことにする。そして、有向グラフ生成部３１０は、全ての有向パスの有向枝数が最長有向パスＬＰの有向枝数を超えないという条件の下で、仮有向グラフＩ’に含まれる一部の有向パスをより短い複数の有向枝の鎖で構成される有向パスに置換することで、有向グラフＩを生成する。
【０３８３】
（有向グラフＩの生成方法）
まず、図４５〜図４８を参照しながら、有向グラフＩの生成方法について説明する。図４５は、有向グラフＩを生成する処理の全体的な流れを示した説明図である。図４６は、最長有向パスＬＰを抽出する処理の流れを示した説明図である。図４７は、最長有向パスＬＰ以外の有向パスの中から最長の有向パスＰＬＰ（Ｐｅｒｔｉａｌｌｙ  Ｌｏｎｇｅｓｔ  Ｐａｔｈ）を抽出する処理の流れを示した説明図である。図４８は、仮有向グラフＩ’の有向パスをより短い有向枝の組で構成される有向パスに置換する処理を示した説明図である。
【０３８４】
図４５に示すように、まず、仮有向グラフＩ’を形成する有向パスの中から最長有向パスＬＰが抽出される（Ｓ１４２）。次いで、仮有向グラフＩ’の最長有向パスＬＰ以外の有向パスの中から最長の有向パスＰＬＰが抽出される（Ｓ１４４）。なお、各部分集合に対応する仮有向グラフＩ’について最長の有向パスＰＬＰが抽出されてもよい。次いで、仮有向グラフＩ’の有向パスを構成する有向枝がより短い有向枝に置換される（Ｓ１４６）。このとき、全ての有向パスの有向枝数が最長有向パスＬＰの有向枝数を超えないように有向枝が置換される。つまり、この置換処理を実行したとしても、Ａ０６（Ｂ）方式よりも鍵生成に要する計算量の最悪値が増加しないようにする。
【０３８５】
以下、図４５に示した各ステップについて、より詳細に説明する。
【０３８６】
（Ｓ１４２の詳細）
次に、図４６を参照しながら、最長有向パスＬＰを抽出するステップ（Ｓ１６０）について詳細に説明する。ここで、以下に示す２つの表記を導入する。
【０３８７】
・ＤＤＴ      ：  最長有向パスＬＰの有向枝数を示す。
・Ｊ（ａ，ｂ）：  長さｂの有向枝がａ本連続して存在することを示す。
【０３８８】
まず、ｔ＝ｎ１／ｋ−１とおく。次いで、仮有向グラフＩ’（１→ｎ）の座標点［１，１］から座標点［１，ｎ］までの有向パスＰ（［１，１］，［１，ｎ］）を考える。有向パスＰ（［１，１］，［１，ｎ］）は、Ｊ（ｔ，ｎ（ｋ−１）／ｋ），Ｊ（ｔ，ｎ（ｋ−２）／ｋ），…，Ｊ（ｔ，ｎ１／ｋ），Ｊ（ｔ，ｎ０／ｋ）と表現される。この有向パスを最長有向パスＬＰと呼ぶ。このとき、最長有向パスＬＰの有向枝数ＤＤＴは、ＤＤＴ＝ｋ＊（ｎ１／ｋ−１）となる。次いで、最長有向パスＬＰを構成する全ての有向枝に対してａｃｔｉｖｅマークを設定する（Ｓ１６０）。
【０３８９】
（Ｓ１４４の詳細）
次に、図４７を参照しながら、最長有向パスＬＰを含む仮有向グラフＩ’以外の全ての部分集合に対応する仮有向グラフＩ’について、最長の有向パスＰＬＰを抽出する処理（Ｓ１６２〜Ｓ１７６）について説明する。ここで、以下に示す２つの表記を導入する。
【０３９０】
・ＣＰ（Ｃｕｒｒｅｎｔ  Ｐａｔｈ）  ：  参照中の有向パス（現在パス）
・＃ＪＰ（ＣＰ）                    ：  現在パスの有向枝数
【０３９１】
まず、仮有向グラフＩ’の始点から終点への現在パスＣＰを決定する。このとき、現在パスが有向グラフＩ’（ａ→ｂ）に含まれる場合は、有向パスＰ（［ａ，ａ］，［ａ，ｂ］）を現在パスＣＰとし、有向グラフＩ’（ａ←ｂ）に含まれる場合は、有向パスＰ（［ｂ，ｂ］，［ｂ，ａ］）を現在パスＣＰとする（Ｓ１６２）。次いで、現在パスＣＰを構成する有向枝のうち、最長の有向枝を選択して、その長さをＪとする（Ｓ１６４）。次いで、Ｊ≦１か否かを判断する（Ｓ１６６）。
【０３９２】
Ｊ≦１である場合、現在パスＣＰを最長の有向パスＰＬＰと決定して、現在パスＣＰに含まれる全ての有向枝にａｃｔｉｖｅマークを設定する（Ｓ１７６）。Ｊ＞１である場合、＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴか否かを判断する（Ｓ１６８）。＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴでない場合、現在パスＣＰを有向パスＰＬＰと決定して、現在パスに含まれる全ての有向枝にａｃｔｉｖｅマークを設定する（Ｓ１７６）。＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴである場合、Ｊ＝ｎｊ／ｋとなる自然数ｊを算出する（Ｓ１７０）。
【０３９３】
次いで、現在パスＣＰに含まれる長さＪの有向枝の中で現在パスＣＰの始点から最も遠い有向枝を抽出する（Ｓ１７２）。ステップＳ１７２で抽出された有向枝の始点から伸びたｔ個の長さｎ（ｊ−１）／ｋの有向枝の直後にｎ（ｊ−１）／ｋの長さを有する１つの有向枝を追加し、ステップＳ１７２で抽出された有向枝を除去し（Ｓ１７４）、ステップＳ１６２に戻って上記の処理を繰り返し実行する。
【０３９４】
なお、ステップＳ１６２〜ステップＳ１７４の間に生じるループ処理は、有向グラフＩ’の始点から終点への有向パスが全て長さ１の有向枝で構成されるか、又は、それ以上の有向枝の置換を実行することで、その有向パスを構成する有向枝数がＤＤＴを超えてしまう場合にループ処理を終了する。
【０３９５】
（Ｓ１４６の詳細）
次に、図４８を参照しながら、仮有向グラフＩ’に含まれる有向枝を短い有向枝に置換する処理（Ｓ１８０〜Ｓ２０２）について詳細に説明する。
【０３９６】
まず、グラフ中のａｃｔｉｖｅかつ、未実施（ｄｏｎｅマークが付いていない）有向枝のうち、長さＪ’が最長の有向枝を抽出する。もし、最大の有向枝が複数存在する場合は、仮有向グラフＩ’の始点から最も遠い有向枝を選択する（Ｓ１８０）。ここで選択された有向枝をＷＪ（Ｗｏｒｋｉｎｇ  Ｊｕｍｐ）と呼ぶことにする。また、有向枝ＷＪの始点をＷＪＳ、終点をＷＪＥと呼ぶことにする。さらに、仮有向グラフＩ’の始点からＷＪＳまでの有向パスに含まれる有向枝数をＤと表記する。
【０３９７】
次いで、有向枝の長さＪ’がＪ’≦１であるか否かを判断する（Ｓ１８２）。Ｊ’≦１である場合、ａｃｔｉｖｅマークの付いていない有向枝を全て消去し、ａｃｔｉｖｅマークが付いている有向枝を全て集めたものをＥ（Ｉ（ａ→ｂ））又はＥ（Ｉ（ａ←ｂ））と設定する（Ｓ２０２）。逆に、Ｊ’≦１でない場合、ＷＪＳからＷＪＥ−１までの有向パスを現在パスＣＰと設定する（Ｓ１８４）。但し、ＷＪＥ−１は、ＷＪＥの１つ手前の要素を表す。
【０３９８】
次いで、現在パスＣＰに含まれる有向枝の中から最長の有向枝を抽出し、その長さをＪとする（Ｓ１８６）。次いで、有向枝の長さＪがＪ≦１か否かを判断する（Ｓ１８８）。Ｊ≦１である場合、現在パスＣＰに含まれる全ての有向枝にａｃｔｉｖｅマークを付ける（Ｓ１９８）。そして、ＷＪにｄｏｎｅマークを付け（Ｓ２００）、ステップＳ１８０の処理に戻る。逆に、Ｊ≦１でない場合、＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴ−Ｄであるか否かを判断する（Ｓ１９０）。＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴ−Ｄでない場合、ステップＳ１９８及びＳ２００の処理を経てステップＳ１８０の処理に戻る。＃ＪＰ（ＣＰ）＋ｔ≦ＤＤＴ−Ｄである場合、Ｊ＝ｎｊ／ｋを満たすｊを算出する（Ｓ１９２）。
【０３９９】
次いで、現在パスＣＰに含まれる長さＪの有向枝が複数存在する場合、現在パスＣＰの始点から最も遠い位置にある有向枝を抽出する（Ｓ１９４）。次いで、ステップＳ１９４で抽出された有向枝の始点から伸びたｎ１／ｋ−１個の長さｎ（ｊ−１）／ｋの有向枝の直後にｎ（ｊ−１）／ｋの長さを有する１つの有向枝を追加し、ステップＳ１９４で抽出された有向枝を消去する（Ｓ１９６）。そして、ステップＳ１８４の処理に戻る。
【０４００】
但し、ステップＳ１８４〜Ｓ１９６の間に生じるループ処理は、ＷＪＳからＷＪＥ−１への有向パスが全て長さ１の有向枝で構成されるか、又は、それ以上の有向枝を置換することによってＷＪＳからＷＪＥ−１への有向パスに含まれる有向枝数がＤＤＴを超えてしまう場合に終了する。また、上記のステップＳ１８０〜Ｓ２００の間に生じるループ処理は、仮有向グラフＩ’に含まれる有向枝の中から、ｄｏｎｅが設定されておらず、かつ、長さが２以上の有向枝が全てなくなった時点で終了する。
【０４０１】
以上、本実施形態に係る有向グラフＩの生成方法について説明した。例えば、契約者数ｎ＝６４、パラメータｋ＝６の場合、本実施形態に係る有向グラフＩは、図４９のように表現される。
【０４０２】
［端末装置４２２の機能構成］
次に、図５０を参照しながら、本実施形態に係る端末装置４２２の機能構成について説明する。図５０は、端末装置４２２の機能構成を示す説明図である。
【０４０３】
図５０に示すように、端末装置４２２は、主に、通信部１２４と、判断部１２６と、有向グラフ生成部４２７と、鍵生成部１２８と、復号部１３０とにより構成される。但し、本実施形態の特徴的な構成は、主に、有向グラフ生成部４２７であり、他の構成要素については、第１実施形態に係る端末装置１２２の構成要素と実質的に同一である。従って、有向グラフ生成部４２７の機能構成のみについて詳細に説明する。
【０４０４】
（有向グラフ生成部４２７）
まず、有向グラフ生成部４２７の機能構成について説明する。有向グラフ生成部４２７は、鍵配信サーバ４０２がセット鍵を導出するために利用した有向グラフＩの中で、自身が属する部分集合のセット鍵を導出するために必要な有向パスのみを生成する機能を有する。つまり、有向グラフ生成部４２７は、自身が必要なセット鍵を導出可能な有向パスのみにより構成される有向グラフＧを生成することができる。
【０４０５】
（有向グラフＧの生成方法）
ここで、図５３及び図５４を参照しながら、有向グラフＧの生成方法について詳細に説明する。図５３及び図５４は、契約者ｉが、自身が所属する部分集合Ｓｊのセット鍵ｋ（Ｓｊ）を導出するために必要な有向グラフＧを生成する処理の流れを示す説明図である。
【０４０６】
但し、図５３の最下段と図５４の最上段に記載されたＡ，Ｂ，Ｃ，Ｄ，Ｅの各記号は，図５３と図５４とに跨る処理の推移において、その移動先を明示するための記号である。例えば、図５３のＡに達するステップは、図５４のＡに達したものと看做す。
【０４０７】
なお、端末装置４２２は、契約者数ｎ、及びパラメータｋの情報を予め保持している。また、有向グラフＧは、座標点の集合Ｖ（Ｇ（ｉ））と有向枝の集合Ｅ（Ｇ（ｉ））とにより構成され、Ｇ（ｉ）＝｛Ｖ（Ｇ（ｉ），Ｅ（Ｇ（ｉ））｝と表現される。そして、有向グラフＧ（ｉ）に含まれる座標点が１つの場合、有向枝の集合Ｅ（Ｇ（ｉ））は、Ｅ（Ｇ（ｉ））＝φ（記号φは空集合）と表現される。また、［ａ，ｂ］×［ａ，ｃ］は、始端の座標点が［ａ，ｂ］であり、終端の座標点が［ａ，ｃ］である有向枝を表す。さらに、説明の便宜上、鍵配信サーバ４０２から下式（２５）の情報を取得したものと仮定する。
【０４０８】
【数２１】
2008236380.tif 000023
【０４０９】
図５３に示すように、通信部１２４が取得した許諾契約者の部分集合に関する情報ｓｇｉの中に自身（契約者ｉ）が含まれる部分集合Ｓｊ（ｊ∈Ｓｊ）が存在するか否かを判断する（Ｓ７０２）。部分集合Ｓｊが存在する場合、ステップＳ７０４に進む。部分集合Ｓｊが存在しない場合、自身が排除された（コンテンツを取得する権利無し）ものとして、有向グラフＧの生成処理を終了する。ステップＳ７０２の処理は、主に、上記の判断部１２６により実行される。
【０４１０】
次いで、有向グラフ生成部４２７は、契約者の番号ｉがＴＰｊと一致するか否かを判断する（Ｓ７０４）。ｉ＝ＴＰｊである場合、契約者ｉがセット鍵を導出する際に生成が必要な有向グラフＧ（ｉ）＝｛Ｖ（Ｇ（ｉ），Ｅ（Ｇ（ｉ））｝をＶ（Ｇ（ｉ））＝｛［ＳＰｊ，ｉ］｝，Ｅ（Ｇ（ｉ））＝φとして出力し（Ｓ７４２）、有向グラフＧの生成処理を終了する。ｉ＝ＴＰｊでない場合、ステップＳ７０６に進む。
【０４１１】
次いで、有向グラフ生成部４２７は、契約者ｉの現在位置の座標ｃｕｐ、現在考慮中の範囲の始点の座標ｓｐ及び終点の座標ｅｐ、カウンタｍ、現在のパスにおける有向枝の個数ｄｄＴ、座標点の集合Ｖ（Ｇ（ｉ））、及び有向枝の集合Ｅ（Ｇ（ｉ））を次のように初期化する（Ｓ７０６）。
【０４１２】
ｓｐ＝ＳＰｊ，ｅｐ＝ＥＰｊ，ｃｕｐ＝ｉ，ｍ＝１，ｄｄＴ＝ＤＤＴ＝ｋ＊（ｎ１／ｋ−１），Ｖ（Ｇ（ｉ））＝φ，Ｅ（Ｇ（ｉ））＝φ。但し、ｊは、ｉ∈Ｓｊを満たす部分集合Ｓｊのインデックスｊを表す。
【０４１３】
次いで、有向グラフ生成部４２７は、ＳＰｊ＝１か否かを判断する（Ｓ７０８）。ＳＰｊ＝１である場合、ステップＳ７１０に進む。そして、有向グラフ生成部４２７は、Ｌｖ＝｜ＥＰｊ−ＳＰｊ｜＋１を計算し（Ｓ７１０）、ステップＳ７１４に進む。逆に、ＳＰｊ＝１でない場合、ステップＳ７１２に進む。そして、有向グラフ生成部４２７は、Ｌｖ＝｜ＥＰｊ−ＳＰｊ｜＋２を計算し（Ｓ７１２）、ステップＳ７１４に進む。
【０４１４】
次いで、有向グラフ生成部４２７は、ｎ（ｘ−１）／ｋ＜Ｌｖ≦ｎｘ／ｋを満たすｘ（１≦ｘ≦ｋ）を算出する（Ｓ７１４）。次いで、有向グラフ生成部４２７は、ｃｕｐ＝ＴＰｊであるか否かを判断する（Ｓ７１６）。ｃｕｐ＝ＴＰｊである場合、ステップＳ７４０に進む。そして、契約者ｉが部分集合の鍵を導出するために利用する有向グラフＧ｛Ｖ（Ｇ（ｉ）），Ｅ（Ｇ（ｉ））｝を出力し（Ｓ７４０）、有向グラフＧの生成処理を終了する。
【０４１５】
逆に、ｃｕｐ＝ＴＰｊでない場合、ステップＳ７１８に進む。そして、有向グラフ生成部４２７は、Ａ０６（Ａ＋Ｂ）方式における有向グラフＩの一部と一致するように、ｓｐからｅｐに至る有向パスの中で、ジャンプの回数が最小となる有向パスをＭＰ（ＭａｘＰａｔｈ）と決定する（Ｓ７１８）。このＭＰを決定する処理については後述する。
【０４１６】
次いで、有向グラフ生成部４２７は、Ａ０６（Ａ＋Ｂ）方式の有向グラフＩの一部に一致するＭＰ上の有向枝をｄｄＴを超えない範囲でなるべく距離の短い有向枝で置換したＣＰを決定する（Ｓ７２０）。ＣＰの決定処理については後述する。
【０４１７】
次いで、有向グラフ生成部４２７は、ＣＰ上に存在する各有向枝の中で、始端と終端との間に座標点［ＳＰｊ，ｃｕｐ］が含まれる有向枝を特定する（Ｓ７２２）。但し、始端又は終端の座標点と座標点［ＳＰｊ，ｃｕｐ］とが一致する場合も含む。また、特定された有向枝をＣＵＥ（Ｃｕｒｒｅｎｔ  Ｕｓｅｒ’ｓ  Ｅｄｇｅ）と呼ぶことにする。なお、座標点［ＳＰｊ，ｃｕｐ］がＣＰ上に存在し、隣接する２つの有向枝の始端及び終端に座標点［ＳＰｊ，ｃｕｐ］が一致する場合は、座標点［ＳＰｊ，ｃｕｐ］を始点とする有向枝をＣＵＥとする。
【０４１８】
次いで、有向グラフ生成部４２７は、座標点［ＳＰｊ，ＴＰｊ］がＣＵＥの終端に一致せず、かつ、ＣＵＥの終端よりも有向グラフＨの終点側にない場合、ステップＳ７３４に進む。一方、座標点［ＳＰｊ，ＴＰｊ］がＣＵＥの終端に一致するか、又はＣＵＥの終端よりも有向グラフＩの終点側にある場合、ステップＳ７２６に進む（Ｓ７２４）。
【０４１９】
次いで、有向グラフ生成部４２７は、Ｖ（Ｇ（ｉ））、及びＥ（Ｇ（ｉ））を次のように設定する（Ｓ７２６）。
【０４２０】
Ｖ（Ｇ（ｉ））＝φである場合、Ｖ（Ｇ（ｉ））＝［ＳＰｊ，ｓｐｉ，ｍ］∪［ＳＰｊ，ｅｐｉ，ｍ］とする。一方、Ｖ（Ｇ（ｉ））＝φでない場合、Ｖ（Ｇ（ｉ））＝Ｖ（Ｇ（ｉ））∪［ＳＰｊ，ｅｐｉ，ｍ］とする。また、Ｅ（Ｇ（ｉ））＝Ｅ（Ｇ（ｉ））∪｛［ＳＰｊ，ｓｐｉ，ｍ］×［ＳＰｊ，ｅｐｉ，ｍ］｝とする。
【０４２１】
但し、ｓｐｉ，ｍ，ｅｐｉ，ｍは、各々現在のＣＵＥの始端及び終端の座標を表す。なお、Ｖ（Ｇ（ｉ））＝φである場合とＶ（Ｇ（ｉ））＝φでない場合とで処理が異なるのは次の理由による。Ｖ（Ｇ（ｉ））＝φの場合には、有向枝の始端及び終端の両方を座標点として追加する必要があるが、Ｖ（Ｇ（ｉ））＝φでない場合には、追加される有向枝の始端は、既にＶ（Ｇ（ｉ））の座標点として追加されており、重複を避けるため、Ｖ（Ｇ（ｉ））には終端となる座標点のみを追加するのである。
【０４２２】
次いで、有向グラフ生成部４２７は、ｍにｍ＋１を代入する（Ｓ７２８）。次いで、有向グラフ生成部４２７は、ＣＰ上にＣＵＥの次の有向枝（ＣＵＥの終端を始端とする有向枝）が存在するか否かを判断する（Ｓ７３０）。ＣＵＥの次の有向枝が存在する場合、ステップＳ７３２に進み、ＣＰ上に存在するＣＵＥの次の有向枝を新たなＣＵＥとして設定し、ステップＳ７２４の処理に戻る。一方、ＣＵＥの次の有向枝が存在しない場合、ステップＳ７３４に進む。
【０４２３】
次いで、有向グラフ生成部４２７は、ｓｐにＣＵＥの始端の座標を設定し、ｅｐにＣＵＥの終端の一つ手前に位置する座標点の座標を設定し、ＣＰの始点からＣＵＥの始端までに存在する有向枝数をｄとし、ｄｄＴにｄｄＴ−ｄを代入する（Ｓ７３４）。次いで、有向グラフ生成部４２７は、ｍ＝１か否かを判断する（Ｓ７３６）。ｍ＝１である場合、ステップＳ７１６の処理に戻る。一方、ｍ＝１でない場合、ステップＳ７３８に進む。
【０４２４】
次いで、有向グラフ生成部４２７は、ｃｕｐ＝ｅｐｉ，（ｍ−１）を設定し（Ｓ７３８）、ステップＳ７１６の処理に戻る。
【０４２５】
以上、本実施形態に係る有向グラフＧの生成方法について説明した。上記の生成方法では、ｓｇｉに有向グラフＩの終点に関する情報ＥＰｊが含まれることを前提としているが、ＳＰｊが決まるとＥＰｊは論理二分木ＢＴにより一意に特定可能であるため、契約者自身がＥＰｊを特定するように構成することも可能である。この構成は、例えば、ステップＳ７０６の処理にＥＰｊを導出するステップを追加することにより実現される。
【０４２６】
（最大有向パスＭＰの決定方法）
次に、図５５を参照しながら、図５３のステップＳ７１８における最大有向パスＭＰの決定方法について説明する。図５５は、最大有向パスＭＰの決定処理の流れを示す説明図である。
【０４２７】
図５５に示すように、まず、有向グラフ生成部４２７は、カウンタｌ、現在考慮中のジャンプの到達点の座標ｔｓｐ、及び現在考慮中の距離ｄｔを次のように初期化する（Ｓ７５２）。ｌ＝ｘ，ｔｓｐ＝ｓｐ，ｄｔ＝｜ｅｐ−ｔｓｐ｜。
【０４２８】
次いで、有向グラフ生成部４２７は、ｌにｌ−１を代入する（Ｓ７５４）。次いで、有向グラフ生成部４２７は、ｌ≧０であるか否かを判断する（Ｓ７５６）。ｌ≧０でない場合、ステップＳ７６６に進み、座標点［ＳＰｊ，ｓｐ］から［ＳＰｊ，ｅｐ］に達する少なくとも１つの有向枝の鎖により形成される有向パスをＭＰと設定し（Ｓ７６６）、ＭＰの決定処理を終了する。一方、ｌ≧０である場合、ステップＳ７５８に進む。
【０４２９】
次いで、有向グラフ生成部４２７は、ｄｔ−ｎｌ／ｋ≧０であるか否かを判断する（Ｓ７５８）。ｄｔ−ｎｌ／ｋ≧０でない場合、ステップＳ７５４の処理に戻る。一方、ｄｔ−ｎｌ／ｋ≧０である場合、ステップＳ７６０に進む。
【０４３０】
次いで、有向グラフ生成部４２７は、［ＳＰｊ，ｔｓｐ］を出発点として距離ｎｌ／ｋのジャンプを実行し、対応する有向枝を生成する（Ｓ７６０）。次いで、有向グラフ生成部４２７は、ステップＳ７６０で生成された有向枝の終端の座標を新たにｔｓｐとする（Ｓ７６２）。次いで、有向グラフ生成部４２７は、ｄｔにｄｔ−ｎｌ／ｋを代入し（Ｓ７６４）、ステップＳ７５８の処理に戻る。
【０４３１】
以上、最大有向パスＭＰの決定方法について説明した。
【０４３２】
（現在パスＣＰの決定方法）
次に、図５６を参照しながら、現在パスＣＰの決定方法について説明する。図５６は、ＣＰの決定処理の流れを示す説明図である。
【０４３３】
図５６に示すように、まず、有向グラフ生成部４２７は、ＭＰに含まれる有向枝のうち、距離が最大のものを抽出し、その距離をＪとおく（Ｓ７７２）。次いで、有向グラフ生成部４２７は、Ｊ≦１であるか否かを判断する（Ｓ７７４）。Ｊ≦１である場合、ステップＳ７８４に進み、座標点［ＳＰｊ，ｓｐ］から［ＳＰｊ，ｅｐ］に至る有向パスをＣＰと決定し（Ｓ７８４）、ＣＰの決定処理を終了する。逆に、Ｊ≦でない場合、ステップＳ７７６に進む。
【０４３４】
次いで、有向グラフ生成部４２７は、＃ＪＰ（ＭＰ）＋ｔ≧ｄｄＴであるか否かを判断する（Ｓ７７６）。＃ＪＰ（ＭＰ）＋ｔ≧ｄｄＴである場合、ステップＳ７７８に進む。逆に、＃ＪＰ（ＭＰ）＋ｔ≧ｄｄＴでない場合、ステップＳ７８４に進み、座標点［ＳＰｊ，ｓｐ］から［ＳＰｊ，ｅｐ］に至る有向パスをＣＰと決定し（Ｓ７８４）、ＣＰの決定処理を終了する。
【０４３５】
次いで、有向グラフ生成部４２７は、Ｊ＝ｎｊ／ｋを満たすｊを求める（Ｓ７７８）。そして、有向グラフ生成部４２７は、ＭＰに含まれる距離Ｊの有向枝のうち、ＭＰの始点から最も遠い位置にある有向枝を抽出する（Ｓ７８０）。そして、ステップＳ７８０で抽出された有向枝の始点から距離ｎ（ｊ−１）／ｋを有するｔ個の既存の有向枝の直後に、距離ｎ（ｊ−１）／ｋを有する有向枝を生成し、ステップＳ７８０で抽出された有向枝を消去する。さらに、有向枝が置換されたＭＰを新たなＭＰに設定し（Ｓ７８２）、ステップＳ７７２の処理に戻る。
【０４３６】
以上、現在パスＣＰの決定方法について説明した。上記の決定処理により、上記の有向グラフＧの生成処理を実施することが可能になる。
【０４３７】
（具体例）
ここで、図５１及び図５２を参照しながら、上記の生成方法に基づき、有向グラフ生成部４２７により生成される有向グラフＧの具体例について説明する。図５１及び図５２は、契約者数ｎ＝６４、パラメータｋ＝６の場合に生成される有向グラフＧを示す説明図である。特に、集合（１→６４）に対応する有向グラフのみを示している。図５１及び図５２の上側に描いた図は、Ａ０６（Ａ＋Ｂ）方式のアルゴリズムを用いた場合に契約者が導出する有向グラフＩである。一方、下側に描いた図は、本実施形態のアルゴリズムを用いた場合に契約者が導出する有向グラフＧである。
【０４３８】
（具体例１）
まず、図５１を参照すると、契約者１が部分集合［１，２］のセット鍵を導出するために生成する有向グラフＧが示されている。また、図中の実線は、契約者１がセット鍵を導出する際に、実行する必要があるジャンプに対応した有向枝を示している。つまり、契約者１は、部分集合［１，２］のセット鍵を導出する際、実線で示した有向枝の始端に対応する中間鍵ｔ（［１，１］）をＰＲＳＧに入力し、その終端に対応するｔ（［１，２］）を導出する必要があることを意味している。さらに、実線と破線とにより構成される有向グラフＧは、契約者１が導出する必要がある最大有向パスＣＰを表している。
【０４３９】
（具体例２）
次に、図５２を参照すると、契約者７が部分集合［１，４４］のセット鍵を生成するために生成する有向グラフＧが示されている。また、図中の実線は、契約者７がセット鍵を導出する際に、実行する必要があるジャンプに対応した有向枝を示している。つまり、契約者７は、部分集合［１，４４］のセット鍵を導出する際、予め保持している中間鍵ｔ（［１，３３］）を利用し、実線で示した有向枝に沿ってＰＲＳＧを繰り返し実行して中間鍵ｔ（［１，４４］）を導出する必要があることを意味している。さらに、実線と破線とにより構成される有向グラフＧは、契約者７が導出する必要がある最大有向パスＣＰを表している。
【０４４０】
（鍵生成方法）
ここで、図１６を参照しながら、本実施形態に係る鍵生成処理の流れについて具体例を挙げて説明する。本実施形態に係る鍵生成部１２８の機能構成は、上記の第１実施形態に係る鍵生成部１２８と実質的に同一であるが、鍵生成の際に参照する有向グラフの形状が相違する。
【０４４１】
まず、図４９及び図５２を参照しながら、契約者７が部分集合［１，４４］のセット鍵を導出する工程について説明する。図４９を参照すると、契約者７は、７つの有向グラフＩ（１→６４），Ｉ（２←６４），Ｉ（２←３２），Ｉ（２←１６），Ｉ（２←８），Ｉ（６→７），Ｉ（７→７）の要素に対応する部分集合に属していることが分かる。このうち、有向グラフＩ（１→６４）には、契約者７が属している部分集合であって、その部分集合の親に対応する部分集合に契約者７が属していない３つの部分集合［１，７］，［１，９］，［１，３３］が存在する。従って、契約者７には、有向グラフＩ（１→６４）に関し、中間鍵ｔ（［１，７］），ｔ（［１，９］），ｔ（［１，３３］）がシステムセットアップの際に与えられる。他の有向グラフＩ（２←６４），Ｉ（２←３２），Ｉ（２←１６），Ｉ（２←８），Ｉ（６→７），Ｉ（７→７）についても、同様に所定の中間鍵が与えられる。
【０４４２】
まず、契約者７は、上記の有向グラフ生成部４２７の機能により、図５２の下図（発明方式）に示した有向グラフＧを生成する。その後、契約者７は、次の手順により部分集合［１，４４］のセット鍵ｋ（［１，４４］）を取得する（図１６を参照）。
【０４４３】
まず、ｉ＝ＴＰｊとなるＴＰｊが存在しないことを確認し、カウンタｌを１に初期化する。その後、自身が予め保持する上記の中間鍵ｔ（［１，７］），ｔ（［１，９］），ｔ（［１，３３］）の中から、最初の有向枝［１，１］×［１，３３］∈Ｅ（Ｇ（７））の終端の座標と一致する部分集合［１，３３］に対応する中間鍵ｔ（［１，３３］）を特定し、これをＣＴＫとする。
【０４４４】
次いで、次の有向枝の有無を確認する。このとき、現時点では有向枝［１，３３］×［１，３７］∈Ｅ（Ｇ（７））が存在するので、ＣＴＫ＝ｔ（［１，３３］）をＰＲＳＧに入力し、下式（２６）に示すような（ｋ＋１）＊λビットの出力を得る。
【０４４５】
【数２２】
2008236380.tif 000024
【０４４６】
但し、上式（２６）において、ｔ（［１，３５］），ｔ（［１，４１］），ｔ（［１，６５］）の３５，４１，６５の座標は，３３＋ｎi/kのｉ＝１，３，５として算出されたが、［１，３５］，［１，４１］，［１，６５］有向グラフＧにおける［１，３３］を始点とする有向枝の終点にはなっていないため、ｔ（［１，３５］），ｔ（［１，４１］），ｔ（［１，６５］）は、ダミーの中間鍵を表しており、実際には利用されない。次いで、カウンタｌをインクリメントした後、出力された中間鍵の中から利用する中間鍵を決定する。ここで、カウンタｌは、インクリメントされてｌ＝２となるため、有向枝［１，３３］×［１，３７］∈Ｅ（Ｇ（７））に関し、｜３７−３３｜＝４＝２２＝ｎｐ／ｋを満たすｐ（ｐ＝２）を決定する。この結果を受け、上式（０）の出力から、ｔ（［１，３７］）を取得し、ＣＴＫをｔ（［１，３７］）に更新する。同様に、有向枝［１，３７］×［１，４１］∈Ｅ（Ｇ（７））の存在を確認し、ＣＴＫをＰＲＳＧに入力して、下式（２７）の出力を得る。
【０４４７】
【数２３】
2008236380.tif 000025
【０４４８】
次いで、カウンタｌをｌ＝３に設定し、有向枝［１，３７］×［１，４１］∈Ｅ（Ｇ（７））に関してｐ＝２を算出した後、ＣＴＫをｔ（［１，４１］）に更新する。以上の処理をさらにもう三度繰り返し実行することにより、次の有向枝が存在しない状態となる。このとき、ＣＴＫ＝ｔ（［１，４４］）となっているため、ＣＴＫをＰＲＳＧに入力して出力される値のｋ＊λ＋１ビット目から（ｋ＋１）＊λビット目までをセット鍵ｋ（［１，４４］）として抽出する。
【０４４９】
以上説明した通り、契約者７が、自己の保持する中間鍵を利用して部分集合［１，４４］のセット鍵ｋ（［１，４４］）を取得することが可能である。このように、各契約者は、自己が保持する中間鍵を利用して所望のセット鍵を算出することができる。
【０４５０】
［効果］
従来、各契約者は、自身が所属する部分集合に対応する全ての有向グラフＩを保持するか、又は自身で全ての有向グラフＩを導出する必要があった。しかし、本実施形態は、各契約者が、自身の所属する部分集合に対応する有向グラフＩの中で、自身が鍵導出の際に必要とする有向枝のみで構成される有向グラフＧを導出する手段を提供する。従って、従来の鍵配信方式と比較し、各契約者が算出すべき有向枝の数を大幅に削減することが可能となり、各契約者が各々有向グラフＧを生成して高速に所望のセット鍵を導出することが可能になる。その結果、コンテンツの復号に掛かる時間を大幅に短縮することができる。
【０４５１】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【０４５２】
例えば、上記の論理二分木ＢＴは、上から下に枝が広がる構造を有するものと仮定したが、必ずしもこれに限定されず、下から上、左から右、又は右から左に向けて枝が広がるように構成することも可能である。このような配置に関わる変更は、単純に論理二分木を回転して配置することにより実現されるため、当該変更に係るいずれの構成についても実質的に同一の技術的範囲に属するものと言える。また、仮有向グラフ、及び有向グラフを形成する水平座標軸を左右反転させる変更についても同様である。
【０４５３】
さて、上記の各実施形態に係る鍵配信サーバ１０２は、自身で有向グラフを生成する構成要素を含んでいるが、必ずしもこれに限定されない。例えば、本発明に係る鍵配信サーバ１０２は、所定の有向グラフに関する情報を取得する取得部を備えていてもよく、この場合、木構造設定部１０４、座標軸設定部１０６、仮有向グラフ生成部１０８、及び有向グラフ生成部１１０の一部又は全部を備えている必要はない。
【０４５４】
また、上記の各実施形態に係る鍵配信サーバ１０２は、コンテンツ、コンテンツ鍵、セット鍵、中間鍵、許諾契約者に対応する部分集合の情報、又は有向グラフの情報等を端末装置１２２に配信する通信部１１８を備えているが、上記の応用例２にも示した通り、これらの情報を提供するために常にネットワークを利用するとは限らない。例えば、鍵配信サーバ１０２は、通信部１１８に代えて、記録媒体に情報を記録するための記録部を備えていてもよい。その場合、端末装置１２２は、通信部１２４を備える代わりに、情報が記録された記録媒体を読み込むための読込部を備えていてもよい。
【図面の簡単な説明】
【０４５５】
【図１】本発明の第１〜４形態に係る鍵提供システムの構成を示す説明図である。
【図２】同実施形態に係る鍵配信サーバ及び端末装置のハードウェア構成を示す説明図である。
【図３】本発明の第１実施形態に係る鍵配信サーバの機能構成を示す説明図である。
【図４】同実施形態に係る論理二分木の構造を示す説明図である。
【図５】同実施形態に係る有向グラフＨを示す説明図である。
【図６】同実施形態に係る鍵配信方法の流れを示す説明図である。
【図７】同実施形態に係る鍵配信方法の流れを示す説明図である。
【図８】同実施形態に係る鍵配信方法の流れを示す説明図である。
【図９】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図１０】同実施形態に係る端末装置の機能構成を示す説明図である。
【図１１】同実施形態に係る有向グラフＧを示す説明図である。
【図１２】同実施形態に係る有向グラフＧを示す説明図である。
【図１３】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図１４】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図１５】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図１６】同実施形態に係る鍵生成方法の流れを示す説明図である。
【図１７】同実施形態に係る鍵配信方式の応用例を示す説明図である。
【図１８】同実施形態に係る鍵配信方式の応用例を示す説明図である。
【図１９】本発明の第２実施形態に係る鍵配信サーバの構成を示す説明図である。
【図２０】同実施形態に係る有向グラフＩを示す説明図である。
【図２１】同実施形態に係る有向グラフＩを示す説明図である。
【図２２】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図２３】同実施形態に係る端末装置の機能構成を示す説明図である。
【図２４】同実施形態に係る有向グラフＧを示す説明図である。
【図２５】同実施形態に係る有向グラフＧを示す説明図である。
【図２６】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図２７】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図２８】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図２９】本発明の第３実施形態に係る鍵配信サーバの構成を示す説明図である。
【図３０】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図３１】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図３２】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図３３】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図３４】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図３５】同実施形態に係る端末装置の機能構成を示す説明図である。
【図３６】同実施形態に係る有向グラフＧを示す説明図である。
【図３７】同実施形態に係る有向グラフＧを示す説明図である。
【図３８】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図３９】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図４０】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図４１】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図４２】本発明の第４実施形態に係る鍵配信サーバの構成を示す説明図である。
【図４３】同実施形態に係る仮有向グラフＩ’を示す説明図である。
【図４４】同実施形態に係る仮有向グラフＩ’を示す説明図である。
【図４５】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図４６】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図４７】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図４８】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図４９】同実施形態に係る有向グラフＩを示す説明図である。
【図５０】同実施形態に係る端末装置の機能構成を示す説明図である。
【図５１】同実施形態に係る有向グラフＧを示す説明図である。
【図５２】同実施形態に係る有向グラフＧを示す説明図である。
【図５３】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図５４】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図５５】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【図５６】同実施形態に係るグラフ生成方法の流れを示す説明図である。
【符号の説明】
【０４５６】
１００    鍵提供システム
１０２    鍵配信サーバ
１０４    木構造設定部
１０６    座標軸設定部
１０８    仮有向グラフ生成部
１１０    有向グラフ生成部
１１２    初期中間鍵設定部
１１４    鍵生成部
１１６    暗号化部
１１８    通信部
１２０    部分集合決定部
１２２    端末装置
１２４    通信部
１２６    判断部
１２７    有向グラフ生成部
１２８    鍵生成部
１３０    復号部
２０２    鍵配信サーバ
２０６    座標軸設定部
２１０    有向グラフ生成部
２２２    端末装置
２２７    有向グラフ生成部
３０２    鍵配信サーバ
３０８    仮有向グラフ生成部
３１０    有向グラフ生成部
３２２    端末装置
３２７    有向グラフ生成部
４０２    鍵配信サーバ
４０８    仮有向グラフ生成部
４１０    有向グラフ生成部
４２２    端末装置
４２７    有向グラフ生成部
７０２    コントローラ
７０４    演算ユニット
７０６    入出力インターフェース
７０８    セキュア記憶部
７１０    メイン記憶部
７１２    ネットワークインターフェース
７１６    メディアインターフェース
７１８    情報メディア 
【図１】
2008236380.tif 000026
【図２】
2008236380.tif 000027
【図３】
2008236380.tif 000028
【図４】
2008236380.tif 000029
【図５】
2008236380.tif 000030
【図６】
2008236380.tif 000031
【図７】
2008236380.tif 000032
【図８】
2008236380.tif 000033
【図９】
2008236380.tif 000034
【図１０】
2008236380.tif 000035
【図１１】
2008236380.tif 000036
【図１２】
2008236380.tif 000037
【図１３】
2008236380.tif 000038
【図１４】
2008236380.tif 000039
【図１５】
2008236380.tif 000040
【図１６】
2008236380.tif 000041
【図１７】
2008236380.tif 000042
【図１８】
2008236380.tif 000043
【図１９】
2008236380.tif 000044
【図２０】
2008236380.tif 000045
【図２１】
2008236380.tif 000046
【図２２】
2008236380.tif 000047
【図２３】
2008236380.tif 000048
【図２４】
2008236380.tif 000049
【図２５】
2008236380.tif 000050
【図２６】
2008236380.tif 000051
【図２７】
2008236380.tif 000052
【図２８】
2008236380.tif 000053
【図２９】
2008236380.tif 000054
【図３０】
2008236380.tif 000055
【図３１】
2008236380.tif 000056
【図３２】
2008236380.tif 000057
【図３３】
2008236380.tif 000058
【図３４】
2008236380.tif 000059
【図３５】
2008236380.tif 000060
【図３６】
2008236380.tif 000061
【図３７】
2008236380.tif 000062
【図３８】
2008236380.tif 000063
【図３９】
2008236380.tif 000064
【図４０】
2008236380.tif 000065
【図４１】
2008236380.tif 000066
【図４２】
2008236380.tif 000067
【図４３】
2008236380.tif 000068
【図４４】
2008236380.tif 000069
【図４５】
2008236380.tif 000070
【図４６】
2008236380.tif 000071
【図４７】
2008236380.tif 000072
【図４８】
2008236380.tif 000073
【図４９】
2008236380.tif 000074
【図５０】
2008236380.tif 000075
【図５１】
2008236380.tif 000076
【図５２】
2008236380.tif 000077
【図５３】
2008236380.tif 000078
【図５４】
2008236380.tif 000079
【図５５】
2008236380.tif 000080
【図５６】
2008236380.tif 000081