(57)【要約】【課題】  保持すべきノード鍵の大きさを削減したアクセス構造を持つ鍵管理方式を安全に構成すること。【解決手段】  有向グラフのデータを入力し（Ｓ２００１）、有向グラフのデータをサブグラフに分割し（Ｓ２００１）、分割されたそれぞれのサブグラフごとにノード鍵割り当て表のデータを生成し（Ｓ２００３）、それぞれのノード鍵割り当て表をマージする（Ｓ２００４）。【選択図】  図１７
2006020292.tif 000002
【特許請求の範囲】
【請求項１】
サイクルを持たない有向グラフで表現された階層関係に基づいて、各ノードにおける鍵を親ノードから生成して鍵配布を行う情報処理方法であって、
最上位に位置するルートノードで初期鍵を生成する生成工程と、
所定のノードでＮ個の子ノードを有するとき、所定のノードの鍵から一方向性関数を用いて、互いに生成できないＮ個の異なるノード鍵を生成するノード鍵生成工程と
を備えることを特徴とする情報処理方法。
【請求項２】
前記所定のノード鍵から子ノードに対するノード鍵を配布する工程を更に備えることを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記ノード鍵生成工程は、前記所定のノード鍵とある情報から一方向性関数を用いて、前記子ノードのノード鍵を生成することを特徴とする請求項１に記載の情報処理方法。
【請求項４】
サイクルを持たない有向グラフで表現された階層関係に基づいて、各ノードにおける鍵を親ノードから生成する情報処理方法であって、
有向グラフのデータを入力する有向グラフ入力工程と、
前記入力された有向グラフのデータをサブグラフに分割する有向グラフ分割処理工程と、
前記有向グラフ分割処理工程で分割されたそれぞれのサブグラフごとにノード鍵割り当て表のデータを生成するサブグラフノード鍵生成工程と、
前記サブグラフごとのノード鍵割り当て表のデータをマージするノード鍵割り当て表生成工程と
を備えることを特徴とする情報処理方法。
【請求項５】
最上位に位置するルートノードのＮ個の初期鍵を算出する初期鍵生成工程と、
各ノードの、前記Ｎ個の初期鍵のうちＭ個（Ｍ≦Ｎ）に実行規定に応じて一方向性関数を規定回数実行した値を当該ノードに対するＭ個のノード鍵として生成するノード鍵生成工程と
を更に備えることを特徴とする請求項４に記載の情報処理方法。
【請求項６】
前記有向グラフの構造から初期鍵の個数Ｎを算出する初期鍵数算出工程を更に備えることを特徴とする請求項４又は５の何れか１項に記載の情報処理方法。
【請求項７】
前記初期鍵数算出工程は、
全ノードを網羅するようにノードの部分集合の組を生成するノード分割工程と、
前記部分集合において、同一部分集合に含まれる任意のノードが必ず子孫関係にあることを満たすことをチェックする工程と、
前記部分集合の組の大きさを前記初期鍵の個数Ｎとする工程と
を備えることを特徴とする請求項６に記載の情報処理方法。
【請求項８】
前記ノード分割工程では、全ノードを互いに素な部分集合に分割することを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記ノード分割工程によって得られた部分集合の組ごとに、異なる初期鍵を関連付ける初期鍵関連付け工程と、
前記部分集合をそれぞれの集合内で有向グラフ上での子孫関係に従って降順にソートし、０から１つずつ番号を割り付けするナンバリング工程とを更に備え、
ナンバリングされた数値は、前記初期鍵に対し一方向性関数を実行する回数であることを特徴とする請求項５に記載の情報処理方法。
【請求項１０】
ノード鍵設定データを前記各ノードに公開する公開工程と、
前記各ノードに、当該ノードの前記ノード鍵設定データ上での位置を表わす識別データを配布する識別データ配布工程と
を更に備えることを特徴とする請求項４に記載の情報処理方法。
【請求項１１】
前記初期鍵生成工程において、前記Ｎ個の初期鍵は、１つのオリジナル鍵から生成されることを特徴とする請求項５に記載の情報処理方法。
【請求項１２】
前記有向グラフ分割処理工程は、
それぞれのサブグラフのルートノードは1つであるかどうかをチェックする工程と、
あるサブグラフのルートノードが元のグラフGのルートではないとき、このサブグラフのルートノードは異なる別のサブグラフのノードであることをチェックする工程と、
他のサブグラフと共有するノードは、ルートノード以外は一つであることをチェックする工程と
を備えることを特徴とする請求項４に記載の情報処理方法。
【請求項１３】
サイクルを持たない有向グラフで表現された階層関係に基づいて、各ノードにおける鍵を親ノードから生成して鍵配布を行う情報処理装置であって、
最上位に位置するルートノードで初期鍵を生成する生成手段と、
所定のノードでＮ個の子ノードを有するとき、所定のノードの鍵から一方向性関数を用いて、互いに生成できないＮ個の異なるノード鍵を生成するノード鍵生成手段と
を備えることを特徴とする情報処理装置。
【請求項１４】
前記所定のノード鍵から子ノードに対するノード鍵を配布する手段を更に備えることを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記ノード鍵生成手段は、前記所定のノード鍵とある情報から一方向性関数を用いて、前記子ノードのノード鍵を生成することを特徴とする請求項１３に記載の情報処理装置。
【請求項１６】
サイクルを持たない有向グラフで表現された階層関係に基づいて、各ノードにおける鍵を親ノードから生成する処理を行う情報処理装置であって、
有向グラフのデータを入力する有向グラフ入力手段と、
前記入力された有向グラフのデータをサブグラフに分割する有向グラフ分割処理手段と、
前記有向グラフ分割処理手段により分割されたそれぞれのサブグラフごとにノード鍵割り当て表のデータを生成するサブグラフノード鍵生成手段と、
前記サブグラフごとのノード鍵割り当て表のデータをマージするノード鍵割り当て表生成手段と
を備えることを特徴とする情報処理装置。
【請求項１７】
コンピュータに請求項１乃至１２の何れか１項に記載の情報処理方法を実行させることを特徴とするプログラム。
【請求項１８】
請求項１７に記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵管理技術に関するものである。
【背景技術】
【０００２】
近年、通信回線やDVDなどの大容量記録メディアを通じて、文書や画像データなどのデジタルコンテンツが流通する機会が増加している。デジタルコンテンツ配信サービスは、特定のユーザに対してコンテンツを流布するサービスであるが、ユーザ以外にはコンテンツが漏洩しない仕組みが要求されている。また、大容量メディアによるコンテンツ配信においても、同様のユーザによるアクセス制御の機構が検討されている。その際には、コンテンツデータに対する暗号化やスクランブル処理などが行われており、正当な鍵情報を持つ、もしくはデスクランブル処理を知っている正当なユーザのみが復号処理を行い、正規の文書や画像データなどのコンテンツを享受できる仕組みが提供されている。
【０００３】
このようなコンテンツ配信サービスにおいては、コンテンツを配信するコンテンツプロバイダが存在する。コンテンツプロバイダでは、複数のコンテンツのそれぞれに対して異なるアクセス制御情報の設定を行う必要があり、コンテンツごと、ユーザごと、さらにはユーザのアクション（例えば、閲覧、コピーなど）ごとに異なる鍵による暗号化処理を行うことが想定されている。この処理において、鍵生成、鍵保持、鍵配信などの鍵情報に関わるマネージメントはコンテンツプロバイダにおいて非常に負荷がかかることが多い。そこで鍵管理に関して、セキュリティレベルを低下させることなく、より効率的な管理方法に関する研究が行われている。従来の管理方法のいくつかに関して説明を行う。
【０００４】
＜木構造管理方式＞
木構造管理方式はDVDプレイヤーなどのオフラインでのコンテンツ再生機器において利用されており、ユーザの無効化を行うのに適している。この方式では、暗号化データを正当なユーザのみが復号できるように、暗号化に用いた鍵情報と暗号化コンテンツと同時に配信、もしくはメディアに格納しておく。各ユーザに対して適切な組み合わせで鍵情報を事前に配布しておく必要があるが、木構造を用いることで膨大なユーザ鍵情報を効率的に管理することができる。
【０００５】
この管理方式においては、方式の良し悪しを決定するにあたり次のような指標が存在する。１）コンテンツと同時に配信される鍵情報のデータサイズ、２）ユーザに事前配布された鍵情報のデータサイズ、３）コンテンツプロバイダが管理する必要のある鍵情報のデータサイズ、以上の３つの指標がそれにあたる。オンライン型配信サービスの場合にはネットワークトラフィックを左右する１）が重視されるであろうが、コンテンツプロバイダの立場から考えると３）の管理コストが最も重視されることになる。このようにシチュエーションにより指標の重みが変化することに留意しなければならない。
【０００６】
木構造管理方式の代表的なものとしては、コンテンツ配信モデルがある（例えば、非特許文献１を参照）。このモデルにおいては、図１１に示すような鍵配布用の木構造を用いており、各ノード（同図において丸で示した部分）には異なる鍵が配置される。ユーザ鍵（論文中ではＤＶＤなどのプレイヤーが保持する鍵を想定）は末端のノード（葉ノード）と同一視され、ルート（最上位のノード）から末端ノードまでのすべての鍵データを保持するものと仮定している。本モデルでは更新が頻繁に起きることを想定しており、このように配置することで鍵無効化の効率を改良している。
【０００７】
＜階層的鍵管理方式＞
一方、階層的鍵管理方式で想定している鍵管理は各ノードに鍵が配置されている点では同様であるが、ユーザは末端ノードだけでなく、ルートを含めたすべてのノードに位置する鍵が配布される点が大きく異なる（例えば、非特許文献２、３を参照）。
【０００８】
また、図１１に示すようなｎ分木の構造ではなく、図１２や図１３に示すようなアクセス構造を想定しており、局所的に見ると図１４に示すような関係になっている箇所が見受けられる。この場合、ノードｎ１に配置されている鍵とノードｎ２に配置されているの両者からノードｎ３の持つべき鍵を生成できるような仕組みが提供されていなければならない。Birgetらの論文（非特許文献３）によれば、この仕組みを提供する方式として次の２つの方法が提案されている。
【０００９】
（１）  User multiple keying
各ノードが複数の鍵を保持する方式であり、親ノードは子ノードのすべての鍵を保持するように構成されている。図１５はその一例の木構造を示す図で、同図には各ノードに配布される鍵データの集合を示している。例えば｛ｋ５｝が配布されているノードの親ノードには鍵データｋ５が含まれていることがわかる。同様に他のノードにおいても親ノードには子ノードの鍵データがすべて含まれていることがわかる。
【００１０】
（２）  One-way function based keying schemes
Linらの提案（非特許文献２）を拡張させた方式であり、一方向性ハッシュ関数を用いることで、各ノードが保持する鍵情報を削減することができる。但し、図１４のように複数の親ノードの鍵データから子ノードの鍵データを生成する際には、次のような操作が必要である。この操作を図１６を用いて説明する。図１６は、One-way function based keying schemesにおいて、子ノードの鍵データを生成する処理を説明するための図である。図１６において、鍵データｋ１またはｋ２からｋ３を生成するには
ｋ３：＝Ｆ（ｋ１，ｎ３）  ＸＯＲ  ｒ１３
ｋ３：＝Ｆ（ｋ２，ｎ３）  ＸＯＲ  ｒ２３
という演算を行う。ここでＸＯＲはビットごとの排他的論理和である。またＦ（）は一方向性ハッシュ関数であり、詳細は後述する。ｎ３は鍵データｋ３が関連付けられたノードの識別子、ｒ１３，ｒ２３はそれぞれ、ノードｎ１（鍵データｋ１)とノードｎ３により関連付けられたランダムデータ、ノードｎ２（鍵データｋ２）トノードｎ３により関連付けられたランダムデータであり、共に公開されているデータである。
【００１１】
関数Ｆ（）はＦ（ｋ＿ｉ，ｎ＿ｊ）＝ｇ＾｛ｋ＿ｉ＋ｎ＿ｊ｝  ｍｏｄ  ｐ（ただしｐは素数、ｇは原始元）で構成されており、上記ｒ１２，ｒ１３はＦ（ｋ１，ｎ３）  ＸＯＲ  ｒ１３＝Ｆ（ｋ２，ｎ３）  ＸＯＲ  ｒ２３を満たすように生成される。
【００１２】
＜ハッシュ鍵管理方式＞
前述した階層的鍵管理方式のうち１）User multiple keyingにおいては、各ノードが多くの鍵を持ち合わせていなければならず、階層が深くなるにつれて、つまり全体ノード数に比例して保持すべき鍵データが増加する問題が存在し、２）One-way function based keying schemes においては、一方向性ハッシュ関数を用いることで各ノードが保持する鍵データ量を減らしているが、ｒ１２，ｒ１３などの公開ランダムデータを別途保持する必要があり、１）と同様に階層が深くなるにつれて保持すべきデータが増加するという問題が存在する。
【００１３】
さらに２）においては一方向性ハッシュ関数にべき乗演算が用いられている。落とし戸付きハッシュ関数による構成も考えられるが、いずれにせよ、べき乗演算が必要な演算が含まれており、計算コストが膨大である。特にＰＤＡなどの演算リソースの少ないデバイスにおいては鍵計算に多くの時間を費やすこととなり、結果としてデータ復号時にインタラクティブな処理ができなくなる可能性がある。これらの問題に対し、より計算量の少ない方式で、同様のアクセス構造を持つ鍵管理方式がハッシュ鍵管理方式である。
【００１４】
＜鍵生成概要＞
ハッシュ鍵管理方式における各ノードのノード鍵の生成は以下のとおりである。鍵管理の対象となるアクセス構造は、図２に示すように、階層関係がループおよびサイクルを持たない有向グラフで表現されているとする。図２は、ハッシュ鍵管理方式におけるアクセス構造を示す図である。
【００１５】
＜ノードの分割＞
鍵生成用データの生成するために、与えられた鍵配布グラフＧにおいて、次の条件を満たすようにノードの分割を行う。ここで、ノード全体の集合をＮｏｄｅ（Ｇ）、部分集合の組の大きさをＮ、分割された部分集合をＳｕｂＧ＿１，ＳｕｂＧ＿２，…，ＳｕｂＧ＿Ｎという表記方法を使うこととする。
【００１６】
・  ＳｕｂＧ＿１  ∪  ＳｕｂＧ＿２  ∪  …  ∪  ＳｕｂＧ＿Ｎ  ＝  Ｎｏｄｅ（Ｇ）、つまり部分集合全体は全ノードを網羅する。
【００１７】
・  ＳｕｂＧ＿ｉに含まれる任意の２つの異なるノードｎ＿ａ，ｎ＿ｂはｎ＿ａ＜ｎ＿ｂまたはｎ＿ａ＞ｎ＿ｂが成立する。つまりｎ＿ａ，ｎ＿ｂには子孫関係が存在し、一方が必ずもう一方の子孫ノードである。
【００１８】
この分割された部分集合の数Ｎを鍵配布グラフＧの鍵配布オーダーと呼びＯｒｄ（Ｇ）と表記する。
【００１９】
＜ノード鍵の割り当て＞
部分集合ＳｕｂＧ＿ｉに対して１つずつ初期鍵Ｋ_ｉを計算し、ルートノードのノード鍵として割り当てる。ルートノードの配下にある子孫ノードは次のような法則でノード鍵が割り当てられる。
【００２０】
１）  各ノードはＮ個の初期鍵Ｋ_ｉ（１≦ｉ≦Ｎ）に関連付けられた番号が振られる。この番号は初期鍵Ｋ_ｉに対し一方向性関数を実行する回数であり、“なし”を意味する“Ｎ”が振られることもある。初期鍵Ｋ_ｉの当該番号が“Ｎ”のときは、初期鍵Ｋ_ｉに関連した鍵を保有しないことを意味する。
【００２１】
２）  ＳｕｂＧ＿ｉに含まれるノードをそれぞれの集合内で有向グラフ上での子孫関係に従って降順にソートし、０から１つずつ増加させた番号を割り付けする。この番号は初期鍵Ｋ_ｉに関連付けられた番号である。
【００２２】
３）  ＳｕｂＧ＿ｉに含まれるノードの初期鍵Ｋ_ｊ（ｉ≠ｊ）に関連付けられた番号は、（初期鍵Ｋ_ｊに対する部分集合である）ＳｕｂＧ＿ｊに含まれるノードの祖先ノードではない場合には当該番号をＮ（なし）とし、祖先ノードであるノードの当該番号は子孫ノードとしてＳｕｂＧ＿ｊに含まれるノードのうち割り当てされた番号の最小値とする。
【００２３】
図４は上記のノード鍵割り当て処理のフローチャートである。ここでは、すでに全ノード集合は互いに素であり、空ではない部分集合｛ＳｕｂＧ＿ｉ｝（１≦ｉ≦Ｎ）に分割されており、それぞれの部分集合に対する初期鍵Ｋ_ｉが計算されているものとする。また、部分集合ＳｕｂＧ＿ｉに含まれるノード数を＃Ｎ（ｉ）と記述し、部分集合ＳｕｂＧ＿ｉに含まれるノードは、有向グラフ上での子孫関係に従って降順にソートされＳｕｂＧ＿ｉ＝｛ｎ（ｉ、１）、ｎ（ｉ、２）、、、ｎ（ｉ、＃Ｎ（ｉ））｝と記述することとする。さらにノードｎ（ｉ、ｊ）に対するノード鍵は初期鍵Ｋ_ｋ（１≦ｋ≦Ｎ）に一方向性ハッシュ関数を規定回数施したものであるが、この規定回数をｈ（ｉ、ｊ、ｋ）と表記する。
【００２４】
ステップＳ１１０１は１からＮまで変動する変数ｉのループ、ステップＳ１１０２は１からＮまで変動する変数ｊのループ、ステップＳ１１０３は１から＃Ｎ（ｉ）まで変動する変数ｋのループである。ステップＳ１１０４は変数ｉと変数ｋが一致するかどうか評価し、一致する場合には処理をステップＳ１１０５に進め、一致しない場合には処理をステップＳ１１０６に進める。ステップＳ１１０５はｈ（ｉ、ｊ、ｋ）にｊ−１を代入し、ループ処理に戻る。
【００２５】
ステップＳ１１０６はｎ（ｋ、ｍ）＜ｎ（ｉ、ｊ）、つまりｎ（ｉ、ｊ）はｎ（ｋ、ｍ）の祖先ノードであることを満たすｍが存在するか評価し、存在しない場合には処理をステップＳ１１０７に進め、存在する場合には処理をステップＳ１１０８に進める。ステップＳ１１０７はｈ（ｉ、ｊ、ｋ）に“Ｎ”を代入し、ループ処理に戻る。
【００２６】
ステップＳ１１０８はｈ（ｉ、ｊ、ｋ）にｍｉｎ｛ｈ（ｋ、ｍ、ｋ）|ｎ（ｋ、ｍ）＜ｎ（ｉ、ｊ）｝、つまりｎ（ｉ、ｊ）がｎ（ｋ、ｍ）の祖先ノードであるノードのうちｈ（ｋ、ｍ、ｋ）の最小値を代入し、ループ処理に戻る。
【００２７】
この鍵生成方式は次の２つの要件を満たすように構成されている。
【００２８】
・  生成可能性：対象ノードはその孫ノードの鍵を生成できること
・  結託攻撃回避性：（一方向性関数が脆弱にならない限り）任意の二つ以上のノードに位置するエンティティが結託しても、夫々のノードより上位に位置する祖先ノードの鍵は生成できないこと
これらの条件により、安全に鍵生成と鍵配布を行うことができる階層的鍵管理方式が実現できる。例としては図２の有向グラフに対して図３示すようなノード鍵が構成される。図３は、階層的鍵管理方式を適用した場合の図２の有向グラフに対するノード鍵を示す模式図である。
【００２９】
図３における各ノードのベクトルは、３つの初期鍵ｘ、ｙ、ｚに対して施すハッシュ関数の回数が表現されている。例えば［２、２、Ｎ］と記されているセルでは、ノード鍵としてＨ（Ｈ（ｘ））とＨ（Ｈ（ｙ））を保持するとする。Ｎは“なし”を意味し、初期鍵ｚに関する情報は全く持たないことを意味とする。今後ハッシュ演算をｎ度施す場合にはＨ＾ｎ（）と略記して表現するものとする。この表記法に基づけば、［２、２、Ｎ］と記されているセルはＨ＾２（ｘ）とＨ＾２（ｙ）の２つのノード鍵を持つこととなる
＜鍵配布＞
ルート鍵配布者（ルートノードのエンティティ）による各ノードへの鍵配布方法と、ルート鍵配布者以外の個別鍵を保持するエンティティによる下位ノードへの鍵配布方法とについて、それぞれ説明する。まずルート鍵配布者は、鍵配布グラフＧに応じて決まる鍵配布オーダーＯｒｄ（Ｇ）個のパラメータ｛ｘ＿ｉ｝（１≦ｉ≦Ｏｒｄ（Ｇ））をランダムに且つ安全に生成し、それらを自身の個別鍵とする。さらに前述した鍵生成手順により各ノードに複数の鍵を配置する。ルート鍵配布者は各ノードに位置するエンティティに対して、各ノードの鍵を安全に配布する。また、鍵配布グラフを公開し、各エンティティに対して、配布された鍵がグラフのどの位置の鍵であるかを識別できるデータを配布する。
【非特許文献１】「デジタルコンテンツ保護用管理方式」SCIS2001, pp.213-218
【非特許文献２】C. H. Lin. “Dynamic key management schemes for access control in a hierarchy” Computer Communications, 20:1381-1385, 1997
【非特許文献３】J.-C. Birget, X. Zou, G. Noubir, B. Ramamurthy, “Hierarchy-Based Access Control in Distributed Environments”in the Proceedings of IEEE ICC, June 2001
【非特許文献４】須賀, 岩村, 「一方向性ハッシュ関数を用いた階層構造を持つアクセス制御方式」、CSS2003, 2003.
【特許文献１】特開２００２−１２０４７５号公報
【発明の開示】
【発明が解決しようとする課題】
【００３０】
ハッシュ鍵管理方式は、任意の有向グラフで表現されたアクセス構造に対する鍵配布方法を導き出すことができるが、ノード鍵の大きさが有向グラフに依存している。具体的には、それぞれ上下関係を持たないノード集合（このような集合を「孤立クリーク」と呼ぶ）の最大値とルートノードのノード鍵の大きさが一致することが知られている。
【００３１】
これは有向グラフの構造によっては鍵配布のために必要な通信量が非効率になることを意味している。図５に記載の有向グラフはその例である。図５は、それぞれ上下関係を持たないノード集合の最大値とルートノードのノード鍵の大きさが一致するような有向グラフの一例を示す図である。
【００３２】
１０個のノードｎ＿ｉ（１≦ｉ≦１０）のうちｎ＿４からｎ＿１０の７個のノードはそれぞれ上下関係を持たないノード集合（＝孤立クリーク）であるため、ルートノードは７個の初期鍵を保持せねばならないこととなる。一方、局所的にｎ＿１，ｎ＿２，ｎ＿５，ｎ＿６の４つのノードで構成されるサブグラフを見ると、ｎ＿１からｎ＿２，ｎ＿５，ｎ＿６にそれぞれ異なる鍵（総数３個）を配布すればよく、ｎ＿２のノード鍵からその子孫ノードのノード鍵を生成すれば十分であることがわかる。これらの考察から７個の初期鍵を保持するアルゴリズムは非効率であるといえる。
【００３３】
本発明は以上の問題に鑑みてなされたものであり、保持すべきノード鍵の大きさを削減したアクセス構造を持つ鍵管理方式を安全に構成することを目的とする。
【課題を解決するための手段】
【００３４】
本発明の目的を達成するために、例えば本発明の情報処理方法は以下の構成を備える。
【００３５】
すなわち、サイクルを持たない有向グラフで表現された階層関係に基づいて、各ノードにおける鍵を親ノードから生成して鍵配布を行う情報処理方法であって、
最上位に位置するルートノードで初期鍵を生成する生成工程と、
所定のノードでＮ個の子ノードを有するとき、所定のノードの鍵から一方向性関数を用いて、互いに生成できないＮ個の異なるノード鍵を生成するノード鍵生成工程と
を備えることを特徴とする。
【００３６】
本発明の目的を達成するために、例えば本発明の情報処理方法は以下の構成を備える。
【００３７】
すなわち、サイクルを持たない有向グラフで表現された階層関係に基づいて、各ノードにおける鍵を親ノードから生成する情報処理方法であって、
有向グラフのデータを入力する有向グラフ入力工程と、
前記入力された有向グラフのデータをサブグラフに分割する有向グラフ分割処理工程と、
前記有向グラフ分割処理工程で分割されたそれぞれのサブグラフごとにノード鍵割り当て表のデータを生成するサブグラフノード鍵生成工程と、
前記サブグラフごとのノード鍵割り当て表のデータをマージするノード鍵割り当て表生成工程と
を備えることを特徴とする。
【００３８】
本発明の目的を達成するために、例えば本発明の情報処理装置は以下の構成を備える。
【００３９】
すなわち、サイクルを持たない有向グラフで表現された階層関係に基づいて、各ノードにおける鍵を親ノードから生成して鍵配布を行う情報処理装置であって、
最上位に位置するルートノードで初期鍵を生成する生成手段と、
所定のノードでＮ個の子ノードを有するとき、所定のノードの鍵から一方向性関数を用いて、互いに生成できないＮ個の異なるノード鍵を生成するノード鍵生成手段と
を備えることを特徴とする。
【００４０】
本発明の目的を達成するために、例えば本発明の情報処理装置は以下の構成を備える。
【００４１】
すなわち、サイクルを持たない有向グラフで表現された階層関係に基づいて、各ノードにおける鍵を親ノードから生成する処理を行う情報処理装置であって、
有向グラフのデータを入力する有向グラフ入力手段と、
前記入力された有向グラフのデータをサブグラフに分割する有向グラフ分割処理手段と、
前記有向グラフ分割処理手段により分割されたそれぞれのサブグラフごとにノード鍵割り当て表のデータを生成するサブグラフノード鍵生成手段と、
前記サブグラフごとのノード鍵割り当て表のデータをマージするノード鍵割り当て表生成手段と
を備えることを特徴とする。
【発明の効果】
【００４２】
本発明の構成により、保持すべきノード鍵の大きさを削減したアクセス構造を持つ鍵管理方式を安全に構成することができる。
【発明を実施するための最良の形態】
【００４３】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００４４】
図１は、本実施形態に係る情報処理装置として機能するコンピュータシステムの基本構成を示す図である。尚、同図に示すシステムでもって後述する各処理を行う際に、同図に示した全ての部分を使用することは必須ではない。
【００４５】
本システムはホストコンピュータ本体１００、プリンタ１１５、マウス１１２，キーボード１１３に大別される。以下、各装置について説明する。
【００４６】
ホストコンピュータ１００は一般にはＰＣ（パーソナルコンピュータ）やＷＳ（ワークステーション）等のコンピュータにより構成されており、以下説明する各部により構成されている。
【００４７】
１０３はＣＰＵで、ＲＡＭ１０５やＲＯＭ１０４に格納されているプログラムやデータを用いてホストコンピュータ１００全体の制御を行うと共に、マウス１１２やキーボード１１３からの指示入力を受け付ける処理、ネットワーク、公衆回線を介した外部装置とのデータ通信処理、プリンタ１１５へのプリントデータの出力処理、そして後述する各処理を実行する。
【００４８】
１０４はＲＯＭで、ブートプログラムやホストコンピュータ１００の設定データなどが格納されている。
【００４９】
１０５はＲＡＭで、ＨＤＤ装置（ハードディスクドライブ装置）１０６、ＣＤ−ＲＯＭドライブ装置１０８、ＦＤドライブ装置１０９，ＤＶＤ−ＲＯＭドライブ装置１１０からロードされるプログラムやデータを一時的に記憶する為のエリアを備えると共に、ＣＰＵ１０３が後述する各処理を行うために使用するワークエリアも備える。なお、ＲＡＭ１０５へのプログラムやデータのロード形態はこれ以外にも考えられ、例えばインターフェース１１４、ネットワーク接続装置１０７を介して外部の装置からダウンロードするような形態であっても良いし、その形態は特に限定するものではない。
【００５０】
１０６はハードディスクドライブ装置であって、ここにＯＳ（オペレーティングシステム）やＣＰＵ１０３に後述する各処理を実行させるためのプログラムやデータ（例えば鍵生成のための処理プログラムや、プログラム内で用いられる各種データ（鍵生成用グラフなど）等）が保存されており、これらの一部もしくは全部はＣＰＵ１０３の制御によりＲＡＭ１０５中の所定のエリアにロードされる。
【００５１】
１０８はＣＤ−ＲＯＭドライブ装置であって、記憶媒体としてのＣＤ−ＲＯＭに記録されているプログラムやデータを読み出し、ＲＡＭ１０５やＨＤＤ装置１０６に出力する。従って、ＨＤＤ装置１０６が保存する上記プログラムやデータの一部をこのＣＤ−ＲＯＭに記録しておき、これをＣＤ−ＲＯＭドライブ装置１０８によりＲＡＭ１０５にロードするようにしても良い。
【００５２】
１０９はＦＤ−ＲＯＭドライブ装置であって、記憶媒体としてのＦＤに記録されているプログラムやデータを読み出し、ＲＡＭ１０５やＨＤＤ装置１０６に出力する。従って、ＨＤＤ装置１０６が保存する上記プログラムやデータの一部をこのＦＤに記録しておき、これをＦＤドライブ装置１０９によりＲＡＭ１０５にロードするようにしても良い。
【００５３】
１１０はＤＶＤ−ＲＯＭドライブ装置であって、記憶媒体としてのＤＶＤ−ＲＯＭに記録されているプログラムやデータを読み出し、ＲＡＭ１０５やＨＤＤ装置１０６に出力する。従って、ＨＤＤ装置１０６が保存する上記プログラムやデータの一部をこのＤＶＤ−ＲＯＭに記録しておき、これをＤＶＤ−ＲＯＭドライブ装置１１０によりＲＡＭ１０５にロードするようにしても良い。
【００５４】
１１１はＩ／Ｆで、ここにキーボード１１３、マウス１１２を接続することができる。従ってキーボード１１３、マウス１１２により入力した各種の指示信号はこのＩ／Ｆ１１１を介してＣＰＵ１０３に入力される。
【００５５】
１０２はモニタで、ＣＲＴや液晶画面などにより構成されており、周知の通り画像や文字などを表示することができる。
【００５６】
またホストコンピュータ１００にはＩ／Ｆ１１７が備わっており、これを介してプリンタ１１５が接続されている。従ってＣＰＵ１０３が生成したプリントデータをこのＩ／Ｆ１１７を介してプリンタ１１５に出力することにより、このプリントデータに従ってプリントを処理を行うことができる。
【００５７】
またホストコンピュータ１００にはネットワーク接続装置１０７，Ｉ／Ｆ１１４が備わっており、これらを介してホストコンピュータ１００は外部装置とのデータ通信を行うことができる。これはモデム１１８，Ｉ／Ｆ１１９についてもネットワーク回線が公衆回線であること以外は同様である。
【００５８】
１１６は上述の各部を繋ぐバスである。
【００５９】
以下、上記構成を備えるコンピュータシステムが行う鍵生成処理について説明する。尚、以下説明する鍵生成処理は、ＲＡＭ１０５にロードされた鍵生成プログラム、鍵生成のためのデータ（詳細は後述）を用いてＣＰＵ１０３が実行するものである。
【００６０】
＜鍵生成概要＞
サイクルを持たない有向グラフＧに対しノード分割｛ＳｕｂＧ＿ｉ｝（１≦ｉ≦ｍ）を与えたとき、鍵生成を表すノード鍵割り当て表Ｍ（Ｇ）を算出するアルゴリズムは前述のとおり従来技術であるハッシュ鍵管理方式を用いる。この算出アルゴリズムをΓ：Ｇ→Ｍ（Ｇ）と表記することとする。Ｍ（Ｇ）は各ノードに対するノード鍵情報が記載されており、ノード分割｛ＳｕｂＧ＿ｉ｝（１≦ｉ≦ｍ）の大きさであるｍ個のベクトルでそれぞれのノード鍵が表現されている。表現形式は前述のとおり、初期鍵に対し何度ハッシュ関数を施した値であるかが書かれている。
【００６１】
ここで、与えられた有向グラフＧを分割し、分割されたサブグラフＧ＿ｉごとにΓに施しΓ（G＿ｉ）＝Ｍ（Ｇ＿ｉ）を得る。分割の際には次の条件を満たすように分割する。
【００６２】
１）  それぞれのサブグラフのルートノードは１つである。
【００６３】
２）  あるサブグラフのルートノードが元のグラフＧのルートではないとき、このサブグラフのルートノードは異なる別のサブグラフのノードであること。
【００６４】
３）  他のサブグラフと共有するノードは、ルートノード以外は一つであること。
【００６５】
また、サブグラフに分割する際にはサブグラフ内の最大孤立クリークの大きさを削減することで鍵情報を削減することが可能となる点に注意する。以降、従来技術では問題のあった図５に示した有向グラフの分割について取り上げ、効率性について観察していく。
【００６６】
図５に記載の有向グラフをＧと置く。このときアルゴリズムΓ（Ｇ）により得られた各ノードのノード鍵の個数を示したものが図６である。ルートノード（ｎ＿１）では７つの初期鍵が、ノードｎ＿２では５つの鍵情報が必要であることがわかる。ここで、図７のようにＧ＿１、Ｇ＿２の２つのサブグラフに分割し、それぞれに対しアルゴリズムΓ（Ｇ＿１）、Γ（Ｇ＿２）を施した場合の鍵情報数は図８に示すとおりである。ノードｎ＿３は５から３に削減されている。またノードｎ＿２に記載の「１→５」はΓ（Ｇ＿１）においては１、Γ（Ｇ＿２）においては５の鍵数が必要であることがわかる。この場合、Γ（Ｇ＿１）で得られた鍵Ｋ＿１からΓ（Ｇ＿２）で必要な５つのノード鍵を生成することを意味する。ここでアルゴリズムΓ（Ｇ＿１）によってノードｎ＿２に割り当てられた鍵Ｋ＿１から、Ｇ＿２の５つのノード鍵を生成する方式について説明する。Ｇ＿１とＧ＿２の上下関係を考えると、Ｇ＿２の鍵配布に対する権限をノードｎ＿２に位置するエンティティに委譲していると捉えることができる。そのためノードｎ＿２におけるＧ＿２のノード鍵を自由に設定できることを意味するが、標準的なものとして以下のような生成方式が考えられる。ただし、アルゴリズムΓ（Ｇ＿１）によってノードｎ＿２に割り当てられた鍵をＫ＿１とし、Ｋ＿１から派生される５つのノード鍵をＫ２＿１、Ｋ２＿２、Ｋ２＿３、Ｋ２＿４、Ｋ２＿５とする。また｜｜はデータの連結、Ｈ（）は一方向性ハッシュ関数、ＭＡＣ（Ｋ；Ｄ）は鍵ＫによるデータＤに対するメッセージ認証コード（ＭＡＣ）、ｒ＿ｉはシステムで公開されているランダムデータとする。Ｋ２＿ｉの生成方法としては、例えば、以下の（１）〜（９）の求め方で得られる。１≦ｉ≦５に対して、（１）Ｋ２＿ｉ＝Ｈ（Ｋ＿１｜｜ｉ），（２）Ｋ２＿ｉ＝Ｈ（Ｋ＿１｜｜ｒ＿ｉ），（３）Ｋ２＿ｉ＝ＭＡＣ（Ｋ＿１；ｉ），（４）Ｋ２＿ｉ＝ＭＡＣ（Ｋ＿１；ｒ＿ｉ），（５）Ｋ２＿ｉ＝ＭＡＣ（Ｈ（Ｋ＿１｜｜ｉ）；ｉ），（６）Ｋ２＿ｉ＝ＭＡＣ（Ｈ（Ｋ＿１｜｜ｒ＿ｉ）；ｒ＿ｉ），（７）Ｋ２＿ｉ＝Ｈ（ＭＡＣ（Ｋ＿１）；ｉ）｜｜ｉ），（８）Ｋ２＿ｉ＝Ｈ（ＭＡＣ（Ｋ＿１）；ｒ＿ｉ）｜｜ｒ＿ｉ），（９）Ｋ２＿ｉ＝Ｈ（ＭＡＣ（Ｋ＿１）；ｉ）｜｜ｒ＿ｉ）をノード鍵とする。ここでＫ２＿ｉからＫ２＿ｊ（ｉとｊは異なる）を生成困難にする性質を持てば、どのようにＫ＿１から５つのノード鍵をＫ２＿ｉを派生させてもよい。なお、ここではノード鍵が５つの例を取り上げたが、ｎ個（ｎは２以上の自然数）のノード鍵を派生させる場合においても同様の派生演算を適用することができることは明らかである。
【００６７】
さらにＫ＿１からｎつのノード鍵（Ｋ２＿１、、、Ｋ２＿ｎ）を派生する別の方式には、Ａ）擬似乱数生成器を用いる方式、Ｂ）複数の一方向性関数を用いる方式、Ｃ）公開鍵方式を用いる方式などがある。それぞれについて以降説明する。
【００６８】
Ａ）  擬似乱数生成器を用いる方式：擬似乱数生成器ＰＲＮＧ（）はシードＳを入力とし擬似乱数を出力とする関数である。このときＰＲＮＧ（）は同じシードを入力すれば同じ出力が得られる性質を持つとする。このとき，シードとしてＫ＿１を用いて擬似乱数ＰＲＮＧ（Ｋ＿１）を所望のビット長まで出力する（Ｋ２＿ｉがｌビットの場合にはｌ×ｎビット長の出力を用意する）。出力ビットの先頭からｌビットずつに分割しそれぞれＫ２＿１、Ｋ２＿２、、、Ｋ２＿ｎとする。
【００６９】
Ｂ）  複数の一方向性関数を用いる方式：ｎ個の一方向性関数Ｆ＿ｉ（）を公開しておき、１≦ｉ≦ｎに対してＫ２＿ｉ＝Ｆ＿ｉ（Ｋ＿１）と算出する。
【００７０】
Ｃ）  公開鍵方式を用いる方式：異なるｎ個の公開鍵Ｐ＿ｉと暗号化関数Ｆ＿ｉ（）を公開しておき、１≦ｉ≦ｎに対してＫ２＿ｉ＝Ｆ＿ｉ（Ｐ＿ｉ；Ｋ＿１）と算出する。ただし関数Ｆ＿ｉ（Ｐ；Ｋ）は公開鍵Ｐを用いてＫを暗号化することを意味する。具体的なアルゴリズム例としてはＲＳＡが挙げられる。公開鍵Ｐ＿ｉを（ｅ＿ｉ，ｎ＿ｉ）としたとき暗号化関数Ｆ＿ｉ（Ｐ＿ｉ；Ｍ）はＭ＾ｅ＿ｉ（ｍｏｄ  ｎ＿ｉ）と置くことができる。このとき添字ｉによらずｎ＿ｉを固定してｅ＿ｉを別々にしたり、逆に添字ｉによらずｅ＿ｉを固定してｎ＿ｉを別々にする方式も可能である。
【００７１】
このように、Ｋ＿１からｎつのノード鍵（Ｋ２＿１、、、Ｋ２＿ｎ）を生成する方法しては、Ｋ２＿１、、、Ｋ２＿ｎのいずれからも、Ｋ＿１を生成できず、かつ、Ｋ２＿１、、、Ｋ２＿ｎのいずれかからも、Ｋ２＿iを生成できないような方法であればよい。
【００７２】
さらに図９のように３つのサブグラフＧ＿１、Ｇ＿２、Ｇ＿３に分割すると、図１０に記載の鍵情報数となり、さらに鍵情報数を削減することがわかる。
【００７３】
図１７は、本実施形態に係る鍵生成処理に係るフローチャートである。ステップＳ２００１でアクセス構造が表現された有向グラフＧのデータをＲＡＭ１０５にロードする。保存形態は上述の通り特には限定しないが、例えばＨＤＤ装置１０６からＲＡＭにロードする。
【００７４】
次にステップＳ２００２でこのデータを用いてグラフ分割を行い、各サブグラフのデータ｛Ｇ＿ｉ｝（１≦ｉ≦ｍ）を得る。分割されたそれぞれのサブグラフのデータはＲＡＭ１０５中の所定のエリアに一時的に記憶させておく。
【００７５】
次に、ステップＳ２００３で得られた各サブグラフＧ＿ｉに対してアルゴリズムΓを施し、それぞれのノード鍵割り当て表Ｍ（Ｇ＿ｉ）を求める。求めた表のデータはＲＡＭ１０５中の所定のエリアに一時的に記憶させておく。
【００７６】
そして最後にステップＳ２００４でＭ（Ｇ＿ｉ）をマージして（それぞれのサブグラフに対する表のデータをｉ＝１，２，３，，の順に順次つなげて）Ｍ（Ｇ）を得る。Ｍ（Ｇ）は従来のノード鍵割り当て表と同様に表現できるが、サブグラフごとにベクトルの大きさが異なることと、上下をつなぐノード（例えば図７ではｎ＿２、図９ではｎ＿２とｎ＿３）を認識するラベルが必要であることが相違点である。
【００７７】
また、Ｋ＿１からｎつのノード鍵（Ｋ２＿１、、、Ｋ２＿ｎ）を生成する方法は、図５の例で説明したように生成すればよい。
【００７８】
以上が本発明の一実施形態であるが、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【００７９】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８０】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８１】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャート（機能構成）に対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施形態に係る情報処理装置として機能するコンピュータシステムの基本構成を示す図である。
【図２】ハッシュ鍵管理方式におけるアクセス構造を示す図である。
【図３】階層的鍵管理方式を適用した場合の図２の有向グラフに対するノード鍵を示す模式図である。
【図４】従来技術におけるノード鍵割り当て処理のフローチャートである。
【図５】それぞれ上下関係を持たないノード集合の最大値とルートノードのノード鍵の大きさが一致するような有向グラフの一例を示す図である。
【図６】アルゴリズムΓ（Ｇ）により得られた各ノードのノード鍵の個数を示す図である。
【図７】Ｇ＿１、Ｇ＿２の２つのサブグラフを示す図である。
【図８】Ｇ＿１、Ｇ＿２の２つのサブグラフそれぞれに対しアルゴリズムΓ（Ｇ＿１）、Γ（Ｇ＿２）を施した場合の鍵情報数を示す図である。
【図９】３つのサブグラフＧ＿１、Ｇ＿２、Ｇ＿３を示す図である。
【図１０】３つのサブグラフＧ＿１、Ｇ＿２、Ｇ＿３に分割した場合の鍵の個数を示す図である。
【図１１】鍵配布用の木構造を示す図である。
【図１２】アクセス構造を示す図である。
【図１３】アクセス構造を示す図である。
【図１４】図１２，１３に示すアクセス構造における局所的な構造を示す図である。
【図１５】各ノードが複数の鍵を保持する方式の一例の木構造を示す図である。
【図１６】One-way function based keying schemesにおいて、子ノードの鍵データを生成する処理を説明するための図である。
【図１７】本発明の実施形態に係る鍵生成処理に係るフローチャートである。
【図１】
2006020292.tif 000003
【図２】
2006020292.tif 000004
【図３】
2006020292.tif 000005
【図４】
2006020292.tif 000006
【図５】
2006020292.tif 000007
【図６】
2006020292.tif 000008
【図７】
2006020292.tif 000009
【図８】
2006020292.tif 000010
【図９】
2006020292.tif 000011
【図１０】
2006020292.tif 000012
【図１１】
2006020292.tif 000013
【図１２】
2006020292.tif 000014
【図１３】
2006020292.tif 000015
【図１４】
2006020292.tif 000016
【図１５】
2006020292.tif 000017
【図１６】
2006020292.tif 000018
【図１７】
2006020292.tif 000019