(57)【要約】【課題】アドホックネットワークに接続される情報処理装置であって、グループを形成する情報処理装置それぞれが非同期にネットワークに接続される場合であっても、各情報処理装置がグループ鍵を共有できるようにする。【解決手段】グループ管理サーバ５は、グループを形成する計算機間の暗号通信に用いられる共有暗号鍵を保持し、ＫＥＫで暗号化する。そして、その暗号化データと、グループに属する各計算機のＩＤおよび各計算機の公開鍵でＫＥＫを暗号化したデータを含む鍵情報を生成する。グループ管理サーバ５は、ネットワーク１に接続されている計算機のうちの１台に鍵情報を送信する。鍵情報を受信した計算機は、他の各計算機と鍵情報を共有する。グループに属する計算機は、自装置のＩＤが鍵情報に含まれていることを確認してＫＥＫを復号し、ＫＥＫを用いて共有暗号鍵を復号する。【選択図】図１
2007201522.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムであって、
グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を生成する鍵情報生成手段と、
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備え、
各情報処理装置は、
鍵情報送信手段によって送信された鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている各情報処理装置との間で共有する鍵情報共有手段と、
他の情報処理装置と共有した鍵情報に自装置の識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含む
ことを特徴とする暗号通信システム。
【請求項２】
グループを形成する各情報処理装置の公開鍵を記憶する公開鍵記憶手段を備え、
鍵情報生成手段は、グループを形成する各情報処理装置それぞれの公開鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、前記グループ鍵暗号データと、グループを形成する情報処理装置毎の識別情報との組み合わせを含む鍵情報を生成し、
各情報処理装置は、自装置の秘密鍵を記憶する秘密鍵記憶手段を備え、
各情報処理装置の復号手段は、自装置の秘密鍵を用いて、自装置の識別情報と組み合わされたグループ鍵暗号データからグループ鍵を復号する
請求項１に記載の暗号通信システム。
【請求項３】
グループを形成する各情報処理装置の公開鍵を記憶する公開鍵記憶手段を備え、
鍵情報生成手段は、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループを形成する各情報処理装置それぞれの公開鍵で前記鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、前記グループ鍵暗号データと、グループを形成する各情報処理装置毎の識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成し、
各情報処理装置は、自装置の秘密鍵を記憶する秘密鍵記憶手段を備え、
各情報処理装置の復号手段は、自装置の秘密鍵を用いて、自装置の識別情報と組み合わされた鍵暗号化鍵暗号データから鍵暗号化鍵を復号し、当該鍵暗号化鍵を用いてグループ鍵暗号データからグループ鍵を復号する
請求項１に記載の暗号通信システム。
【請求項４】
グループを形成する各情報処理装置の共通鍵を記憶する共通鍵記憶手段を備え、
鍵情報生成手段は、グループを形成する各情報処理装置それぞれの共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、前記グループ鍵暗号データと、グループを形成する情報処理装置毎の識別情報との組み合わせを含む鍵情報を生成し、
各情報処理装置は、自装置の共通鍵を記憶する自装置共通鍵記憶手段を備え、
各情報処理装置の復号手段は、自装置の共通鍵を用いて、自装置の識別情報と組み合わされたグループ鍵暗号データからグループ鍵を復号する
請求項１に記載の暗号通信システム。
【請求項５】
グループを形成する各情報処理装置の共通鍵を記憶する共通鍵記憶手段を備え、
鍵情報生成手段は、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループを形成する各情報処理装置それぞれの共通鍵で前記鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、前記グループ鍵暗号データと、グループを形成する各情報処理装置毎の識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成し、
各情報処理装置は、自装置の共通鍵を記憶する自装置共通鍵記憶手段を備え、
各情報処理装置の復号手段は、自装置の共通鍵を用いて、自装置の識別情報と組み合わされた鍵暗号化鍵暗号データから鍵暗号化鍵を復号し、当該鍵暗号化鍵を用いてグループ鍵暗号データからグループ鍵を復号する
請求項１に記載の暗号通信システム。
【請求項６】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムであって、
グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、
グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成手段と、
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備え、
各情報処理装置は、
鍵情報送信手段によって送信された鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている各情報処理装置との間で共有する鍵情報共有手段と、
他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含む
ことを特徴とする暗号通信システム。
【請求項７】
各情報処理装置は、自装置の共通鍵を記憶する自装置共通鍵記憶手段を含み、
各情報処理装置の復号手段は、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、当該接点識別情報に対応する自装置の共通鍵を用いて、当該接点識別情報と組み合わされたグループ鍵暗号データからグループ鍵を復号する
請求項６に記載の暗号通信システム。
【請求項８】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムであって、
グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、
グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成手段と、
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備え、
各情報処理装置は、
鍵情報送信手段によって送信された鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている各情報処理装置との間で共有する鍵情報共有手段と、
他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含む
ことを特徴とする暗号通信システム。
【請求項９】
各情報処理装置は、自装置の共通鍵を記憶する自装置共通鍵記憶手段を含み、
各情報処理装置の復号手段は、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、当該接点識別情報に対応する自装置の共通鍵を用いて、当該接点識別情報と組み合わされた鍵暗号化鍵暗号データから鍵暗号化鍵を復号し、当該鍵暗号化鍵を用いてグループ鍵暗号データからグループ鍵を復号する
請求項８に記載の暗号通信システム。
【請求項１０】
鍵情報生成手段は、グループ鍵を更新する毎に、グループ鍵を暗号化したグループ鍵暗号データを鍵情報に追加し、鍵情報に含まれるグループ鍵暗号データに応じたバージョン情報を割り当て、
各情報処理装置は、
他の情報処理装置への通信内容をグループ鍵で暗号化し、暗号化したデータに前記グループ鍵に対応するバージョン情報と、鍵情報にアクセスするためのアクセス情報とを付加した通信データを生成し、前記通信データを他の情報処理装置に送信する通信データ送信手段を含む
請求項１から請求項９のうちのいずれか１項に記載の暗号通信システム。
【請求項１１】
各情報処理装置は、
他の情報処理装置から通信データを受信したときに、当該通信データに付加されているバージョン情報に対応するグループ鍵を保持しているか否かを判定する判定手段を備え、
鍵情報共有手段は、前記通信データに付加されているバージョン情報に対応するグループ鍵を保持していないと判定したときに、前記通信データに付加されているアクセス情報によって鍵情報にアクセスし、
復号手段は、前記鍵情報内で前記バージョン情報が割り当てられたグループ鍵暗号データからグループ鍵を復号する
請求項１０に記載の暗号通信システム。
【請求項１２】
鍵情報送信手段を含むサーバを備え、
一部の情報処理装置は、他の情報処理装置と前記サーバとの間の通信の中継を行い、
前記一部のサーバは、鍵情報を記憶し、
前記他の情報処理装置は、通信ネットワークに接続されていない状態から通信ネットワークに接続された状態になったときに、前記一部の情報処理装置から鍵情報を受信する
請求項１から請求項１１のうちのいずれか１項に記載の暗号通信システム。
【請求項１３】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵共有方法であって、
鍵情報生成手段が、グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を生成し、
鍵情報送信手段が、前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信し、
前記一の情報処理装置の鍵情報共有手段が、前記鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている各情報処理装置との間で共有し、
各情報処理装置の復号手段が、他の情報処理装置と共有した鍵情報に自装置の識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する
ことを特徴とする鍵共有方法。
【請求項１４】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵共有方法であって、
共通鍵記憶手段が、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶し、
鍵情報生成手段が、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成し、
鍵情報送信手段が、前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信し、
前記一の情報処理装置の鍵情報共有手段が、前記鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている各情報処理装置との間で共有し、
各情報処理装置の復号手段が、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する
ことを特徴とする鍵共有方法。
【請求項１５】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵共有方法であって、
共通鍵記憶手段が、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶し、
鍵情報生成手段が、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成し、
鍵情報送信手段が、前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信し、
前記一の情報処理装置の鍵情報共有手段が、前記鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている各情報処理装置との間で共有し、
各情報処理装置の復号手段が、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する
ことを特徴とする鍵共有方法。
【請求項１６】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵提供装置であって、
グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を生成する鍵情報生成手段と、
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備えた
ことを特徴とする鍵提供装置。
【請求項１７】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵提供装置であって、
グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、
グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成手段と、
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備えた
ことを特徴とする鍵提供装置。
【請求項１８】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵提供装置であって、
グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、
グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成手段と、
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備えた
ことを特徴とする鍵提供装置。
【請求項１９】
グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を提供する鍵提供装置と、暗号通信を行う情報処理装置とを備えた暗号通信システムに適用される情報処理装置であって、
前記鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている他の情報処理装置との間で共有する鍵情報共有手段と、
他の情報処理装置と共有した鍵情報に自装置の識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを備えた
ことを特徴とする情報処理装置。
【請求項２０】
グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成手段とを備えた鍵提供装置と、暗号通信を行う情報処理装置とを備えた暗号通信システムに適用される情報処理装置であって、
前記鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている他の情報処理装置との間で共有する鍵情報共有手段と、
他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含む
ことを特徴とする情報処理装置。
【請求項２１】
グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成手段とを備えた鍵提供装置と、暗号通信を行う情報処理装置とを備えた暗号通信システムに適用される情報処理装置であって、
前記鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている他の情報処理装置との間で共有する鍵情報共有手段と、
他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含む
ことを特徴とする情報処理装置。
【請求項２２】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用されるコンピュータに搭載される鍵提供プログラムであって、
前記コンピュータに、
グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を生成する鍵情報生成処理、および
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信処理
を実行させるための鍵提供プログラム。
【請求項２３】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用され、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段を備えたコンピュータに搭載される鍵提供プログラムであって、
前記コンピュータに、
グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成処理、および
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信
を実行させるための鍵提供プログラム。
【請求項２４】
少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用され、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段を備えたコンピュータに搭載される鍵提供プログラムであって、
前記コンピュータに、
グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成処理、および
前記鍵情報を、通信ネットワークを介して、当該通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信処理
を実行させるための鍵提供プログラム。
【請求項２５】
グループを形成するコンピュータ同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各コンピュータの識別情報とを含む鍵情報を提供する鍵提供装置と、暗号通信を行うコンピュータとを備えた暗号通信システムに適用されるコンピュータに搭載される情報処理プログラムであって、
前記コンピュータに、
前記鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている他のコンピュータとの間で共有する鍵情報共有処理、および
他のコンピュータと共有した鍵情報に自装置の識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号処理
を実行させるための情報処理プログラム。
【請求項２６】
グループを形成する各コンピュータの共通鍵と、各コンピュータの共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループに属さないコンピュータの共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さないコンピュータの共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成手段とを備えた鍵提供装置と、暗号通信を行うコンピュータとを備えた暗号通信システムに適用されるコンピュータに搭載される情報処理プログラムであって、
前記鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている他のコンピュータとの間で共有する鍵情報共有処理、および
他のコンピュータと共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号処理
を実行させるための情報処理プログラム。
【請求項２７】
グループを形成する各コンピュータの共通鍵と、各コンピュータの共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さないコンピュータの共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、前記グループ鍵暗号データと、グループに属さないコンピュータの共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成手段とを備えた鍵提供装置と、暗号通信を行うコンピュータとを備えた暗号通信システムに適用されるコンピュータに搭載される情報処理プログラムであって、
前記鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、当該鍵情報を前記通信ネットワークに接続されている他のコンピュータとの間で共有する鍵情報共有処理、および
他のコンピュータと共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、前記鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号処理
を実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グループを形成する情報処理装置間での暗号通信を実現するための鍵を各情報処理装置が共有することができる暗号通信システム、およびそのような暗号通信システムに適用される鍵共有方法、鍵提供装置、情報処理装置、鍵提供プログラム、情報処理プログラムに関する。
【背景技術】
【０００２】
従来より、他者からの盗聴を防いでグループ内で安全に同報通信を実現するために、グループ内で共有する鍵をサーバで管理するシステムが種々提案されている。そのようなシステムの例が、特許文献１に記載されている。図１２は、特許文献１に記載されたシステムの構成を示す構成図である。ただし、図１２に示す符号は、特許文献１で用いられている符号とは異なっている。特許文献１に記載されたシステムは、図１２に示すように、ネットワーク５１に、複数の計算機５２−１〜５２−４と、認証サーバ５４と、グループ管理サーバ５５とが接続された構成になっている。各計算機５２−１〜５２−４上では、それぞれプロセスＡ（５３−１），Ｂ（５３−２），Ｃ（５３−３），Ｄ（５３−４）が動作している。
【０００３】
ここでは、計算機５２−１が共有暗号鍵ｇ１を保持するまでの過程を例にして説明する。共有暗号鍵は、グループ内で秘匿通信（暗号化通信）を行うときに、データの暗号化や復号に用いる鍵である。共有暗号鍵を、グループ鍵と称する場合もある。
【０００４】
秘密鍵Ａは、計算機５２−１と認証サーバ５４とがそれぞれ保持する秘密鍵（共通鍵）である。プロセスＡは、認証サーバ５４から秘密鍵Ａで暗号化された会話鍵ａおよびグループ管理サーバ５５の秘密鍵αで暗号化された認証情報を得る。この認証情報には、会話鍵ａが含まれている。次に、プロセスＡは、自分の暗号鍵Ａで認証情報を復号して会話鍵ａを得て、認証情報を用いてグループ管理サーバ５５に対してグループへの加入を申請する。グループ管理サーバ５５は、認証情報を自己の暗号鍵αで復号して認証を検査し、また、会話鍵ａを得る。そして、グループ管理サーバ５５は、会話鍵ａで暗号化した共有暗号鍵ｇ１をプロセスＡに配布する。プロセスＡは、暗号化されている共有暗号鍵ｇ１を会話鍵ａで復号し、その共有暗号鍵（グループ鍵）ｇ１を用いて同報暗号通信を行う。
【０００５】
【特許文献１】特開平７−６６８０３号公報（第４−８ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
アドホックネットワークに接続される情報処理装置（計算機）においては、グループを形成する情報処理装置は、それぞれが非同期にネットワークに接続されたり、ネットワークとの接続を断としたりする。このような場合にも、グループを形成する情報処理装置がそれぞれグループ鍵を共有できるようにすることが好ましい。また、特許文献１に記載されたシステムでは、認証サーバおよびグループ管理サーバがネットワークに接続されていないときには、各計算機は共有暗号鍵を得ることはできない。各サーバやグループを形成する全ての情報処理装置がネットワークに接続された状態でなくても、グループを形成する各情報処理装置が共有暗号鍵を共有できることが好ましい。
【０００７】
また、特許文献１に記載されたシステムでは、複数の計算機から形成されるグループをグループ管理サーバのみが管理する。そのため、グループを形成する計算機の数が増加すると、グループ管理サーバの負荷が増加してしまうという問題がある。
【０００８】
また、特許文献１に記載されたシステムでは、各計算機が認証サーバ、グループ管理サーバと直接通信を行って、各計算機がいずれもグループ管理サーバからグループ鍵を得る構成になっている。ところで、センサネットワークでは、多数の末端のセンサノードとサーバとが通信を行う場合、末端のセンサノードとサーバとの間の通信を中継するセンサノードが設けられることがある。このようなセンサネットワークシステムに、特許文献１に記載されたシステムを適用すると、各末端のセンサノード（図１２に示す計算機に相当する。）それぞれが、グループ管理サーバからグループ鍵を得る際に上記の通信が発生するため、中継を行うセンサノードの処理が増大してしまうという問題が生じる。
【０００９】
そこで、本発明は、アドホックネットワークに接続される情報処理装置であって、グループを形成する情報処理装置それぞれが非同期にネットワークに接続される場合であっても、情報処理装置がネットワークに接続された時点で各情報処理装置がグループ鍵を共有できるようにすることを目的とする。なお、複数の情報処理装置それぞれが共通の情報を保持することも、「共有」に該当するものとする。
【００１０】
また、本発明は、グループを形成する情報処理装置の数を増加可能なスケーラブルなシステムであっても、情報処理装置の増加によるグループ管理サーバの負荷の増加を抑えられるようにすることを目的とする。
【００１１】
また、本発明は、グループを形成する情報処理装置の中に、他の情報処理装置とサーバとの通信を中継する情報処理装置が存在する場合であっても、その情報処理装置の処理量の増加を抑えることができるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
本発明による暗号通信システムは、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムであって、グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を生成する鍵情報生成手段と、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備え、各情報処理装置は、鍵情報送信手段によって送信された鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている各情報処理装置との間で共有する鍵情報共有手段と、他の情報処理装置と共有した鍵情報に自装置の識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含むことを特徴とする。
【００１３】
そのような構成によれば、各情報処理装置が、鍵情報送信手段によって送信された鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている各情報処理装置との間で共有する鍵情報共有手段と、他の情報処理装置と共有した鍵情報に自装置の識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含むので、アドホックに接続される情報処理装置も鍵情報を共有し、グループ鍵を復号することができる。また、鍵情報を、１台の情報処理装置に送信すればよいので、鍵情報送信手段の負荷の増加を抑えることができる。
【００１４】
グループを形成する各情報処理装置の公開鍵を記憶する公開鍵記憶手段を備え、鍵情報生成手段が、グループを形成する各情報処理装置それぞれの公開鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、グループ鍵暗号データと、グループを形成する情報処理装置毎の識別情報との組み合わせを含む鍵情報を生成し、各情報処理装置が、自装置の秘密鍵を記憶する秘密鍵記憶手段を備え、各情報処理装置の復号手段が、自装置の秘密鍵を用いて、自装置の識別情報と組み合わされたグループ鍵暗号データからグループ鍵を復号する構成であってもよい。
【００１５】
グループを形成する各情報処理装置の公開鍵を記憶する公開鍵記憶手段を備え、鍵情報生成手段が、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループを形成する各情報処理装置それぞれの公開鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、グループ鍵暗号データと、グループを形成する各情報処理装置毎の識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成し、各情報処理装置が、自装置の秘密鍵を記憶する秘密鍵記憶手段を備え、各情報処理装置の復号手段が、自装置の秘密鍵を用いて、自装置の識別情報と組み合わされた鍵暗号化鍵暗号データから鍵暗号化鍵を復号し、鍵暗号化鍵を用いてグループ鍵暗号データからグループ鍵を復号する構成であってもよい。
【００１６】
グループを形成する各情報処理装置の共通鍵を記憶する共通鍵記憶手段を備え、鍵情報生成手段が、グループを形成する各情報処理装置それぞれの共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、グループ鍵暗号データと、グループを形成する情報処理装置毎の識別情報との組み合わせを含む鍵情報を生成し、各情報処理装置が、自装置の共通鍵を記憶する自装置共通鍵記憶手段を備え、各情報処理装置の復号手段が、自装置の共通鍵を用いて、自装置の識別情報と組み合わされたグループ鍵暗号データからグループ鍵を復号する構成であってもよい。
【００１７】
グループを形成する各情報処理装置の共通鍵を記憶する共通鍵記憶手段を備え、鍵情報生成手段が、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループを形成する各情報処理装置それぞれの共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、グループ鍵暗号データと、グループを形成する各情報処理装置毎の識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成し、各情報処理装置が、自装置の共通鍵を記憶する自装置共通鍵記憶手段を備え、各情報処理装置の復号手段が、自装置の共通鍵を用いて、自装置の識別情報と組み合わされた鍵暗号化鍵暗号データから鍵暗号化鍵を復号し、鍵暗号化鍵を用いてグループ鍵暗号データからグループ鍵を復号する構成であってもよい。
【００１８】
そのような構成によれば、共通鍵を用いるので、鍵情報生成手段や情報処理装置の処理能力が高くなくてもよい。
【００１９】
また、本発明による暗号通信システムは、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムであって、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成手段と、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備え、各情報処理装置が、鍵情報送信手段によって送信された鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている各情報処理装置との間で共有する鍵情報共有手段と、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含むことを特徴とする。
【００２０】
各情報処理装置が、自装置の共通鍵を記憶する自装置共通鍵記憶手段を含み、各情報処理装置の復号手段が、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、接点識別情報に対応する自装置の共通鍵を用いて、接点識別情報と組み合わされたグループ鍵暗号データからグループ鍵を復号する構成であってもよい。
【００２１】
本発明による暗号通信システムは、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムであって、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成手段と、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備え、各情報処理装置が、鍵情報送信手段によって送信された鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている各情報処理装置との間で共有する鍵情報共有手段と、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含むことを特徴とする。
【００２２】
そのような構成によれば、各情報処理装置が、鍵情報送信手段によって送信された鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている各情報処理装置との間で共有する鍵情報共有手段と、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含むので、アドホックに接続される情報処理装置も鍵情報を共有し、グループ鍵を復号することができる。また、鍵情報を、１台の情報処理装置に送信すればよいので、鍵情報送信手段の負荷の増加を抑えることができる。
【００２３】
各情報処理装置は、自装置の共通鍵を記憶する自装置共通鍵記憶手段を含み、各情報処理装置の復号手段は、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、接点識別情報に対応する自装置の共通鍵を用いて、接点識別情報と組み合わされた鍵暗号化鍵暗号データから鍵暗号化鍵を復号し、鍵暗号化鍵を用いてグループ鍵暗号データからグループ鍵を復号する構成であってもよい。
【００２４】
鍵情報生成手段が、グループ鍵を更新する毎に、グループ鍵を暗号化したグループ鍵暗号データを鍵情報に追加し、鍵情報に含まれるグループ鍵暗号データに応じたバージョン情報を割り当て、各情報処理装置が、他の情報処理装置への通信内容をグループ鍵で暗号化し、暗号化したデータにグループ鍵に対応するバージョン情報と、鍵情報にアクセスするためのアクセス情報とを付加した通信データを生成し、通信データを他の情報処理装置に送信する通信データ送信手段を含む構成であってもよい。
【００２５】
各情報処理装置が、他の情報処理装置から通信データを受信したときに、通信データに付加されているバージョン情報に対応するグループ鍵を保持しているか否かを判定する判定手段を備え、鍵情報共有手段が、通信データに付加されているバージョン情報に対応するグループ鍵を保持していないと判定したときに、通信データに付加されているアクセス情報によって鍵情報にアクセスし、復号手段が、鍵情報内でバージョン情報が割り当てられたグループ鍵暗号データからグループ鍵を復号する構成であってもよい。
【００２６】
そのような構成によれば、鍵情報共有手段が、通信データに付加されているバージョン情報に対応するグループ鍵を保持していないと判定したときに、通信データに付加されているアクセス情報によって鍵情報にアクセスするので、鍵情報送信手段が通信ネットワークに接続されていないときであっても、情報処理装置は鍵情報を共有することができる。
【００２７】
鍵情報送信手段を含むサーバを備え、一部の情報処理装置が、他の情報処理装置とサーバとの間の通信の中継を行い、その一部のサーバが、鍵情報を記憶し、他の情報処理装置は、通信ネットワークに接続されていない状態から通信ネットワークに接続された状態になったときに、その一部の情報処理装置から鍵情報を受信する構成であってもよい。
【００２８】
そのような構成によれば、通信ネットワークに情報処理装置が接続されたとしても、通信の中継を行う一部の情報処理装置は、その情報処理装置とサーバとの通信の中継を行う必要がない。従って、通信の中継を行う一部の情報処理装置の負荷の増加を抑えることができる。
【００２９】
本発明による鍵共有方法は、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵共有方法であって、鍵情報生成手段が、グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を生成し、鍵情報送信手段が、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信し、一の情報処理装置の鍵情報共有手段が、鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている各情報処理装置との間で共有し、各情報処理装置の復号手段が、他の情報処理装置と共有した鍵情報に自装置の識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号することを特徴とする。
【００３０】
また、本発明による鍵共有方法は、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵共有方法であって、共通鍵記憶手段が、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶し、鍵情報生成手段が、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成し、鍵情報送信手段が、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信し、一の情報処理装置の鍵情報共有手段が、鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている各情報処理装置との間で共有し、各情報処理装置の復号手段が、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号することを特徴とする。
【００３１】
また、本発明による鍵共有方法は、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵共有方法であって、共通鍵記憶手段が、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶し、鍵情報生成手段が、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成し、鍵情報送信手段が、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信し、一の情報処理装置の鍵情報共有手段が、鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている各情報処理装置との間で共有し、各情報処理装置の復号手段が、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号することを特徴とする。
【００３２】
本発明による鍵提供装置は、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵提供装置であって、グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を生成する鍵情報生成手段と、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備えたことを特徴とする。
【００３３】
また、本発明による鍵提供装置は、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵提供装置であって、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成手段と、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備えたことを特徴とする。
【００３４】
また、本発明による鍵提供装置は、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用される鍵提供装置であって、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成手段と、鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信手段とを備えたことを特徴とする。
【００３５】
また、本発明による情報処理装置は、グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を提供する鍵提供装置と、暗号通信を行う情報処理装置とを備えた暗号通信システムに適用される情報処理装置であって、鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている他の情報処理装置との間で共有する鍵情報共有手段と、他の情報処理装置と共有した鍵情報に自装置の識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを備えたことを特徴とする。
【００３６】
また、本発明による情報処理装置は、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成手段とを備えた鍵提供装置と、暗号通信を行う情報処理装置とを備えた暗号通信システムに適用される情報処理装置であって、鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている他の情報処理装置との間で共有する鍵情報共有手段と、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含むことを特徴とする。
【００３７】
また、本発明による情報処理装置は、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成手段とを備えた鍵提供装置と、暗号通信を行う情報処理装置とを備えた暗号通信システムに適用される情報処理装置であって、鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている他の情報処理装置との間で共有する鍵情報共有手段と、他の情報処理装置と共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号手段とを含むことを特徴とする。
【００３８】
また、本発明による鍵提供プログラムは、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用されるコンピュータに搭載される鍵提供プログラムであって、コンピュータに、グループを形成する情報処理装置同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各情報処理装置の識別情報とを含む鍵情報を生成する鍵情報生成処理、および鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信処理を実行させることを特徴とする。
【００３９】
また、本発明による鍵提供プログラムは、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用され、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段を備えたコンピュータに搭載される鍵提供プログラムであって、コンピュータに、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成処理、および鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信を実行させることを特徴とする。
【００４０】
また、本発明による鍵提供プログラムは、少なくとも一部または全部がグループを形成する複数の情報処理装置を備えた暗号通信システムに適用され、グループを形成する各情報処理装置の共通鍵と、各情報処理装置の共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段を備えたコンピュータに搭載される鍵提供プログラムであって、コンピュータに、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、グループ鍵暗号データと、グループに属さない情報処理装置の共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成処理、および鍵情報を、通信ネットワークを介して、通信ネットワークに接続されている一の情報処理装置に送信する鍵情報送信処理を実行させることを特徴とする。
【００４１】
また、本発明による情報処理プログラムは、グループを形成するコンピュータ同士が暗号通信を行う際に用いるグループ鍵を暗号化したグループ鍵暗号データと、グループを形成する各コンピュータの識別情報とを含む鍵情報を提供する鍵提供装置と、暗号通信を行うコンピュータとを備えた暗号通信システムに適用されるコンピュータに搭載される情報処理プログラムであって、コンピュータに、鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている他のコンピュータとの間で共有する鍵情報共有処理、および他のコンピュータと共有した鍵情報に自装置の識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号処理を実行させることを特徴とする。
【００４２】
また、本発明による情報処理プログラムは、グループを形成する各コンピュータの共通鍵と、各コンピュータの共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループに属さないコンピュータの共通鍵を除いた中で最も根に近い節点の共通鍵でグループ鍵を暗号化したグループ鍵暗号データを生成し、グループ鍵暗号データと、グループに属さないコンピュータの共通鍵を除いた中で最も根に近い節点の節点識別情報との組み合わせを含む鍵情報を生成する鍵情報生成手段とを備えた鍵提供装置と、暗号通信を行うコンピュータとを備えた暗号通信システムに適用されるコンピュータに搭載される情報処理プログラムであって、鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている他のコンピュータとの間で共有する鍵情報共有処理、および他のコンピュータと共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号処理を実行させることを特徴とする。
【００４３】
また、本発明による情報処理プログラムは、グループを形成する各コンピュータの共通鍵と、各コンピュータの共通鍵の階層を示す木構造データであって、各節点を識別する節点識別情報が定められた木構造データとを記憶する共通鍵記憶手段と、グループ鍵を鍵暗号化鍵で暗号化してグループ鍵暗号データを生成し、グループに属さないコンピュータの共通鍵を除いた中で最も根に近い節点の共通鍵で鍵暗号化鍵を暗号化した鍵暗号化鍵暗号データを生成し、グループ鍵暗号データと、グループに属さないコンピュータの共通鍵を除いた中で最も根に近い節点の節点識別情報および鍵暗号化鍵暗号データの組み合わせとを含む鍵情報を生成する鍵情報生成手段とを備えた鍵提供装置と、暗号通信を行うコンピュータとを備えた暗号通信システムに適用されるコンピュータに搭載される情報処理プログラムであって、鍵提供装置から通信ネットワークを介して鍵情報を受信したときに、鍵情報を通信ネットワークに接続されている他のコンピュータとの間で共有する鍵情報共有処理、および他のコンピュータと共有した鍵情報に自装置の共通鍵に応じた節点識別情報が含まれているときに、鍵情報に含まれているグループ鍵暗号データからグループ鍵を復号する復号処理を実行させることを特徴とする。
【発明の効果】
【００４４】
本発明によれば、アドホックに接続される情報処理装置も鍵情報を共有し、グループ鍵を復号することができる。また、鍵情報を、１台の情報処理装置に送信すればよいので、鍵情報送信手段の負荷の増加を抑えることができる。また、鍵情報送信手段と情報処理装置との通信を中継する装置を設けたとしても、その装置の負荷の増加を抑えることができる。
【発明を実施するための最良の形態】
【００４５】
以下、本発明の実施の形態を図面を参照して説明する。
【００４６】
実施の形態１．
図１は、本発明による暗号通信システムの第１の実施の形態を示すブロック図である。第１の実施の形態の暗号通信システムは、認証サーバ４と、グループ管理サーバ（鍵提供装置）５と、プログラム制御により動作する計算機（情報処理装置）２−１〜２−４とを備える。認証サーバ４、グループ管理サーバ５、および各計算機２−１〜２−４は、通信ネットワーク（以下、単にネットワークと記す。）１に接続される。各計算機２−１〜２−４は、アドホックにネットワーク１に接続される。すなわち、各計算機は、他の計算機と通信を行うときに一時的にネットワークに接続され、他の計算機との通信が終了した後にはネットワーク１との接続を断とする。図１では、４台の計算機２−１〜２−４を例示したが、計算機の台数は特に限定されない。
【００４７】
ネットワーク１に接続される計算機２−１〜２−４のうちの少なくとも一部あるいは全部は、同一のグループを形成する。グループを形成しない（すなわち、グループに属さない）計算機がネットワーク１に接続されていてもよい。ただし、グループに属さない計算機であっても、後述する鍵情報共有部と、鍵情報解析部とを備え、他の計算機との間で鍵情報を共有する。
【００４８】
なお、複数の情報処理装置（計算機）それぞれが共通の情報を保持することも、「共有」に該当するものとする。従って、計算機同士が鍵情報を送受信して、各計算機それぞれが鍵情報を保持することも鍵情報の共有に該当する。
【００４９】
各計算機２−１〜２−４は、それぞれの計算機自身のみが保持するように定められた秘密鍵を保持する。計算機２−１は、秘密鍵Ａｐを保持する。同様に、計算機２−２〜２−４は、それぞれ、秘密鍵Ｂｐ、秘密鍵Ｃｐ、秘密鍵Ｄｐを保持する。また、同様に、グループ管理サーバ５は、グループ管理サーバ５のみが保持するように定められた秘密鍵αｐを保持する。これらの各秘密鍵Ａｐ，Ｂｐ，Ｃｐ，Ｄｐ，αｐは、公開鍵と対になって、暗号通信を行うときに用いられる。各計算機２−１〜２−４およびグループ管理サーバ５が保持する各秘密鍵Ａｐ，Ｂｐ，Ｃｐ，Ｄｐ，αｐに対応する公開鍵をそれぞれＡｕ，Ｂｕ，Ｃｕ，Ｄｕ，αｕとする。
【００５０】
各計算機２−１〜２−４は、各計算機の秘密鍵の他に、グループ管理サーバ５が保持する秘密鍵αｐに対応する公開鍵αｕも保持する。
【００５１】
認証サーバ４は、各計算機２−１〜２−４やグループ管理サーバ５を認証するためのＣＡ（Certificate Authority ）であり、各計算機２−１〜２−４およびグループ管理サーバ５の公開鍵Ａｕ，Ｂｕ，Ｃｕ，Ｄｕ，αｕを保持する。これらの公開鍵は、公開鍵証明書という形態でもよい。
【００５２】
グループ管理サーバ５は、秘密鍵αｐの他に、グループを形成する各計算機（すなわち、グループに属する各計算機）同士で送受信する通信データの暗号化および復号に用いる共有暗号鍵（グループ鍵）を保持する。図１では、共有暗号鍵ｇ１を示しているが、グループ管理サーバ５は、共有暗号鍵を更新して提供してもよい。共有暗号鍵の更新タイミングは特に限定されないが、例えば、グループに変更があった場合、すなわちグループに計算機が追加されて登録された場合やグループに属する計算機として登録されていた計算機がグループから除外された場合等に共有暗号鍵を更新すればよい。ここで、グループに属する計算機の登録とは、後述のステップＳ１の処理で示すように、グループに属する各計算機を、他の計算機と区別できる状態でグループ管理サーバが記憶することを意味する。以下の説明では、グループ管理サーバ５が計算機に共有暗号鍵ｇ１を提供する場合を例にして説明する。また、グループ管理サーバ５は、セキュリティ性能向上の観点から、共有暗号鍵を暗号化するためのＫＥＫ（Key Encryption Key：鍵暗号化鍵）を保持して、ＫＥＫを共有暗号鍵ｇ１の共有に利用してもよい。ただし、図１ではＫＥＫを省略している。さらに、グループ管理サーバ５は、各計算機の公開鍵Ａｕ，Ｂｕ，Ｃｕ，Ｄｕを取得して（例えば、ネットワーク１を介して認証サーバ４から受信して）、保持する。なお、各計算機２−１〜２−４がそれぞれ公開鍵を保持し、グループ管理サーバ５が各計算機２−１〜２−４からそれぞれ公開鍵を受信して保持してもよい。
【００５３】
また、グループ管理サーバ５は、各計算機を識別可能な識別情報を、各計算機毎に記憶する。以下、各計算機を識別可能な識別情報をピアＩＤと記す。例えば、各計算機の公開鍵証明書のＩＤをピアＩＤとしてもよい。また、例えば、各計算機の公開鍵と同一のデータをピアＩＤとしてもよい。また、各計算機に対して個別にネットワーク内におけるＩＤを割り当てている場合には、そのＩＤをピアＩＤとしてもよい。ピアＩＤは、各計算機を識別することができる情報であれば、特に限定されない。
【００５４】
図２は、グループ管理サーバの構成例を示すブロック図である。グループ管理サーバ５は、制御部３１と、記憶装置３２と、ネットワークインタフェース部３３と、入力部３４とを備える。制御部３１は、記憶装置３２が記憶する鍵提供プログラムに従って動作する。記憶装置３２は、鍵提供プログラムの他に、秘密鍵αｐ、共有暗号鍵（グループ鍵）ｇ１、各計算機２−１〜２−４のピアＩＤを記憶している。また、図示を省略しているが、記憶装置３２は、認証サーバ４（各計算機でもよい。）から受信した各計算機の公開鍵Ａｕ，Ｂｕ，Ｃｕ，Ｄｕを、ピアＩＤと対応付けて記憶する。ネットワークインタフェース部３３は、ネットワーク１とのインタフェースである。入力部３４は、例えば、キーボードやマウス等の入力デバイスであるが、情報を入力可能な装置であれば、入力部３４の態様は限定されない。入力部３４には、グループを形成する各計算機の情報が入力される。
【００５５】
また、後述の鍵情報を生成する態様として、グループに属する各計算機の鍵（公開鍵でも共通鍵でもよいが、本実施の形態においては公開鍵）で共有暗号鍵（グループ鍵）を暗号化する態様や、ＫＥＫで共有暗号鍵（グループ鍵）を暗号化する態様がある。ＫＥＫで共有暗号鍵を暗号化する場合には、記憶装置３２は、共有暗号鍵を暗号化するためのＫＥＫも記憶する。
【００５６】
グループ管理サーバ５の制御部３１は、各計算機の公開鍵を取得する。また、制御部３１は、共有暗号鍵ｇ１をグループに属する各計算機の鍵（公開鍵でも共通鍵でもよいが、本実施の形態においては公開鍵）で暗号化したデータ、もしくは共有暗号鍵ｇ１をＫＥＫで暗号化したデータと、ピアＩＤとを含む情報（以下、鍵情報と記す。）を生成する。鍵情報については、図５を参照して後述する。グループ管理サーバ５の制御部３１は、ネットワーク１に接続しているいずれか１台の計算機に鍵情報を送信すればよい。なお、この鍵情報を受信した計算機は、ネットワーク１に接続されている全計算機（グループに属しているか否かを問わない。）との間で鍵情報を共有する。
【００５７】
次に、計算機（情報処理装置）について説明する。ここでは、計算機２−１を例にして説明するが、他の計算機２−２〜２−４についても同様である。計算機２−１は、鍵情報共有部７−１と、鍵情報解析部８−１とを備える。
【００５８】
鍵情報共有部７−１は、グループ管理サーバ５から鍵情報を受信すると、その鍵情報を他の各計算機の鍵情報共有部７−２〜７−４との間で共有する。例えば、鍵情報共有部７−１は、グループ管理サーバ５から受信した鍵情報を、他の各計算機の鍵情報共有部７−２〜７−４に送信してもよい。この場合、鍵情報共有部７−１は、ブロードキャスト送信によって、他の各計算機の鍵情報共有部７−２〜７−４に鍵情報を送信してもよい。あるいは、鍵情報共有部が、グループ管理サーバ５から受信した鍵情報のコピーを作成してコピーを他の１台の計算機に送信し、その後、鍵情報（鍵情報のコピー）を受信した計算機の鍵情報共有部が鍵情報のコピーを作成してそのコピーを他の１台の計算機に送信するという動作を繰り返してもよい（すなわち、各計算機の鍵情報共有部がバケツリレー的に鍵情報を転送して、各計算機が鍵情報を保持してもよい。）また、KaZaA 、Gnutellaなどのピアツーピアのファイル共有システムを利用して、鍵情報を他の各計算機の鍵情報共有部と共有してもよい。また、ＤＨＴ（Distributed Hash Table）によって鍵情報を他の各計算機の鍵情報共有部と共有してもよい。ここでは、鍵情報共有部７−１を例にして説明したが、他の計算機の鍵情報共有部７−２〜７−４についても同様である。
【００５９】
鍵情報解析部８−１は、鍵情報に基づいて、自装置（本例では、計算機２−１）がグループに属している計算機であるか否かを判定する。そして、自装置がグループに属している計算機であると判定した場合、鍵情報および自装置が保持している秘密鍵（本例では、秘密鍵Ａｐ）を用いて、共有暗号鍵ｇ１を復号する。この復号処理については後述する。ここでは、鍵情報解析部８−１を例にして説明したが、他の計算機の鍵情報解析部８−２〜８−４についても同様である。
【００６０】
図３は、計算機（情報処理装置）の構成例を示すブロック図である。ここでは、計算機２−１を例にして説明するが、他の計算機についても同様である。計算機２−１は、制御部４１と、記憶装置４２と、ネットワークインタフェース部４３とを備える。制御部４１は、記憶装置４２が記憶する情報処理プログラムに従って、鍵情報共有部および鍵情報解析部としての動作を行う。すなわち、図１に示した鍵情報共有部および鍵情報解析部は、情報処理プログラムに従って動作する制御部４１によって実現される。また、記憶装置４２は、情報処理プログラムの他に、自装置の秘密鍵およびグループ管理サーバ５の公開鍵を記憶する。ネットワークインタフェース部４３は、ネットワーク１とのインタフェースである。
【００６１】
次に、動作について説明する。
図４は、グループ管理サーバから計算機に共有暗号鍵を提供するときの処理経過の例を示すフローチャートである。まず、グループ管理サーバ５は、グループ管理者からの入力に基づき、グループに属する各計算機を選定する（ステップＳ１）。換言すれば、グループに属する各計算機を、他の計算機と区別できる状態で記憶する。例えば、ステップＳ１では、グループ管理者から、入力部３４を介して、グループに属する各計算機のピアＩＤが入力される。そして、グループ管理サーバ５の制御部３１は、入力された各ピアＩＤを記憶装置３２に記憶させることにより、グループに属する各計算機を、他の計算機と区別できる状態にすればよい。あるいは、各ピアが自らの公開鍵証明書をグループ管理サーバに送付することによって申請し、その証明書内のピアＩＤを記憶することによって、他の計算機と区別できる状態にしてもよい。ここでは、ステップＳ１において、入力部３４を介して、グループに属する各計算機のピアＩＤが入力され、制御部３１がそのピアＩＤを記憶装置３２に記憶（登録）させるものとする。以下の説明において、グループに属する各計算機（グループを形成する各計算機）をグループメンバと記すことがある。
【００６２】
続いて、グループ管理サーバ５の制御部３１は、グループメンバの公開鍵を取得する（ステップＳ２）。例えば、ステップＳ１で、グループ管理者からの入力に基づき、計算機２−１〜２−４が同一グループのグループメンバであると選定したとする。このとき、グループ管理サーバ５の制御部３１は、認証サーバ４に各グループメンバの公開鍵Ａｕ，Ｂｕ，Ｃｕ，Ｄｕを要求し、認証サーバ４が予め記憶している公開鍵Ａｕ，Ｂｕ，Ｃｕ，Ｄｕを認証サーバ４から受信してもよい。あるいは、個々の計算機２−１〜２−４が予め自装置の公開鍵を記憶装置４２（図３参照。）記憶しておき、グループ管理サーバ５の制御部３１が各計算機２−１〜２−４に対して公開鍵を要求して、各計算機２−１〜２−４から公開鍵を受信してもよい。グループ管理サーバ５の制御部３１は、ステップＳ２において受信した各公開鍵Ａｕ，Ｂｕ，Ｃｕ，Ｄｕを、各計算機のピアＩＤと対応付けて記憶装置３２に記憶させる。
【００６３】
また、例えば、ステップＳ１において、計算機２−２，２−４の２台の計算機をグループメンバとして選定したならば、制御部３１は、ステップＳ２で、その２台の公開鍵をグループ管理サーバ５（あるいは計算機２−２，２−４）から取得すればよい。
【００６４】
次に、グループ管理サーバ５の制御部３１は、グループメンバのピアＩＤと、共有暗号鍵ｇ１を暗号化したデータとを含む鍵情報を生成する（ステップＳ３）。既に説明したように、鍵情報を生成する態様として、共有暗号鍵をグループに属する各計算機の鍵で暗号化する態様や、共有暗号鍵をＫＥＫで暗号化する態様がある。ここでは、共有暗号鍵をＫＥＫで暗号化する場合を例にして説明する。図５は、鍵情報の例を示す説明図である。図５は、計算機２−２，２−４の２台の計算機がグループメンバである場合の鍵情報の例を示している。また、ここでは、計算機２−１，２−４のピアＩＤをそれぞれ“2 ”、“4 ”とする。
【００６５】
また、図５は、鍵情報をＸＭＬ（extensible markup language）で記述した場合の例を示している。図５に示す例では、key タグの間に、計算機に提供（送信）した鍵情報のバージョンを示す各バージョン情報が記述される。個々のバージョン情報は、version タグの間に記述される。図５に示す鍵情報は、最初にグループが形成されたときのバージョン情報のみを示していて、そのバージョン情報に対して“1 ”という情報を付している（図５に示す２行目の記載を参照。）。以降、グループメンバに変更があった場合、すなわちグループに計算機が追加されてその計算機のピアＩＤが追加登録（追加記憶）された場合や、グループに属する計算機としてピアＩＤが登録（記憶）されていた計算機がグループから除外されてそのピアＩＤが削除された場合に、制御部３１は、共有暗号鍵を更新し、２番目以降のバージョン情報（<version=2>...</version>、<version=3>...</version>等のversion タグとともに記述される情報）を追記していく。各バージョン情報では、version タグとともに、バージョン情報の順番を示す数値（“1 ”、“2 ”、“3 ”、・・・）が記述される。制御部３１は、共有暗号鍵を更新したときには、更新した共有暗号鍵を暗号化したデータの記述を含むバージョン情報を追記する。ここでは、グループメンバ変更時に共有暗号鍵を更新する場合を示したが、既に説明したように、共有暗号鍵の更新タイミングは特に限定されない。
【００６６】
最初にステップＳ３に移行したときには、制御部３１は、図５に示すように、１番目のバージョン情報（<version=1>...</version>）のみを記述する。グループメンバ変更に伴い、再度ステップＳ１以降の動作を開始し、再度ステップＳ３に移行したときには、バージョン情報が追記される。
【００６７】
バージョン情報内において、enc_gkタグとともに記述される情報は、グループ管理サーバ５が計算機に提供する共有暗号鍵をＫＥＫで暗号化したデータである。制御部３１は、鍵情報を生成するとき、計算機に提供する共有暗号鍵ｇ１をＫＥＫで暗号化し、その暗号化したデータをバージョン情報内に、enc_gkタグとともに記述する。ただし、通常、共有暗号鍵をＫＥＫで暗号化した結果得られるデータは、文字コードとして表せない。そこで、制御部３１は、共有暗号鍵をＫＥＫで暗号化した結果得られるデータを、例えばBASE64などで変換（エンコード）し、その変換後のデータをenc_gkタグとともに記述する。
【００６８】
バージョン情報内において、kek タグとともに記述される情報は、各グループメンバのピアＩＤと、ＫＥＫを暗号化したデータとの組み合わせである。図５は、計算機２−２，２−４の２台の計算機がグループメンバである場合の鍵情報の例を示しているので、計算機２−２のピアＩＤ“2 ”と、ＫＥＫを暗号化したデータとの組み合わせが記述され、また、計算機２−４のピアＩＤ“4 ”と、ＫＥＫを暗号化したデータとの組み合わせが記述されている。また、ＫＥＫの暗号化は、ピアＩＤから特定される公開鍵（より具体的には、ピアＩＤから特定される計算機の公開鍵）によって行われる。すなわち、図５に例示したピアＩＤ“2 ”の右隣の記述は、ピアＩＤ“2 ”によって特定される計算機２−２の公開鍵ＢｕでＫＥＫを暗号化したデータを示している。また、図５に例示したピアＩＤ“4 ”の右隣の記述は、ピアＩＤ“4 ”によって特定される計算機２−４の公開鍵ＤｕでＫＥＫを暗号化したデータを示している。
【００６９】
制御部３１は、鍵情報を生成するとき、グループメンバのピアＩＤとしてステップＳ１で記憶したピアＩＤから特定される計算機の公開鍵を用いて、ＫＥＫを暗号化する。ただし、ＫＥＫを暗号化したデータも、通常、文字コードとして表せない。そこで、制御部３１は、ＫＥＫを公開鍵で暗号化した結果得られるデータを、例えばBASE64などで変換（エンコード）する。そして、その変換後のデータと、公開鍵の特定に用いたピアＩＤとの組み合わせを、kek タグとともに記述すればよい。制御部３１は、グループを形成する各計算機毎に同様の処理を行い、kek タグとともに、ピアＩＤとＫＥＫの変換後のデータとの組み合わせをそれぞれ記述していけばよい。
【００７０】
signタグの間には、key タグで記述された情報（<key> から</key>までの記述）に対する署名データが記述される。図５に示す例では、１行目から６行目までの記述に対する署名データが記述される。制御部３１は、例えば、以下のように署名データを作成すればよい。制御部３１は、key タグで記述された情報（<key> から</key>までの記述）に対して、例えば、ＳＨＡ−１等のハッシュ関数を用いてダイジェスト計算を行い、その結果得られるダイジェスト値（ハッシュ値）を、秘密鍵αｐによって暗号化する。この暗号化によって得られたデータを、例えばBASE64などで変換（エンコード）し、その変換結果が署名データとして、signタグの間に記述する。
【００７１】
ただし、上記の署名データの作成動作は一例であり、制御部３１は、他の方法で署名データを作成してもよい。例えば、署名方法として、ＸＭＬ署名の標準的な方法を適用してもよい。また、署名付与の際にＸＭＬ正規化を行ってもよい。
【００７２】
制御部３１は、以上のようにして、鍵情報を作成する（ステップＳ３）。
【００７３】
以上の説明では、共有暗号鍵をＫＥＫで暗号化して鍵情報を作成する場合について説明した。次に、鍵情報作成処理（ステップＳ３）において、グループに属する各計算機の鍵で共有暗号鍵を暗号化する場合について説明する。この場合、ＫＥＫは用いない。また、enk_gkタグおよび共有暗号鍵をＫＥＫで暗号化した情報（図５に示す例では３行目に相当する情報）は、鍵情報に含まれない。また、ピアＩＤと、そのピアＩＤによって特定される公開鍵で共有暗号鍵を暗号化したデータとの組み合わせが、kek タグとともに記述される。
【００７４】
グループに属する各計算機の鍵で共有暗号鍵を暗号化する場合、制御部３１は、グループメンバのピアＩＤとしてステップＳ１で記憶したピアＩＤから特定される計算機の公開鍵を用いて共有暗号鍵を暗号化し、その暗号化したデータと、公開鍵の特定に用いたピアＩＤとの組み合わせをkek タグとともに記述すればよい。なお、共有暗号鍵を公開鍵で暗号化したデータは、通常、文字コードとして表せない。そこで、制御部３１は、共有暗号鍵を公開鍵で暗号化したデータを、例えばBASE64などで変換（エンコード）する。そして、制御部３１は、その変換後のデータと、公開鍵の特定に用いたピアＩＤとの組み合わせをkek タグとともに記述すればよい。制御部３１は、グループを形成する各計算機毎に同様の処理を行い、kek タグとともに、ピアＩＤと共有暗号鍵の変換後のデータとの組合せをそれぞれ記述していけばよい。また、制御部３１は、enk_gkタグの情報は鍵情報に記述しない。その他の処理に関しては、共有暗号鍵をＫＥＫで暗号化する場合と同様である。
【００７５】
グループ管理サーバ５による鍵情報生成処理（ステップＳ３）の後、全計算機（ネットワーク１に接続されている全計算機であり、グループメンバであるか否かは問わない。）は、ステップＳ３で生成された鍵情報を共有する（ステップＳ４）。ステップＳ４では、まず、グループ管理サーバ５の制御部３１が、ステップＳ３で生成した鍵情報を、ネットワーク１に接続されている各計算機のうちのいずれか１台に送信する。この計算機は、グループを形成する計算機であっても、他の計算機であってもよい。このとき、グループを特定するようなIDとグループ鍵のバージョン番号を含んだものを鍵情報のファイルindexにして送信することによって、最新の鍵情報を検索できるようにする工夫をしておくことが望ましい。グループ管理サーバ５の制御部３１は、各計算機（図１に示す例では計算機２−１〜２−４）に対し、ネットワーク１を介して応答要求を送信し、応答があった計算機を現在ネットワーク１に接続されている計算機と判定すればよい。そして、ネットワーク１に接続されていると判定した計算機のうちのいずれか１台に鍵情報を送信すればよい。なお、ここで述べたネットワーク１に接続されている計算機の判定方法は例示であり、他の方法により、ネットワーク１に接続されている計算機を判定してもよい。グループ管理サーバ５から鍵情報を受信した１台の計算機は、全計算機（ネットワーク１に接続されている全計算機）との間で鍵情報を共有する。
【００７６】
例えば、グループ管理サーバ５から鍵情報を受信した計算機の鍵情報共有部（より具体的には、図３に示す制御部４１）が、ネットワーク１に接続されている各計算機（自装置は除く。また、グループメンバであるか否かは問わない。）に対して、鍵情報をブロードキャスト送信してもよい。また、例えば、グループ管理サーバ５から鍵情報を受信した計算機の鍵情報共有部が、受信した鍵情報のコピーを作成してそのコピーを他の１台の計算機に送信し、その後、鍵情報（鍵情報のコピー）を受信した計算機の鍵情報共有部が鍵情報のコピーを作成してそのコピーを他の１台の計算機に送信するという動作を繰り返してもよい。すなわち、ネットワーク１に接続されている各計算機（グループメンバであるか否かは問わない。）がバケツリレー的に鍵情報を転送して、各計算機が鍵情報を保持してもよい。また、例えば、KaZaA 、Gnutellaなどのファイル共有システムを利用して、鍵情報を他の各計算機の鍵情報共有部と共有してもよい。このようなファイル共有システムを利用する場合、全ピアはネットワーク接続時、もしくは特定のグループにアクセス制御された暗号化データ作成時または取得時に、新規もしくは更新された鍵情報の有無を確認する。そして、検索の結果、更新されたまたは新規に作成された鍵情報をすべてダウンロードする。また、ＤＨＴ（Distributed Hash Table）によって鍵情報を他の各計算機の鍵情報共有部と共有してもよい。ＤＨＴを利用する場合、全ピアはネットワーク接続時、もしくは特定のグループにアクセス制御された暗号化データ作成時または取得時に、上記鍵情報のファイルindexのハッシュ値に対応するデータが存在するかどうか確認することによって、新規もしくは更新された鍵情報の有無を確認する。そして、検索の結果、更新されたまたは新規に作成された鍵情報をすべてダウンロードする。
【００７７】
ステップＳ４の後、ファイルを共有した各計算機の鍵情報解析部（より具体的には図３に示す制御部４１）は、それぞれ鍵情報の署名を検証する（ステップＳ５）。すなわち、鍵情報が、ステップＳ３においてグループ管理サーバ５によって生成されたときの状態から改竄されていないことを検証する。例えば、グループ管理サーバ５が、上述のようにハッシュ関数を用いてkey タグで記述された情報からダイジェスト値を計算し、そのダイジェスト値を秘密鍵αｐで暗号化し、その暗号化データを変換（エンコード）したデータを署名データとしているものとする。また、この変換はBASE64による変換であるものとする。本例の場合、各計算機の鍵情報解析部は、鍵情報の署名データを変換（デコード）して、BASE64による変換前の状態に戻し、デコード後のデータを公開鍵αｕ（秘密鍵αｐと対になる公開鍵）で復号する。また、各計算機の鍵情報解析部は、グループ管理サーバ５が用いたハッシュ関数と同一のハッシュ関数を用いて、鍵情報に含まれるkey タグで記述された情報から、ダイジェスト値を計算する。この計算により得られたダイジェスト値と、公開鍵αｕで復号した結果が同一であれば、各計算機の鍵情報解析部は、鍵情報は改竄されていないと判定する。
【００７８】
続いて、各計算機の鍵情報解析部（より具体的には図３に示す制御部４１）は、自装置がグループメンバであるか否かを判定する（ステップＳ６）。ステップＳ６では、各計算機の鍵情報解析部は、鍵情報内でkek タグとともに記述されたピアＩＤの中に、自装置のピアＩＤが含まれていれば、自装置がグループメンバであると判定する。また、鍵情報内でkek タグとともに記述されたピアＩＤの中に、自装置のピアＩＤが含まれていなければ、自装置がグループメンバではないと判定する。ステップＳ６において、自装置がグループメンバであると判定した場合、ステップＳ７に移行する。
【００７９】
ステップＳ７では、鍵情報解析部は、共有暗号鍵の復号を行う。ステップＳ３においてＫＥＫで共有暗号鍵を暗号化した場合と、グループに属する各計算機の鍵で共有暗号鍵を暗号化した場合にそれぞれ分けてステップＳ７の処理について説明する。まず、ステップＳ３においてＫＥＫで共有暗号鍵を暗号化した場合のステップＳ７の処理について説明する。
【００８０】
ステップＳ７に移行した場合、鍵情報解析部は、自装置のピアＩＤと組み合わされたデータ（ここではＫＥＫの暗号化データ）を、自装置の秘密鍵で復号する。このとき、ピアＩＤと組み合わされたデータが、BASE64などで変換（エンコード）されているデータである場合には、そのデータをデコードしてBASE64などによる変換前の状態に戻す。そして、そのデータを、自装置の秘密鍵で復号する。この結果、鍵情報解析部は、ＫＥＫを得ることができる。続いて、鍵情報解析部は、そのＫＥＫを用いて、共有暗号鍵ｇ１の暗号化データ（図５に示す例では、enc_gkタグとともに記述されたデータ）を復号して、共有暗号鍵を得る。この場合にも、enc_gkタグとともに記述されたデータが、BASE64などで変換（エンコード）されているデータであるならば、そのデータをデコードしてBASE64などによる変換前の状態に戻して、そのデコード後のデータをＫＥＫにより復号して、共有暗号鍵を得る。
【００８１】
計算機２−２を例にして、ステップＳ７の動作を説明する。また、鍵情報に記述された共有暗号鍵やＫＥＫの暗号化データは、BASE64を用いてエンコードされているものとする。ステップＳ７に移行した場合、鍵情報解析部８−２は、自装置（計算機２−２）のピアＩＤ“2 ”と組み合わされたデータを変換（デコード）して、BASE64による変換前のデータに戻す。そして、そのデータを自装置の秘密鍵Ｂｐで復号してＫＥＫを得る。また、鍵情報解析部８−２は、共有暗号鍵の暗号化データを変換（デコード）して、BASE64による変換前のデータに戻す。そして、そのデータをＫＥＫで復号して共有暗号鍵を得る。個々では、計算機２−２を例にしたが、他の計算機の場合も同様である。
【００８２】
次に、ステップＳ３においてグループに属する各計算機の鍵で共有暗号鍵を暗号化した場合のステップＳ７の処理について説明する。ステップＳ７に移行した場合、鍵情報解析部は、自装置のピアＩＤと組み合わされたデータ（ここでは共有暗号鍵の暗号化データ）を、自装置の秘密鍵で復号する。このとき、ピアＩＤと組み合わされたデータが、BASE64などで変換（エンコード）されているデータである場合には、そのデータをデコードしてBASE64などによる変換前の状態に戻す。そして、そのデータを、自装置の秘密鍵で復号する。この結果、鍵情報解析部は、共有暗号鍵を得る。
【００８３】
ステップＳ７での復号処理によって暗号化データを共有暗号鍵に変換した後、処理を終了する。その後、グループメンバのうちネットワーク１に接続されている計算機同士で暗号化通信を行う場合には、共有暗号鍵で通信データを暗号化して送信し、また、受信したデータを共有暗号鍵で復号すればよい。
【００８４】
また、ステップＳ６において、自装置がグループメンバでないと判定した場合、処理を終了する。例えば、計算機２−１（ピアＩＤは“1 ”とする。）が、図５に例示する鍵情報を他の計算機と共有したとする。この場合、計算機２−１は、ステップＳ５の検証を行い鍵情報が改竄されていないことを確認したとしても、ステップＳ６では、自装置がグループメンバでないと判定する。図５に例示する鍵情報には、計算機２−２，２−４のピアＩＤのみが記述され、計算機２−１のピアＩＤは記述されていないからである。このように、自装置がグループメンバでないと判定した計算機は、ステップＳ７に移行せずに、処理を終了する。
【００８５】
上述の図４に例示する処理によって、グループに属するか否かによらず、ネットワーク１に接続されている全計算機は鍵情報を共有する。ネットワーク１に接続されている全計算機は鍵情報を共有した後、暗号通信システムは、ネットワーク１に接続されている少なくとも１台の計算機が鍵情報を保持可能な状態を維持する。例えば、計算機がネットワーク１との接続を断とする際には、その計算機は、ネットワーク１に接続されている他の計算機に鍵情報を送信してからネットワーク１との接続を断としてもよい。
【００８６】
そして、ネットワーク１に接続されていなかった計算機がネットワーク１に接続された場合、その計算機は、鍵情報を保持している計算機から鍵情報を受信する。例えば、ネットワーク１に接続されていなかった計算機がネットワークに接続されたときに、その計算機が、以前からネットワーク１に接続されていた計算機に鍵情報を要求し、鍵情報を保持している計算機がその要求に応じて鍵情報を送信してもよい。この結果、ネットワーク１に接続された計算機は鍵情報を受信することができ、ネットワーク１に接続される計算機が増えたときにも各計算機で鍵情報を共有することができる。また、ネットワーク１に接続されていなかった計算機がネットワーク１に接続された場合、その計算機は、例えばＤＨＴによって、既にネットワーク１に接続されていた計算機との間で鍵情報を共有してもよい。また、ネットワーク１に接続されて他の計算機と鍵情報を共有した計算機は、ステップＳ５（図４参照。）以降の処理を行い、自身がグループメンバであれば、共有暗号鍵を復号すればよい。
【００８７】
また、一部の計算機は、他の計算機とグループ管理サーバ５の中継を行ってもよい。この場合、中継を行う計算機（以下、中継装置と記す。）は、他の計算機と共有する鍵情報を記憶する。そして、中継装置ではない他の計算機（以下、非中継装置と記す。）が、ネットワーク１に接続されていない状態から、ネットワーク１に接続された状態になった場合、中継装置に鍵情報を要求してもよい。中継装置は、この要求に応じて鍵情報を非中継装置に送信し、非中継装置はその鍵情報を受信する。従って、ネットワーク１に接続されていない状態から、ネットワーク１に接続された状態になった個々の非中継装置は、グループ管理サーバ５との間で鍵情報を得るための通信を行わない。そして、中継装置が、いわばキャッシュとしての役割を果たす。個々の非中継装置は、グループ管理サーバ５との間で鍵情報を得るための通信を行わないので、中継装置のそのような通信の中継を行う必要がない。従って、中継装置の負荷を抑えることができる。なお、各計算機は、木構造のネットワークのノードとして配置され、複数の中継装置が配置されてもよい。
【００８８】
また、上記の説明では、鍵情報を生成する装置をグループ管理サーバ５として示した。常時電源がオンとされ、常時ネットワーク１に接続されるサーバではなく、計算機２−１〜２−４と同様の鍵情報共有部と鍵情報解析部とを有する計算機が、上述のグループ管理サーバ５と同様に鍵情報を生成して、グループ管理サーバ５と同様の処理を行ってもよい。このときは、図４のステップＳ３において、発行する共通暗号鍵ｇ１の一意性を保障するために、一意性が保証されているグループサーバ機能を有する計算機のピアIDと、この計算機が自ら生成したグループを区別するためのIDと、グループ鍵のバージョンと、この計算機が生成した乱数をseedとして鍵を生成する鍵生成器を利用して鍵を生成するとよい。例えば、この鍵生成器として、これらのデータを全てビット連結し、このデータに対してハッシュ計算をする処理などを利用することができる。さらに、このグループ管理サーバ機能を有する計算機（鍵情報を生成する計算機）の電源がオフとなっているか、鍵情報を生成する計算機がネットワーク１と接続されていないこともあるため、以下のような処理が必要である。まず、ネットワーク１に接続されていなかった計算機がネットワーク１に接続されたときには、その計算機が、ネットワーク１に接続されているいずれかの計算機に鍵情報を要求すればよい。そして、鍵情報の要求を受けた計算機は、共有している鍵情報を、要求に応じてそのまま送信すればよい。この結果、ネットワーク１に接続されていない状態からネットワーク１に接続された状態になった計算機は、鍵情報を受信する。その計算機は、鍵情報を受信したならば、上述のステップＳ５以降の処理を行い、自装置がグループメンバであると判定したならば（ステップＳ６のＹｅｓ）、共有暗号鍵の復号（ステップＳ７）を実行すればよい。また、自装置がグループメンバでないと判定したならば（ステップＳ６のＮｏ）、ステップＳ７に移行せずに処理を終了すればよい。
【００８９】
次に、本実施の形態の効果について説明する。
本実施の形態では、グループ管理サーバ５が鍵情報を、ネットワーク１に接続されている各計算機のうちのいずれか１台に送信し、その計算機が鍵情報を他の計算機と共有する。従って、グループを形成する計算機それぞれが非同期にネットワークに接続される場合であっても、アドホックに接続される各計算機が、共有暗号鍵（グループ鍵）を共有できる。
【００９０】
また、鍵情報には、ＫＥＫで暗号化した共有暗号鍵の暗号化データと、グループに属する計算機の公開鍵で暗号化したＫＥＫの暗号化データを含めている。従って、その公開鍵と対になる秘密鍵を有していない計算機は共有暗号鍵を復号することができない。従って、グループメンバ同士のみで共有暗号鍵を用いた安全な暗号化通信を行うことができる。ステップＳ３でＫＥＫを用いずに、グループに属する各計算機の公開鍵で共有暗号鍵を暗号化する場合では、鍵情報に、グループに属する計算機の公開鍵で暗号化した共有暗号鍵の暗号化データを含めている。この場合も、その公開鍵と対になる秘密鍵を有していない計算機は共有暗号鍵を復号できないので、安全な暗号化通信を実現できる。
【００９１】
また、グループ管理サーバ５が鍵情報を送信するときには、１台の計算機に鍵情報を送信し、その計算機が他の計算機と鍵情報を共有する。そして、グループ管理サーバ５は、鍵情報を送信した後には、処理を行う必要がない。よって、グループを形成する計算機の数が増加しても、グループ管理サーバ５の処理負荷はそれほど増加しない。すなわち、計算機数の増加によるグループ管理サーバの負荷の増加を抑えることができる。
【００９２】
また、グループ管理サーバ５が鍵情報を送信するときには、１台の計算機に鍵情報を送信するだけで、グループ管理サーバ５は各グループメンバと個々に通信を行う必要がない。よって、各計算機とグループ管理サーバ５との通信を中継する計算機を設ける場合であっても、その計算機はいわばキャッシュとしての役割を果たし、鍵情報を記憶し、個々の計算機から鍵情報の要求があると記憶した鍵情報を送信するだけなので、各計算機とグループ管理サーバ５との通信を中継する必要がない。よって、通信を中継する計算機を設ける場合であっても、その計算機の処理負荷の増加を抑えることができる。例えば、末端のセンサノードとサーバとの間の通信を中継するセンサノードに本発明を適用する場合であっても、通信を中継するセンサノードの処理負荷の増加を抑えることができる。
【００９３】
また、グループ管理サーバ５は、鍵情報に署名データを付加しているので、鍵情報が信頼できない計算機に配布されてしまったとしても、不正な改竄が行われたか否かを検証することができる。
【００９４】
第１の実施の形態において、鍵情報生成手段および鍵情報送信手段は、グループ管理サーバ５の制御部３１によって実現される。鍵情報共有手段および復号手段は、計算機の制御部４１によって実現される。また、公開鍵記憶手段は、グループ管理サーバ５の記憶装置３２によって実現される。秘密鍵記憶手段は、計算機の記憶装置４２によって実現される。
【００９５】
実施の形態２．
本発明の第２の実施の形態の構成は、第１の実施の形態と同様である。ただし、本実施の形態では、各グループには予めグループＩＤ（各グループを識別するための識別情報）が定められる。そして、グループに属する各計算機は、自身の属するグループのグループＩＤを記憶装置４２（図３参照。）に記憶する。
【００９６】
また、第２の実施の形態の暗号通信システムが備える各計算機は、第１の実施の形態と同様に、共有暗号鍵（グループ鍵）を共有する。各計算機が共有暗号鍵を共有する動作は第１の実施の形態と同様である。ただし、各計算機の鍵情報解析部（図３に示す制御部４１）は、ステップＳ６（図４参照。）において、自装置がグループメンバであると判定した場合、鍵情報（図４に示すステップＳ４で共有した鍵情報）とグループＩＤとを対応付けて記憶装置４２に記憶する。
【００９７】
なお、各グループ毎に計算機が鍵情報を共有する場合、グループ毎に、ステップＳ１（図４参照。）以降の処理を行えばよい。また、ステップＳ１では、グループ毎に、グループに属する計算機のピアＩＤを登録すればよい（図２に示す記憶装置３２に記憶させればよい）。
【００９８】
また、本実施の形態において、ネットワーク１に接続されていなかった計算機がネットワーク１に接続された場合、その計算機は、後述するステップＳ１３の動作で鍵情報を取得することにより、他の計算機と鍵情報を共有すればよい。
【００９９】
以下、第２の実施の形態の暗号通信システムが備える各計算機で行う暗号化通信について説明する。図６は、各計算機が暗号化通信を行う際に送受信する通信データのフォーマットの例を示す説明図である。図６に示すように、暗号化通信で送受信される通信データには、ｆｌａｇと、暗号化データと、グループＩＤと、鍵のバージョンと、Key_Locationとが含まれる。
【０１００】
ｆｌａｇは、通信データの属性を記載したデータである。ｆｌａｇには、通信データのヘッダとして、暗号化データのバイト数および開始位置、グループＩＤのバイト数および開始位置、鍵のバージョンのバイト数および開始位置、Key_Locationのバイト数および開始位置が含まれていてもよい。
【０１０１】
暗号化データは、通信内容（送信データ）を共有暗号鍵（グループ鍵）で暗号化したデータである。
【０１０２】
グループＩＤは、通信データを送受信する各計算機が属するグループのグループＩＤである。
【０１０３】
鍵のバージョンとは、鍵情報に含まれるバージョン情報であって、通信内容の暗号化に用いた共有暗号鍵が復号されたバージョン情報の番号である。図５に例示する鍵情報の場合、version タグとともに記述された数値が、鍵のバージョンとして通信データに含められる。
【０１０４】
Key_Locationは、計算機が鍵情報を取得するための情報である。例えば、鍵情報のＵＲＩ（Uniform Resource Indicator）をKey_Locationとしてもよい。この場合、例えば、グループ管理サーバ５が、鍵情報を生成するときに鍵情報にＵＲＩの情報を含め、また、グループ管理サーバ５自身が鍵情報を保持して、ＵＲＩによって鍵情報へのアクセスを可能となるようにしておけばよい。また、ＵＲＩがグループ管理サーバ５以外の装置を指定するＵＲＩであり、グループ管理サーバ５がその装置に鍵情報を送信して記憶させてもよい。あるいは、通信データを送信する計算機がＵＲＩを定め、その計算機がＵＲＩによって特定される装置に鍵情報を送信して記憶させてもよい。また、通信データを送受信する各計算機が、ＤＨＴ（Distributed Hash Table）のようなピアツーピアのファイル共有システムを利用して鍵情報を共有している場合には、鍵情報のハッシュ値をKey_Locationとして用いてもよい。
【０１０５】
計算機の制御部４１は、通信内容を共有暗号鍵で暗号化した暗号化データを作成した場合、図６に例示するようなフォーマットに従って、暗号化データに、ｆｌａｇ、グループＩＤ、鍵のバージョン、Key_Locationを付加して、通信データを生成し、その通信データを宛先の計算機に送信すればよい。
【０１０６】
次に、その通信データを受信した計算機の動作について説明する。
図７は、通信データを受信した計算機の処理経過の例を示すフローチャートである。既に説明したように、本実施の形態では、計算機は、ステップＳ６（図４参照。）において、自装置がグループメンバであると判定した場合、鍵情報とグループＩＤとを対応付けて記憶装置４２に記憶する。通信データを受信した計算機の制御部４１は、その計算機自身が属するグループＩＤに対応付けて鍵情報を記憶しているか否かを判定し、グループＩＤと対応づけた鍵情報を記憶していると判定した場合には、通信データに含まれる「鍵のバージョン（図６参照。）」によって特定されるバージョン情報から復号したグループ鍵（共有暗号鍵）を保持しているか否かを判定する（ステップＳ１１）。
【０１０７】
例えば、通信データを受信した計算機が、自身が属するグループＩＤと対応付けた鍵情報を記憶しているとする。また、通信データに含まれる「鍵のバージョン」が“1 ”であったとする。その場合、制御部４１は、“1 ”によって特定されるバージョン情報、すなわち鍵情報内における１番目のバージョン情報（<version=1> から</version>までの記述）から復号したグループ鍵を保持しているか否かを判定する。
【０１０８】
通信データに含まれる「鍵のバージョン」によって特定されるバージョン情報から復号したグループ鍵を保持していると判定した場合（ステップＳ１１のＹｅｓ）、制御部４１は、そのグループ鍵を用いて、受信したデータに含まれる暗号化データ（図６参照。）を復号し（ステップＳ１２）、処理を終了する。この結果、制御部４１は、暗号化されて送信された通信内容を得ることができる。
【０１０９】
また、ステップＳ１１で、計算機の制御部４１が、通信データに含まれる「鍵のバージョン」によって特定されるバージョン情報から復号したグループ鍵を保持していないと判定した場合や、その計算機自身が属するグループＩＤに対応付けて鍵情報を記憶していないと判定した場合（ステップＳ１１のＮｏ）、ステップＳ１３に移行する。ステップＳ１３では、計算機の制御部４１は、受信した通信データに含まれる「Key_Location」に基づいて、鍵情報を取得する（ステップＳ１３）。例えば、「Key_Location」としてＵＲＩが含まれている場合には、制御部４１は、そのＵＲＩによって特定される鍵情報にアクセスして、鍵情報を受信する。
【０１１０】
ステップＳ１３の後、制御部４１は、受信した通信データに含まれる「鍵のバージョン」を参照する（ステップＳ１４）。続いて、制御部４１は、ステップＳ１３で取得した鍵情報に含まれるバージョン情報のうち、ステップＳ１４で参照した「鍵のバージョン」によって特定されるバージョン情報に、自装置のピアＩＤが含まれているか否かを判定する（ステップＳ１５）。
【０１１１】
ステップＳ１５において自装置のピアＩＤが含まれていないと判定した場合（ステップＳ１５のＮｏ）、そのまま処理を終了する。
【０１１２】
ステップＳ１５において自装置のピアＩＤが含まれていると判定した場合（ステップＳ１５のＹｅｓ）、制御部４１は、鍵情報に含まれるバージョン情報のうち、ステップＳ１４で参照した「鍵のバージョン」によって特定されるバージョン情報から、共有暗号鍵（グループ鍵）を復号する（ステップＳ１６）。ステップＳ１６の処理は、ステップＳ７（図４参照。）と同様である。鍵情報作成時に共有暗号鍵がＫＥＫで暗号化される場合と、共有暗号鍵がグループに属する各計算機の鍵で暗号化される場合それぞれに分けてステップＳ１６の処理について説明する。
【０１１３】
鍵情報作成時に共有暗号鍵がＫＥＫで暗号化される場合には、制御部４１は、「鍵のバージョン」によって特定されるバージョン情報において、自装置のピアＩＤと組み合わされたデータ（ここではＫＥＫの暗号化データ）を、自装置の秘密鍵で復号する。このとき、ピアＩＤと組み合わされたデータが、BASE64などで変換（エンコード）されているデータである場合には、そのデータをデコードしてBASE64などによる変換前の状態に戻す。そして、そのデータを、自装置の秘密鍵で復号する。この結果、制御部４１は、ＫＥＫを得ることができる。続いて、制御部４１は、そのＫＥＫを用いて、共有暗号鍵の暗号化データ（図５に示す例では、enc_gkタグとともに記述されたデータ）を復号して、共有暗号鍵を得る。
【０１１４】
また、鍵情報作成時に共有暗号鍵がグループに属する各計算機の鍵で暗号化される場合には、制御部４１は、「鍵のバージョン」によって特定されるバージョン情報において、自装置のピアＩＤと組み合わされたデータ（ここでは共有暗号鍵の暗号化データ）を、自装置の秘密鍵で復号する。このとき、ピアＩＤと組み合わされたデータが、BASE64などで変換（エンコード）されているデータである場合には、そのデータをデコードしてBASE64などによる変換前の状態に戻す。そして、そのデータを、自装置の秘密鍵で復号する。この結果、制御部４１は、共有暗号鍵を得る。
【０１１５】
続いて、制御部４１は、その共有暗号鍵（グループ鍵）を用いて、受信したデータに含まれる暗号化データ（図６参照。）を復号し（ステップＳ１７）、処理を終了する。この結果、制御部４１は、暗号化されて送信された通信内容を得ることができる。
【０１１６】
次に、本実施の形態の効果について説明する。
本実施の形態では、グループＩＤ、鍵のバージョン、Key_Locationとともに暗号化データが送受信され、受信した計算機は、グループＩＤおよび鍵のバージョンを参照して、グループＩＤと対応づけた鍵情報を記憶していて、かつ、鍵のバージョンによって特定されるバージョン情報から復号したグループ鍵を保持しているか否かを判定する。そして、そのグループ鍵を保持していない場合には、Key_Locationを用いて鍵情報を取得し、通信データ内の鍵のバージョンに応じたグループ鍵を復号する。よって、グループを形成したり、ネットワークに接続されるグループメンバが変更される時点で、認証サーバ、グループ管理サーバ、グループに属する全ての計算機がネットワーク１に接続していなくても、グループ鍵の共有や変更を行うことができる。
【０１１７】
第２の実施の形態において、通信データ送信手段および判定手段は、計算機の制御部４２によって実現される。また、Key_Locationは、アクセス情報に相当する。
【０１１８】
実施の形態３．
図８は、本発明による暗号通信システムの第３の実施の形態を示すブロック図である。第１の実施形態と同様の構成部については、図１と同一の符号を付し、詳細な説明を省略する。第３の実施の形態では、暗号通信システムは、グループ管理サーバ５と、計算機２−１〜２−４とを備える。図８では４台の計算機を示しているが、計算機の台数は４台に限定されない。第３の実施の形態では、鍵情報を生成するときに使用する鍵の態様が第１の実施の形態と異なる。
【０１１９】
第１の実施の形態では、各計算機２−１〜２−４が、それぞれ自装置のみが保持するように定められた秘密鍵Ａｐ，Ｂｐ，Ｃｐ，Ｄｐを保持し、グループ管理サーバ５が各秘密鍵と対になる公開鍵Ａｕ，Ｂｕ，Ｃｕ，Ｄｕを使用して鍵情報を生成していた。また、第１の実施の形態では、グループ管理サーバ５は、グループ管理サーバ５のみが保持するように定められた秘密鍵αｐを保持し、各計算機はその秘密鍵αｐと対になる公開鍵αｕを保持していた（図１参照。）
【０１２０】
これに対し、本実施の形態では、秘密鍵と公開鍵の組み合わせを用いるのではなく、共通鍵を用いる。計算機２−１は、計算機２−１の秘密鍵として秘密鍵（共通鍵）Ａを保持し、グループ管理サーバ５は、計算機２−１との間で秘密鍵（共通鍵）Ａを秘密に共有する。同様に、計算機２−２は、計算機２−２の秘密鍵として秘密鍵（共通鍵）Ｂを保持し、グループ管理サーバ５は、計算機２−２との間で秘密鍵（共通鍵）Ｂを秘密に共有する。計算機２−３は、計算機２−３の秘密鍵として秘密鍵（共通鍵）Ｃを保持し、グループ管理サーバ５は、計算機２−３との間で秘密鍵（共通鍵）Ｃを秘密に共有する。計算機２−４は、計算機２−４の秘密鍵として秘密鍵（共通鍵）Ｄを保持し、グループ管理サーバ５は、計算機２−４との間で秘密鍵（共通鍵）Ｄを秘密に共有する。すなわち、計算機２−１およびグループ管理サーバ５が秘密鍵（共通鍵）Ａを保持する。また、計算機２−２およびグループ管理サーバ５が秘密鍵（共通鍵）Ｂを保持する。また、計算機２−３およびグループ管理サーバ５が秘密鍵（共通鍵）Ｃを保持する。また、計算機２−４およびグループ管理サーバ５が秘密鍵（共通鍵）Ｄを保持する。
【０１２１】
また、グループ管理サーバ５は、グループ管理サーバ５の秘密鍵として秘密鍵（共通鍵）αを保持し、各計算機２−１〜２−４は、グループ管理サーバ５との間で秘密鍵（共通鍵）αを秘密に共有する。すなわち、グループ管理サーバ５および各計算機２−１〜２−４が秘密鍵（共通鍵）αを保持する。
【０１２２】
また、グループ管理サーバ５は、第１の実施の形態と同様に、共有暗号鍵ｇ１を保持する。また、鍵情報を作成するときにＫＥＫで共有暗号鍵を暗号化する場合には、グループ管理サーバ５は、ＫＥＫも保持する。
【０１２３】
本実施の形態では、グループ管理サーバ５は、個々の計算機２−１〜２−４と秘密鍵（共通鍵）を事前に秘密に共有することを前提とする。このように共通鍵を予め秘密に共有する態様として、例えば、グループ管理サーバの管理主体（例えばＣＡなどの組織。人であってもよい。）が、秘密に共有する共通鍵を生成し、耐タンパ性を有するメモリ（例えばＩＣカードなど。）にその共通鍵を格納し、計算機を管理する主体（人）にそのメモリを送付（例えば郵送など。）し、メモリを受け取った者が計算機に直接組み込む等の態様がある。ここに示した態様は一例であり、他の態様によって、共通鍵を予め秘密に共有してもよい。共通鍵を予め秘密に共有するので、ネットワーク１を介して他の装置から共通鍵Ａ，Ｂ，Ｃ，Ｄを受信することは行わない。本実施の形態では、ステップＳ１（図４参照。）において、例えば、予め記憶されている秘密鍵（共通鍵）毎に、グループ管理者から入力部３４を介して、その共通鍵に対応する計算機のピアＩＤが入力される。制御部３１は、予め記憶している共通鍵と対応付けて、入力されたピアＩＤを記憶装置３２に記憶（登録）させればよい。そして、その処理の終了後、ステップＳ２を行わずに、ステップＳ３以降の処理を行えばよい。
【０１２４】
また、本実施の形態で、鍵情報を生成する場合には、公開鍵ではなく共通鍵を用いて鍵情報を生成する。既に説明したように、鍵情報を生成する態様として、共有暗号鍵をグループに属する各計算機の鍵で暗号化する態様や、共有暗号鍵をＫＥＫで暗号化する態様がある。この二つの態様それぞれについて説明する。
【０１２５】
本実施の形態では、共有暗号鍵をＫＥＫで暗号化して鍵情報を作成する場合、ステップＳ３で、グループ管理サーバ５の制御部３１は、ＫＥＫを暗号化しピアＩＤと組み合わせてkek タグとともに記述する際、ＫＥＫの暗号化に共通鍵を用いる。また、署名データを生成するときには、各計算機との間で秘密に共有している共通鍵αを用いる。ステップＳ３のその他の点に関しては、第１の実施の形態において共有暗号鍵をＫＥＫで暗号化する場合と同様である。
【０１２６】
例えば、グループを形成する計算機として、ステップＳ１で計算機２−２，２−３が選定されたとする。そして、計算機２−２，２−３のピアＩＤがそれぞれ“2 ”，“4 ”であるとする。グループ管理サーバ５の制御部３１は、ステップＳ３において、図５に例示する鍵情報と同様の鍵情報を生成する場合、第１の実施の形態と同様に、共有暗号鍵ｇ１をＫＥＫで暗号化し、暗号化したデータをBASE64などで変換し、その変換結果をenc_gkタグとともに記述する。また、制御部３１は、ピアＩＤ“2 ”によって特定される計算機２−２の秘密鍵（共通鍵）Ｂを用いてＫＥＫを暗号化する。そして、その暗号化したデータをBASE64などで変換し、変換結果をピアＩＤ“2 ”と組み合わせて記述する。同様に、制御部３１は、ピアＩＤ“4 ”によって特定される計算機２−４の秘密鍵（共通鍵）Ｄを用いてＫＥＫを暗号化する。そして、その暗号化したデータをBASE64などで変換し、変換結果をピアＩＤ“4 ”と組み合わせて記述する。これらの記述は、kek タグとあわせて記述される。また、制御部３１は、key タグで記述された情報（<key> から</key>までの記述）に対して、第１の実施の形態と同様にダイジェスト計算を行い、その結果得られるダイジェスト値を秘密鍵（共通鍵）αで暗号化する。この暗号化によって得られたデータを、例えばBASE64などで変換し、署名データとして、signタグの間に記述すればよい。
【０１２７】
また、本実施の形態では、グループに属する各計算機の鍵で共有暗号鍵を暗号化する場合、ステップＳ３で、グループ管理サーバ５の制御部３１は、共有暗号鍵を暗号化してピアＩＤと組み合わせてkek タグとともに記述する際、グループに属する各計算機の秘密鍵（共通鍵）を用いて共有暗号鍵を暗号化する。また、署名データを生成するときには、各計算機との間で秘密に共有している共通鍵αを用いる。その他の点に関しては、第１の実施の形態においてグループに属する各計算機の鍵で共有暗号鍵を暗号化する場合と同様である。
【０１２８】
ステップＳ５（図４参照。）の検証処理では、各計算機の鍵情報解析部（より具体的には図３に示す制御部４１）は、鍵情報の署名データを変換（デコード）した後、デコード後のデータをグループ管理サーバ５の秘密鍵（共通鍵）αで復号すればよい。ステップＳ５のその他の点に関しては、第１の実施の形態と同様である。
【０１２９】
鍵情報作成時に共有暗号鍵がＫＥＫで暗号化される場合と、共有暗号鍵がグループに属する各計算機の鍵で暗号化される場合それぞれに分けてステップＳ７の処理について説明する。
【０１３０】
鍵情報作成時に共有暗号鍵がＫＥＫで暗号化される場合には、ステップＳ７（図４参照。）の復号処理では、計算機の鍵情報解析部（制御部４１）は、自装置のピアＩＤと組み合わされたデータ（ここではＫＥＫの暗号化データ）を復号するときに、自装置の秘密鍵（共通鍵）で復号する。ステップＳ７のその他の点に関しては、第１の実施の形態において共有暗号鍵をＫＥＫで暗号化する場合と同様である。例えば、計算機２−２の鍵情報解析部８−２が、自装置のピアＩＤ“2 ”と組み合わされたデータを復号する場合、そのデータを変換（デコード）し、デコード後のデータを共通鍵Ｂで復号して、ＫＥＫを得ればよい。
【０１３１】
また、鍵情報作成時に共有暗号鍵がグループに属する各計算機の鍵で暗号化される場合には、ステップＳ７の復号処理で、計算機の鍵情報解析部（制御部４１）は、自装置のピアＩＤと組み合わされたデータ（ここでは共有暗号鍵の暗号化データ）を復号するときに、自装置の秘密鍵（共通鍵）で復号する。その他の点に関しては、第１の実施の形態において共有暗号鍵がグループに属する各計算機の鍵で共有暗号鍵を暗号化する場合と同様である。
【０１３２】
また、ステップＳ４，Ｓ６の処理は、第１の実施の形態と同様である。
【０１３３】
また、グループメンバのうちネットワーク１に接続されている計算機同士で暗号化通信を行う場合には、共有暗号鍵で通信データを暗号化して送信し、また、受信したデータを共有暗号鍵で復号すればよい。例えば、第２の実施の形態と同様に通信データを送受信する。
【０１３４】
第３の実施の形態では、第１の実施の形態と同様の効果が得られる。さらに、第３の実施の形態では、秘密鍵と公開鍵の組み合わせを用いるのではなく、グループ管理サーバ５と計算機とがそれぞれ共通鍵を保持し、共通鍵によってＫＥＫの暗号化や復号を行う。そのため、グループ管理サーバ５や各計算機の処理能力は、第１の実施の形態よりも低くてよい。その結果、例えば、処理能力の低いセンサネットワークであっても、本実施の形態の暗号通信システムを適用することができる。
【０１３５】
第３の実施の形態において、鍵情報生成手段および鍵情報送信手段は、グループ管理サーバ５の制御部３１によって実現される。鍵情報共有手段および復号手段は、計算機の制御部４１によって実現される。共通鍵記憶手段は、グループ管理サーバ５の記憶装置３２によって実現される。自装置共通鍵記憶手段は、計算機の記憶装置４２によって実現される。
【０１３６】
実施の形態４．
図９は、本発明による暗号通信システムの第４の実施の形態を示すブロック図である。第１の実施形態と同様の構成部については、図１と同一の符号を付し、詳細な説明を省略する。第４の実施の形態では、暗号通信システムは、グループ管理サーバ５と、計算機２−１〜２−４とを備える。図８では４台の計算機を示しているが、計算機の台数は４台に限定されない。本実施の形態では、暗号通信システムに、ブロードキャストエンクリプション（Broadcast Encryption）を適用する。
【０１３７】
ここでは、各装置が以下のように共通鍵を保持している場合を例にして説明する。計算機２−１は、計算機２−１の秘密鍵として秘密鍵（共通鍵）Ｋ０，Ｋ１，Ｋ３を保持する。計算機２−２は、計算機２−２の秘密鍵として秘密鍵（共通鍵）Ｋ０，Ｋ１，Ｋ４を保持する。計算機２−３は、計算機２−３の秘密鍵として秘密鍵（共通鍵）Ｋ０，Ｋ２，Ｋ５を保持する。計算機２−４は、計算機２−４の秘密鍵として秘密鍵（共通鍵）Ｋ０，Ｋ２，Ｋ６を保持する。また、グループ管理サーバ５は、グループ管理サーバ５の秘密鍵として秘密鍵（共通鍵）αを保持する。
【０１３８】
さらに、グループ管理サーバ５は、計算機の秘密鍵Ｋ０〜Ｋ６を保持する。すなわち、グループ管理サーバ５および各計算機２−１〜２−４は、秘密鍵（共通鍵）Ｋ０を秘密に共有する。グループ管理サーバ５および計算機２−１，２−２は、秘密鍵（共通鍵）Ｋ１を秘密に共有する。グループ管理サーバ５および計算機２−３，２−４は、秘密鍵（共通鍵）Ｋ２を秘密に共有する。グループ管理サーバ５および計算機２−１は、秘密鍵（共通鍵）Ｋ３を秘密に共有する。グループ管理サーバ５および計算機２−２は、秘密鍵（共通鍵）Ｋ４を秘密に共有する。グループ管理サーバ５および計算機２−３は、秘密鍵（共通鍵）Ｋ５を秘密に共有する。グループ管理サーバ５および計算機２−４は、秘密鍵（共通鍵）Ｋ６を秘密に共有する。
【０１３９】
また、各計算機２−１〜２−４は、グループ管理サーバ５の秘密鍵αを保持する。すなわち、グループ管理サーバ５および各計算機２−１〜２−４は、秘密鍵（共通鍵）αを秘密に共有する。
【０１４０】
また、グループ管理サーバ５は、第１の実施の形態と同様に、共有暗号鍵ｇ１を保持する。また、鍵情報を作成するときにＫＥＫで共有暗号鍵を暗号化する場合には、グループ管理サーバ５は、ＫＥＫも保持する。
【０１４１】
第３の実施の形態と同様に、第４の実施の形態でも、グループ管理サーバ５は各計算機と秘密鍵（共通鍵）を事前に秘密に共有することを前提とする。このように共通鍵を予め秘密に共有する態様として、例えば、グループ管理サーバの管理主体（例えばＣＡなどの組織。人であってもよい。）が、秘密に共有する共通鍵を生成し、耐タンパ性を有するメモリ（例えばＩＣカードなど。）にその共通鍵を格納し、計算機を管理する主体（人）にそのメモリを送付（例えば郵送など。）し、メモリを受け取った者が計算機に直接組み込む等の態様がある。ここに示した態様は一例であり、他の態様によって、共通鍵を予め秘密に共有してもよい。共通鍵を予め秘密に共有するので、グループ管理サーバ５は、ネットワーク１を介して共通鍵を受信することは行わない。また、本実施の形態では、グループ管理サーバ５の記憶装置３２は、計算機の共通鍵（本例ではＫ０〜Ｋ６）の階層を示す木構造のデータを予め記憶する。この木構造のデータは、例えば、予め入力部３４を介して入力され、制御部３１が入力された木構造のデータを記憶装置３２に記憶させればよい。共通鍵の階層を示す木構造のデータは、各計算機２−１〜２−４が共有する共通鍵（本例ではＫ０）を根（ルート）とし、個々の計算機２−１〜２−４が他の計算機と重複せずに保持している共通鍵（本例ではＫ３，Ｋ４，Ｋ５，Ｋ６）を葉（リーフ）とするデータである。すなわち、共通鍵の階層とは、各計算機が共有する共通鍵を根とし、個々の計算機が他の計算機と重複せずに記憶している共通鍵を葉とする階層である。また、木構造のデータにおいて、根、各節、各葉には、それぞれを特定するための識別情報（以下、節点番号と記す。）が定められている。木構造のデータでは、各葉がどの計算機に対応するのかが定められている。
【０１４２】
また、根、葉、節の総称を節点と記すことにする。
【０１４３】
図１０は、共通鍵の階層を示す木構造のデータの例を示す説明図である。本例では、各計算機２−１〜２−４が共有する共通鍵Ｋ０が根となる。また、計算機２−１が保持して、他の計算機が保持していない共通鍵Ｋ３が葉となる。同様に、Ｋ４，Ｋ５，Ｋ６も葉となる。また、計算機２−１，２−２が保持して、計算機２−３，２−４が保持していない共通鍵Ｋ１は、根（Ｋ０）と、葉（Ｋ３，Ｋ４）との間の節となる。同様に、共通鍵Ｋ２は、根（Ｋ０）と、葉（Ｋ５，Ｋ６）との間の節となる。また、図１０に示すように、各根、各節、各葉には節点番号が定められている。本例では、Ｋ０〜Ｋ６の各節の節点番号が“０”〜“６”であるものとする。また、図１０に示すように、木構造のデータには、各葉Ｋ３，Ｋ４，Ｋ５，Ｋ６が、それぞれ計算機２−１，２−２，２−３，２−４に対応する葉であることを示す情報が含まれている。
【０１４４】
また、木構造のデータには、グループに属さない計算機が保持する共通鍵も記述される。例えば、計算機２−２，２−３，２−４がグループを形成するものとして、この３台の計算機が保持する各共通鍵Ｋ０〜Ｋ２およびＫ４〜Ｋ６が予めグループ管理サーバ５に記憶される場合であっても、木構造のデータには、グループに属さない計算機２−１が保持する共通鍵Ｋ３も記述される。
【０１４５】
また、本実施の形態では、各計算機２−１〜２−４は、自身が保持する共通鍵の節点番号と、その節点番号がどの共通鍵に対応する番号であるのかを示す情報を予め保持する。各計算機２−１〜２−４には、例えば、グループ管理者から、節点番号およびその節点番号がどの共通鍵に対応する番号であるのかを示す情報が入力され、その入力された情報を記憶装置４２（図３参照。）に記憶させればよい。例えば、共通鍵Ｋ０，Ｋ１，Ｋ３を保持する計算機２−１は、節点番号“０”，“１”，“３”を記憶する。同様に、計算機２−２は、節点番号“０”，“１”，“４”を記憶する。計算機２−３は、節点番号“０”，“２”，“５”を記憶する。計算機２−４は、節点番号“０”，“２”，“６”を記憶する。また、各計算機は、各節点番号が、どの共通鍵に対応する番号であるのかを示す情報も記憶する。
【０１４６】
以下の説明では、グループに属する計算機として計算機２−２，２−３，２−４が選定された場合を例に説明する。ステップＳ１では、グループに属する各計算機（本例では、計算機２−２，２−３，２−４）を示す情報が入力され、グループ管理サーバ５の制御部３１は、木構造のデータにおけるどの葉が、グループに属するそれぞれの計算機に対応する葉であるのかを特定する。本実施の形態では、ステップＳ１の後、ステップＳ２を行わずにステップＳ３に移行する。
【０１４７】
既に説明したように、鍵情報を生成する態様として、共有暗号鍵をグループに属する各計算機の鍵で暗号化する態様や、共有暗号鍵をＫＥＫで暗号化する態様がある。この二つの各態様での鍵情報作成処理（ステップＳ３）についてそれぞれ説明する。なお、本実施の形態では、鍵情報には、ピアＩＤの代わりに、節点の識別情報（本例では節点番号）が含まれる。
【０１４８】
本実施の形態では、共有暗号鍵をＫＥＫで暗号化して鍵情報を作成する場合、ステップＳ３で、グループ管理サーバ５の制御部３１は、グループメンバを包含する最も根に近い節点の共通鍵でＫＥＫを暗号化する。なお、「グループメンバを包含する最も根に近い節点」とは、「グループに属さない計算機が保持する共通鍵を除いた中で、最も根に近い節点」を意味する。また、ここで、節点とは、節に限らず、葉や根であってもよい。また、制御部３１は、そのような節点の共通鍵でＫＥＫを暗号化し、その暗号化データと、その節点の節点番号とを組み合わせて、kek タグとともに記述する。第１の実施の形態や第３の実施の形態では、ピアＩＤと暗号化したＫＥＫとの組み合わせをkek タグとともに記述していたが、本実施の形態では、節点番号とその節点番号の共通鍵で暗号化したＫＥＫとの組み合わせをkek タグとともに記述する点で、第１の実施の形態や第３の実施の形態とは異なる。また、署名データの生成態様は、第３の実施の形態と同様である。ステップＳ３のその他の点に関しては第１の実施の形態において共有暗号鍵をＫＥＫで暗号化する場合と同様である。
【０１４９】
図１１は、本例において生成される鍵情報の例を示す説明図である。本例では、計算機２−２，２−３，２−４がグループに属し、計算機２−１はグループに属さない。制御部３１は、木構造のデータを参照して、「グループメンバを包含する最も根に近い節点」、すなわち、「グループに属さない計算機が保持する共通鍵を除いた中で、最も根に近い節点」を判定する。図１０に示す木構造を参照すると、計算機２−２に関しては、グループに属さない計算機２−１が保持する共通鍵Ｋ０，Ｋ１，Ｋ３を除けば、最も根に近い節点はＫ４（節点番号“４”）となる。また、計算機２−３，２−４に関しては、グループに属さない計算機２−１が保持する共通鍵Ｋ０，Ｋ１，Ｋ３を除けば、最も根に近い節点はＫ２（節点番号“２”）となる。従って、制御部３１は、節点番号“２”に対応する共通鍵Ｋ２でＫＥＫを暗号化し、その暗号化したデータをBASE64などで変換し、変換結果を節点番号“２”と組み合わせて記述する（図１１に示す３行目の記載を参照。）。同様に、制御部３１は、節点番号“４”に対応する共通鍵Ｋ４でＫＥＫを暗号化し、その暗号化したデータをBASE64などで変換し、変換結果を節点番号“４”と組み合わせて記述する（図１１に示す３行目の記載を参照。）。これらの記述は、kek タグとあわせて記述される。その他の点（共通暗号鍵の暗号化や署名データの生成等）については、第３の実施の形態と同様であるので説明を省略する。
【０１５０】
また、本実施の形態では、グループに属する各計算機の鍵で共有暗号鍵を暗号化する場合、ステップＳ３で、グループ管理サーバ５の制御部３１は、グループメンバを包含する最も根に近い節点の共通鍵で共有暗号鍵を暗号化する。すなわち、制御部３１は、グループに属さない計算機が保持する共通鍵を除いた中で、最も根に近い節点の共通鍵を用いて、共有暗号鍵を暗号化する。そして、制御部３１は、その節点の節点番号と、共有暗号鍵を暗号化したデータとを組み合わせて、kek タグとともに記述する。制御部３１は、このような節点番号と共有暗号鍵を暗号化したデータとの組み合わせを、グループに属する各計算機毎に導出して、kek タグとともに記述する。また、署名データの生成態様は、第３の実施の形態と同様である。その他の点に関しては第１の実施の形態においてグループに属する各計算機の鍵で共有暗号鍵を暗号化する場合と同様である。
【０１５１】
ステップＳ４，Ｓ５の処理は、第３の実施の形態と同様である。
【０１５２】
ステップＳ６（図４参照。）の判定処理では、計算機の鍵情報解析部（制御部４１）は、自装置が予め記憶している節点番号と一致する節点番号がkek タグに記述されているか否かにより、自装置がグループメンバであるか否かを判定する。自装置が予め記憶している節点番号と一致する節点番号がkek タグに記述されている場合には、自装置がグループメンバであると判定する。また、自装置が予め記憶している節点番号と一致する節点番号がkek タグに記述されていない場合には、自装置がグループメンバではないと判定する。例えば、本例では、計算機２−１は、節点番号“０”，“１”，“３”を記憶する。計算機２−１の鍵情報解析部８−１は、図１１に例示する鍵情報を参照した場合、節点番号“０”，“１”，“３”のいずれもkek タグに記述されていないので、自装置がグループメンバではないと判定し（ステップＳ６のＮｏ）、処理を終了する。
【０１５３】
また、例えば、計算機２−２は、節点番号“０”，“１”，“４”を記憶する。計算機２−２の鍵情報解析部８−２は、図１１に例示する鍵情報を参照した場合、節点番号“４”が記述されているので、自装置がグループメンバであると判定し（ステップＳ６のＹｅｓ）、ステップＳ７に移行する。同様に、計算機２−３は、節点番号“０”，“２”，“５”を記憶する。計算機２−３の鍵情報解析部８−３は、図１１に例示する鍵情報を参照した場合、節点番号“２”が記述されているので、自装置がグループメンバであると判定し（ステップＳ６のＹｅｓ）、ステップＳ７に移行する。計算機２−４に関しても同様である。
【０１５４】
鍵情報作成時に共有暗号鍵がＫＥＫで暗号化される場合と、共有暗号鍵がグループに属する各計算機の鍵で暗号化される場合それぞれに分けてステップＳ７の処理について説明する。
【０１５５】
鍵情報作成時に共有暗号鍵がＫＥＫで暗号化される場合には、ステップＳ７（図４参照。）の復号処理で、計算機の鍵情報解析部（制御部４１）は、自装置が記憶している節点番号と組み合わされたデータ（ここではＫＥＫの暗号化データ）を復号するときに、予め記憶している情報を参照して、その節点番号に対応する共通鍵を特定し、その共通鍵でＫＥＫの暗号化データを復号する。例えば、計算機２−２の鍵情報解析部８−２は、ステップＳ７において、予め記憶している情報を参照して、自装置が記憶している節点番号“４”に対応する共通鍵Ｋ４を特定する。そして、その共通鍵Ｋ４を用いて、節点番号“４” と組み合わされたデータ（ＫＥＫの暗号化データ）を復号する。また、例えば、計算機２−３の鍵情報解析部８−３は、ステップＳ７において、予め記憶している情報を参照して、自装置が記憶している節点番号“２”に対応する共通鍵Ｋ２を特定する。そして、その共通鍵Ｋ２を用いて、節点番号“２” と組み合わされたデータ（ＫＥＫの暗号化データ）を復号する。計算機２−４に関しても同様である。
【０１５６】
また、鍵情報作成時に共有暗号鍵がグループに属する各計算機の鍵で暗号化される場合には、ステップＳ７の復号処理で、計算機の鍵情報解析部（制御部４１）は、自装置が記憶している節点番号と組み合わされたデータ（ここでは共有暗号鍵の暗号化データ）を復号するときに、予め記憶している情報を参照して、その節点番号に対応する共通鍵を特定し、その共通鍵で共有暗号鍵の暗号化データを復号する。この結果、共有暗号鍵が得られる。
【０１５７】
また、グループメンバのうちネットワーク１に接続されている計算機同士で暗号化通信を行う場合には、共有暗号鍵で通信データを暗号化して送信し、また、受信したデータを共有暗号鍵で復号すればよい。例えば、第２の実施の形態と同様に通信データを送受信する。
【０１５８】
次に、本実施の形態の効果について説明する。本実施の形態では、ブロードキャストエンクリプション（Broadcast Encryption）で利用する鍵束を共通鍵としてグループ管理サーバ５と各計算機とが共有する。そして、「グループメンバを包含する最も根に近い節点」、すなわち、「グループに属さない計算機が保持する共通鍵を除いた中で、最も根に近い節点」の共通鍵を用いて鍵情報を生成する。従って、非常に多くの計算機でグループを形成し、そのような多くの計算機でグループ鍵を共有する場合であっても、鍵情報の情報量を小さくすることができる。
【０１５９】
第４の実施の形態において、鍵情報生成手段および鍵情報送信手段は、グループ管理サーバ５の制御部３１によって実現される。鍵情報共有手段および復号手段は、計算機の制御部４１によって実現される。共通鍵記憶手段は、グループ管理サーバ５の記憶装置３２によって実現される。自装置共通鍵記憶手段は、計算機の記憶装置４２によって実現される。
【０１６０】
また、上記の鍵情報は例示であり、鍵情報に用いられるタグの名称などは、上記述の例に限定されない。また、鍵情報は、ＸＭＬ以外の言語で記述されてもよい。
【０１６１】
上記のような各実施の形態の暗号通信システムは、例えば、ピアツーピアのコンテンツ配信サービスであって、サービス管理者がサービスするピアを固定し、グループ鍵を有さないピアがコンテンツのダウンロードをできないようなコンテンツ配信サービスに適用される。
【０１６２】
また、上記のような各実施の形態の暗号通信システムは、例えば、サーバとノード間の秘匿通信や、ノード同士の秘匿通信を行うセンサネットワークにも適用される。
【０１６３】
実施の形態５．
図１３は、本発明による暗号通信システムの第５の実施の形態を示すブロック図である。第４の実施形態と同様の構成部については、図９と同一の符号を付し、詳細な説明を省略する。第５の実施の形態では、暗号通信システムは、グループ管理サーバ５と、計算機２−１〜２−５とを備える。図１３に示す計算機２−５は、他の計算機２−１〜２−４と同様の計算機である。図１３では５台の計算機を示しているが、計算機の台数は５台に限定されない。本実施の形態では、暗号通信システムに、ＬＫＨ（Logical Key Hierarchy）法を適用する。このＬＫＨ法は、ブロードキャストエンクリプション（Broadcast Encryption）において、グループのメンバの入れ替わり頻度が高い際に木構造の一部の節点鍵を変更する。これにより、グループ管理サーバがメンバの入れ替わり頻度が高いグループを管理する場合でも大規模な木構造を事前に生成する必要がない。なお、本実施の形態の説明において、木構造の節点に対応する鍵を節点鍵と記す場合がある。
【０１６４】
ここでは、各装置が以下のように共通鍵を保持している場合を例にして説明する。計算機２−１は、計算機２−１の秘密鍵として秘密鍵（共通鍵）Ｋ０，Ｋ１，Ｋ３を保持する。計算機２−２は、計算機２−２の秘密鍵として秘密鍵（共通鍵）Ｋ０，Ｋ１，Ｋ４を保持する。計算機２−３は、計算機２−３の秘密鍵として秘密鍵（共通鍵）Ｋ０，Ｋ２，Ｋ５を保持する。計算機２−４は、計算機２−４の秘密鍵として秘密鍵（共通鍵）Ｋ０，Ｋ２，Ｋ６を保持する。計算機２−５は、計算機２−５の秘密鍵として秘密鍵（共通鍵）Ｋ０’，Ｋ２’，Ｋ６’を保持する。また、グループ管理サーバ５は、グループ管理サーバ５の秘密鍵として秘密鍵（共通鍵）αを保持する。
【０１６５】
さらに、グループ管理サーバ５は、計算機の秘密鍵Ｋ０〜Ｋ６およびＫ０’，Ｋ２’，Ｋ６’を保持する。すなわち、グループ管理サーバ５および各計算機２−１〜２−４は、秘密鍵（共通鍵）Ｋ０を秘密に共有する。グループ管理サーバ５および計算機２−１，２−２は、秘密鍵（共通鍵）Ｋ１を秘密に共有する。グループ管理サーバ５および計算機２−３，２−４は、秘密鍵（共通鍵）Ｋ２を秘密に共有する。グループ管理サーバ５および計算機２−１は、秘密鍵（共通鍵）Ｋ３を秘密に共有する。グループ管理サーバ５および計算機２−２は、秘密鍵（共通鍵）Ｋ４を秘密に共有する。グループ管理サーバ５および計算機２−３は、秘密鍵（共通鍵）Ｋ５を秘密に共有する。グループ管理サーバ５および計算機２−４は、秘密鍵（共通鍵）Ｋ６を秘密に共有する。グループ管理サーバ５および計算機２−５は、秘密鍵（共通鍵）Ｋ０’，Ｋ２’，Ｋ６’を秘密に共有する。
【０１６６】
また、各計算機２−１〜２−５は、グループ管理サーバ５の秘密鍵αを保持する。すなわち、グループ管理サーバ５および各計算機２−１〜２−５は、秘密鍵（共通鍵）αを秘密に共有する。
【０１６７】
また、グループ管理サーバ５は、第４の実施の形態と同様に、共有暗号鍵ｇ１を保持する。また、鍵情報を作成するときにＫＥＫで共有暗号鍵を暗号化する場合には、グループ管理サーバ５は、ＫＥＫも保持する。
【０１６８】
第４の実施の形態と同様に、第５の実施の形態でも、グループ管理サーバ５は各計算機と秘密鍵（共通鍵）を事前に秘密に共有することを前提とする。このように共通鍵を予め秘密に共有する態様として、例えば、グループ管理サーバの管理主体（例えばＣＡなどの組織。人であってもよい。）が、秘密に共有する共通鍵を生成し、耐タンパ性を有するメモリ（例えばＩＣカードなど。）にその共通鍵を格納し、計算機を管理する主体（人）にそのメモリを送付（例えば郵送など。）し、メモリを受け取った者が計算機に直接組み込む等の態様がある。ここに示した態様は一例であり、他の態様によって、共通鍵を予め秘密に共有してもよい。共通鍵を予め秘密に共有するので、グループ管理サーバ５は、ネットワーク１を介して共通鍵を受信することは行わない。また、本実施の形態では、グループ管理サーバ５の記憶装置３２は、計算機の共通鍵（本例ではＫ０〜Ｋ６）の階層を示す木構造のデータを予め記憶する。この木構造のデータは、例えば、予め入力部３４を介して入力され、制御部３１が入力された木構造のデータを記憶装置３２に記憶させればよい。共通鍵の階層を示す木構造のデータは、各計算機２−１〜２−４が共有する共通鍵（本例ではＫ０）を根（ルート）とし、個々の計算機２−１〜２−４が他の計算機と重複せずに保持している共通鍵（本例ではＫ３，Ｋ４，Ｋ５，Ｋ６）を葉（リーフ）とするデータである。すなわち、共通鍵の階層とは、各計算機が共有する共通鍵を根とし、個々の計算機が他の計算機と重複せずに記憶している共通鍵を葉とする階層である。また、木構造のデータにおいて、根、各節、各葉には、それぞれを特定するための識別情報（以下、節点番号と記す。）が定められている。木構造のデータでは、各葉がどの計算機に対応するのかが定められている。
【０１６９】
また、根、葉、節の総称を節点と記すことにする。
【０１７０】
図１４は、共通鍵の階層を示す木構造のデータの例を示す説明図である。本例では、各計算機２−１〜２−４が共有する共通鍵Ｋ０が根となる。また、計算機２−１が保持して、他の計算機が保持していない共通鍵Ｋ３が葉となる。同様に、Ｋ４，Ｋ５，Ｋ６も葉となる。また、計算機２−１，２−２が保持して、計算機２−３，２−４が保持していない共通鍵Ｋ１は、根（Ｋ０）と、葉（Ｋ３，Ｋ４）との間の節となる。同様に、共通鍵Ｋ２は、根（Ｋ０）と、葉（Ｋ５，Ｋ６）との間の節となる。また、図１４に示すように、各根、各節、各葉には節点番号が定められている。本例では、Ｋ０〜Ｋ６の各節の節点番号が“０”〜“６”であるものとする。また、図１４に示すように、木構造のデータには、各葉Ｋ３，Ｋ４，Ｋ５，Ｋ６が、それぞれ計算機２−１，２−２，２−３，２−４に対応する葉であることを示す情報が含まれている。
【０１７１】
また、木構造のデータには、グループに属さない計算機が保持する共通鍵も記述される。例えば、計算機２−２，２−３，２−４がグループを形成するものとして、この３台の計算機が保持する各共通鍵Ｋ０〜Ｋ２およびＫ４〜Ｋ６が予めグループ管理サーバ５に記憶される場合であっても、木構造のデータには、グループに属さない計算機２−１が保持する共通鍵Ｋ３も記述される。
【０１７２】
ただし、以下の説明では、グループに属する計算機として以前計算機２−２，２−３，２−４が選定されており、その後計算機２−４を無効化して計算機２−５を新たに加える場合を例に説明する。従って、図１４に示すように、木構造における各節点Ｋ０，Ｋ２，Ｋ６は、計算機２−５が保持する鍵を示す節点Ｋ０’，Ｋ２’，Ｋ６’に置き換えられる。また、葉Ｋ６が計算機２−４に対応する葉であることを示す情報は、葉Ｋ６’が計算機２−５に対応する葉であることを示す情報に置き換えられる。なお、節点が置き換えられても、節点番号は変わらない。
【０１７３】
また、本実施の形態では、各計算機２−１〜２−５は、自身が保持する共通鍵の節点番号と、その節点番号がどの共通鍵に対応する番号であるのかを示す情報を予め保持する。各計算機２−１〜２−５には、例えば、グループ管理者から、節点番号およびその節点番号がどの共通鍵に対応する番号であるのかを示す情報が入力され、その入力された情報を記憶装置４２（図３参照。）に記憶させればよい。例えば、共通鍵Ｋ０，Ｋ１，Ｋ３を保持する計算機２−１は、節点番号“０”，“１”，“３”を記憶する。同様に、計算機２−２は、節点番号“０”，“１”，“４”を記憶する。計算機２−３は、節点番号“０”，“２”，“５”を記憶する。計算機２−４は、節点番号“０”，“２”，“６”を記憶する。計算機２−５は、節点番号“０”，“２”，“６”を記憶する。本例では、後計算機２−４を無効化して計算機２−５を新たに加える。従って、計算機２−５は、節点番号“０”，“２”，“６”を記憶する。また、各計算機は、各節点番号が、どの共通鍵に対応する番号であるのかを示す情報も記憶する。
【０１７４】
既に述べたように、ここでは、グループに属する計算機として以前計算機２−２，２−３，２−４が選定されており、その後計算機２−４を無効化して計算機２−５を新たに加える場合を例に説明する。ステップＳ１では、グループに属する各計算機（本例では、計算機２−２，２−３，２−５）を示す情報が入力され、グループ管理サーバ５の制御部３１は、木構造のデータにおけるどの葉が、グループに属するそれぞれの計算機に対応する葉であるのかを特定する。また、ステップＳ１では、グループ管理サーバ５には、無効化される計算機（本例では計算機２−４）の情報、および、その無効化される計算機に代わって新たに追加される計算機（本例では計算機２−５）の情報が入力される。グループ管理サーバ５の制御部３１は、入力された情報に基づき、当初の木構造のデータに含まれていて無効化される計算機の鍵を示す節点を、新たに追加される計算機が保持する鍵を示す節点に置き換える。また、制御部３１は、置き換える前の葉に対応する計算機（無効化される計算機）の情報を、置き換えた後の葉に対応する計算機（新たに追加される計算機）の情報に置き換える。例えば、制御部３１は、図１４に示すように、当初の木構造における節点Ｋ０，Ｋ２，Ｋ６（無効化される計算機２−４の鍵を示す節点）を、新たに追加される計算機２−５が保持する鍵を示す節点Ｋ０’，Ｋ２’，Ｋ６’に置き換える。また、制御部３１は、葉Ｋ６が計算機２−４に対応する葉であることを示す情報を、葉Ｋ６’が計算機２−５に対応する葉であることを示す情報に置き換える。ただし、制御部３１は、節点番号は変化させない。本実施の形態では、ステップＳ１の後、ステップＳ２を行わずにステップＳ３に移行する。
【０１７５】
既に説明したように、鍵情報を生成する態様として、共有暗号鍵をグループに属する各計算機の鍵で暗号化する態様や、共有暗号鍵をＫＥＫで暗号化する態様がある。この二つの各態様での鍵情報作成処理（ステップＳ３）についてそれぞれ説明する。なお、本実施の形態では、鍵情報には、ピアＩＤの代わりに、節点の識別情報（本例では節点番号）が含まれる。
【０１７６】
本実施の形態では、ステップＳ３で、まず、節点鍵が変更された後も木構造に属する計算機に対して新しい節点鍵を伝達するために、このような計算機が保有する有効な接点鍵で暗号化する。すなわち、ステップＳ３で、グループ管理サーバ５の制御部３１は、木構造のデータにおいて置き換えられた節点が示す鍵を、無効化されずに残った計算機に保持させることができるように、置き換えられた節点が示す鍵を、無効化されずに残った計算機が保持する節点鍵（または無効化されずに残った計算機が保持することになる鍵）で暗号化する。つぎに、節点鍵を別の節点鍵で暗号化した結果得られるデータを文字コードとして表すために、このデータを、例えばBASE64などで変換（エンコード）する。図１４に示す例では、グループ管理サーバ５の制御部３１は、まず、変更される節点鍵のうち、葉を除いた最も葉に近い節点鍵Ｋ２’は計算機２−３に保有されるべきものなので、Ｋ２’をＫ５（計算機２−３が保持する鍵）で暗号化し、BASE64等で変換する。つぎに、Ｋ２’のつぎに最も葉に近い節点鍵Ｋ０’は、無効化された計算機２−４を除くすべての計算機に保有されるべきものなので、Ｋ０’をＫ１（計算機２−１，２−２が保持する鍵）で暗号化し、BASE64等で変換したものと、Ｋ２’（計算機２−３が保持することになる鍵）で暗号化し、BASE64等で変換したものを別々に作成する。
【０１７７】
つぎに、共有暗号鍵をＫＥＫで暗号化して鍵情報を作成する場合、グループ管理サーバ５の制御部３１は、グループメンバを包含する最も根に近い節点の共通鍵でＫＥＫを暗号化する。なお、「グループメンバを包含する最も根に近い節点」とは、「グループに属さない計算機が保持する共通鍵を除いた中で、最も根に近い節点」を意味する。また、ここで、節点とは、節に限らず、葉や根であってもよい。また、制御部３１は、そのような節点の共通鍵でＫＥＫを暗号化し、その暗号化データと、その節点の節点番号とを組み合わせて、kek タグとともに記述する。第１の実施の形態や第３の実施の形態では、ピアＩＤと暗号化したＫＥＫとの組み合わせをkek タグとともに記述していたが、本実施の形態では、節点番号とその節点番号の共通鍵で暗号化したＫＥＫとの組み合わせをkek タグとともに記述する点で、第１の実施の形態や第３の実施の形態とは異なる。また、署名データの生成態様は、第３の実施の形態と同様である。ステップＳ３のその他の点に関しては第１の実施の形態において共有暗号鍵をＫＥＫで暗号化する場合と同様である。
【０１７８】
図１５は、本例において生成される鍵情報の例を示す説明図である。本例では、計算機２−２，２−３，２−５がグループに属し、計算機２−１，２−４はグループに属さない。制御部３１は、木構造のデータを参照して、「グループメンバを包含する最も根に近い節点」、すなわち、「グループに属さない計算機が保持する共通鍵を除いた中で、最も根に近い節点」を判定する。ここで、計算機が保持する鍵には、計算機が保持することが可能な鍵（計算機が保持することになる鍵）も含まれる。図１４に示す木構造を参照すると、計算機２−２に関しては、グループに属さない計算機２−１が保持することが可能な共通鍵Ｋ０’および計算機２−１が保持するＫ１，Ｋ３を除けば、最も根に近い節点はＫ４（節点番号“４”）となる。また、計算機２−３，２−５に関しては、グループに属さない計算機２−１が保持することが可能な共通鍵Ｋ０’および計算機２−１が保持するＫ１，Ｋ３を除けば、最も根に近い節点はＫ２’（節点番号“２”）となる。従って、制御部３１は、節点番号“２”に対応する新しい共通鍵Ｋ２’でＫＥＫを暗号化し、その暗号化したデータをBASE64などで変換し、変換結果を節点番号“２”と組み合わせて記述する（図１５に示す８行目の記載を参照。）。同様に、制御部３１は、節点番号“４”に対応する共通鍵Ｋ４でＫＥＫを暗号化し、その暗号化したデータをBASE64などで変換し、変換結果を節点番号“４”と組み合わせて記述する（図１５に示す８行目の記載を参照。）。これらの記述は、kek タグとあわせて記述される。つぎに、制御部３１は、節点鍵が変更された後も木構造に属する計算機に対して新しい節点鍵を伝達するために、上述の暗号化（すなわち、置き換えられた節点が示す鍵を、無効化されずに残った計算機が保持する節点鍵（または無効化されずに残った計算機が保持することになる鍵）で暗号化する処理）を行い、Base64で変換された情報をrevタグとともに記述する。revタグとともに記述される情報は、節点鍵が変更された節点番号と、変更された節点鍵を暗号化した節点鍵の節点番号と、その節点番号に対応する節点鍵で、変更された節点鍵を暗号化し、BASE64等で変換したデータとの組み合わせである。図１５に例示する“2:5:42af”は、節点番号２の節点鍵Ｋ２が変更され、その新しい節点鍵Ｋ２’が節点番号５の節点鍵Ｋ５により暗号化されていることを示していて、“42af”はＫ２’をＫ５で暗号化したデータをBASE64等で変換したものであることを示している。同様に、図１５に例示する“0:2:ef3f”は、節点番号０の節点鍵Ｋ０が変更され、その新しい節点鍵Ｋ０’が節点番号２の節点鍵Ｋ２’により暗号化されていることを示していて、“ef3f”はＫ０’をＫ２’で暗号化したデータをBASE64等で変換したものであることを示している。同様に、図１５に例示する“0:1:abcd”は、節点番号０の節点鍵Ｋ０が変更され、その新しい節点鍵Ｋ０’が節点番号１の節点鍵Ｋ１により暗号化されていることを示していて、“abcd”はＫ０’をＫ１で暗号化したデータをBASE64等で変換したものであることを示している。制御部３１は、このようなrevタグの記述を行う。その他の点（共通暗号鍵の暗号化や署名データの生成等）については、第３の実施の形態と同様であるので説明を省��する。
【０１７９】
図１６、図１７は、本例において生成される鍵情報の変形例を示す説明図である。本例では、新しい節点鍵の情報を図１７に示したような別の鍵情報（以降、この鍵情報のことを節点鍵情報と呼ぶ）として管理した上で、図１６に示すようにrevタグには節点鍵情報を取得するためのKey_Locationが記載される。このKey_Locationは、第２の実施の形態で説明したKey_Locationと同様、計算機が節点鍵情報を取得するための情報である。例えば、節点鍵情報のＵＲＩ（Uniform Resource Indicator）をKey_Locationとしてもよい。この場合、例えば、グループ管理サーバ５が、節点鍵情報を生成するときに節点鍵情報にＵＲＩの情報を含め、また、グループ管理サーバ５自身が節点鍵情報を保持して、ＵＲＩによって節点鍵情報へのアクセスを可能となるようにしておけばよい。また、ＵＲＩがグループ管理サーバ５以外の装置を指定するＵＲＩであり、グループ管理サーバ５がその装置に節点鍵情報を送信して記憶させてもよい。あるいは、通信データを送信する計算機がＵＲＩを定め、その計算機がＵＲＩによって特定される装置に節点鍵情報を送信して記憶させてもよい。また、通信データを送受信する各計算機が、ＤＨＴ（Distributed Hash Table）のようなピアツーピアのファイル共有システムを利用して節点鍵情報を共有している場合には、節点鍵情報のハッシュ値をKey_Locationとして用いてもよい。図１７に記載したrevタグとともに記述される情報は、図１５を参照して説明した場合と同様、節点鍵が変更された節点番号と、変更された節点鍵を暗号化した節点鍵の節点番号と、その節点番号に対応する節点鍵で、変更された節点鍵を暗号化し、BASE64等で変換したデータとの組み合わせである。図１７に例示する“2:5:42af”は、節点番号２の節点鍵Ｋ２が変更され、その新しい節点鍵Ｋ２’が節点番号５の節点鍵Ｋ５により暗号化されていることを示していて、“42af”はＫ２’をＫ５で暗号化したデータをBASE64等で変換したものであることを示している。同様に、図１７に例示する“0:2:ef3f”は、節点番号０の節点鍵Ｋ０が変更され、その新しい節点鍵Ｋ０’が節点番号２の節点鍵Ｋ２’により暗号化されていることを示していて、“ef3f”はＫ０’をＫ２’で暗号化したデータをBASE64等で変換したものであることを示している。同様に、図１７に例示する“0:1:abcd”は、節点番号０の節点鍵Ｋ０が変更され、その新しい節点鍵Ｋ０’が節点番号１の節点鍵Ｋ１により暗号化されていることを示していて、“abcd”はＫ０’をＫ１で暗号化したデータをBASE64等で変換したものであることを示している。その他の点（共通暗号鍵の暗号化や署名データの生成等）については、第３の実施の形態と同様であるので説明を省略する。
【０１８０】
また、本実施の形態では、グループに属する各計算機の鍵で共有暗号鍵を暗号化する場合、ステップＳ３で、グループ管理サーバ５の制御部３１は、グループメンバを包含する最も根に近い節点の共通鍵で共有暗号鍵を暗号化する。すなわち、制御部３１は、グループに属さない計算機が保持する共通鍵を除いた中で、最も根に近い節点の共通鍵を用いて、共有暗号鍵を暗号化する。なお、この節点の共通鍵には新しい節点鍵を利用する。そして、制御部３１は、その節点の節点番号と、共有暗号鍵を暗号化したデータとを組み合わせて、kek タグとともに記述する。制御部３１は、このような節点番号と共有暗号鍵を暗号化したデータとの組み合わせを、グループに属する各計算機毎に導出して、kek タグとともに記述する。最後に、節点鍵が変更された後も木構造に属する計算機に対して新しい節点鍵を伝達するために、上述の暗号化（すなわち、置き換えられた節点が示す鍵を、無効化されずに残った計算機が保持する節点鍵（または無効化されずに残った計算機が保持することになる鍵）で暗号化する処理）を行い、Base64で変換された情報をrevタグとともに記述するか、図１７に例示するような新しい節点鍵情報を生成し、その節点鍵情報の場所をrevタグとともに記述する。また、署名データの生成態様は、第３の実施の形態と同様である。その他の点に関しては第１の実施の形態においてグループに属する各計算機の鍵で共有暗号鍵を暗号化する場合と同様である。
【０１８１】
ステップＳ４，Ｓ５の処理は、第３の実施の形態と同様である。
【０１８２】
ステップＳ６（図４参照。）の判定処理では、計算機の鍵情報解析部（制御部４１）は、自装置が予め記憶している節点番号と一致する節点番号がkek タグに記述されているか否かにより、自装置がグループメンバであるか否かを判定する。自装置が予め記憶している節点番号と一致する節点番号がkek タグに記述されている場合には、自装置がグループメンバであると判定する。また、自装置が予め記憶している節点番号と一致する節点番号がkek タグに記述されていない場合には、自装置がグループメンバではないと判定する。例えば、本例では、計算機２−１は、節点番号“０”，“１”，“３”を記憶する。計算機２−１の鍵情報解析部８−１は、図１５に例示する鍵情報を参照した場合、節点番号“０”，“１”，“３”のいずれもkek タグに記述されていないので、自装置がグループメンバではないと判定し（ステップＳ６のＮｏ）、処理を終了する。
【０１８３】
また、例えば、計算機２−２は、節点番号“０”，“１”，“４”を記憶する。計算機２−２の鍵情報解析部８−２は、図１５に例示する鍵情報を参照した場合、節点番号“４”が記述されているので、自装置がグループメンバであると判定し（ステップＳ６のＹｅｓ）、ステップＳ７に移行する。同様に、計算機２−３は、節点番号“０”，“２”，“５”を記憶する。計算機２−３の鍵情報解析部８−３は、図１５に例示する鍵情報を参照した場合、節点番号“２”が記述されているので、自装置がグループメンバであると判定し（ステップＳ６のＹｅｓ）、ステップＳ７に移行する。計算機２−５に関しても同様である。
【０１８４】
鍵情報作成時に共有暗号鍵がＫＥＫで暗号化される場合と、共有暗号鍵がグループに属する各計算機の鍵で暗号化される場合それぞれに分けてステップＳ７の処理について説明する。
【０１８５】
鍵情報作成時に共有暗号鍵がＫＥＫで暗号化される場合には、計算機の鍵情報解析部（制御部４１）は、ステップＳ７（図４参照。）の復号処理で、まずrevタグを参照し、図１６に例示するようなフォーマットだと先に節点鍵情報をダウンロードした上で、自分が保持する節点鍵が更新されてないか確認した上で、更新されている場合は、自分の保有する他の節点鍵を用いて新しい節点鍵を復号し、格納する。例えば、計算機２−３の鍵情報解析部（制御部４１）が、図１５に例示する鍵情報を共有化しているとする。この場合、計算機２−３の鍵情報解析部８−３は、“2:5:42af”という記述を参照して、自身が保持する節点鍵（節点番号２に対応するＫ２）が更新されたと判定し、“42af”をBASE64等で変換する。さらに、そのデータを節点番号５に対応する鍵Ｋ５（計算機２−３が保持している鍵）で復号し、その結果得られる鍵Ｋ２’を記憶装置に格納する。さらに、計算機２−３の鍵情報解析部８−３は、“0:2:ef3f”という記述を参照して、自身が保持する節点鍵（節点番号０に対応するＫ０）が更新されたと判定し、“0:2:ef3f” をBASE64等で変換する。さらに、そのデータを節点番号２に対応する鍵Ｋ２’で復号し、その結果得られる鍵Ｋ０’を記憶装置に格納する。ここでは、計算機２−３が鍵Ｋ２’を得て、さらに“0:2:ef3f”という記述を参照して鍵Ｋ０’を得る場合を説明した。計算機２−１，２−２は、“0:1:abcd”という記述を参照して、自身が保持する鍵Ｋ１を用いて、Ｋ０’を復号すればよい。また、自分の保有する節点鍵で新しい節点鍵を復号できない場合はその計算機は無効化端末であるため、処理を終了する。例えば、計算機２−４の鍵情報解析部（制御部４１）は、図１５に例示するrevタグの記述を参照して、暗号化された鍵を復号するための鍵を保持していないと判定し、処理を終了する。つぎに、計算機の鍵情報解析部（制御部４１）は、自装置が記憶している節点番号と組み合わされたデータ（ここではＫＥＫの暗号化データ）を復号するときに、予め記憶している情報を参照して、その節点番号に対応する共通鍵を特定し、その共通鍵でＫＥＫの暗号化データを復号する。例えば、計算機２−２の鍵情報解析部８−２は、ステップＳ７において、予め記憶している情報を参照して、自装置が記憶している節点番号“４”に対応する共通鍵Ｋ４を特定する。そして、その共通鍵Ｋ４を用いて、節点番号“４” と組み合わされたデータ（ＫＥＫの暗号化データ）を復号する。また、例えば、計算機２−５の鍵情報解析部８−５は、ステップＳ７において、予め記憶している情報を参照して、自装置が記憶している節点番号“２”に対応する共通鍵Ｋ２’を特定する。そして、その共通鍵Ｋ２’を用いて、節点番号“２” と組み合わされたデータ（ＫＥＫの暗号化データ）を復号する。計算機２−３に関しても同様である。
【０１８６】
また、鍵情報作成時に共有暗号鍵がグループに属する各計算機の鍵で暗号化される場合には、ステップＳ７の復号処理で、計算機の鍵情報解析部（制御部４１）は、自装置が記憶している節点番号と組み合わされたデータ（ここでは共有暗号鍵の暗号化データ）を復号するときに、予め記憶している情報を参照して、その節点番号に対応する共通鍵を特定し、その共通鍵で共有暗号鍵の暗号化データを復号する。この結果、共有暗号鍵が得られる。
【０１８７】
また、グループメンバのうちネットワーク１に接続されている計算機同士で暗号化通信を行う場合には、共有暗号鍵で通信データを暗号化して送信し、また、受信したデータを共有暗号鍵で復号すればよい。例えば、第２の実施の形態と同様に通信データを送受信する。
【０１８８】
次に、本実施の形態の効果について説明する。本実施の形態では、ＬＫＨ（Logical Key Hierarchy）法を利用して、グループのメンバの入れ替わり頻度が高い際に木構造の一部の節点鍵を変更する。これにより、ブロードキャストエンクリプション（Broadcast Encryption）で利用する木構造を構築するときに、グループメンバの入れ替わりを考慮しなくても、グループの規模のみ考慮して構築すればよいため、不必要に大規模な木構造を事前に生成する必要がない。
【０１８９】
第５の実施の形態において、鍵情報生成手段および鍵情報送信手段は、グループ管理サーバ５の制御部３１によって実現される。鍵情報共有手段および復号手段は、計算機の制御部４１によって実現される。共通鍵記憶手段は、グループ管理サーバ５の記憶装置３２によって実現される。自装置共通鍵記憶手段は、計算機の記憶装置４２によって実現される。
【０１９０】
また、上記の鍵情報は例示であり、鍵情報に用いられるタグの名称などは、上記述の例に限定されない。また、鍵情報は、ＸＭＬ以外の言語で記述されてもよい。
【０１９１】
上記のような各実施の形態の暗号通信システムは、例えば、ピアツーピアのコンテンツ配信サービスであって、サービス管理者がサービスするピアを固定し、グループ鍵を有さないピアがコンテンツのダウンロードをできないようなコンテンツ配信サービスに適用される。
【０１９２】
また、上記のような各実施の形態の暗号通信システムは、例えば、サーバとノード間の秘匿通信や、ノード同士の秘匿通信を行うセンサネットワークにも適用される。
【産業上の利用可能性】
【０１９３】
本発明は、情報処理装置間での暗号通信を行うピアツーピアネットワークでのファイル共有システムに適用可能である。また、特定のセンサノード群でのアクセス制御を実現するために、センサノードがグループ鍵を共有するセンサネットワークにも適用可能である。
【図面の簡単な説明】
【０１９４】
【図１】本発明による暗号通信システムの第１の実施の形態を示すブロック図である。
【図２】グループ管理サーバの構成例を示すブロック図である。
【図３】計算機（情報処理装置）の構成例を示すブロック図である。
【図４】グループ管理サーバから計算機に共有暗号鍵を提供するときの処理経過の例を示すフローチャートである。
【図５】鍵情報の例を示す説明図である。
【図６】通信データのフォーマットの例を示す説明図である。
【図７】通信データを受信した計算機の処理経過の例を示すフローチャートである。
【図８】本発明による暗号通信システムの第３の実施の形態を示すブロック図である。
【図９】本発明による暗号通信システムの第４の実施の形態を示すブロック図である。
【図１０】共通鍵の階層を示す木構造のデータの例を示す説明図である。
【図１１】鍵情報の例を示す説明図である。
【図１２】従来の暗号通信システムの構成を示す構成図である。
【図１３】本発明による暗号通信システムの第５の実施の形態を示すブロック図である。
【図１４】第５の実施の形態における共通鍵の階層を示す木構造のデータの例を示す説明図である。
【図１５】第５の実施の形態において生成される鍵情報の例を示す説明図である。
【図１６】第５の実施の形態において生成される鍵情報の他の例を示す説明図である。
【図１７】図１６に例示する鍵情報を用いる場合における節点鍵情報の例を示す説明図である。
【符号の説明】
【０１９５】
１  通信ネットワーク
２−１〜２−５  計算機
４  認証サーバ
５  グループ管理サーバ
７−１〜７−５  鍵情報共有部
８−１〜８−５  鍵情報解析部
【図１】
2007201522.tif 000003
【図２】
2007201522.tif 000004
【図３】
2007201522.tif 000005
【図４】
2007201522.tif 000006
【図５】
2007201522.tif 000007
【図６】
2007201522.tif 000008
【図７】
2007201522.tif 000009
【図８】
2007201522.tif 000010
【図９】
2007201522.tif 000011
【図１０】
2007201522.tif 000012
【図１１】
2007201522.tif 000013
【図１２】
2007201522.tif 000014
【図１３】
2007201522.tif 000015
【図１４】
2007201522.tif 000016
【図１５】
2007201522.tif 000017
【図１６】
2007201522.tif 000018
【図１７】
2007201522.tif 000019