分散認証システム、分散認証方法、及び分散認証プログラム
【課題】認証局の場所が判明して容易に攻撃されやすいというセキュリティリスクを抑制し、認証局への攻撃耐性を向上させることができる分散認証システムを提供する。
【解決手段】分散認証システムは、ひとつまたは複数のノードで構成される。分散認証システムに参加するノードのうち所定数台のノードが、分散認証システムを代表する代表ノードとなる。代表ノードは、互いに連携することによって、分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、分散認証システムに参加するノードの電子署名で用いる個人鍵と、分散認証システムに参加するノードの電子証明書とを発行する。
【解決手段】分散認証システムは、ひとつまたは複数のノードで構成される。分散認証システムに参加するノードのうち所定数台のノードが、分散認証システムを代表する代表ノードとなる。代表ノードは、互いに連携することによって、分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、分散認証システムに参加するノードの電子署名で用いる個人鍵と、分散認証システムに参加するノードの電子証明書とを発行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散認証システム、分散認証方法、及び分散認証プログラムに係り、特にメッセージに付された電子証明書の正当性を検証し、その電子証明書の公開鍵を用いて電子署名を復号して当該メッセージの正当性を検証する認証技術に関する。
【背景技術】
【0002】
インターネット上では、P2P(Peer to Peer)技術を用いたファイル共有ネットワークにより、テキストコンテンツだけでなく画像や音声、映像といった様々なコンテンツがユーザ間で直接やりとりされるようになってきた。
【0003】
しかし、ファイル共有ネットワークへの参加を完全に自由にしてしまうと不正ノードの参加や不正コンテンツ流通の原因になる。そこで、従来はファイル共有ネットワークに認証技術を適用することでこれを回避してきた。
【0004】
例えば、認証局を用いるものがある。これは、あるノードがファイル共有ネットワークに参加するために事前に認証局に電子証明書を発行してもらい、電子署名を用いてノード間で相互認証するものである。
【0005】
なお、本発明に関連する先行技術文献としては、以下のものがある。
【特許文献1】特開2004−159298号公報
【特許文献2】特開2004−171274号公報
【特許文献3】特開2004−254271号公報
【特許文献4】特開2006−101277号公報
【特許文献5】特開平11−015374号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、前述した従来の認証局を用いた技術では、認証局はネットワーク上の特定の場所に存在するため攻撃対象になりやすいという問題があった。その理由は、認証局は、あらゆる場所に存在するノードから接続可能にするためにネットワーク上の特定の場所に存在し、従って悪意のある攻撃者にも認証局の場所が判明してしまうため、容易に攻撃されてしまうというセキュリティリスクがあることによる。
【0007】
本発明の目的は、認証局の場所が判明して容易に攻撃されやすいというセキュリティリスクを抑制し、認証局への攻撃耐性を向上させることができる分散認証システムを提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明に係る分散認証システムは、ひとつまたは複数のノードで構成される分散認証システムであって、前記分散認証システムに参加するノードのうち所定数台のノードが、前記分散認証システムを代表する代表ノードとなり、前記代表ノードが、互いに連携することによって、前記分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、前記分散認証システムに参加するノードの電子署名で用いる個人鍵と、前記分散認証システムに参加するノードの電子証明書とを発行することを特徴とする。
【0009】
本発明に係る分散認証方法は、ひとつまたは複数のノードで構成される分散認証システムであり、前記分散認証システムに参加するノードのうち所定数台のノードが前記分散認証システムを代表する代表ノードとなり、前記代表ノードが、互いに連携することによって、前記分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、前記分散認証システムに参加するノードの電子署名で用いる個人鍵と、前記分散認証システムに参加するノードの電子証明書とを発行する分散認証システムの分散認証方法であって、(A)前記分散認証システムへの参加を開始するステップと、(B)前記分散認証システムに参加する全ノード数が所定数未満の場合、総意モードの動作を行うステップと、(C)前記分散認証システムに参加する全ノード数が所定数以上の場合、代表モードの動作として、前記代表ノード以外の一般ノードのときの動作を行うステップと、(D)前記代表モードの動作として、前記代表ノードのときの動作を行うステップと、(E)他ノードから受信したメッセージの電子署名を確認するときの動作を行うステップと、(F)前記代表ノードの初期の動作を行うステップと、(G)前記代表ノードを更新するときの動作を行うステップと、(H)前記代表ノードを離脱するときの動作を行うステップとを有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、認証局の場所が判明して容易に攻撃されやすいというセキュリティリスクを抑制し、認証局への攻撃耐性を向上させることができる分散認証システムを提供することができる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施形態について、添付図を参照して説明する。
【0012】
本実施形態は、独立した認証局が無い状況において、ファイル共有ネットワークに参加するノードが連携することで認証局になり、ファイル共有ネットワークに新たに参加するノードの電子署名のための鍵(代表鍵、個人鍵)の発行、及び電子証明書(分散認証システム電子証明書、ノードの電子証明書)の保存を実施する分散認証システム、分散認証方法、及びプログラムに関するものである。
【0013】
本実施形態において、分散認証システム電子証明書は、認証局の電子証明書に対応し、後述するように、代表鍵の公開鍵を含み、分散認証システムの電子署名は、認証局の電子署名に対応し、代表鍵の秘密鍵で暗号化されたものである。また、ノードの電子証明書は、後述するように、個人鍵の公開鍵と、分散認証システムの電子署名とを含み、ノードの電子署名は、個人鍵の秘密鍵で暗号化されたものである。
【0014】
ここで、ノードの電子証明書に含まれる分散認証システムの電子署名を、分散認証システム電子証明書に含まれる代表鍵の公開鍵で復号化することにより、当該ノードの電子証明書の正当性が検証可能となる。また、ノードからの送信メッセージに付加される当該ノードの電子署名を、当該ノードの電子証明書に含まれる個人鍵の公開鍵で復号化することにより、当該メッセージの正当性が検証可能となる。その詳細は後述する。
【0015】
本実施形態の分散認証システムは、ひとつまたは複数のノードで構成される。分散認証システムに参加するノードのうち規定数台のノードが代表ノードとなる。規定数台の代表ノードは、互いに連携することによって、分散認証システムの代表鍵と、分散認証システム電子証明書と、分散認証システムに参加するノードの個人鍵と、分散認証システムに参加するノードの電子証明書とを発行する機能を有する。
【0016】
本実施形態の分散認証システムを構成するノードは、他ノードから送られてくるデータを受信する受信部と、分散認証システムを構成するノードの情報を含むノードリストを更新可能に保存するノード情報保存部と、ノードリストに基づいて、前記分散認証システムのモードとして、前記分散認証システムに参加する全ノード数が所定数未満のときの総意モードと、前記分散認証システムに参加する全ノード数が所定数以上のときの代表モードとを管理するモード管理部と、代表モードの際に代表ノードのときの動作を行う代表ノード機能部と、代表モードの際に代表ノード以外の一般ノードのときの動作を行う一般ノード機能部と、総意モード及び代表モードに共通の動作を行う共通機能部と、代表ノード機能部、一般ノード機能部、及び共通機能部から渡される他ノードへのデータに電子署名を付加する署名付加部と、電子署名が付加されたデータを前記他ノードに送信する送信部と、を有する。
【0017】
一般ノード機能部は、ノードが一般ノードである場合に、仮鍵を生成する機能を有する仮鍵生成部と、分散認証システムに参加するために参加リクエストを他の既に分散認証システムに参加しているノードに参加リクエストを送信する機能を有する参加動作部と、を有する。
【0018】
代表ノード機能部は、ノードが代表ノードである場合に、他の代表ノードと互いに連携し、分散認証システムの代表鍵と分散認証システム電子証明書を生成する機能を有する代表鍵生成部と、他のノードからの参加リクエストまたは電子証明書生成リクエストを受信し、他のノードの個人鍵と電子証明書を生成する機能を有する他ノード電子証明書生成部と、代表ノードを離脱する機能及び代表ノードが規定数より少なくなった場合に代表ノードを指名する機能を有する代表ノード指名・離脱機能部と、分散認証システムの代表鍵と他のノードの個人鍵の秘密鍵の素となるランダム素数を生成する機能を有するランダム素数生成部と、を有する。
【0019】
共通機能部は、ノードが一般ノードまたは代表ノードの場合に、キープアライブ(keep alive)動作により他のノードとノードリストを交換する機能を有するキープアライブ動作部と、分散認証システムを利用するアプリケーションを実施する機能を有するアプリケーション部と、規定数台の代表ノードから受信する個人鍵の秘密鍵の素となる情報から個人鍵の秘密鍵を生成する機能を有する個人鍵生成部と、他のノードから受信するメッセージに付加されている電子署名の正当性を確認する機能を有する電子署名確認部と、を有する。
【0020】
受信部は、受信したメッセージをモード管理部へ送る機能を有する。
【0021】
モード管理部は、ノード情報保存部に保存されているノードリストを読み出す機能と、分散認証システムに参加しているノード数を確認する機能と、分散認証システムのモードを確認する機能と、を有する。さらに、モード管理部は、自ノードが代表ノードであるか、一般ノードであるか状態管理する機能を有する。
【0022】
代表ノードは、他の代表ノードと互いに連携し、分散認証システムの代表鍵と分散認証システム電子証明書を生成する機能と、他のノードからの参加リクエストまたは電子証明書生成リクエストを受信し、他のノードの個人鍵と電子証明書を生成する機能と、代表ノードを離脱する機能と、代表ノードが規定数より少なくなった場合に代表ノードを指名する機能と、分散認証システムの代表鍵と他のノードの個人鍵の秘密鍵の素となるランダム素数を生成する機能と、キープアライブ動作により他のノードとノードリストを交換する機能と、分散認証システムを利用するアプリケーションを実施する機能と、規定数台の代表ノードから受信する個人鍵の秘密鍵の素となる情報から個人鍵の秘密鍵を生成する機能と、他のノードから受信するメッセージに付加されている電子署名の正当性を確認する機能と、を有する。
【0023】
ノードリストは、分散認証システムに参加している全ノードのノード情報と、代表ノード情報と、を有する。ノード情報は、ノードのIDと、ノードのIPアドレスと、ポート番号と、代表ノード情報と、旧代表ノード情報と、を含む。代表ノード情報は、分散認証システムを代表する代表ノードがどのノードであるかという情報を含む。旧代表ノード情報は、過去に分散認証システムを代表する代表ノードがどのノードであったかという情報を含む。
【0024】
仮鍵は、分散認証システムによって発行された鍵ではなく、各ノードが生成する鍵であって、新規に分散認証システムに参加する場合と、総意モードの場合に、他ノードへの全てのメッセージに付加される電子署名に利用される。
【0025】
鍵は、公開鍵暗号系における秘密鍵、公開鍵のことであり、鍵は秘密鍵と公開鍵のセットで存在するものであって、分散認証システムの代表鍵は代表鍵の秘密鍵と代表鍵の公開鍵から成り、あるノードの個人鍵は個人鍵の秘密鍵と個人鍵の公開鍵から成る。
【0026】
分散認証システムの代表鍵は、分散認証システムを代表する規定数台の代表ノードが互いに連携して作成する鍵であって、ノードリストと、分散認証システムに参加するノードの電子証明書に分散認証システムの電子署名を付加する場合に使用される。ただし、分散認証システムの代表鍵の秘密鍵は、複数の代表ノードで分散して保存され、分散認証システム上のどのノードも分散認証システムの代表鍵の秘密鍵を知ることはできない。一方、分散認証システムの代表鍵の公開鍵は、分散認証システム上に公開され、分散認証システム上のどのノードも参照することができる。
【0027】
分散認証システムに参加するノードの電子証明書とは、分散認証システムを代表する規定数台の代表ノードが互いに連携して作成する個人鍵の公開鍵と、分散認証システムに参加するノードの情報と、分散認証システムを代表する規定数台の代表ノードが互いに連携して作成する個人鍵の公開鍵と分散認証システムに参加するノードの情報のダイジェスト情報に分散認証システムの代表鍵による電子署名を付加したものである。
【0028】
ダイジェスト情報とは、元になる情報の要約情報を指し、元になる情報に一方向関数を適用することで生成される。
【0029】
さらに、モード管理部は、ノード情報保存部に保存されているノード情報を定期的に読み出し、分散認証システムに参加するノード数が規定数未満であるかそうでないかを確認する機能を有し、分散認証システムに参加するノード数が規定数未満であった場合、ノードを総意モードで動作させ、分散認証システムに参加するノード数が規定数以上であった場合、ノードを代表モードで動作させ、さらに代表モードの場合、代表ノードに指名されていた場合、ノードを代表ノードとして動作させ、代表ノードに指名されていなかった場合、ノードを一般ノードとして動作させる。
【0030】
さらに、モード管理部は、総意モードにおいて、ノード情報保存部に保存されているノードリストを確認し、分散認証システムに参加している全ノード数が規定数に到達していた場合、ノードを代表モードに移行させる機能を有する。
【0031】
さらに、モード管理部は、代表ノード機能部に、分散認証システムの代表鍵を生成するよう指示する機能と、一般ノード機能部に、分散認証ネットワークに改めて参加し分散認証システムの発行する電子証明書及び鍵を得るよう指示する機能と、代表ノード機能部に鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する機能と、代表ノード機能部に、規定数台の代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するよう指示する機能と、を有する。
【0032】
さらに、モード管理部は、受信したメッセージを適切な機能部へ振り分けを行う機能を有する。
【0033】
参加動作部は、自ノードが新規に分散認証システムに参加する場合に、仮鍵の公開鍵を付加した参加リクエストを送信する機能と、参加リクエストを受信した場合に参加リクエストに付加されている仮鍵の公開鍵を用いて電子署名を確認し、改ざんがない場合は参加レスポンスを送信する機能と、を有する。ただし、参加動作部は、分散認証システムが総意モードであった場合、参加レスポンスに自ノードの仮鍵の公開鍵と、ノードリストを付加し、署名付加部により仮鍵の秘密鍵で電子署名をした上で、参加レスポンスを送信し、分散認証システムが代表モードであった場合、参加レスポンスには参加リクエストを受理した旨のメッセージを、自ノードの個人鍵の秘密鍵で電子署名をし、参加レスポンスを送信し、さらに、参加動作部は、ノード情報保存部からノードリストを読み出し、代表ノードを確認し、ある代表ノードに対し、参加リクエストを送信してきたノードのノード情報が付加した電子証明書生成リクエストを送信する機能を有する。
【0034】
仮鍵生成部は、仮鍵を生成する機能と、生成した仮鍵を自ノードのノード情報と共にノード情報保存部に保存する機能を有する。
【0035】
ランダム素数生成部は、代表鍵生成部と他ノード電子証明書生成部からのリクエストを受けて、ランダムな素数を生成する機能と、代表鍵生成部と他ノード電子証明書生成部に生成したランダムな素数を渡す機能とを有する。
【0036】
代表鍵生成部は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、モード管理部から分散認証システムの代表鍵を生成するように指示を受けると、他の規定数台の分散認証システムを代表する代表ノードと連携し、ランダム素数生成部が生成した素数を素に、代表鍵の公開鍵の素となる情報を他のノードに知らせることなく、マルチパーティプロトコルを用いて、分散認証システムの代表鍵の公開鍵を生成する機能と、ノードが代表ノードでなくなるまで代表鍵の生成に利用した素数を保存する機能とを有する。
【0037】
さらに、代表鍵生成部は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、モード管理部から規定数台の代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するように指示を受けると、他の規定数台の分散認証システムを代表する代表ノードと連携し、代表鍵の素となる情報を他のノードに知らせることなく、ノードリストに分散認証システムの代表鍵の秘密鍵を用いた電子署名を付加する機能を有する。
【0038】
代表ノード指名・離脱機能部は、自ノードが代表ノードであり代表ノードを離脱したい場合に、ノード情報保存部からノードリストを読み出し、代表ノード離脱リクエストを他の代表ノードに送信する機能と、自ノードが代表ノードであった場合に、代表ノード離脱リクエストを受信すると、代表ノード離脱リクエストを送信してきた代表ノードに対し、代表ノード離脱レスポンスを送信する機能と、代表ノードが規定数未満である状態から、代表ノードを規定数台とするため、ノード情報保存部からノードリストを読み出し、適当な一般ノードを選出する機能と、選出した一般ノードのノード情報を記載した代表ノード指名確認メッセージを他の代表ノード全てに送信する機能と、代表ノード指名確認メッセージを受信した場合に、選出された一般ノードのノード情報を確認し、可否情報を含む代表ノード指名確認レスポンスを返送する機能と、自身を除く全ての代表ノードから代表ノード指名確認レスポンスを受信した場合に、選出した一般ノードに代表ノード指名リクエストを送信する機能と、自ノードが一般ノードでありノード代表ノード指名リクエストを受信した場合に、可否情報を含む代表ノード指名レスポンスを返送する機能と、代表ノード指名レスポンスを受信した場合に、新しく代表ノードとなるノードのノード情報を、自ノードを除く全ての代表ノードに送信する機能とを有する。
【0039】
さらに、代表ノード指名・離脱機能部は、上記の動作を代表ノードが規定数台になるまで繰り返す機能と、代表ノード機能部に、個人鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する機能と、代表鍵を更新する前まで代表ノードであった旧代表ノードに対し、現在代表ノードであるノードによる電子署名が修了しているノードリストに電子署名をするよう指示する機能と、代表ノード機能部に、規定数台の代表ノード及び規定数台の旧代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するよう指示する機能と、代表鍵の公開鍵とセットで分散認証ネットワーク電子証明書として、ノード情報保存部に保存する機能とを有する。
【0040】
他ノード電子証明書生成部は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、電子証明書生成リクエストを受信すると、他の代表ノードと連携し、ランダム素数生成部が生成する素数を素に、電子証明書に付随する個人鍵の素となる情報を他のノードに知らせることなく、マルチパーティプロトコルを用いて、電子証明書リクエストに記載のノードの個人鍵を生成する機能と、代表鍵生成部と連携し、前記ノードのノード情報と個人鍵から電子証明書を生成する機能と、個人鍵の秘密鍵の素となる情報と公開鍵と、電子証明書を電子証明書生成リクエストに記載のノードに送信する機能を有する。
【0041】
キープアライブ動作部は、他のノードに対し定期的にキープアライブメッセージを送信する機能と、他のノードから定期的にキープアライブメッセージを受信することで通信路のつながりをチェックする機能と、キープアライブメッセージに付加されたノードリストとノード情報保存部から読み出したノードリストを比較し、ノードリストを最新の情報に更新する機能と、キープアライブメッセージに対し一定期間レスポンスがない場合は該当ノードは分散認証システムから離脱したと判定し、ノードリストを更新し、キープアライブ動作を用いて他のノードに最新の情報を伝える機能と、代表ノードが離脱したと判定した場合に、ノード管理部に代表ノードが離脱したことを送信する機能とを有する。
【0042】
アプリケーション部は、分散認証システムを利用するアプリケーションの処理をする機能を有する。
【0043】
個人鍵生成部は、規定数台の代表ノードから受信する個人鍵の秘密鍵の素となる規定数個の情報から個人鍵の秘密鍵を生成する機能と、受信した公開鍵と秘密鍵が有効に動作するか確認する機能と、受信した電子証明書の有効性を確認する機能とを有する。
【0044】
電子署名確認部は、メッセージを受信した場合にメッセージ送信元を確認し、分散認証システムにメッセージ送信元のノードの電子証明書発行リクエストを送信する機能と、メッセージ送信元のノードの電子証明書を得た場合に、電子証明書に付加されている分散認証システムの代表鍵による電子署名を確認するため、分散認証システムに分散認証システム電子証明書発行リクエストを送信する機能と、分散認証システム電子証明書に付加されている代表鍵の公開鍵を得た場合に、電子証明書に付加されている電子署名を公開鍵で復号し、電子証明書の正当性を確認する機能と、受信したメッセージに付加されている電子署名を電子証明書に付加されている公開鍵で復号し、メッセージの正当性を確認する機能と、他のノードから電子証明書発行リクエストを受信した場合に、該当する電子証明書をノード情報保存部から読み出し、電子証明書発行レスポンスを返送する機能と、他のノードから分散認証システム電子証明書発行リクエストを受信した場合に、該当する公開鍵をノード情報保存部から読み出し、分散認証システム電子証明書発行レスポンスを送信する機能とを有する。
【0045】
署名付加部は、分散認証システムが総意モードの場合にノード情報保存部に保存されている仮鍵を使用し、他の機能部からのメッセージに電子署名を付加する機能と、分散認証システムによって電子証明書の発行を受けていない場合にノード情報保存部に保存されている仮鍵を使用し、他の機能部からのメッセージに電子署名を付加する機能と散認証システムが総意モードの場合でなく、分散認証システムによって電子証明書の発行を受けている場合に、ノード情報保存部に保存されている個人鍵を使用し、他の機能部からのメッセージに電子署名を付加する機能と、を有する。
【0046】
送信部は、署名付加部からのメッセージを受け、メッセージに記載された宛先のノードに対し、メッセージを送信する機能を有する。
【0047】
ノード情報保存部は、自ノードのノード情報、仮鍵、電子証明書、ノードリスト、分散認証ネットワーク電子証明書、を保存する機能を有する。
【0048】
本実施形態に係る分散認証システムの分散認証方法は、(A)分散認証システム参加を開始するステップと、(B)総意モードのときの動作を行うステップと、(C)一般ノードのときの動作を行うステップと、(D)代表ノードのときの動作を行うステップと、(E)受信したメッセージの電子署名を確認するときの動作を行うステップと、(F)代表ノードの初期の動作を行うステップと、(G)代表ノードを更新するときの動作を行うステップと、(H)代表ノードを離脱するときの動作を行うステップとを有する。
【0049】
前記(A)分散認証システムに参加するを開始するステップは、(A1)初期状態ステップと、(A2)仮鍵を生成するステップと、(A3)仮鍵及び、ノード情報を保存するステップと、(A4)他の既に分散認証システムに参加しているノードに対し、参加リクエストを送信するステップと、(A5)分散認証システムのモードを確認するステップと、(A6)参加依頼レスポンスとして、参加依頼リクエストを送信したノードの仮鍵及びノードリストを受信し、ノードリストを更新するステップと、(A7)ノードリストを読み出し、ノードリストに記載の全ノードの仮鍵を保持しているか確認するステップと、(A8)参加レスポンスを受信するステップと、(A9)規定数台の代表ノードから個人鍵の秘密鍵の素となる情報と、電子証明書を受信するステップと、(A10)ステップA9で受信した個人鍵の秘密鍵の素となる情報から個人鍵を生成するステップとを有する。
【0050】
前記(B)総意モードのときの動作を行うステップは、(B1)総意モードの動作時の初期状態ステップと、(B2)キープアライブ動作により、他の分散認証システムに参加するノードとノードリストの交換を行うステップと、(B3)ノードリストを読み出し、分散認証システムに参加するノード数が規定数に達しているかどうかを確認するステップとを有する。
【0051】
前記(C)一般ノードのときの動作を行うステップは、(C1)一般ノード動作の初期状態ステップと、(C2)ノードリストを読み出し、他のノードに対し、ノードリストを付加したキープアライブメッセージを送信するステップと、(C3)他のノードから、ノードリストが付加されたキープアライブメッセージを受信するステップと、(C4)ステップC3で受信したキープアライブメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新するステップと、(C5)ノードリストを読み出し、分散認証システムに参加するノード数が規定数に達しているかどうかを確認するステップと、(C6)参加リクエストを受信するステップと、(C7)参加リクエストを送信してきたノードに対し、参加レスポンスを送信するステップと、(C8)規定数台の代表ノードのうち、任意の代表ノードに対し、電子証明書作成リクエストを送信するステップと、(C9)代表ノード指名リクエストを受信するステップと、(C10)代表ノードになるかどうか選択するステップと、(C11)代表ノードになるために、ステップC9で代表ノード指名リクエストを送信してきたノードに対し、代表ノード指名レスポンスを送信するステップと、(C12)代表ノードになることを拒否するために、ステップC9で代表ノード指名リクエストを送信してきたノードに対し、代表ノード拒否の情報を付加し代表ノード指名レスポンスを送信するステップと、(C13)電子証明書発行リクエストを受信するステップと、(C14)ステップC13で電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信するステップとを有する。
【0052】
前記(D)代表ノードのときの動作を行うステップは、(D1)代表ノード動作時の初期状態ステップと、(D2)ノードリストを読み出し、他のノードに対し、ノードリストを付加したキープアライブメッセージを送信するステップと、(D3)他のノードから、ノードリストが付加されたキープアライブメッセージを受信するステップと、(D4)ステップD3で受信したキープアライブメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新するステップと、(D5)ノードリストを読み出し、分散認証システムに参加するノード数が規定数に達しているかどうかを確認するステップと、(D6)ノードリストを読み出し、代表ノードが離脱していないか確認するステップと、(D7)代表ノードを離脱したい場合、他の代表ノードに対し、代表ノード離脱リクエストを送信するステップと、(D8)代表ノード離脱レスポンスを受信するステップと、(D9)参加リクエストを受信するステップと、(D10)参加リクエストを送信してきたノードに対し、参加レスポンスを送信するステップと、(D11)参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報となるランダム素数を生成するステップと、(D12)規定数台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの個人鍵の公開鍵を生成するステップと、(D13)規定数台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの電子証明書を生成するステップと、(D14)ステップD11で生成した参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報と、ステップD12で生成した参加リクエストを送信してきたノードの個人鍵の公開鍵と、ステップD13で生成した参加リクエストを送信してきたノードの電子証明書を、参加リクエストを送信してきたノードに対し送信するステップと、(D15)電子証明書生成リクエストを受信するステップと、(D16)代表ノード離脱リクエストを受信するステップと、(D17)代表ノード離脱レスポンスを送信するステップと、(D18)代表ノード指名確認メッセージを受信するステップと、(D19)代表ノード指名確認レスポンスを送信するステップと、(D20)電子証明書発行リクエストを受信するステップと、(D21)ステップD20で電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信するステップと、(D22)分散認証システム電子証明書発行リクエストを受信するステップと、(D23)ステップD22で分散認証システム電子証明書発行リクエストを送信してきたノードに対し、分散認証システム電子証明書を付加した分散認証システム電子証明書発行レスポンスを送信するステップとを有する。
【0053】
前記(E)受信したメッセージの電子署名を確認するときの動作を行うステップは、(E1)署名確認動作の初期状態ステップと、(E2)メッセージ送信元のノードの電子証明書発行リクエストを送信するステップと、(E3)電子証明書発行レスポンスを受信するステップと、(E4)代表ノードに対し、分散認証システム電子証明書発行リクエストを送信するステップと、(E5)分散認証システム電子証明書発行レスポンスを受信するステップと、(E6)分散認証システム電子証明書に付加されている代表鍵の公開鍵を用い、電子証明書に付加されている電子署名を公開鍵で復号し、電子証明書の正当性を確認し、さらに、受信したメッセージに付加されている電子署名を電子証明書に付加されている公開鍵で復号し、メッセージの正当性を確認するステップとを有する。
【0054】
前記(F)代表ノードの初期の動作を行うステップは、(F1)代表ノード初期動作時の初期状態ステップと、(F2)分散認証システムの代表鍵の秘密鍵の素となる情報となるランダム素数を生成するステップと、(F3)規定数台の代表ノード間で互いに連携し、分散認証システムの代表鍵の公開鍵を生成するステップと、(F4)この時点のノードリストに対し、個人鍵の秘密鍵を用いて電子署名をするステップと、(F5)他の代表ノードに対し、電子署名済みのノードリストを送信するステップと、(F6)他の代表ノードから、ノードリストを受信するステップと、(F7)ステップF6で受信したノードリストに全代表ノードの電子署名が付加されているか確認するステップと、(F8)全代表ノードによる電子署名が完了したノードリストを、残存する旧代表ノードに送信するステップと、(F9)残存する旧代表ノードによる電子署名が付加されたノードリストを受信するステップと、(F10)ステップF9で受信したノードリストに、残存する旧代表ノード全てによる電子署名が付加されているか確認するステップと、(F11)規定数台の代表ノード間で互いに連携し、分散認証システム電子証明書を作成するステップとを有する。
【0055】
前記(G)代表ノードを更新するときの動作を行うステップは、(G1)代表ノード更新動作時の初期状態ステップと、(G2)新たに代表ノードになるノードを選出するステップと、(G3)代表ノード指名確認メッセージを、他の代表ノードに送信するステップと、(G4)代表ノード指名確認レスポンスを受信するステップと、(G5)ステップS−F4で受信した代表ノード指名確認レスポンスに、ステップG2で選出したノードを拒否するメッセージが付加されているか確認するステップと、(G6)ステップG2で選出したノードに対し、代表ノード指名リクエストを送信するステップと、(G7)ステップG2で選出したノードから、代表ノード指名レスポンスを受信するステップと、(G8)ステップG7で受信した代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されているか確認するステップと、(G9)代表ノード数が規定数に達しているかどうか確認するステップとを有する。
【0056】
前記(H)代表ノードを離脱するときの動作を行うステップは、(H1)代表ノード離脱動作時の初期状態ステップと、(H2)代表ノードから、全ての代表ノードの電子署名が付加されたノードリストを受信するステップと、(H3)ステップH2で受信したノードリストに、電子署名を付加するステップと、(H4)ステップH2で全ての代表ノードの電子署名が付加されたノードリストを送信してきた代表ノードに対し、ステップH3で電子署名を付加したノードリストを送信するステップとを有する。
【0057】
本実施形態の分散認証プログラムは、上記分散認証方法を、コンピュータに実行させるためのプログラムである。
【0058】
以上説明したように、本実施の形態では、分散認証システムに参加するノードのうち規定数台のノードが代表ノードとなり、分散認証システムの代表鍵とその分散認証システム電子証明書を発行し、分散認証システムに参加するノードの個人鍵及びその電子証明書を発行する。規定数台の代表ノードは、互いに連携してマルチパーティプロトコルを利用することによって、上記の鍵及び電子証明書を発行する処理を分担して行うが、他のノードの秘密鍵を知ることはできない。全ノード数が規定数より少ない場合は、総意モードとなり、代表鍵は生成されず、仮鍵を相互に交換して認証する。それ以外では、代表モードとなり、代表ノードが選出され、代表ノードは定期的に変更され、新規に代表ノードになるノードを、代表ノードを継続するノードが承認することで代表鍵が継承される。
【0059】
従って、本実施形態によれば、次のような効果を奏することができる。
【0060】
第一の効果は、認証局の攻撃耐性が向上することにある。その理由は、分散認証システムに参加するノードのうち規定数台のノードが代表ノードとなり、分散認証システムの代表鍵と分散認証システム電子証明書の発行、及び分散認証システムに参加するノードの個人鍵及び電子証明書の発行を、規定数台の代表ノードが互いに連携することによって実現し、さらに代表ノードの指名・離脱を柔軟にすることによって、悪意のある攻撃者からの攻撃に対し、攻撃対象を分散させることができ、かつ攻撃されたとしても、代表ノードを次々と変化させることによって、分散認証システムとしての機能を失わずに、認証サービスを続けることができるためである。
【0061】
第二の効果は、特定の認証局なしに、特定の認証局がある場合と同等の安全性をもった認証サービスを提供することができることにある。その理由は、分散認証システムに参加するノードのうち規定数台のノードが代表ノードとなり、分散認証システムの代表鍵と分散認証システム電子証明書の発行、及び分散認証システムに参加するノードの個人鍵及び電子証明書の発行を、規定数台の代表ノードが互いに連携することによって実現し、さらに代表ノードの指名・離脱を柔軟にすることによって、ある特定の場所に認証局が存在する場合と同等の安全性を持った認証サービスを提供することができるためである。
【実施例1】
【0062】
まず、本発明の第1の実施例について、図面を参照して詳細に説明する。
【0063】
図1を参照すると、本実施例に係る分散認証システムを構成するノードは、受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7と、を有する。
【0064】
一般ノード機能部3は、参加動作部31と、仮鍵生成部32と、を有する。
【0065】
代表ノード機能部4は、ランダム素数生成部41と、代表鍵生成部42と、代表ノード指名・離脱機能部43と、他ノード電子証明書生成部44と、を有する。
【0066】
共通機能部5は、keep alive(キープアライブ)動作部51と、アプリケーション部52と、個人鍵生成部53と、電子署名確認部54と、を有する。
【0067】
受信部1は、受信したメッセージをモード管理部2へ送る。
【0068】
モード管理部2は、ノード情報保存部8に保存されているノードリストを読み出し、分散認証システムに参加しているノード数を確認し、分散認証システムのモードを確認する。さらに、モード管理部2は、自ノードが代表ノードであるか、一般ノードであるか状態管理する。
【0069】
ここで、分散認証システムのモードとは、総意モード、代表モードを指す。
【0070】
総意モードとは、分散認証システムに参加する全ノード数が規定数m未満の時のノード動作を指す。総意モードでは、ノードはそれぞれ仮鍵を生成し分散認証システムに参加する。すなわち総意モードでは、分散認証システムを代表する代表ノードは存在せず、参加するノードがそれぞれ用意する仮鍵を利用し、ノード間で相互に認証する。
【0071】
一方、代表モードとは、分散認証システムに参加する全ノード数が規定数m以上の時のノードの動作を指す。代表モードでは、分散認証システムに参加するノードのうちm台のノードが分散認証システムを代表する代表ノードとして動作し、それ以外のノードは一般ノードとして動作する。
【0072】
ここで、代表ノードとは、分散認証システムを代表するノードのことであって、分散認証システムの代表鍵の生成、分散認証システムに参加するノードの鍵及び電子証明書の作成、代表ノードを指名する役割を担うノードである。代表ノードは、定期的に更新され、分散認証システムに参加する全ノードに代表ノードになる可能性がある。
【0073】
ここで、ノードリストとは、分散認証システムに参加している全ノードのノード情報と、代表ノード情報のリストである。ノード情報とは、例えば、ノードのID、ノードのIPアドレスである。代表ノード情報とは、分散認証システムを代表する代表ノードがどのノードであるかを表す情報である。
【0074】
ここで、仮鍵とは、分散認証システムによって発行された鍵ではなく、各ノードが生成する鍵である。仮鍵は、分散認証システムに新規に参加する場合と、総意モードの場合とに、他ノードへ送信される全てのメッセージに付加される電子署名に利用する。
【0075】
ここで、鍵とは、公開鍵暗号系における秘密鍵及び公開鍵のことであり、その秘密鍵と公開鍵のセットで存在する。よって、分散認証システムの代表鍵は、代表鍵の秘密鍵と代表鍵の公開鍵とから成る。同様に、あるノードの個人鍵は、個人鍵の秘密鍵と個人鍵の公開鍵とから成る。
【0076】
ここで、分散認証システムの代表鍵とは、分散認証システムを代表するm台の代表ノードが互いに連携して作成する鍵であって、ノードリストと、分散認証システムに参加するノードの電子証明書とに分散認証システムの電子署名を付加する場合に使用する。ただし、分散認証システムの代表鍵の秘密鍵は、複数の代表ノードで分散して保存され、分散認証システム上のどのノードも分散認証システムの代表鍵の秘密鍵を知ることはできない。一方、分散認証システムの代表鍵の公開鍵は、分散認証システム上に公開され、分散認証システム上のどのノードも参照することができる。本実施形態では、分散認証システムを代表するm台の代表ノードが互いに連携して作成する代表鍵の秘密鍵をランダムな数に設定できる公開鍵暗号系を用いる。この公開鍵暗号系として、例えばElGamal暗号などがある。
【0077】
ここで、分散認証システムに参加するノードの電子証明書とは、分散認証システムを代表するm台の代表ノードが互いに連携して作成する個人鍵の公開鍵と、分散認証システムに参加するノードの情報とに加え、これらの個人鍵の公開鍵及びノードの情報のダイジェスト情報に分散認証システムの代表鍵による電子署名を付加したものである。本実施形態では、分散認証システムを代表するm台の代表ノードが互いに連携して作成する個人鍵の秘密鍵をランダムな数に設定できる公開鍵暗号系を用いる。この公開鍵暗号系として、例えばElGamal暗号などがある。ここで、ダイジェスト情報とは、元になる情報の要約情報を指す。例えば元になる情報にSHA−1などの一方向関数を適用することで生成する。
【0078】
モード管理部2は、ノード情報保存部8に保存されているノード情報を定期的に読み出し、分散認証システムに参加するノード数が規定数m未満であるかそうでないかを確認する。分散認証システムに参加するノード数が規定数m未満であった場合、ノードは総意モードで動作する。一方、分散認証システムに参加するノード数が規定数m以上であった場合、ノードは代表モードで動作する。代表モードの場合、代表ノードに指名されていた場合、代表ノードとして動作する。一方、代表モードの場合、代表ノードに指名されていなかった場合、一般ノードとして動作する。
【0079】
また、総意モードにおけるモード管理部2はノード情報保存部8に保存されているノードリストを確認し、分散認証システムに参加している全ノード数が規定数mに到達していた場合、代表モードに移行する。
【0080】
総意モードから代表モードに移行する場合、その時点で分散認証システムに参加している全ノード、すなわちm台のノードが代表ノードなる。そのために、モード管理部2は代表ノード機能部4に、分散認証システムの代表鍵を生成するよう指示する。さらに、モード管理部2は、一般ノード機能部3に、分散認証ネットワークに改めて参加し、分散認証システムの発行する電子証明書及び鍵を得るよう指示する。さらに、モード管理部2は、代表ノード機能部4に、前記鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する。さらに、モード管理部2は、代表ノード機能部4に、m台の代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するよう指示する。
【0081】
以上の動作によって分散認証システムの代表鍵による電子署名が付加されたノードリストは、代表鍵の公開鍵とセットで、分散認証システム電子証明書として、ノード情報保存部8に保存される。
【0082】
図2に分散認証システム電子証明書の例を示す。同図に示すように、分散認証システム電子証明書には、分散認証システムに参加するノード及びそのノード情報(IPアドレス、ポート番号等)を含むノードリストに、代表ノード毎の個人鍵による電子署名、旧代表ノード毎の個人鍵による電子署名、及び分散認証システムの代表鍵による電子署名が付加されている。
【0083】
なお、総意モードから代表モードに移行する場合と同様の動作は、代表ノードが更新されるタイミングでも動作する。
【0084】
一般ノード機能部3は、仮鍵生成部32と、参加動作部31とを有し、ノードが一般ノードである場合に、仮鍵を生成する機能と、分散認証システムに参加するために参加リクエストを他の既に分散認証システムに参加しているノードに参加リクエストを送信する機能と、を有する。
【0085】
また、モード管理部2は、受信したメッセージを適切な機能部へ振り分けを行う。
【0086】
仮鍵生成部32は、仮鍵を生成する。生成した仮鍵は自ノードのノード情報と共にノード情報保存部8に保存される。仮鍵は、分散認証システムが発行する電子証明書に付随する鍵とは関係なく存在し、分散認証システムが発行する電子証明書に付随する鍵と暗号アルゴリズムが別であってもよい。
【0087】
参加動作部31は、自ノードが新規に分散認証システムに参加する場合に、参加リクエストを送信する。参加リクエストを送信する場合は、参加リクエストに自ノードの仮鍵の公開鍵を付加する。また、ノード情報保存部8から読み出した自ノードの仮鍵の秘密鍵を用いて、署名付加部6で参加リクエストに電子署名をする。また、参加リクエストを受信した場合、参加リクエストに付加されている仮鍵の公開鍵を用いて電子署名を確認し、改ざんがない場合は参加レスポンスを返送する。ただし、参加レスポンスは、分散認証システムのモードによって内容が異なる。分散認証システムが総意モードであった場合、参加レスポンスに自ノードの仮鍵の公開鍵と、ノードリストとを付加し、署名付加部6で自ノードの仮鍵の秘密鍵を用いて電子署名をした上で、その参加レスポンスを返送する。一方、分散認証システムが代表モードであった場合、参加レスポンスには参加リクエストを受理した旨のメッセージを、自ノードの個人鍵の秘密鍵で電子署名をし、その参加レスポンスを返送する。さらに、参加動作部31は、ノード情報保存部8からノードリストを読み出し、代表ノードを確認し、ある代表ノードに対し、電子証明書生成リクエストを送信する。電子証明書生成リクエストには、参加リクエストを送信してきたノードのノード情報が付加される。
【0088】
代表ノード機能部4は、ランダム素数生成部41と、代表鍵生成部42と、他ノード個人鍵生成部53と、代表ノード指名・離脱機能部43とを有し、ノードが代表ノードである場合に、他の代表ノードと互いに連携し、分散認証システムの代表鍵と分散認証システム電子証明書を生成する機能と、他のノードからの参加リクエストまたは電子証明書生成リクエストを受信し、他のノードの個人鍵と電子証明書を生成する機能と、代表ノードを離脱する機能と、代表ノードが規定数mより少なくなった場合に代表ノードを指名する機能と、分散認証システムの代表鍵と他のノードの個人鍵の秘密鍵の素となるランダム素数を生成する機能と、を有する。
【0089】
ランダム素数生成部41は、代表鍵生成部42と他ノード電子証明書生成部44とからのリクエストを受けて、ランダムな素数を生成し、その生成したランダムな素数を代表鍵生成部42と他ノード電子証明書生成部44とに渡す。
【0090】
代表鍵生成部42は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、モード管理部2から分散認証システムの代表鍵を生成するように指示を受けると、他のm台の分散認証システムを代表する代表ノードと連携し、分散認証システムの代表鍵を生成する。代表鍵の素には、ランダム素数生成部41が生成する素数を使用する。代表鍵の秘密鍵は、m台のノードが生成する素数から演算されるが、実際には演算されず、m台の代表ノードとマルチパーティプロトコルを用いて代表鍵の公開鍵をのみを演算する。これにより、代表鍵の秘密鍵は、どのノードも知ることなく、代表ノードの公開鍵のみが正確に演算される。代表鍵生成部42は、ノードが代表ノードでなくなるまで、代表鍵の生成に利用した素数を保存する。
【0091】
また、代表鍵生成部42は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、モード管理部2からm台の代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するように指示を受けると、他のm台の分散認証システムを代表する代表ノードと連携し、ノードリストに分散認証システムの代表鍵の秘密鍵を用いた電子署名を付加する。分散認証システムの公開鍵を生成する時と同様に、m台の代表ノードは互いに連携し、代表鍵の素となる情報を他のノードに知らせることなく、ノードリストに電子署名を付加する。
【0092】
他ノード電子証明書生成部44は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、電子証明書生成リクエストを受信すると、他のm台の分散認証システムを代表する代表ノードと連携し、電子証明書リクエストに記載のノードの電子証明書を生成する。電子証明書に付随する個人鍵の素には、ランダム素数生成部41が生成する素数を使用する。個人鍵の秘密鍵はm台のノードが生成する素数から演算されるが、実際には演算されず、m台の代表ノードとマルチパーティプロトコルを用いて個人鍵の公開鍵をのみを演算する。これにより、個人鍵の秘密鍵はどのノードも知ることなく、個人鍵の公開鍵のみが正確に演算される。さらに、代表鍵生成部42とも連携し、ノードのノード情報と個人鍵から電子証明書を生成する。以上の動作を完了した他ノード電子証明書生成部44は、個人鍵の秘密鍵の素となる情報と公開鍵と、電子証明書を電子証明書生成リクエストに記載のノードに送信する。
【0093】
代表ノード指名・離脱機能部43は、自ノードが代表ノードであり代表ノードを離脱したい場合に、ノード情報保存部8からノードリストを読み出し、代表ノード離脱リクエストを他の代表ノードに送信する。代表ノードが離脱したい場合とは、例えば分散認証システムから離脱したいとき、ネットワークリソース不足であるとき、悪意のある攻撃者からの攻撃を受けているとき、などがある。
【0094】
代表ノード指名・離脱機能部43は、自ノードが代表ノードであった場合に、代表ノード離脱リクエストを受信すると、代表ノード離脱リクエストを送信してきた代表ノードに対し、代表ノード離脱レスポンスを送信する。さらに、代表ノード指名・離脱機能部43は代表ノードが規定数m未満である状態から、代表ノードをm台とするため、ノード情報保存部8からノードリストを読み出し、適当な一般ノードを選出し、選出した一般ノードのノード情報を記載した代表ノード指名確認メッセージを他の代表ノード全てに送信する。
【0095】
代表ノード指名確認メッセージを受信した代表ノード指名・離脱機能部43は、選出された一般ノードのノード情報を確認し、代表ノード指名確認レスポンスを返送する。ただし、選出された一般ノードに問題がある場合は指名を拒否することもできる。問題とは、例えば、過去にレスポンスが遅かった、指定外のメッセージを送信してきた、などがある。自身を除く全ての代表ノードから代表ノード指名確認レスポンスを受信した代表ノードは、選出した一般ノードに代表ノード指名リクエストを送信する。
【0096】
代表ノード指名リクエストを受信した一般ノードの代表ノード指名・離脱機能部43は、代表ノード指名レスポンスを返送することで代表ノードになる。ただし、代表ノード指名リクエストを受信した一般ノードは、代表ノードになることを拒否することもできる。
【0097】
代表ノード指名・離脱機能部43は、代表ノード指名レスポンスを受信すると、新しく代表ノードとなるノードのノード情報を、自ノードを除く全ての代表ノードに送信する。代表ノード指名・離脱機能部43は、以上の動作を代表ノードが規定数m台になるまで繰り返す。
【0098】
さらに、代表ノード指名・離脱機能部43は、代表ノード機能部4に、個人鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する。さらに、代表ノード指名・離脱機能部43部は、代表鍵を更新する前まで代表ノードであった旧代表ノードに対し、現在代表ノードであるノードによる電子署名が修了しているノードリストに電子署名をするよう指示する。さらに、代表ノード指名・離脱機能部43は、代表ノード機能部4に、m台の代表ノード及びm台の旧代表ノードによる署名の完了したノードリストに分散認証システムの代表鍵による署名を付加するよう指示する。以上の動作によって電子署名が付加されたノードリストは、代表鍵の公開鍵とセットで分散認証ネットワーク電子証明書として、ノード情報保存部8に保存される。
【0099】
共通機能部5は、keep alive動作部51と、アプリケーション部52と、個人鍵生成部53と、電子署名確認部54と、を有し、ノードが一般ノードまたは代表ノードの場合に、keep alive動作により他のノードとノードリストを交換する機能と、分散認証システムを利用するアプリケーションを実施する機能と、m台の代表ノードから受信する個人鍵の秘密鍵の素となる情報から個人鍵の秘密鍵を生成する機能と、他のノードから受信するメッセージに付加されている電子署名の正当性を確認する機能と、を有する。
【0100】
keep alive動作部51は、他のノードに対し定期的にkeep aliveメッセージを送信し、さらに他のノードから定期的にkeep aliveメッセージを受信することで通信路のつながりをチェックする。keep alive動作部51は、ノードリストkeep aliveメッセージにはノード情報保存部8から読み出したノードリストも添付され、ノードリストを他のノードと定期的に交換し、新しいノードリストに更新していくことで、ノードリストは最新の状態に保たれる。例えば、新規に分散認証システムに参加したノードを確認したノードは、ノードリストを更新し、keep alive動作を用いて他のノードに最新の情報を伝える。またkeep aliveメッセージに対し一定期間レスポンスがない場合は、該当ノードは分散認証システムから離脱したと判定し、ノードリストを更新し、keep alive動作を用いて他のノードに最新の情報を伝える。だたし、代表ノードが離脱したと判定した場合は、モード管理部2に代表ノードが離脱したことを送信する。
【0101】
アプリケーション部52は、分散認証システムを利用するアプリケーションの処理をする。アプリケーションとして、例えばファイル交換アプリケーションや電話アプリケーションがある。本実施例の分散認証システムは、利用するアプリケーションに制限はない。
【0102】
個人鍵生成部53は、m台の代表ノードから受信する個人鍵の秘密鍵の素となるm個の情報から個人鍵の秘密鍵を生成する。さらに受信した公開鍵と秘密鍵が有効に動作するか確認する。さらに、受信した電子証明書の有効性を確認する。
【0103】
電子署名確認部54は、あるメッセージに付加されている電子署名を確認し、メッセージの送信元からメッセージが改ざんされていないかを確認する。電子署名確認部54は、メッセージを受信するとメッセージ送信元を確認し、分散認証システムにメッセージ送信元のノードの電子証明書発行リクエストを送信する。メッセージ送信元のノードの電子証明書を得ると、電子証明書に付加されている分散認証システムの代表鍵による電子署名を確認するため、分散認証システムに分散認証システム電子証明書発行リクエストを送信する。分散認証システム電子証明書に付加されている代表鍵の公開鍵を得ると、電子証明書に付加されている電子署名を代表鍵の公開鍵で復号し、電子証明書の正当性を確認する。さらに、受信したメッセージに付加されている電子署名を電子証明書に付加されている個人鍵の公開鍵で復号し、メッセージの正当性を確認する。
【0104】
また、電子署名確認部54は、他のノードから電子証明書発行リクエストを受信した場合、該当する電子証明書をノード情報保存部8から読み出し、電子証明書発行レスポンスを返送する。さらに、電子署名確認部54は、他のノードから分散認証システム電子証明書発行リクエストを受信した場合、該当する公開鍵をノード情報保存部8から読み出し、分散認証システム電子証明書発行レスポンスを返送する。
【0105】
署名付加部6は、他の機能部からのメッセージに電子署名を付加し、送信部7に渡す。ただし、ノードの状態によって電子署名のために使用する鍵が異なる。分散認証システムが総意モードの場合と、分散認証システムによって電子証明書の発行を受けていない場合は、ノード情報保存部8に保存されている仮鍵を使用し、メッセージに電子署名を付加する。それ以外の場合ではノード情報保存部8に保存されている個人鍵を使用し、メッセージに電子署名を付加する。
【0106】
送信部7は、署名付加部6からのメッセージを受け、メッセージに記載された宛先のノードに対し、メッセージを送信する。
【0107】
ノード情報保存部8は、自ノードのノード情報、仮鍵、電子証明書、ノードリスト、分散認証ネットワーク電子証明書、を保存する。電子証明書は、自身の電子証明書以外に、他のノードの電子証明書を保存することもできる。この場合、分散認証システム全体で全ノードの電子証明書を共有できるよう各ノードに分散して電子証明書を保存することが望ましい。分散して情報を保存するアルゴリズムとして、例えばChordアルゴリズムなどがある。
【0108】
次に、図3と、図4と、図5と、図6と、図7と、図8と、図9と、図10とを参照して、本実施例の動作について詳細に説明する。
【0109】
図3は、本実施例の分散認証システムの動作を示すものである。
【0110】
図3において、ステップS−A1は、初期状態である。この初期状態から、仮鍵を生成し(ステップS−A2)、その仮鍵及びノード情報を保存し(ステップS−A3)、他の既に分散認証システムに参加しているノードに対し、参加リクエストを送信する(ステップS−A4)。次いで、分散認証システムのモードを確認する(ステップS−A5)。その結果、分散認証システムが総意モードであった場合、ステップS−AA1に移行する。一方、分散認証システムが代表モードであった場合、ステップS−AB1に移行する。
【0111】
上記ステップS−A5にて分散認証システムが総意モードであった場合、参加依頼レスポンスとして、参加依頼リクエストを送信したノードの仮鍵及びノードリストを受信し(ステップS−AA1)、ノードリストを更新する。そして、ノードリストを読み出し、ノードリストに記載の全ノードの仮鍵を保持しているか確認する(ステップS−AA2)。その結果、ノードリストに記載の全ノードの仮鍵を保持していた場合(Yes)、後述の総意モード動作(ステップS−B1)へ移行する。一方、ノードリストに記載の全ノードの仮鍵を保持していなかった場合(No)、ステップS−A4に戻り、仮鍵を保持していないノードに対し参加依頼リクエストを送信する。
【0112】
一方、ステップS−A5にて分散認証システムが代表モードであった場合、参加レスポンスを受信する(ステップS−AB1)。そして、m台の代表ノードから個人鍵の秘密鍵の素となる情報と、電子証明書とを受信し(ステップS−AB2)、受信した個人鍵の秘密鍵の素となる情報から個人鍵を生成し(ステップS−AB3)、後述の一般モード動作(ステップS−C1)へ移行する。
【0113】
図4は、総意モード動作を示すものである。
【0114】
図4において、ステップS−B1は、総意モード動作時の初期状態である。この初期状態から、keep alive動作により、他の分散認証システムに参加するノードとノードリストの交換を行う(ステップS−B2)。次いで、ノードリストを読み出し、分散認証システムに参加するノード数が規定数mに達しているかどうかを確認する(ステップS−B3)。その結果、分散認証システムに参加するノード数が規定数mに達していた場合は、後述の代表ノード初期動作(ステップS−F1)に移行する。分散認証システムに参加するノード数が規定数mに達していなかった場合は、初期状態(ステップS−B1)に移行する。
【0115】
図5は、一般ノード動作を示すものである。
【0116】
図5において、ステップS−C1は、一般ノード動作時の初期状態である。この初期状態から、ノードリストを読み出し、他のノードに対し、ノードリストを付加したkeep aliveメッセージを送信し(ステップS−CA1)、初期状態(ステップS−C1)に戻る。
【0117】
次いで、初期状態(ステップS−C1)において、他のノードからノードリストが付加されたkeep aliveメッセージを受信する(ステップS−CB2)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0118】
次いで、受信したkeep aliveメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新し(ステップS−CB2)。ノードリストを読み出し、分散認証システムに参加するノード数が規定数mに達しているかどうかを確認する(ステップS−CB3)。その結果、分散認証システムに参加するノード数が規定数mに達していた場合(Yes)は、初期状態(ステップS−C1)に移行する。一方、分散認証システムに参加するノード数が規定数mに達していなかった場合(No)は、前述の総意モード動作(ステップS−B1)に移行する。
【0119】
次いで、初期状態(ステップS−C1)において、参加リクエストを受信する(ステップS−CC1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0120】
次いで、参加リクエストを送信してきたノードに対し、参加レスポンスを送信し(ステップS−CC2)、m台の代表ノードのうち、任意の代表ノードに対し、電子証明書作成リクエストを送信する(ステップS−CC3)。この電子証明書作成リクエストには、ステップS−CB1で参加リクエストを送信してきたノードのノード情報が含まれる。
【0121】
次いで、初期状態(ステップS−C1)において、代表ノード指名リクエストを受信する(ステップS−CD1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0122】
次いで、代表ノードになることを拒否するか否かを確認する(ステップS−CD2)。その結果、代表ノードになっても問題ない場合(No)、代表ノードになるために、ステップS−CC1で代表ノード指名リクエストを送信してきたノードに対し、代表ノード指名レスポンスを送信し(ステップS−CD3−1)、後述の代表ノード初期動作(ステップS−F1)に移行する。一方、代表ノードになることを拒否する場合(Yes)は、代表ノードになることを拒否するために、ステップS−CD1で代表ノード指名リクエストを送信してきたノードに対し、代表ノード拒否の情報を付加し代表ノード指名レスポンスを送信し(ステップS−CD3−2)、一般ノード動作時の初期状態(ステップS−C1)に移行する。
【0123】
次いで、初期状態(ステップS−C1)において、電子証明書発行リクエストを受信する(ステップS−CE1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。次いで、ステップS−CE1で電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信する(ステップS−CE2)。
【0124】
図6は、代表ノード動作を示すものである。
【0125】
図6において、ステップS−D1は、代表ノード動作時の初期状態である。この初期状態から、ノードリストを読み出し、他のノードに対し、ノードリストを付加したkeep aliveメッセージを送信し(ステップS−DA1)、初期状態(ステップS−D1)に戻る。
【0126】
次いで、初期状態(ステップS−D1)において、他のノードから、ノードリストが付加されたkeep aliveメッセージを受信する(ステップS−DB1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0127】
次いで、ステップS−DB1で受信したkeep aliveメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新する(ステップS−DB2)。そして、ノードリストを読み出し、分散認証システムに参加するノード数が規定数mに達しているかどうかを確認する(ステップS−DB3)。
【0128】
その結果、分散認証システムに参加するノード数が規定数mに達していた場合(Yes)は、ノードリストを読み出し、代表ノードが離脱していないか確認し(ステップS−DB4)、代表ノードが離脱していた場合(Yes)、後述の代表ノード更新動作(ステップS−G1)に移行する。一方、代表ノードが離脱していなかった場合、初期状態(ステップS−D1)に移行する。
【0129】
一方、上記ステップS−DB3にて分散認証システムに参加するノード数が規定数mに達していなかった場合(No)は、前述の総意モード動作(ステップS−B1)に移行する。
【0130】
次いで、初期状態(ステップS−D1)において、代表ノードを離脱したい場合、他の代表ノードに対し、代表ノード離脱リクエストを送信する(ステップS−DC1)。そして、代表ノード離脱レスポンスを受信する(ステップS−DC2)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、後述の代表モード離脱動作(ステップS−H1)に移行する。
【0131】
次いで、初期状態(ステップS−D1)において、参加リクエストを受信する(ステップS−DD1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は次のステップに移行する。
【0132】
次いで、参加リクエストを送信してきたノードに対し、参加レスポンスを送信し(ステップS−DD2)、参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報となるランダム素数を生成する(ステップS−DD3)。そして、m台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの個人鍵の公開鍵を生成し(ステップS−DD4)、m台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの電子証明書を生成する(ステップS−DD5)。
【0133】
次いで、ステップS−DD3で生成した参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報と、ステップS−DD4で生成した参加リクエストを送信してきたノードの個人鍵の公開鍵と、ステップS−DD5で生成した参加リクエストを送信してきたノードの電子証明書を、参加リクエストを送信してきたノードに対し送信し(ステップS−DD6)、初期状態(ステップS−D1)に移行する。
【0134】
次いで、初期状態(ステップS−D1)において、電子証明書生成リクエストを受信する(ステップS−DE1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、前述のステップS−DD3に移行し、同様の処理を行う。
【0135】
次いで、初期状態(ステップS−D1)において、代表ノード離脱リクエストを受信する(ステップS−DF1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、代表ノード離脱レスポンスを送信し(ステップS−DF2)、後述の代表ノード更新動作(ステップS−G1)に移行する。
【0136】
次いで、初期状態(ステップS−D1)において、代表ノード指名確認メッセージを受信する(ステップS−DG1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、代表ノード指名確認レスポンスを送信し(ステップS−DG2)、後述の代表ノード初期動作(ステップS−F1)に移行する。ステップS−DG1で受信した代表ノード指名確認メッセージに記載のノードを代表ノードにすることを拒否する場合は、その情報を代表ノード指名確認レスポンスに付加する。
【0137】
次いで、初期状態(ステップS−D1)において、電子証明書発行リクエストを受信する(ステップS−DH1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、ステップS−DH1で電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信し(ステップS−DH2)、初期状態(ステップS−D1)に移行する。
【0138】
次いで、初期状態(ステップS−D1)において、分散認証システム電子証明書発行リクエストを受信する(ステップS−DI1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、ステップS−DI1で分散認証システム電子証明書発行リクエストを送信してきたノードに対し、分散認証システム電子証明書を付加した分散認証システム電子証明書発行レスポンスを送信し(ステップS−DI2)、初期状態(ステップS−D1)に移行する。
【0139】
図7は、署名確認動作を示すものである。
【0140】
図7において、ステップS−E1は、署名確認動作の初期状態である。この初期状態から、メッセージを送信してきたノードに対し、メッセージ送信元のノードの電子証明書発行リクエストを送信する(ステップS−E3)。または、メッセージを送信してきたノードの電子証明書を分散認証システム上で分散して保存している場合は、適切なノードに対し、電子証明書発行リクエストを送信する。なお、本ステップは、メッセージを送信してきたノードの電子証明書を既に保持していた場合はスキップしてもよい。
【0141】
次いで、電子証明書発行レスポンスを受信する(ステップS−E4)。この時、受信したメッセージの正当性を確認する場合は、初期状態(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。なお、ステップS−E3をスキップしていた場合は、本ステップもスキップする。
【0142】
次いで、代表ノードに対し、分散認証システム電子証明書発行リクエストを送信する(ステップS−E5)。本ステップは、分散認証システム電子証明書を既に保持していた場合はスキップしてもよい。
【0143】
次いで、分散認証システム電子証明書発行レスポンスを受信する(ステップS−E6)。この時、受信したメッセージの正当性を確認する場合は、初期状態(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。ステップS−E5をスキップしていた場合は、本ステップもスキップする。
【0144】
次いで、分散認証システム電子証明書に付加されている代表鍵の公開鍵を用い、電子証明書に付加されている電子署名をその代表鍵の公開鍵で復号し、電子証明書の正当性を確認する(ステップS−E7)。さらに、受信したメッセージに付加されている電子署名を電子証明書に付加されている個人鍵の公開鍵で復号し、メッセージの正当性を確認する。
【0145】
図8は、代表ノード初期動作を示すものである。
【0146】
図8において、ステップS−F1は、代表ノード初期動作時の初期状態である。この初期状態から、分散認証システムの代表鍵の秘密鍵の素となる情報となるランダム素数を生成し(ステップS−F2)、m台の代表ノード間で互いに連携し、分散認証システムの代表鍵の公開鍵を生成する(ステップS−F3)。そして、この時点のノードリストに対し、個人鍵の秘密鍵を用いて電子署名をし(ステップS−F4)、他の代表ノードに対し、電子署名済みのノードリストを送信する(ステップS−F5)。
【0147】
次いで、他の代表ノードから、ノードリストを受信する(ステップS−F6)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0148】
次いで、ステップS−F6で受信したノードリストに全代表ノードの電子署名が付加されているか確認する(ステップS−F7)。その結果、ステップS−F6で受信したノードリストに全代表ノードの電子署名が付加されていた場合(Yes)、ステップS−F8に移行する。一方、ステップS−F6で受信したノードリストに全代表ノードの電子署名が付加されていなかった場合(No)、前述のステップS−F4に移行し、同様の処理を繰り返し実行する。
【0149】
上記ステップS−F7にて、ステップS−F6で受信したノードリストに全代表ノードの電子署名が付加されていた場合、全代表ノードによる電子署名が完了したノードリストを、残存する旧代表ノードに送信し(ステップS−F8)、残存する旧代表ノードによる電子署名が付加されたノードリストを受信する(ステップS−F9)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0150】
次いで、ステップS−F9で受信したノードリストに、残存する旧代表ノード全てによる電子署名が付加されているか確認する(ステップS−F10)。その結果、ステップS−F9で受信したノードリストに全旧代表ノードの電子署名が付加されていた場合(Yes)、m台の代表ノード間で互いに連携し、分散認証システム電子証明書を作成し(ステップS−F11)、前述の代表ノード動作(ステップS−D1)に移行する。ステップS−F9で受信したノードリストに全代表ノードの電子署名が付加されていなかった場合(No)、前述のステップS−F8に移行し、同様の処理を繰り返し実行する。
【0151】
図9は、代表ノード更新動作を示すものである。
【0152】
図9において、ステップS−G1は、代表ノード更新動作時の初期状態である。この初期状態から、新たに代表ノードになるノードを選出し(ステップS−G2)、代表ノード指名確認メッセージを、他の代表ノードに送信する(ステップS−G3)。
【0153】
次いで、代表ノード指名確認レスポンスを受信する(ステップS−G4)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0154】
次いで、ステップS−G4で受信した代表ノード指名確認レスポンスに、ステップS−G2で選出したノードを拒否するメッセージが付加されているか確認する(ステップS−G5)。その結果、ステップS−G4で受信した代表ノード指名確認レスポンスに、ステップS−G2で選出したノードを拒否するメッセージが付加されていた場合(Yes)、初期状態(ステップS−G1)に移行する。
【0155】
一方、ステップS−G4で受信した代表ノード指名確認レスポンスに、ステップS−G2で選出したノードを拒否するメッセージが付加されていなかった場合(No)、ステップS−G2で選出したノードに対し、代表ノード指名リクエストを送信する(ステップS−G6)。
【0156】
次いで、ステップS−G2で選出したノードから、代表ノード指名レスポンスを受信する(ステップS−G7)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0157】
次いで、ステップS−G7で受信した代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されているか確認する(ステップS−G8)。その結果、ステップS−G7で受信した代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されていた場合(Yes)、初期状態(ステップS−G1)に移行する。
【0158】
一方、ステップS−G7で受信した代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されていなかった場合(No)、代表ノード数が規定数mに達しているかどうか確認する(ステップS−G9)。その結果、代表ノード数が規定数mに達していた場合(Yes)は、前述の代表ノード初期動作(ステップS−F1)に移行する。一方、代表ノード数が規定数mに達していなかった場合(No)は、初期状態(ステップS−G1)に移行する。
【0159】
図10は、代表ノード離脱動作を示すものである。
【0160】
図10において、ステップS−H1は、代表ノード離脱動作時の初期状態である。この状態のときは、代表ノードから旧代表ノードとして認知される。次いで、代表ノードから、全ての代表ノードの電子署名が付加されたノードリストを受信する(ステップS−H2)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0161】
次いで、ステップS−G2で受信したノードリストに、電子署名を付加し(ステップS−H3)、ステップS−G2で全ての代表ノードの電子署名が付加されたノードリストを送信してきた代表ノードに対し、ステップS−G3で電子署名を付加したノードリストを送信する(ステップS−H4)。
【0162】
次に、本実施例の効果について説明する。
【0163】
本実施例は、分散認証システムに参加するノードのうち規定数m台のノードが代表ノードとなり、分散認証システムの代表鍵と分散認証システム電子証明書の発行、及び分散認証システムに参加するノードの個人鍵及び電子証明書の発行を、m台の代表ノードが互いに連携することによって実現し、さらに代表ノードの指名・離脱を柔軟にすることによって、悪意のある攻撃者からの攻撃に対し、攻撃対象を分散させることができ、かつ攻撃されたとしても、代表ノードを次々と変化させることによって、分散認証システムとしての機能を失わずに、認証サービスを続けることができる。
【0164】
また、本実施例は、分散認証システムに参加するノードのうち規定数m台のノードが代表ノードとなり、分散認証システムの代表鍵と分散認証システム電子証明書の発行、及び分散認証システムに参加するノードの個人鍵及び電子証明書の発行を、m台の代表ノードが互いに連携することによって実現し、さらに代表ノードの指名・離脱を柔軟にすることによって、ある特定の場所に認証局が存在する場合と同等の安全性を持った認証サービスを提供することができる。
【実施例2】
【0165】
次に、本発明の第2の実施例について図面を参照して詳細に説明する。
【0166】
図11を参照すると、本実施例は、第1の実施例と同様に、受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7と、を有する。
【0167】
更に、本実施例は、分散認証システム用プログラムを有する。
【0168】
分散認証システム用プログラムは、受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7と、に読み込まれ受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7の動作を制御する。受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7は、分散認証システム用プログラムの制御により第1の実施例における分散認証システムによる処理と同一の処理を実行する。
【0169】
次に、本実施例の効果について説明する。
【0170】
本実施例では、第1の実施例の効果と同様の効果を得るために、分散認証システム用プログラムを用いることによりコンピュータを分散認証システムとして動作させることができる。
【0171】
以上、本発明の実施例を詳細に説明したが、本発明は、代表的に例示した上述の実施例に限定されるものではなく、当業者であれば、特許請求の範囲の記載内容に基づき、本発明の要旨を逸脱しない範囲内で種々の態様に変形、変更することができる。これらの変形例や変更例も本発明の権利範囲に属するものである。
【0172】
例えば、上記の分散認証システムを構成する各部の少なくとも一部の機能を、プログラムコードを用いて実現する場合、かかるプログラムコード及びこれを記録する記録媒体は、本発明の範疇に含まれる。この場合、オペレーティングシステム等の他のソフトウェアと共同して上記機能が実現される場合は、それらのプログラムコードも含まれる。
【図面の簡単な説明】
【0173】
【図1】本発明の第1の実施例に係る分散認証システムの全体構成を示すブロック図である。
【図2】本発明の第1の実施例に係る分散認証システムで用いる分散認証システム電子証明書の一例を示す図である。
【図3】本発明の第1の実施例に係る分散認証システムの動作を示す流れ図である。
【図4】本発明の第1の実施例に係る分散認証システムの総意モード動作を示す流れ図である。
【図5】本発明の第1の実施例に係る分散認証システムの一般ノード動作を示す流れ図である。
【図6】本発明の第1の実施例に係る分散認証システムの代表ノード動作を示す流れ図である。
【図7】本発明の第1の実施例に係る分散認証システムの署名確認動作を示す流れ図である。
【図8】本発明の第1の実施例に係る分散認証システムの代表ノード初期動作を示す流れ図である。
【図9】本発明の第1の実施例に係る分散認証システムの代表ノード更新動作を示す流れ図である。
【図10】本発明の第1の実施例に係る分散認証システムの代表ノード離脱動作を示す流れ図である。
【図11】本発明の第2の実施例に係る分散認証システムの全体構成を示すブロック図である。
【符号の説明】
【0174】
1 受信部
2 モード管理部
3 一般ノード機能部
4 代表ノード機能部
5 共通機能部
6 署名付加部
7 送信部
9 分散認証システム用プログラム
31 参加動作部
32 仮鍵生成部
41 ランダム素数生成部
42 代表鍵生成部
43 代表ノード指名・離脱機能部
44 他ノード電子証明書生成部
51 keep alive動作部
52 アプリケーション部
53 個人鍵生成部
54 電子署名確認部
【技術分野】
【0001】
本発明は、分散認証システム、分散認証方法、及び分散認証プログラムに係り、特にメッセージに付された電子証明書の正当性を検証し、その電子証明書の公開鍵を用いて電子署名を復号して当該メッセージの正当性を検証する認証技術に関する。
【背景技術】
【0002】
インターネット上では、P2P(Peer to Peer)技術を用いたファイル共有ネットワークにより、テキストコンテンツだけでなく画像や音声、映像といった様々なコンテンツがユーザ間で直接やりとりされるようになってきた。
【0003】
しかし、ファイル共有ネットワークへの参加を完全に自由にしてしまうと不正ノードの参加や不正コンテンツ流通の原因になる。そこで、従来はファイル共有ネットワークに認証技術を適用することでこれを回避してきた。
【0004】
例えば、認証局を用いるものがある。これは、あるノードがファイル共有ネットワークに参加するために事前に認証局に電子証明書を発行してもらい、電子署名を用いてノード間で相互認証するものである。
【0005】
なお、本発明に関連する先行技術文献としては、以下のものがある。
【特許文献1】特開2004−159298号公報
【特許文献2】特開2004−171274号公報
【特許文献3】特開2004−254271号公報
【特許文献4】特開2006−101277号公報
【特許文献5】特開平11−015374号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、前述した従来の認証局を用いた技術では、認証局はネットワーク上の特定の場所に存在するため攻撃対象になりやすいという問題があった。その理由は、認証局は、あらゆる場所に存在するノードから接続可能にするためにネットワーク上の特定の場所に存在し、従って悪意のある攻撃者にも認証局の場所が判明してしまうため、容易に攻撃されてしまうというセキュリティリスクがあることによる。
【0007】
本発明の目的は、認証局の場所が判明して容易に攻撃されやすいというセキュリティリスクを抑制し、認証局への攻撃耐性を向上させることができる分散認証システムを提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するため、本発明に係る分散認証システムは、ひとつまたは複数のノードで構成される分散認証システムであって、前記分散認証システムに参加するノードのうち所定数台のノードが、前記分散認証システムを代表する代表ノードとなり、前記代表ノードが、互いに連携することによって、前記分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、前記分散認証システムに参加するノードの電子署名で用いる個人鍵と、前記分散認証システムに参加するノードの電子証明書とを発行することを特徴とする。
【0009】
本発明に係る分散認証方法は、ひとつまたは複数のノードで構成される分散認証システムであり、前記分散認証システムに参加するノードのうち所定数台のノードが前記分散認証システムを代表する代表ノードとなり、前記代表ノードが、互いに連携することによって、前記分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、前記分散認証システムに参加するノードの電子署名で用いる個人鍵と、前記分散認証システムに参加するノードの電子証明書とを発行する分散認証システムの分散認証方法であって、(A)前記分散認証システムへの参加を開始するステップと、(B)前記分散認証システムに参加する全ノード数が所定数未満の場合、総意モードの動作を行うステップと、(C)前記分散認証システムに参加する全ノード数が所定数以上の場合、代表モードの動作として、前記代表ノード以外の一般ノードのときの動作を行うステップと、(D)前記代表モードの動作として、前記代表ノードのときの動作を行うステップと、(E)他ノードから受信したメッセージの電子署名を確認するときの動作を行うステップと、(F)前記代表ノードの初期の動作を行うステップと、(G)前記代表ノードを更新するときの動作を行うステップと、(H)前記代表ノードを離脱するときの動作を行うステップとを有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、認証局の場所が判明して容易に攻撃されやすいというセキュリティリスクを抑制し、認証局への攻撃耐性を向上させることができる分散認証システムを提供することができる。
【発明を実施するための最良の形態】
【0011】
以下、本発明の実施形態について、添付図を参照して説明する。
【0012】
本実施形態は、独立した認証局が無い状況において、ファイル共有ネットワークに参加するノードが連携することで認証局になり、ファイル共有ネットワークに新たに参加するノードの電子署名のための鍵(代表鍵、個人鍵)の発行、及び電子証明書(分散認証システム電子証明書、ノードの電子証明書)の保存を実施する分散認証システム、分散認証方法、及びプログラムに関するものである。
【0013】
本実施形態において、分散認証システム電子証明書は、認証局の電子証明書に対応し、後述するように、代表鍵の公開鍵を含み、分散認証システムの電子署名は、認証局の電子署名に対応し、代表鍵の秘密鍵で暗号化されたものである。また、ノードの電子証明書は、後述するように、個人鍵の公開鍵と、分散認証システムの電子署名とを含み、ノードの電子署名は、個人鍵の秘密鍵で暗号化されたものである。
【0014】
ここで、ノードの電子証明書に含まれる分散認証システムの電子署名を、分散認証システム電子証明書に含まれる代表鍵の公開鍵で復号化することにより、当該ノードの電子証明書の正当性が検証可能となる。また、ノードからの送信メッセージに付加される当該ノードの電子署名を、当該ノードの電子証明書に含まれる個人鍵の公開鍵で復号化することにより、当該メッセージの正当性が検証可能となる。その詳細は後述する。
【0015】
本実施形態の分散認証システムは、ひとつまたは複数のノードで構成される。分散認証システムに参加するノードのうち規定数台のノードが代表ノードとなる。規定数台の代表ノードは、互いに連携することによって、分散認証システムの代表鍵と、分散認証システム電子証明書と、分散認証システムに参加するノードの個人鍵と、分散認証システムに参加するノードの電子証明書とを発行する機能を有する。
【0016】
本実施形態の分散認証システムを構成するノードは、他ノードから送られてくるデータを受信する受信部と、分散認証システムを構成するノードの情報を含むノードリストを更新可能に保存するノード情報保存部と、ノードリストに基づいて、前記分散認証システムのモードとして、前記分散認証システムに参加する全ノード数が所定数未満のときの総意モードと、前記分散認証システムに参加する全ノード数が所定数以上のときの代表モードとを管理するモード管理部と、代表モードの際に代表ノードのときの動作を行う代表ノード機能部と、代表モードの際に代表ノード以外の一般ノードのときの動作を行う一般ノード機能部と、総意モード及び代表モードに共通の動作を行う共通機能部と、代表ノード機能部、一般ノード機能部、及び共通機能部から渡される他ノードへのデータに電子署名を付加する署名付加部と、電子署名が付加されたデータを前記他ノードに送信する送信部と、を有する。
【0017】
一般ノード機能部は、ノードが一般ノードである場合に、仮鍵を生成する機能を有する仮鍵生成部と、分散認証システムに参加するために参加リクエストを他の既に分散認証システムに参加しているノードに参加リクエストを送信する機能を有する参加動作部と、を有する。
【0018】
代表ノード機能部は、ノードが代表ノードである場合に、他の代表ノードと互いに連携し、分散認証システムの代表鍵と分散認証システム電子証明書を生成する機能を有する代表鍵生成部と、他のノードからの参加リクエストまたは電子証明書生成リクエストを受信し、他のノードの個人鍵と電子証明書を生成する機能を有する他ノード電子証明書生成部と、代表ノードを離脱する機能及び代表ノードが規定数より少なくなった場合に代表ノードを指名する機能を有する代表ノード指名・離脱機能部と、分散認証システムの代表鍵と他のノードの個人鍵の秘密鍵の素となるランダム素数を生成する機能を有するランダム素数生成部と、を有する。
【0019】
共通機能部は、ノードが一般ノードまたは代表ノードの場合に、キープアライブ(keep alive)動作により他のノードとノードリストを交換する機能を有するキープアライブ動作部と、分散認証システムを利用するアプリケーションを実施する機能を有するアプリケーション部と、規定数台の代表ノードから受信する個人鍵の秘密鍵の素となる情報から個人鍵の秘密鍵を生成する機能を有する個人鍵生成部と、他のノードから受信するメッセージに付加されている電子署名の正当性を確認する機能を有する電子署名確認部と、を有する。
【0020】
受信部は、受信したメッセージをモード管理部へ送る機能を有する。
【0021】
モード管理部は、ノード情報保存部に保存されているノードリストを読み出す機能と、分散認証システムに参加しているノード数を確認する機能と、分散認証システムのモードを確認する機能と、を有する。さらに、モード管理部は、自ノードが代表ノードであるか、一般ノードであるか状態管理する機能を有する。
【0022】
代表ノードは、他の代表ノードと互いに連携し、分散認証システムの代表鍵と分散認証システム電子証明書を生成する機能と、他のノードからの参加リクエストまたは電子証明書生成リクエストを受信し、他のノードの個人鍵と電子証明書を生成する機能と、代表ノードを離脱する機能と、代表ノードが規定数より少なくなった場合に代表ノードを指名する機能と、分散認証システムの代表鍵と他のノードの個人鍵の秘密鍵の素となるランダム素数を生成する機能と、キープアライブ動作により他のノードとノードリストを交換する機能と、分散認証システムを利用するアプリケーションを実施する機能と、規定数台の代表ノードから受信する個人鍵の秘密鍵の素となる情報から個人鍵の秘密鍵を生成する機能と、他のノードから受信するメッセージに付加されている電子署名の正当性を確認する機能と、を有する。
【0023】
ノードリストは、分散認証システムに参加している全ノードのノード情報と、代表ノード情報と、を有する。ノード情報は、ノードのIDと、ノードのIPアドレスと、ポート番号と、代表ノード情報と、旧代表ノード情報と、を含む。代表ノード情報は、分散認証システムを代表する代表ノードがどのノードであるかという情報を含む。旧代表ノード情報は、過去に分散認証システムを代表する代表ノードがどのノードであったかという情報を含む。
【0024】
仮鍵は、分散認証システムによって発行された鍵ではなく、各ノードが生成する鍵であって、新規に分散認証システムに参加する場合と、総意モードの場合に、他ノードへの全てのメッセージに付加される電子署名に利用される。
【0025】
鍵は、公開鍵暗号系における秘密鍵、公開鍵のことであり、鍵は秘密鍵と公開鍵のセットで存在するものであって、分散認証システムの代表鍵は代表鍵の秘密鍵と代表鍵の公開鍵から成り、あるノードの個人鍵は個人鍵の秘密鍵と個人鍵の公開鍵から成る。
【0026】
分散認証システムの代表鍵は、分散認証システムを代表する規定数台の代表ノードが互いに連携して作成する鍵であって、ノードリストと、分散認証システムに参加するノードの電子証明書に分散認証システムの電子署名を付加する場合に使用される。ただし、分散認証システムの代表鍵の秘密鍵は、複数の代表ノードで分散して保存され、分散認証システム上のどのノードも分散認証システムの代表鍵の秘密鍵を知ることはできない。一方、分散認証システムの代表鍵の公開鍵は、分散認証システム上に公開され、分散認証システム上のどのノードも参照することができる。
【0027】
分散認証システムに参加するノードの電子証明書とは、分散認証システムを代表する規定数台の代表ノードが互いに連携して作成する個人鍵の公開鍵と、分散認証システムに参加するノードの情報と、分散認証システムを代表する規定数台の代表ノードが互いに連携して作成する個人鍵の公開鍵と分散認証システムに参加するノードの情報のダイジェスト情報に分散認証システムの代表鍵による電子署名を付加したものである。
【0028】
ダイジェスト情報とは、元になる情報の要約情報を指し、元になる情報に一方向関数を適用することで生成される。
【0029】
さらに、モード管理部は、ノード情報保存部に保存されているノード情報を定期的に読み出し、分散認証システムに参加するノード数が規定数未満であるかそうでないかを確認する機能を有し、分散認証システムに参加するノード数が規定数未満であった場合、ノードを総意モードで動作させ、分散認証システムに参加するノード数が規定数以上であった場合、ノードを代表モードで動作させ、さらに代表モードの場合、代表ノードに指名されていた場合、ノードを代表ノードとして動作させ、代表ノードに指名されていなかった場合、ノードを一般ノードとして動作させる。
【0030】
さらに、モード管理部は、総意モードにおいて、ノード情報保存部に保存されているノードリストを確認し、分散認証システムに参加している全ノード数が規定数に到達していた場合、ノードを代表モードに移行させる機能を有する。
【0031】
さらに、モード管理部は、代表ノード機能部に、分散認証システムの代表鍵を生成するよう指示する機能と、一般ノード機能部に、分散認証ネットワークに改めて参加し分散認証システムの発行する電子証明書及び鍵を得るよう指示する機能と、代表ノード機能部に鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する機能と、代表ノード機能部に、規定数台の代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するよう指示する機能と、を有する。
【0032】
さらに、モード管理部は、受信したメッセージを適切な機能部へ振り分けを行う機能を有する。
【0033】
参加動作部は、自ノードが新規に分散認証システムに参加する場合に、仮鍵の公開鍵を付加した参加リクエストを送信する機能と、参加リクエストを受信した場合に参加リクエストに付加されている仮鍵の公開鍵を用いて電子署名を確認し、改ざんがない場合は参加レスポンスを送信する機能と、を有する。ただし、参加動作部は、分散認証システムが総意モードであった場合、参加レスポンスに自ノードの仮鍵の公開鍵と、ノードリストを付加し、署名付加部により仮鍵の秘密鍵で電子署名をした上で、参加レスポンスを送信し、分散認証システムが代表モードであった場合、参加レスポンスには参加リクエストを受理した旨のメッセージを、自ノードの個人鍵の秘密鍵で電子署名をし、参加レスポンスを送信し、さらに、参加動作部は、ノード情報保存部からノードリストを読み出し、代表ノードを確認し、ある代表ノードに対し、参加リクエストを送信してきたノードのノード情報が付加した電子証明書生成リクエストを送信する機能を有する。
【0034】
仮鍵生成部は、仮鍵を生成する機能と、生成した仮鍵を自ノードのノード情報と共にノード情報保存部に保存する機能を有する。
【0035】
ランダム素数生成部は、代表鍵生成部と他ノード電子証明書生成部からのリクエストを受けて、ランダムな素数を生成する機能と、代表鍵生成部と他ノード電子証明書生成部に生成したランダムな素数を渡す機能とを有する。
【0036】
代表鍵生成部は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、モード管理部から分散認証システムの代表鍵を生成するように指示を受けると、他の規定数台の分散認証システムを代表する代表ノードと連携し、ランダム素数生成部が生成した素数を素に、代表鍵の公開鍵の素となる情報を他のノードに知らせることなく、マルチパーティプロトコルを用いて、分散認証システムの代表鍵の公開鍵を生成する機能と、ノードが代表ノードでなくなるまで代表鍵の生成に利用した素数を保存する機能とを有する。
【0037】
さらに、代表鍵生成部は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、モード管理部から規定数台の代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するように指示を受けると、他の規定数台の分散認証システムを代表する代表ノードと連携し、代表鍵の素となる情報を他のノードに知らせることなく、ノードリストに分散認証システムの代表鍵の秘密鍵を用いた電子署名を付加する機能を有する。
【0038】
代表ノード指名・離脱機能部は、自ノードが代表ノードであり代表ノードを離脱したい場合に、ノード情報保存部からノードリストを読み出し、代表ノード離脱リクエストを他の代表ノードに送信する機能と、自ノードが代表ノードであった場合に、代表ノード離脱リクエストを受信すると、代表ノード離脱リクエストを送信してきた代表ノードに対し、代表ノード離脱レスポンスを送信する機能と、代表ノードが規定数未満である状態から、代表ノードを規定数台とするため、ノード情報保存部からノードリストを読み出し、適当な一般ノードを選出する機能と、選出した一般ノードのノード情報を記載した代表ノード指名確認メッセージを他の代表ノード全てに送信する機能と、代表ノード指名確認メッセージを受信した場合に、選出された一般ノードのノード情報を確認し、可否情報を含む代表ノード指名確認レスポンスを返送する機能と、自身を除く全ての代表ノードから代表ノード指名確認レスポンスを受信した場合に、選出した一般ノードに代表ノード指名リクエストを送信する機能と、自ノードが一般ノードでありノード代表ノード指名リクエストを受信した場合に、可否情報を含む代表ノード指名レスポンスを返送する機能と、代表ノード指名レスポンスを受信した場合に、新しく代表ノードとなるノードのノード情報を、自ノードを除く全ての代表ノードに送信する機能とを有する。
【0039】
さらに、代表ノード指名・離脱機能部は、上記の動作を代表ノードが規定数台になるまで繰り返す機能と、代表ノード機能部に、個人鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する機能と、代表鍵を更新する前まで代表ノードであった旧代表ノードに対し、現在代表ノードであるノードによる電子署名が修了しているノードリストに電子署名をするよう指示する機能と、代表ノード機能部に、規定数台の代表ノード及び規定数台の旧代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するよう指示する機能と、代表鍵の公開鍵とセットで分散認証ネットワーク電子証明書として、ノード情報保存部に保存する機能とを有する。
【0040】
他ノード電子証明書生成部は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、電子証明書生成リクエストを受信すると、他の代表ノードと連携し、ランダム素数生成部が生成する素数を素に、電子証明書に付随する個人鍵の素となる情報を他のノードに知らせることなく、マルチパーティプロトコルを用いて、電子証明書リクエストに記載のノードの個人鍵を生成する機能と、代表鍵生成部と連携し、前記ノードのノード情報と個人鍵から電子証明書を生成する機能と、個人鍵の秘密鍵の素となる情報と公開鍵と、電子証明書を電子証明書生成リクエストに記載のノードに送信する機能を有する。
【0041】
キープアライブ動作部は、他のノードに対し定期的にキープアライブメッセージを送信する機能と、他のノードから定期的にキープアライブメッセージを受信することで通信路のつながりをチェックする機能と、キープアライブメッセージに付加されたノードリストとノード情報保存部から読み出したノードリストを比較し、ノードリストを最新の情報に更新する機能と、キープアライブメッセージに対し一定期間レスポンスがない場合は該当ノードは分散認証システムから離脱したと判定し、ノードリストを更新し、キープアライブ動作を用いて他のノードに最新の情報を伝える機能と、代表ノードが離脱したと判定した場合に、ノード管理部に代表ノードが離脱したことを送信する機能とを有する。
【0042】
アプリケーション部は、分散認証システムを利用するアプリケーションの処理をする機能を有する。
【0043】
個人鍵生成部は、規定数台の代表ノードから受信する個人鍵の秘密鍵の素となる規定数個の情報から個人鍵の秘密鍵を生成する機能と、受信した公開鍵と秘密鍵が有効に動作するか確認する機能と、受信した電子証明書の有効性を確認する機能とを有する。
【0044】
電子署名確認部は、メッセージを受信した場合にメッセージ送信元を確認し、分散認証システムにメッセージ送信元のノードの電子証明書発行リクエストを送信する機能と、メッセージ送信元のノードの電子証明書を得た場合に、電子証明書に付加されている分散認証システムの代表鍵による電子署名を確認するため、分散認証システムに分散認証システム電子証明書発行リクエストを送信する機能と、分散認証システム電子証明書に付加されている代表鍵の公開鍵を得た場合に、電子証明書に付加されている電子署名を公開鍵で復号し、電子証明書の正当性を確認する機能と、受信したメッセージに付加されている電子署名を電子証明書に付加されている公開鍵で復号し、メッセージの正当性を確認する機能と、他のノードから電子証明書発行リクエストを受信した場合に、該当する電子証明書をノード情報保存部から読み出し、電子証明書発行レスポンスを返送する機能と、他のノードから分散認証システム電子証明書発行リクエストを受信した場合に、該当する公開鍵をノード情報保存部から読み出し、分散認証システム電子証明書発行レスポンスを送信する機能とを有する。
【0045】
署名付加部は、分散認証システムが総意モードの場合にノード情報保存部に保存されている仮鍵を使用し、他の機能部からのメッセージに電子署名を付加する機能と、分散認証システムによって電子証明書の発行を受けていない場合にノード情報保存部に保存されている仮鍵を使用し、他の機能部からのメッセージに電子署名を付加する機能と散認証システムが総意モードの場合でなく、分散認証システムによって電子証明書の発行を受けている場合に、ノード情報保存部に保存されている個人鍵を使用し、他の機能部からのメッセージに電子署名を付加する機能と、を有する。
【0046】
送信部は、署名付加部からのメッセージを受け、メッセージに記載された宛先のノードに対し、メッセージを送信する機能を有する。
【0047】
ノード情報保存部は、自ノードのノード情報、仮鍵、電子証明書、ノードリスト、分散認証ネットワーク電子証明書、を保存する機能を有する。
【0048】
本実施形態に係る分散認証システムの分散認証方法は、(A)分散認証システム参加を開始するステップと、(B)総意モードのときの動作を行うステップと、(C)一般ノードのときの動作を行うステップと、(D)代表ノードのときの動作を行うステップと、(E)受信したメッセージの電子署名を確認するときの動作を行うステップと、(F)代表ノードの初期の動作を行うステップと、(G)代表ノードを更新するときの動作を行うステップと、(H)代表ノードを離脱するときの動作を行うステップとを有する。
【0049】
前記(A)分散認証システムに参加するを開始するステップは、(A1)初期状態ステップと、(A2)仮鍵を生成するステップと、(A3)仮鍵及び、ノード情報を保存するステップと、(A4)他の既に分散認証システムに参加しているノードに対し、参加リクエストを送信するステップと、(A5)分散認証システムのモードを確認するステップと、(A6)参加依頼レスポンスとして、参加依頼リクエストを送信したノードの仮鍵及びノードリストを受信し、ノードリストを更新するステップと、(A7)ノードリストを読み出し、ノードリストに記載の全ノードの仮鍵を保持しているか確認するステップと、(A8)参加レスポンスを受信するステップと、(A9)規定数台の代表ノードから個人鍵の秘密鍵の素となる情報と、電子証明書を受信するステップと、(A10)ステップA9で受信した個人鍵の秘密鍵の素となる情報から個人鍵を生成するステップとを有する。
【0050】
前記(B)総意モードのときの動作を行うステップは、(B1)総意モードの動作時の初期状態ステップと、(B2)キープアライブ動作により、他の分散認証システムに参加するノードとノードリストの交換を行うステップと、(B3)ノードリストを読み出し、分散認証システムに参加するノード数が規定数に達しているかどうかを確認するステップとを有する。
【0051】
前記(C)一般ノードのときの動作を行うステップは、(C1)一般ノード動作の初期状態ステップと、(C2)ノードリストを読み出し、他のノードに対し、ノードリストを付加したキープアライブメッセージを送信するステップと、(C3)他のノードから、ノードリストが付加されたキープアライブメッセージを受信するステップと、(C4)ステップC3で受信したキープアライブメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新するステップと、(C5)ノードリストを読み出し、分散認証システムに参加するノード数が規定数に達しているかどうかを確認するステップと、(C6)参加リクエストを受信するステップと、(C7)参加リクエストを送信してきたノードに対し、参加レスポンスを送信するステップと、(C8)規定数台の代表ノードのうち、任意の代表ノードに対し、電子証明書作成リクエストを送信するステップと、(C9)代表ノード指名リクエストを受信するステップと、(C10)代表ノードになるかどうか選択するステップと、(C11)代表ノードになるために、ステップC9で代表ノード指名リクエストを送信してきたノードに対し、代表ノード指名レスポンスを送信するステップと、(C12)代表ノードになることを拒否するために、ステップC9で代表ノード指名リクエストを送信してきたノードに対し、代表ノード拒否の情報を付加し代表ノード指名レスポンスを送信するステップと、(C13)電子証明書発行リクエストを受信するステップと、(C14)ステップC13で電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信するステップとを有する。
【0052】
前記(D)代表ノードのときの動作を行うステップは、(D1)代表ノード動作時の初期状態ステップと、(D2)ノードリストを読み出し、他のノードに対し、ノードリストを付加したキープアライブメッセージを送信するステップと、(D3)他のノードから、ノードリストが付加されたキープアライブメッセージを受信するステップと、(D4)ステップD3で受信したキープアライブメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新するステップと、(D5)ノードリストを読み出し、分散認証システムに参加するノード数が規定数に達しているかどうかを確認するステップと、(D6)ノードリストを読み出し、代表ノードが離脱していないか確認するステップと、(D7)代表ノードを離脱したい場合、他の代表ノードに対し、代表ノード離脱リクエストを送信するステップと、(D8)代表ノード離脱レスポンスを受信するステップと、(D9)参加リクエストを受信するステップと、(D10)参加リクエストを送信してきたノードに対し、参加レスポンスを送信するステップと、(D11)参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報となるランダム素数を生成するステップと、(D12)規定数台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの個人鍵の公開鍵を生成するステップと、(D13)規定数台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの電子証明書を生成するステップと、(D14)ステップD11で生成した参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報と、ステップD12で生成した参加リクエストを送信してきたノードの個人鍵の公開鍵と、ステップD13で生成した参加リクエストを送信してきたノードの電子証明書を、参加リクエストを送信してきたノードに対し送信するステップと、(D15)電子証明書生成リクエストを受信するステップと、(D16)代表ノード離脱リクエストを受信するステップと、(D17)代表ノード離脱レスポンスを送信するステップと、(D18)代表ノード指名確認メッセージを受信するステップと、(D19)代表ノード指名確認レスポンスを送信するステップと、(D20)電子証明書発行リクエストを受信するステップと、(D21)ステップD20で電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信するステップと、(D22)分散認証システム電子証明書発行リクエストを受信するステップと、(D23)ステップD22で分散認証システム電子証明書発行リクエストを送信してきたノードに対し、分散認証システム電子証明書を付加した分散認証システム電子証明書発行レスポンスを送信するステップとを有する。
【0053】
前記(E)受信したメッセージの電子署名を確認するときの動作を行うステップは、(E1)署名確認動作の初期状態ステップと、(E2)メッセージ送信元のノードの電子証明書発行リクエストを送信するステップと、(E3)電子証明書発行レスポンスを受信するステップと、(E4)代表ノードに対し、分散認証システム電子証明書発行リクエストを送信するステップと、(E5)分散認証システム電子証明書発行レスポンスを受信するステップと、(E6)分散認証システム電子証明書に付加されている代表鍵の公開鍵を用い、電子証明書に付加されている電子署名を公開鍵で復号し、電子証明書の正当性を確認し、さらに、受信したメッセージに付加されている電子署名を電子証明書に付加されている公開鍵で復号し、メッセージの正当性を確認するステップとを有する。
【0054】
前記(F)代表ノードの初期の動作を行うステップは、(F1)代表ノード初期動作時の初期状態ステップと、(F2)分散認証システムの代表鍵の秘密鍵の素となる情報となるランダム素数を生成するステップと、(F3)規定数台の代表ノード間で互いに連携し、分散認証システムの代表鍵の公開鍵を生成するステップと、(F4)この時点のノードリストに対し、個人鍵の秘密鍵を用いて電子署名をするステップと、(F5)他の代表ノードに対し、電子署名済みのノードリストを送信するステップと、(F6)他の代表ノードから、ノードリストを受信するステップと、(F7)ステップF6で受信したノードリストに全代表ノードの電子署名が付加されているか確認するステップと、(F8)全代表ノードによる電子署名が完了したノードリストを、残存する旧代表ノードに送信するステップと、(F9)残存する旧代表ノードによる電子署名が付加されたノードリストを受信するステップと、(F10)ステップF9で受信したノードリストに、残存する旧代表ノード全てによる電子署名が付加されているか確認するステップと、(F11)規定数台の代表ノード間で互いに連携し、分散認証システム電子証明書を作成するステップとを有する。
【0055】
前記(G)代表ノードを更新するときの動作を行うステップは、(G1)代表ノード更新動作時の初期状態ステップと、(G2)新たに代表ノードになるノードを選出するステップと、(G3)代表ノード指名確認メッセージを、他の代表ノードに送信するステップと、(G4)代表ノード指名確認レスポンスを受信するステップと、(G5)ステップS−F4で受信した代表ノード指名確認レスポンスに、ステップG2で選出したノードを拒否するメッセージが付加されているか確認するステップと、(G6)ステップG2で選出したノードに対し、代表ノード指名リクエストを送信するステップと、(G7)ステップG2で選出したノードから、代表ノード指名レスポンスを受信するステップと、(G8)ステップG7で受信した代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されているか確認するステップと、(G9)代表ノード数が規定数に達しているかどうか確認するステップとを有する。
【0056】
前記(H)代表ノードを離脱するときの動作を行うステップは、(H1)代表ノード離脱動作時の初期状態ステップと、(H2)代表ノードから、全ての代表ノードの電子署名が付加されたノードリストを受信するステップと、(H3)ステップH2で受信したノードリストに、電子署名を付加するステップと、(H4)ステップH2で全ての代表ノードの電子署名が付加されたノードリストを送信してきた代表ノードに対し、ステップH3で電子署名を付加したノードリストを送信するステップとを有する。
【0057】
本実施形態の分散認証プログラムは、上記分散認証方法を、コンピュータに実行させるためのプログラムである。
【0058】
以上説明したように、本実施の形態では、分散認証システムに参加するノードのうち規定数台のノードが代表ノードとなり、分散認証システムの代表鍵とその分散認証システム電子証明書を発行し、分散認証システムに参加するノードの個人鍵及びその電子証明書を発行する。規定数台の代表ノードは、互いに連携してマルチパーティプロトコルを利用することによって、上記の鍵及び電子証明書を発行する処理を分担して行うが、他のノードの秘密鍵を知ることはできない。全ノード数が規定数より少ない場合は、総意モードとなり、代表鍵は生成されず、仮鍵を相互に交換して認証する。それ以外では、代表モードとなり、代表ノードが選出され、代表ノードは定期的に変更され、新規に代表ノードになるノードを、代表ノードを継続するノードが承認することで代表鍵が継承される。
【0059】
従って、本実施形態によれば、次のような効果を奏することができる。
【0060】
第一の効果は、認証局の攻撃耐性が向上することにある。その理由は、分散認証システムに参加するノードのうち規定数台のノードが代表ノードとなり、分散認証システムの代表鍵と分散認証システム電子証明書の発行、及び分散認証システムに参加するノードの個人鍵及び電子証明書の発行を、規定数台の代表ノードが互いに連携することによって実現し、さらに代表ノードの指名・離脱を柔軟にすることによって、悪意のある攻撃者からの攻撃に対し、攻撃対象を分散させることができ、かつ攻撃されたとしても、代表ノードを次々と変化させることによって、分散認証システムとしての機能を失わずに、認証サービスを続けることができるためである。
【0061】
第二の効果は、特定の認証局なしに、特定の認証局がある場合と同等の安全性をもった認証サービスを提供することができることにある。その理由は、分散認証システムに参加するノードのうち規定数台のノードが代表ノードとなり、分散認証システムの代表鍵と分散認証システム電子証明書の発行、及び分散認証システムに参加するノードの個人鍵及び電子証明書の発行を、規定数台の代表ノードが互いに連携することによって実現し、さらに代表ノードの指名・離脱を柔軟にすることによって、ある特定の場所に認証局が存在する場合と同等の安全性を持った認証サービスを提供することができるためである。
【実施例1】
【0062】
まず、本発明の第1の実施例について、図面を参照して詳細に説明する。
【0063】
図1を参照すると、本実施例に係る分散認証システムを構成するノードは、受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7と、を有する。
【0064】
一般ノード機能部3は、参加動作部31と、仮鍵生成部32と、を有する。
【0065】
代表ノード機能部4は、ランダム素数生成部41と、代表鍵生成部42と、代表ノード指名・離脱機能部43と、他ノード電子証明書生成部44と、を有する。
【0066】
共通機能部5は、keep alive(キープアライブ)動作部51と、アプリケーション部52と、個人鍵生成部53と、電子署名確認部54と、を有する。
【0067】
受信部1は、受信したメッセージをモード管理部2へ送る。
【0068】
モード管理部2は、ノード情報保存部8に保存されているノードリストを読み出し、分散認証システムに参加しているノード数を確認し、分散認証システムのモードを確認する。さらに、モード管理部2は、自ノードが代表ノードであるか、一般ノードであるか状態管理する。
【0069】
ここで、分散認証システムのモードとは、総意モード、代表モードを指す。
【0070】
総意モードとは、分散認証システムに参加する全ノード数が規定数m未満の時のノード動作を指す。総意モードでは、ノードはそれぞれ仮鍵を生成し分散認証システムに参加する。すなわち総意モードでは、分散認証システムを代表する代表ノードは存在せず、参加するノードがそれぞれ用意する仮鍵を利用し、ノード間で相互に認証する。
【0071】
一方、代表モードとは、分散認証システムに参加する全ノード数が規定数m以上の時のノードの動作を指す。代表モードでは、分散認証システムに参加するノードのうちm台のノードが分散認証システムを代表する代表ノードとして動作し、それ以外のノードは一般ノードとして動作する。
【0072】
ここで、代表ノードとは、分散認証システムを代表するノードのことであって、分散認証システムの代表鍵の生成、分散認証システムに参加するノードの鍵及び電子証明書の作成、代表ノードを指名する役割を担うノードである。代表ノードは、定期的に更新され、分散認証システムに参加する全ノードに代表ノードになる可能性がある。
【0073】
ここで、ノードリストとは、分散認証システムに参加している全ノードのノード情報と、代表ノード情報のリストである。ノード情報とは、例えば、ノードのID、ノードのIPアドレスである。代表ノード情報とは、分散認証システムを代表する代表ノードがどのノードであるかを表す情報である。
【0074】
ここで、仮鍵とは、分散認証システムによって発行された鍵ではなく、各ノードが生成する鍵である。仮鍵は、分散認証システムに新規に参加する場合と、総意モードの場合とに、他ノードへ送信される全てのメッセージに付加される電子署名に利用する。
【0075】
ここで、鍵とは、公開鍵暗号系における秘密鍵及び公開鍵のことであり、その秘密鍵と公開鍵のセットで存在する。よって、分散認証システムの代表鍵は、代表鍵の秘密鍵と代表鍵の公開鍵とから成る。同様に、あるノードの個人鍵は、個人鍵の秘密鍵と個人鍵の公開鍵とから成る。
【0076】
ここで、分散認証システムの代表鍵とは、分散認証システムを代表するm台の代表ノードが互いに連携して作成する鍵であって、ノードリストと、分散認証システムに参加するノードの電子証明書とに分散認証システムの電子署名を付加する場合に使用する。ただし、分散認証システムの代表鍵の秘密鍵は、複数の代表ノードで分散して保存され、分散認証システム上のどのノードも分散認証システムの代表鍵の秘密鍵を知ることはできない。一方、分散認証システムの代表鍵の公開鍵は、分散認証システム上に公開され、分散認証システム上のどのノードも参照することができる。本実施形態では、分散認証システムを代表するm台の代表ノードが互いに連携して作成する代表鍵の秘密鍵をランダムな数に設定できる公開鍵暗号系を用いる。この公開鍵暗号系として、例えばElGamal暗号などがある。
【0077】
ここで、分散認証システムに参加するノードの電子証明書とは、分散認証システムを代表するm台の代表ノードが互いに連携して作成する個人鍵の公開鍵と、分散認証システムに参加するノードの情報とに加え、これらの個人鍵の公開鍵及びノードの情報のダイジェスト情報に分散認証システムの代表鍵による電子署名を付加したものである。本実施形態では、分散認証システムを代表するm台の代表ノードが互いに連携して作成する個人鍵の秘密鍵をランダムな数に設定できる公開鍵暗号系を用いる。この公開鍵暗号系として、例えばElGamal暗号などがある。ここで、ダイジェスト情報とは、元になる情報の要約情報を指す。例えば元になる情報にSHA−1などの一方向関数を適用することで生成する。
【0078】
モード管理部2は、ノード情報保存部8に保存されているノード情報を定期的に読み出し、分散認証システムに参加するノード数が規定数m未満であるかそうでないかを確認する。分散認証システムに参加するノード数が規定数m未満であった場合、ノードは総意モードで動作する。一方、分散認証システムに参加するノード数が規定数m以上であった場合、ノードは代表モードで動作する。代表モードの場合、代表ノードに指名されていた場合、代表ノードとして動作する。一方、代表モードの場合、代表ノードに指名されていなかった場合、一般ノードとして動作する。
【0079】
また、総意モードにおけるモード管理部2はノード情報保存部8に保存されているノードリストを確認し、分散認証システムに参加している全ノード数が規定数mに到達していた場合、代表モードに移行する。
【0080】
総意モードから代表モードに移行する場合、その時点で分散認証システムに参加している全ノード、すなわちm台のノードが代表ノードなる。そのために、モード管理部2は代表ノード機能部4に、分散認証システムの代表鍵を生成するよう指示する。さらに、モード管理部2は、一般ノード機能部3に、分散認証ネットワークに改めて参加し、分散認証システムの発行する電子証明書及び鍵を得るよう指示する。さらに、モード管理部2は、代表ノード機能部4に、前記鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する。さらに、モード管理部2は、代表ノード機能部4に、m台の代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するよう指示する。
【0081】
以上の動作によって分散認証システムの代表鍵による電子署名が付加されたノードリストは、代表鍵の公開鍵とセットで、分散認証システム電子証明書として、ノード情報保存部8に保存される。
【0082】
図2に分散認証システム電子証明書の例を示す。同図に示すように、分散認証システム電子証明書には、分散認証システムに参加するノード及びそのノード情報(IPアドレス、ポート番号等)を含むノードリストに、代表ノード毎の個人鍵による電子署名、旧代表ノード毎の個人鍵による電子署名、及び分散認証システムの代表鍵による電子署名が付加されている。
【0083】
なお、総意モードから代表モードに移行する場合と同様の動作は、代表ノードが更新されるタイミングでも動作する。
【0084】
一般ノード機能部3は、仮鍵生成部32と、参加動作部31とを有し、ノードが一般ノードである場合に、仮鍵を生成する機能と、分散認証システムに参加するために参加リクエストを他の既に分散認証システムに参加しているノードに参加リクエストを送信する機能と、を有する。
【0085】
また、モード管理部2は、受信したメッセージを適切な機能部へ振り分けを行う。
【0086】
仮鍵生成部32は、仮鍵を生成する。生成した仮鍵は自ノードのノード情報と共にノード情報保存部8に保存される。仮鍵は、分散認証システムが発行する電子証明書に付随する鍵とは関係なく存在し、分散認証システムが発行する電子証明書に付随する鍵と暗号アルゴリズムが別であってもよい。
【0087】
参加動作部31は、自ノードが新規に分散認証システムに参加する場合に、参加リクエストを送信する。参加リクエストを送信する場合は、参加リクエストに自ノードの仮鍵の公開鍵を付加する。また、ノード情報保存部8から読み出した自ノードの仮鍵の秘密鍵を用いて、署名付加部6で参加リクエストに電子署名をする。また、参加リクエストを受信した場合、参加リクエストに付加されている仮鍵の公開鍵を用いて電子署名を確認し、改ざんがない場合は参加レスポンスを返送する。ただし、参加レスポンスは、分散認証システムのモードによって内容が異なる。分散認証システムが総意モードであった場合、参加レスポンスに自ノードの仮鍵の公開鍵と、ノードリストとを付加し、署名付加部6で自ノードの仮鍵の秘密鍵を用いて電子署名をした上で、その参加レスポンスを返送する。一方、分散認証システムが代表モードであった場合、参加レスポンスには参加リクエストを受理した旨のメッセージを、自ノードの個人鍵の秘密鍵で電子署名をし、その参加レスポンスを返送する。さらに、参加動作部31は、ノード情報保存部8からノードリストを読み出し、代表ノードを確認し、ある代表ノードに対し、電子証明書生成リクエストを送信する。電子証明書生成リクエストには、参加リクエストを送信してきたノードのノード情報が付加される。
【0088】
代表ノード機能部4は、ランダム素数生成部41と、代表鍵生成部42と、他ノード個人鍵生成部53と、代表ノード指名・離脱機能部43とを有し、ノードが代表ノードである場合に、他の代表ノードと互いに連携し、分散認証システムの代表鍵と分散認証システム電子証明書を生成する機能と、他のノードからの参加リクエストまたは電子証明書生成リクエストを受信し、他のノードの個人鍵と電子証明書を生成する機能と、代表ノードを離脱する機能と、代表ノードが規定数mより少なくなった場合に代表ノードを指名する機能と、分散認証システムの代表鍵と他のノードの個人鍵の秘密鍵の素となるランダム素数を生成する機能と、を有する。
【0089】
ランダム素数生成部41は、代表鍵生成部42と他ノード電子証明書生成部44とからのリクエストを受けて、ランダムな素数を生成し、その生成したランダムな素数を代表鍵生成部42と他ノード電子証明書生成部44とに渡す。
【0090】
代表鍵生成部42は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、モード管理部2から分散認証システムの代表鍵を生成するように指示を受けると、他のm台の分散認証システムを代表する代表ノードと連携し、分散認証システムの代表鍵を生成する。代表鍵の素には、ランダム素数生成部41が生成する素数を使用する。代表鍵の秘密鍵は、m台のノードが生成する素数から演算されるが、実際には演算されず、m台の代表ノードとマルチパーティプロトコルを用いて代表鍵の公開鍵をのみを演算する。これにより、代表鍵の秘密鍵は、どのノードも知ることなく、代表ノードの公開鍵のみが正確に演算される。代表鍵生成部42は、ノードが代表ノードでなくなるまで、代表鍵の生成に利用した素数を保存する。
【0091】
また、代表鍵生成部42は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、モード管理部2からm台の代表ノードによる電子署名の完了したノードリストに分散認証システムの代表鍵による電子署名を付加するように指示を受けると、他のm台の分散認証システムを代表する代表ノードと連携し、ノードリストに分散認証システムの代表鍵の秘密鍵を用いた電子署名を付加する。分散認証システムの公開鍵を生成する時と同様に、m台の代表ノードは互いに連携し、代表鍵の素となる情報を他のノードに知らせることなく、ノードリストに電子署名を付加する。
【0092】
他ノード電子証明書生成部44は、分散認証システムが代表モードかつ自ノードが代表ノードであった場合に、電子証明書生成リクエストを受信すると、他のm台の分散認証システムを代表する代表ノードと連携し、電子証明書リクエストに記載のノードの電子証明書を生成する。電子証明書に付随する個人鍵の素には、ランダム素数生成部41が生成する素数を使用する。個人鍵の秘密鍵はm台のノードが生成する素数から演算されるが、実際には演算されず、m台の代表ノードとマルチパーティプロトコルを用いて個人鍵の公開鍵をのみを演算する。これにより、個人鍵の秘密鍵はどのノードも知ることなく、個人鍵の公開鍵のみが正確に演算される。さらに、代表鍵生成部42とも連携し、ノードのノード情報と個人鍵から電子証明書を生成する。以上の動作を完了した他ノード電子証明書生成部44は、個人鍵の秘密鍵の素となる情報と公開鍵と、電子証明書を電子証明書生成リクエストに記載のノードに送信する。
【0093】
代表ノード指名・離脱機能部43は、自ノードが代表ノードであり代表ノードを離脱したい場合に、ノード情報保存部8からノードリストを読み出し、代表ノード離脱リクエストを他の代表ノードに送信する。代表ノードが離脱したい場合とは、例えば分散認証システムから離脱したいとき、ネットワークリソース不足であるとき、悪意のある攻撃者からの攻撃を受けているとき、などがある。
【0094】
代表ノード指名・離脱機能部43は、自ノードが代表ノードであった場合に、代表ノード離脱リクエストを受信すると、代表ノード離脱リクエストを送信してきた代表ノードに対し、代表ノード離脱レスポンスを送信する。さらに、代表ノード指名・離脱機能部43は代表ノードが規定数m未満である状態から、代表ノードをm台とするため、ノード情報保存部8からノードリストを読み出し、適当な一般ノードを選出し、選出した一般ノードのノード情報を記載した代表ノード指名確認メッセージを他の代表ノード全てに送信する。
【0095】
代表ノード指名確認メッセージを受信した代表ノード指名・離脱機能部43は、選出された一般ノードのノード情報を確認し、代表ノード指名確認レスポンスを返送する。ただし、選出された一般ノードに問題がある場合は指名を拒否することもできる。問題とは、例えば、過去にレスポンスが遅かった、指定外のメッセージを送信してきた、などがある。自身を除く全ての代表ノードから代表ノード指名確認レスポンスを受信した代表ノードは、選出した一般ノードに代表ノード指名リクエストを送信する。
【0096】
代表ノード指名リクエストを受信した一般ノードの代表ノード指名・離脱機能部43は、代表ノード指名レスポンスを返送することで代表ノードになる。ただし、代表ノード指名リクエストを受信した一般ノードは、代表ノードになることを拒否することもできる。
【0097】
代表ノード指名・離脱機能部43は、代表ノード指名レスポンスを受信すると、新しく代表ノードとなるノードのノード情報を、自ノードを除く全ての代表ノードに送信する。代表ノード指名・離脱機能部43は、以上の動作を代表ノードが規定数m台になるまで繰り返す。
【0098】
さらに、代表ノード指名・離脱機能部43は、代表ノード機能部4に、個人鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する。さらに、代表ノード指名・離脱機能部43部は、代表鍵を更新する前まで代表ノードであった旧代表ノードに対し、現在代表ノードであるノードによる電子署名が修了しているノードリストに電子署名をするよう指示する。さらに、代表ノード指名・離脱機能部43は、代表ノード機能部4に、m台の代表ノード及びm台の旧代表ノードによる署名の完了したノードリストに分散認証システムの代表鍵による署名を付加するよう指示する。以上の動作によって電子署名が付加されたノードリストは、代表鍵の公開鍵とセットで分散認証ネットワーク電子証明書として、ノード情報保存部8に保存される。
【0099】
共通機能部5は、keep alive動作部51と、アプリケーション部52と、個人鍵生成部53と、電子署名確認部54と、を有し、ノードが一般ノードまたは代表ノードの場合に、keep alive動作により他のノードとノードリストを交換する機能と、分散認証システムを利用するアプリケーションを実施する機能と、m台の代表ノードから受信する個人鍵の秘密鍵の素となる情報から個人鍵の秘密鍵を生成する機能と、他のノードから受信するメッセージに付加されている電子署名の正当性を確認する機能と、を有する。
【0100】
keep alive動作部51は、他のノードに対し定期的にkeep aliveメッセージを送信し、さらに他のノードから定期的にkeep aliveメッセージを受信することで通信路のつながりをチェックする。keep alive動作部51は、ノードリストkeep aliveメッセージにはノード情報保存部8から読み出したノードリストも添付され、ノードリストを他のノードと定期的に交換し、新しいノードリストに更新していくことで、ノードリストは最新の状態に保たれる。例えば、新規に分散認証システムに参加したノードを確認したノードは、ノードリストを更新し、keep alive動作を用いて他のノードに最新の情報を伝える。またkeep aliveメッセージに対し一定期間レスポンスがない場合は、該当ノードは分散認証システムから離脱したと判定し、ノードリストを更新し、keep alive動作を用いて他のノードに最新の情報を伝える。だたし、代表ノードが離脱したと判定した場合は、モード管理部2に代表ノードが離脱したことを送信する。
【0101】
アプリケーション部52は、分散認証システムを利用するアプリケーションの処理をする。アプリケーションとして、例えばファイル交換アプリケーションや電話アプリケーションがある。本実施例の分散認証システムは、利用するアプリケーションに制限はない。
【0102】
個人鍵生成部53は、m台の代表ノードから受信する個人鍵の秘密鍵の素となるm個の情報から個人鍵の秘密鍵を生成する。さらに受信した公開鍵と秘密鍵が有効に動作するか確認する。さらに、受信した電子証明書の有効性を確認する。
【0103】
電子署名確認部54は、あるメッセージに付加されている電子署名を確認し、メッセージの送信元からメッセージが改ざんされていないかを確認する。電子署名確認部54は、メッセージを受信するとメッセージ送信元を確認し、分散認証システムにメッセージ送信元のノードの電子証明書発行リクエストを送信する。メッセージ送信元のノードの電子証明書を得ると、電子証明書に付加されている分散認証システムの代表鍵による電子署名を確認するため、分散認証システムに分散認証システム電子証明書発行リクエストを送信する。分散認証システム電子証明書に付加されている代表鍵の公開鍵を得ると、電子証明書に付加されている電子署名を代表鍵の公開鍵で復号し、電子証明書の正当性を確認する。さらに、受信したメッセージに付加されている電子署名を電子証明書に付加されている個人鍵の公開鍵で復号し、メッセージの正当性を確認する。
【0104】
また、電子署名確認部54は、他のノードから電子証明書発行リクエストを受信した場合、該当する電子証明書をノード情報保存部8から読み出し、電子証明書発行レスポンスを返送する。さらに、電子署名確認部54は、他のノードから分散認証システム電子証明書発行リクエストを受信した場合、該当する公開鍵をノード情報保存部8から読み出し、分散認証システム電子証明書発行レスポンスを返送する。
【0105】
署名付加部6は、他の機能部からのメッセージに電子署名を付加し、送信部7に渡す。ただし、ノードの状態によって電子署名のために使用する鍵が異なる。分散認証システムが総意モードの場合と、分散認証システムによって電子証明書の発行を受けていない場合は、ノード情報保存部8に保存されている仮鍵を使用し、メッセージに電子署名を付加する。それ以外の場合ではノード情報保存部8に保存されている個人鍵を使用し、メッセージに電子署名を付加する。
【0106】
送信部7は、署名付加部6からのメッセージを受け、メッセージに記載された宛先のノードに対し、メッセージを送信する。
【0107】
ノード情報保存部8は、自ノードのノード情報、仮鍵、電子証明書、ノードリスト、分散認証ネットワーク電子証明書、を保存する。電子証明書は、自身の電子証明書以外に、他のノードの電子証明書を保存することもできる。この場合、分散認証システム全体で全ノードの電子証明書を共有できるよう各ノードに分散して電子証明書を保存することが望ましい。分散して情報を保存するアルゴリズムとして、例えばChordアルゴリズムなどがある。
【0108】
次に、図3と、図4と、図5と、図6と、図7と、図8と、図9と、図10とを参照して、本実施例の動作について詳細に説明する。
【0109】
図3は、本実施例の分散認証システムの動作を示すものである。
【0110】
図3において、ステップS−A1は、初期状態である。この初期状態から、仮鍵を生成し(ステップS−A2)、その仮鍵及びノード情報を保存し(ステップS−A3)、他の既に分散認証システムに参加しているノードに対し、参加リクエストを送信する(ステップS−A4)。次いで、分散認証システムのモードを確認する(ステップS−A5)。その結果、分散認証システムが総意モードであった場合、ステップS−AA1に移行する。一方、分散認証システムが代表モードであった場合、ステップS−AB1に移行する。
【0111】
上記ステップS−A5にて分散認証システムが総意モードであった場合、参加依頼レスポンスとして、参加依頼リクエストを送信したノードの仮鍵及びノードリストを受信し(ステップS−AA1)、ノードリストを更新する。そして、ノードリストを読み出し、ノードリストに記載の全ノードの仮鍵を保持しているか確認する(ステップS−AA2)。その結果、ノードリストに記載の全ノードの仮鍵を保持していた場合(Yes)、後述の総意モード動作(ステップS−B1)へ移行する。一方、ノードリストに記載の全ノードの仮鍵を保持していなかった場合(No)、ステップS−A4に戻り、仮鍵を保持していないノードに対し参加依頼リクエストを送信する。
【0112】
一方、ステップS−A5にて分散認証システムが代表モードであった場合、参加レスポンスを受信する(ステップS−AB1)。そして、m台の代表ノードから個人鍵の秘密鍵の素となる情報と、電子証明書とを受信し(ステップS−AB2)、受信した個人鍵の秘密鍵の素となる情報から個人鍵を生成し(ステップS−AB3)、後述の一般モード動作(ステップS−C1)へ移行する。
【0113】
図4は、総意モード動作を示すものである。
【0114】
図4において、ステップS−B1は、総意モード動作時の初期状態である。この初期状態から、keep alive動作により、他の分散認証システムに参加するノードとノードリストの交換を行う(ステップS−B2)。次いで、ノードリストを読み出し、分散認証システムに参加するノード数が規定数mに達しているかどうかを確認する(ステップS−B3)。その結果、分散認証システムに参加するノード数が規定数mに達していた場合は、後述の代表ノード初期動作(ステップS−F1)に移行する。分散認証システムに参加するノード数が規定数mに達していなかった場合は、初期状態(ステップS−B1)に移行する。
【0115】
図5は、一般ノード動作を示すものである。
【0116】
図5において、ステップS−C1は、一般ノード動作時の初期状態である。この初期状態から、ノードリストを読み出し、他のノードに対し、ノードリストを付加したkeep aliveメッセージを送信し(ステップS−CA1)、初期状態(ステップS−C1)に戻る。
【0117】
次いで、初期状態(ステップS−C1)において、他のノードからノードリストが付加されたkeep aliveメッセージを受信する(ステップS−CB2)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0118】
次いで、受信したkeep aliveメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新し(ステップS−CB2)。ノードリストを読み出し、分散認証システムに参加するノード数が規定数mに達しているかどうかを確認する(ステップS−CB3)。その結果、分散認証システムに参加するノード数が規定数mに達していた場合(Yes)は、初期状態(ステップS−C1)に移行する。一方、分散認証システムに参加するノード数が規定数mに達していなかった場合(No)は、前述の総意モード動作(ステップS−B1)に移行する。
【0119】
次いで、初期状態(ステップS−C1)において、参加リクエストを受信する(ステップS−CC1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0120】
次いで、参加リクエストを送信してきたノードに対し、参加レスポンスを送信し(ステップS−CC2)、m台の代表ノードのうち、任意の代表ノードに対し、電子証明書作成リクエストを送信する(ステップS−CC3)。この電子証明書作成リクエストには、ステップS−CB1で参加リクエストを送信してきたノードのノード情報が含まれる。
【0121】
次いで、初期状態(ステップS−C1)において、代表ノード指名リクエストを受信する(ステップS−CD1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0122】
次いで、代表ノードになることを拒否するか否かを確認する(ステップS−CD2)。その結果、代表ノードになっても問題ない場合(No)、代表ノードになるために、ステップS−CC1で代表ノード指名リクエストを送信してきたノードに対し、代表ノード指名レスポンスを送信し(ステップS−CD3−1)、後述の代表ノード初期動作(ステップS−F1)に移行する。一方、代表ノードになることを拒否する場合(Yes)は、代表ノードになることを拒否するために、ステップS−CD1で代表ノード指名リクエストを送信してきたノードに対し、代表ノード拒否の情報を付加し代表ノード指名レスポンスを送信し(ステップS−CD3−2)、一般ノード動作時の初期状態(ステップS−C1)に移行する。
【0123】
次いで、初期状態(ステップS−C1)において、電子証明書発行リクエストを受信する(ステップS−CE1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。次いで、ステップS−CE1で電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信する(ステップS−CE2)。
【0124】
図6は、代表ノード動作を示すものである。
【0125】
図6において、ステップS−D1は、代表ノード動作時の初期状態である。この初期状態から、ノードリストを読み出し、他のノードに対し、ノードリストを付加したkeep aliveメッセージを送信し(ステップS−DA1)、初期状態(ステップS−D1)に戻る。
【0126】
次いで、初期状態(ステップS−D1)において、他のノードから、ノードリストが付加されたkeep aliveメッセージを受信する(ステップS−DB1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0127】
次いで、ステップS−DB1で受信したkeep aliveメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新する(ステップS−DB2)。そして、ノードリストを読み出し、分散認証システムに参加するノード数が規定数mに達しているかどうかを確認する(ステップS−DB3)。
【0128】
その結果、分散認証システムに参加するノード数が規定数mに達していた場合(Yes)は、ノードリストを読み出し、代表ノードが離脱していないか確認し(ステップS−DB4)、代表ノードが離脱していた場合(Yes)、後述の代表ノード更新動作(ステップS−G1)に移行する。一方、代表ノードが離脱していなかった場合、初期状態(ステップS−D1)に移行する。
【0129】
一方、上記ステップS−DB3にて分散認証システムに参加するノード数が規定数mに達していなかった場合(No)は、前述の総意モード動作(ステップS−B1)に移行する。
【0130】
次いで、初期状態(ステップS−D1)において、代表ノードを離脱したい場合、他の代表ノードに対し、代表ノード離脱リクエストを送信する(ステップS−DC1)。そして、代表ノード離脱レスポンスを受信する(ステップS−DC2)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、後述の代表モード離脱動作(ステップS−H1)に移行する。
【0131】
次いで、初期状態(ステップS−D1)において、参加リクエストを受信する(ステップS−DD1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は次のステップに移行する。
【0132】
次いで、参加リクエストを送信してきたノードに対し、参加レスポンスを送信し(ステップS−DD2)、参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報となるランダム素数を生成する(ステップS−DD3)。そして、m台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの個人鍵の公開鍵を生成し(ステップS−DD4)、m台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの電子証明書を生成する(ステップS−DD5)。
【0133】
次いで、ステップS−DD3で生成した参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報と、ステップS−DD4で生成した参加リクエストを送信してきたノードの個人鍵の公開鍵と、ステップS−DD5で生成した参加リクエストを送信してきたノードの電子証明書を、参加リクエストを送信してきたノードに対し送信し(ステップS−DD6)、初期状態(ステップS−D1)に移行する。
【0134】
次いで、初期状態(ステップS−D1)において、電子証明書生成リクエストを受信する(ステップS−DE1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、前述のステップS−DD3に移行し、同様の処理を行う。
【0135】
次いで、初期状態(ステップS−D1)において、代表ノード離脱リクエストを受信する(ステップS−DF1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、代表ノード離脱レスポンスを送信し(ステップS−DF2)、後述の代表ノード更新動作(ステップS−G1)に移行する。
【0136】
次いで、初期状態(ステップS−D1)において、代表ノード指名確認メッセージを受信する(ステップS−DG1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、代表ノード指名確認レスポンスを送信し(ステップS−DG2)、後述の代表ノード初期動作(ステップS−F1)に移行する。ステップS−DG1で受信した代表ノード指名確認メッセージに記載のノードを代表ノードにすることを拒否する場合は、その情報を代表ノード指名確認レスポンスに付加する。
【0137】
次いで、初期状態(ステップS−D1)において、電子証明書発行リクエストを受信する(ステップS−DH1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、ステップS−DH1で電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信し(ステップS−DH2)、初期状態(ステップS−D1)に移行する。
【0138】
次いで、初期状態(ステップS−D1)において、分散認証システム電子証明書発行リクエストを受信する(ステップS−DI1)。この時、受信したメッセージの正当性を確認する場合は、後述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行し、ステップS−DI1で分散認証システム電子証明書発行リクエストを送信してきたノードに対し、分散認証システム電子証明書を付加した分散認証システム電子証明書発行レスポンスを送信し(ステップS−DI2)、初期状態(ステップS−D1)に移行する。
【0139】
図7は、署名確認動作を示すものである。
【0140】
図7において、ステップS−E1は、署名確認動作の初期状態である。この初期状態から、メッセージを送信してきたノードに対し、メッセージ送信元のノードの電子証明書発行リクエストを送信する(ステップS−E3)。または、メッセージを送信してきたノードの電子証明書を分散認証システム上で分散して保存している場合は、適切なノードに対し、電子証明書発行リクエストを送信する。なお、本ステップは、メッセージを送信してきたノードの電子証明書を既に保持していた場合はスキップしてもよい。
【0141】
次いで、電子証明書発行レスポンスを受信する(ステップS−E4)。この時、受信したメッセージの正当性を確認する場合は、初期状態(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。なお、ステップS−E3をスキップしていた場合は、本ステップもスキップする。
【0142】
次いで、代表ノードに対し、分散認証システム電子証明書発行リクエストを送信する(ステップS−E5)。本ステップは、分散認証システム電子証明書を既に保持していた場合はスキップしてもよい。
【0143】
次いで、分散認証システム電子証明書発行レスポンスを受信する(ステップS−E6)。この時、受信したメッセージの正当性を確認する場合は、初期状態(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。ステップS−E5をスキップしていた場合は、本ステップもスキップする。
【0144】
次いで、分散認証システム電子証明書に付加されている代表鍵の公開鍵を用い、電子証明書に付加されている電子署名をその代表鍵の公開鍵で復号し、電子証明書の正当性を確認する(ステップS−E7)。さらに、受信したメッセージに付加されている電子署名を電子証明書に付加されている個人鍵の公開鍵で復号し、メッセージの正当性を確認する。
【0145】
図8は、代表ノード初期動作を示すものである。
【0146】
図8において、ステップS−F1は、代表ノード初期動作時の初期状態である。この初期状態から、分散認証システムの代表鍵の秘密鍵の素となる情報となるランダム素数を生成し(ステップS−F2)、m台の代表ノード間で互いに連携し、分散認証システムの代表鍵の公開鍵を生成する(ステップS−F3)。そして、この時点のノードリストに対し、個人鍵の秘密鍵を用いて電子署名をし(ステップS−F4)、他の代表ノードに対し、電子署名済みのノードリストを送信する(ステップS−F5)。
【0147】
次いで、他の代表ノードから、ノードリストを受信する(ステップS−F6)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0148】
次いで、ステップS−F6で受信したノードリストに全代表ノードの電子署名が付加されているか確認する(ステップS−F7)。その結果、ステップS−F6で受信したノードリストに全代表ノードの電子署名が付加されていた場合(Yes)、ステップS−F8に移行する。一方、ステップS−F6で受信したノードリストに全代表ノードの電子署名が付加されていなかった場合(No)、前述のステップS−F4に移行し、同様の処理を繰り返し実行する。
【0149】
上記ステップS−F7にて、ステップS−F6で受信したノードリストに全代表ノードの電子署名が付加されていた場合、全代表ノードによる電子署名が完了したノードリストを、残存する旧代表ノードに送信し(ステップS−F8)、残存する旧代表ノードによる電子署名が付加されたノードリストを受信する(ステップS−F9)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0150】
次いで、ステップS−F9で受信したノードリストに、残存する旧代表ノード全てによる電子署名が付加されているか確認する(ステップS−F10)。その結果、ステップS−F9で受信したノードリストに全旧代表ノードの電子署名が付加されていた場合(Yes)、m台の代表ノード間で互いに連携し、分散認証システム電子証明書を作成し(ステップS−F11)、前述の代表ノード動作(ステップS−D1)に移行する。ステップS−F9で受信したノードリストに全代表ノードの電子署名が付加されていなかった場合(No)、前述のステップS−F8に移行し、同様の処理を繰り返し実行する。
【0151】
図9は、代表ノード更新動作を示すものである。
【0152】
図9において、ステップS−G1は、代表ノード更新動作時の初期状態である。この初期状態から、新たに代表ノードになるノードを選出し(ステップS−G2)、代表ノード指名確認メッセージを、他の代表ノードに送信する(ステップS−G3)。
【0153】
次いで、代表ノード指名確認レスポンスを受信する(ステップS−G4)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0154】
次いで、ステップS−G4で受信した代表ノード指名確認レスポンスに、ステップS−G2で選出したノードを拒否するメッセージが付加されているか確認する(ステップS−G5)。その結果、ステップS−G4で受信した代表ノード指名確認レスポンスに、ステップS−G2で選出したノードを拒否するメッセージが付加されていた場合(Yes)、初期状態(ステップS−G1)に移行する。
【0155】
一方、ステップS−G4で受信した代表ノード指名確認レスポンスに、ステップS−G2で選出したノードを拒否するメッセージが付加されていなかった場合(No)、ステップS−G2で選出したノードに対し、代表ノード指名リクエストを送信する(ステップS−G6)。
【0156】
次いで、ステップS−G2で選出したノードから、代表ノード指名レスポンスを受信する(ステップS−G7)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0157】
次いで、ステップS−G7で受信した代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されているか確認する(ステップS−G8)。その結果、ステップS−G7で受信した代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されていた場合(Yes)、初期状態(ステップS−G1)に移行する。
【0158】
一方、ステップS−G7で受信した代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されていなかった場合(No)、代表ノード数が規定数mに達しているかどうか確認する(ステップS−G9)。その結果、代表ノード数が規定数mに達していた場合(Yes)は、前述の代表ノード初期動作(ステップS−F1)に移行する。一方、代表ノード数が規定数mに達していなかった場合(No)は、初期状態(ステップS−G1)に移行する。
【0159】
図10は、代表ノード離脱動作を示すものである。
【0160】
図10において、ステップS−H1は、代表ノード離脱動作時の初期状態である。この状態のときは、代表ノードから旧代表ノードとして認知される。次いで、代表ノードから、全ての代表ノードの電子署名が付加されたノードリストを受信する(ステップS−H2)。この時、受信したメッセージの正当性を確認する場合は、前述の署名確認動作(ステップS−E1)に移行し、受信したメッセージの正当性が確認できた場合は、次のステップに移行する。
【0161】
次いで、ステップS−G2で受信したノードリストに、電子署名を付加し(ステップS−H3)、ステップS−G2で全ての代表ノードの電子署名が付加されたノードリストを送信してきた代表ノードに対し、ステップS−G3で電子署名を付加したノードリストを送信する(ステップS−H4)。
【0162】
次に、本実施例の効果について説明する。
【0163】
本実施例は、分散認証システムに参加するノードのうち規定数m台のノードが代表ノードとなり、分散認証システムの代表鍵と分散認証システム電子証明書の発行、及び分散認証システムに参加するノードの個人鍵及び電子証明書の発行を、m台の代表ノードが互いに連携することによって実現し、さらに代表ノードの指名・離脱を柔軟にすることによって、悪意のある攻撃者からの攻撃に対し、攻撃対象を分散させることができ、かつ攻撃されたとしても、代表ノードを次々と変化させることによって、分散認証システムとしての機能を失わずに、認証サービスを続けることができる。
【0164】
また、本実施例は、分散認証システムに参加するノードのうち規定数m台のノードが代表ノードとなり、分散認証システムの代表鍵と分散認証システム電子証明書の発行、及び分散認証システムに参加するノードの個人鍵及び電子証明書の発行を、m台の代表ノードが互いに連携することによって実現し、さらに代表ノードの指名・離脱を柔軟にすることによって、ある特定の場所に認証局が存在する場合と同等の安全性を持った認証サービスを提供することができる。
【実施例2】
【0165】
次に、本発明の第2の実施例について図面を参照して詳細に説明する。
【0166】
図11を参照すると、本実施例は、第1の実施例と同様に、受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7と、を有する。
【0167】
更に、本実施例は、分散認証システム用プログラムを有する。
【0168】
分散認証システム用プログラムは、受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7と、に読み込まれ受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7の動作を制御する。受信部1と、モード管理部2と、一般ノード機能部3と、代表ノード機能部4と、共通機能部5と、ノード情報保存部8と、署名付加部6と、送信部7は、分散認証システム用プログラムの制御により第1の実施例における分散認証システムによる処理と同一の処理を実行する。
【0169】
次に、本実施例の効果について説明する。
【0170】
本実施例では、第1の実施例の効果と同様の効果を得るために、分散認証システム用プログラムを用いることによりコンピュータを分散認証システムとして動作させることができる。
【0171】
以上、本発明の実施例を詳細に説明したが、本発明は、代表的に例示した上述の実施例に限定されるものではなく、当業者であれば、特許請求の範囲の記載内容に基づき、本発明の要旨を逸脱しない範囲内で種々の態様に変形、変更することができる。これらの変形例や変更例も本発明の権利範囲に属するものである。
【0172】
例えば、上記の分散認証システムを構成する各部の少なくとも一部の機能を、プログラムコードを用いて実現する場合、かかるプログラムコード及びこれを記録する記録媒体は、本発明の範疇に含まれる。この場合、オペレーティングシステム等の他のソフトウェアと共同して上記機能が実現される場合は、それらのプログラムコードも含まれる。
【図面の簡単な説明】
【0173】
【図1】本発明の第1の実施例に係る分散認証システムの全体構成を示すブロック図である。
【図2】本発明の第1の実施例に係る分散認証システムで用いる分散認証システム電子証明書の一例を示す図である。
【図3】本発明の第1の実施例に係る分散認証システムの動作を示す流れ図である。
【図4】本発明の第1の実施例に係る分散認証システムの総意モード動作を示す流れ図である。
【図5】本発明の第1の実施例に係る分散認証システムの一般ノード動作を示す流れ図である。
【図6】本発明の第1の実施例に係る分散認証システムの代表ノード動作を示す流れ図である。
【図7】本発明の第1の実施例に係る分散認証システムの署名確認動作を示す流れ図である。
【図8】本発明の第1の実施例に係る分散認証システムの代表ノード初期動作を示す流れ図である。
【図9】本発明の第1の実施例に係る分散認証システムの代表ノード更新動作を示す流れ図である。
【図10】本発明の第1の実施例に係る分散認証システムの代表ノード離脱動作を示す流れ図である。
【図11】本発明の第2の実施例に係る分散認証システムの全体構成を示すブロック図である。
【符号の説明】
【0174】
1 受信部
2 モード管理部
3 一般ノード機能部
4 代表ノード機能部
5 共通機能部
6 署名付加部
7 送信部
9 分散認証システム用プログラム
31 参加動作部
32 仮鍵生成部
41 ランダム素数生成部
42 代表鍵生成部
43 代表ノード指名・離脱機能部
44 他ノード電子証明書生成部
51 keep alive動作部
52 アプリケーション部
53 個人鍵生成部
54 電子署名確認部
【特許請求の範囲】
【請求項1】
ひとつまたは複数のノードで構成される分散認証システムであって、
前記分散認証システムに参加するノードのうち所定数台のノードが前記分散認証システムを代表する代表ノードとなり、
前記代表ノードが、互いに連携することによって、前記分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、前記分散認証システムに参加するノードの電子署名で用いる個人鍵と、前記分散認証システムに参加するノードの電子証明書とを発行することを特徴とする分散認証システム。
【請求項2】
請求項1に記載の分散認証システムにおいて、
前記分散認証システムを構成するノードは、
他ノードから送られてくるデータを受信する受信部と、
前記分散認証システムを構成するノードの情報を含むノードリストを更新可能に保存するノード情報保存部と、
前記ノードリストに基づいて、前記分散認証システムのモードとして、前記分散認証システムに参加する全ノード数が所定数未満のときの総意モードと、前記分散認証システムに参加する全ノード数が所定数以上のときの代表モードとを管理するモード管理部と、
前記代表モードの場合、前記代表ノードのときの動作を行う代表ノード機能部と、
前記代表モードの場合、前記代表ノード以外の一般ノードのときの動作を行う一般ノード機能部と、
前記総意モード及び前記代表モードに共通の動作を行う共通機能部と、
前記代表ノード機能部、前記一般ノード機能部、及び前記共通機能部から渡される前記他ノードへのデータに電子署名を付加する署名付加部と、
前記電子署名が付加されたデータを前記他ノードに送信する送信部と、を有することを特徴とする分散認証システム。
【請求項3】
請求項2に記載の分散認証システムにおいて、
前記一般ノード機能部は、
前記ノードが前記一般ノードである場合に、仮鍵を生成する機能を有する仮鍵生成部と、
前記分散認証システムに参加するための参加リクエストを前記分散認証システムに既に参加している他ノードに送信する機能を有する参加動作部と、を有することを特徴とする分散認証システム。
【請求項4】
請求項2に記載の分散認証システムにおいて、
前記代表ノード機能部は、
前記ノードが前記代表ノードである場合に、他の代表ノードと互いに連携し、前記代表鍵と前記分散認証システム電子証明書とを生成する代表鍵生成部と、
他ノードからの参加リクエストまたは電子証明書生成リクエストを受信し、前記他ノードの個人鍵とその電子証明書とを生成する他ノード電子証明書生成部と、
前記代表ノードが規定数より少なくなった場合に前記代表ノードを指名する機能と、前記代表ノードを離脱する機能とを有する代表ノード指名・離脱機能部と、
前記代表鍵と前記他ノードの個人鍵との秘密鍵の素となるランダム素数を生成するランダム素数生成部と、を有することを特徴とする分散認証システム。
【請求項5】
請求項2に記載の分散認証システムにおいて、
前記共通機能部は、
前記ノードが前記一般ノードまたは前記代表ノードの場合に、キープアライブ動作により他ノードと前記ノードリストを交換するキープアライブ動作部と、
前記分散認証システムを利用するアプリケーションを実施するアプリケーション部と、
前記規定数台の代表ノードから受信する前記個人鍵の秘密鍵の素となる情報から前記個人鍵の秘密鍵を生成する個人鍵生成部と、
前記他ノードから受信するメッセージに付加されている電子署名の正当性を確認する電子署名確認部と、を有することを特徴とする分散認証システム。
【請求項6】
請求項2に記載の分散認証システムにおいて、
前記受信部は、受信したメッセージを前記モード管理部へ送ることを特徴とする分散認証システム。
【請求項7】
請求項2に記載の分散認証システムにおいて、
前記モード管理部は、
前記ノード情報保存部に保存されているノードリストを読み出す機能と、
前記分散認証システムに参加しているノード数を確認する機能と、
前記分散認証システムのモードを確認する機能と、
自ノードが前記代表ノードであるか、前記一般ノードであるかの状態を管理する機能と、
前記ノード情報保存部に保存されているノード情報を定期的に読み出し、前記分散認証システムに参加するノード数が前記所定数未満であるかそうでないかを確認する機能と、
前記分散認証システムに参加するノード数が前記所定数未満であった場合、自ノードを前記総意モードで動作させる機能と、
前記分散認証システムに参加するノード数が前記所定数以上であった場合、自ノードを前記代表モードで動作させる機能と、
前記代表ノードに指名されていた場合、自ノードを前記代表ノードとして動作させる機能と、
前記代表ノードに指名されていなかった場合、自ノードを前記一般ノードとして動作させる機能と、
前記総意モードにおいて、前記ノード情報保存部に保存されているノードリストを確認し、前記分散認証システムに参加している全ノード数が前記所定数に到達していた場合、自ノードを前記代表モードに移行させる機能と、
前記代表ノード機能部に、前記分散認証システムの代表鍵を生成するよう指示する機能と、
前記一般ノード機能部に、前記分散認証ネットワークに改めて参加し前記分散認証システムの発行する電子証明書及び鍵を得るよう指示する機能と、
前記代表ノード機能部に前記鍵の秘密鍵を用いて前記ノードリストに電子署名をするよう指示する機能と、
前記代表ノード機能部に、前記所定数台の代表ノードによる電子署名の完了した前記ノードリストに前記代表鍵による電子署名を付加するよう指示する機能と、
受信したメッセージを適切な機能部へ振り分けを行う機能と、を有することを特徴とする分散認証システム。
【請求項8】
請求項1に記載の分散認証システムにおいて、
前記代表ノードは、
他の代表ノードと互いに連携し、前記代表鍵と前記分散認証システム電子証明書とを生成する機能と、
他ノードからの参加リクエストまたは電子証明書生成リクエストを受信し、前記他ノードの前記個人鍵と前記電子証明書を生成する機能と、
前記代表ノードを離脱する機能と、
前記代表ノードが前記所定数より少なくなった場合に前記代表ノードを指名する機能と、
前記代表鍵と前記他ノードの個人鍵との秘密鍵の素となるランダム素数を生成する機能と、
前記キープアライブ動作により前記他ノードと前記ノードリストを交換する機能と、
前記分散認証システムを利用するアプリケーションを実施する機能と、
前記所定数台の代表ノードから受信する前記個人鍵の秘密鍵の素となる情報から前記個人鍵の秘密鍵を生成する機能と、
前記他ノードから受信するメッセージに付加されている電子署名の正当性を確認する機能と、を有することを特徴とする分散認証システム。
【請求項9】
請求項2に記載の分散認証システムにおいて、
前記ノードリストは、前記分散認証システムに参加している全ノードのノード情報と、代表ノード情報と、を有することを特徴とする分散認証システム。
【請求項10】
請求項9に記載の分散認証システムにおいて、
前記ノード情報は、ノードのIDと、ノードのIPアドレスと、ポート番号と、代表ノード情報と、旧代表ノード情報と、を含むことを特徴とする分散認証システム。
【請求項11】
請求項9に記載の分散認証システムにおいて、
前記代表ノード情報は、前記代表ノードがどのノードであるかという情報を含むことを特徴とする分散認証システム。
【請求項12】
請求項9に記載の分散認証システムにおいて、
前記旧代表ノード情報は、過去に前記代表ノードがどのノードであったかという情報を含むことを特徴とする分散認証システム。
【請求項13】
請求項3に記載の分散認証システムにおいて、
前記仮鍵は、前記分散認証システムによって発行された鍵ではなく、各ノードが生成する鍵であって、新規に前記分散認証システムに参加する場合と、前記総意モードの場合とに、他ノードへの全てのメッセージに付加される電子署名に利用されることを特徴とする分散認証システム。
【請求項14】
請求項1に記載の分散認証システムにおいて、
前記代表鍵は、公開鍵暗号系の秘密鍵と公開鍵とから成り、
前記個人鍵は、公開鍵暗号系の秘密鍵と個人鍵とから成ることを特徴とする分散認証システム。
【請求項15】
請求項1に記載の分散認証システムにおいて、
前記代表鍵は、ノードリストと、前記分散認証システムに参加するノードの電子証明書とに前記分散認証システムの電子署名を付加する場合に使用され、
前記代表鍵の秘密鍵は、前記分散認証システム上のどのノードも知ることができないように複数の代表ノードに分散して保存され、
前記代表鍵の公開鍵は、前記分散認証システム上のどのノードも参照することができるように前記分散認証システム上に公開されることを特徴とする分散認証システム。
【請求項16】
請求項1に記載の分散認証システムにおいて、
前記分散認証システムに参加するノードの電子証明書は、前記個人鍵の公開鍵と、前記分散認証システムに参加するノードの情報とに加え、前記個人鍵の公開鍵及び前記ノードの情報のダイジェスト情報に前記代表鍵による電子署名を付加したものであることを特徴とする分散認証システム。
【請求項17】
請求項16に記載の分散認証システムにおいて、
前記ダイジェスト情報は、元になる情報の要約情報であり、その元になる情報に一方向関数を適用することで生成されることを特徴とする分散認証システム。
【請求項18】
請求項3に記載の分散認証システムにおいて、
前記参加動作部は、
自ノードが新規に前記分散認証システムに参加する場合に、前記仮鍵の公開鍵を付加した参加リクエストを自ノードの仮鍵の秘密鍵による電子署名と共に送信する機能と、
他ノードから前記参加リクエストを受信した場合に前記参加リクエストに付加されている前記仮鍵の公開鍵を用いて前記電子署名を確認し、改ざんがない場合は参加レスポンスを送信する機能と、
前記分散認証システムが前記総意モードであった場合、前記参加レスポンスに自ノードの仮鍵の公開鍵と、ノードリストとを付加し、自ノードの仮鍵の秘密鍵による電子署名と共に送信する機能と、
前記分散認証システムが代表モードであった場合、前記参加レスポンスに前記参加リクエストを受理した旨のメッセージを付加し、自ノードの個人鍵の秘密鍵による電子署名と共に送信する機能と、
前記ノード情報保存部からノードリストを読み出し、前記代表ノードを確認し、ある代表ノードに対し、前記参加リクエストを送信してきたノードのノード情報を付加した電子証明書生成リクエストを送信する機能と、を有することを特徴とする分散認証システム。
【請求項19】
請求項3に記載の分散認証システムにおいて、
前記仮鍵生成部は、前記仮鍵を生成する機能と、生成した仮鍵を自ノードのノード情報と共に前記ノード情報保存部に保存する機能と、を有することを特徴とする分散認証システム。
【請求項20】
請求項4に記載の分散認証システムにおいて、
前記ランダム素数生成部は、
前記代表鍵生成部と前記他ノード電子証明書生成部からのリクエストを受けて、ランダムな素数を生成する機能と、
生成したランダムな素数を前記代表鍵生成部と前記他ノード電子証明書生成部とに渡す機能と、を有することを特徴とする分散認証システム。
【請求項21】
請求項4に記載の分散認証システムにおいて、
前記代表鍵生成部は、
前記分散認証システムが前記代表モードかつ自ノードが前記代表ノードであった場合に、前記モード管理部から前記代表鍵を生成するように指示を受けると、他の代表ノードと連携し、前記ランダム素数生成部が生成した素数を素に、前記代表鍵の公開鍵の素となる情報を他ノードに知らせることなく、マルチパーティプロトコルを用いて、前記代表鍵の公開鍵を生成する機能と、
自ノードが前記代表ノードでなくなるまで前記代表鍵の生成に利用した素数を保存する機能と、
前記分散認証システムが前記代表モードかつ自ノードが前記代表ノードであった場合に、前記モード管理部から前記所定数の代表ノードによる電子署名の完了したノードリストに前記代表鍵による電子署名を付加するように指示を受けると、他の代表ノードと連携し、前記代表鍵の素となる情報を他ノードに知らせることなく、ノードリストに前記代表鍵の秘密鍵を用いた電子署名を付加する機能と、を有することを特徴とする分散認証システム。
【請求項22】
請求項4に記載の分散認証システムにおいて、
前記代表ノード指名・離脱機能部は、
自ノードが前記代表ノードであり前記代表ノードを離脱したい場合に、前記ノード情報保存部からノードリストを読み出し、代表ノード離脱リクエストを他の代表ノードに送信する機能と、
自ノードが前記代表ノードであった場合に、前記代表ノード離脱リクエストを受信すると、前記代表ノード離脱リクエストを送信してきた代表ノードに対し、代表ノード離脱レスポンスを送信する機能と、
前記代表ノードが前記所定数未満である状態から、前記代表ノードを前記所定数とするため、前記ノード情報保存部からノードリストを読み出し、適当な一般ノードを選出する機能と、
選出した前記一般ノードのノード情報を記載した代表ノード指名確認メッセージを他の代表ノード全てに送信する機能と、
前記代表ノード指名確認メッセージを受信した場合に、選出された前記一般ノードのノード情報を確認し、可否情報を含む代表ノード指名確認レスポンスを返送する機能と、
自ノードを除く全ての代表ノードから代表ノード指名確認レスポンスを受信した場合に、選出した一般ノードに代表ノード指名リクエストを送信する機能と、
自ノードが前記一般ノードであり前記ノード代表ノード指名リクエストを受信した場合に、可否情報を含む代表ノード指名レスポンスを返送する機能と、
前記代表ノード指名レスポンスを受信した場合に、新しく代表ノードとなるノードのノード情報を、自ノードを除く全ての代表ノードに送信する機能と、
前記代表ノード機能部に、前記個人鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する機能と、
前記代表鍵を更新する前まで前記代表ノードであった旧代表ノードに対し、現在代表ノードであるノードによる電子署名が終了しているノードリストに電子署名をするよう指示する機能と、
前記代表ノード機能部に、前記所定数の代表ノード及び前記所定数の旧代表ノードによる電子署名の完了したノードリストに前記代表鍵による電子署名を付加するよう指示する機能と、
前記電子署名が付加されたノードリストと前記代表鍵の公開鍵とをセットで前記分散認証ネットワーク電子証明書として、前記ノード情報保存部に保存する機能と、を有することを特徴とする分散認証システム。
【請求項23】
請求項22に記載の分散認証システムにおいて、
前記代表ノード指名・離脱機能部は、前記各機能を、前記代表ノードが前記規定数台になるまで繰り返す機能を有することを特徴とする分散認証システム。
【請求項24】
請求項4に記載の分散認証システムにおいて、
前記他ノード電子証明書生成部は、
前記分散認証システムが前記代表モードかつ自ノードが前記代表ノードであった場合に、電子証明書生成リクエストを受信すると、他の代表ノードと連携し、前記ランダム素数生成部が生成する素数を素に、電子証明書に付随する個人鍵の素となる情報を他ノードに知らせることなく、マルチパーティプロトコルを用いて、電子証明書リクエストに記載のノードの個人鍵を生成する機能と、
前記代表鍵生成部と連携し、前記ノードのノード情報と前記個人鍵から電子証明書を生成する機能と、
前記個人鍵の秘密鍵の素となる情報と公開鍵と前記電子証明書を電子証明書生成リクエストに記載のノードに送信する機能と、を有することを特徴とする分散認証システム。
【請求項25】
請求項5に記載の分散認証システムにおいて、
前記キープアライブ動作部は、
他ノードに対し定期的にキープアライブメッセージを送信する機能と、
他ノードから定期的に前記キープアライブメッセージを受信することで通信路のつながりをチェックする機能と、
前記キープアライブメッセージに付加されたノードリストと前記ノード情報保存部から読み出したノードリストとを比較し、ノードリストを最新の情報に更新する機能と、
前記キープアライブメッセージに対し一定期間レスポンスがない場合は、該当ノードは前記分散認証システムから離脱したと判定し、ノードリストを更新し、前記キープアライブ動作を用いて他ノードに最新の情報を伝える機能と、
前記代表ノードが離脱したと判定した場合に、前記ノード管理部に前記代表ノードが離脱したことを送信する機能と、を有することを特徴とする分散認証システム。
【請求項26】
請求項5に記載の分散認証システムにおいて、
前記アプリケーション部は、前記分散認証システムを利用するアプリケーションの処理をする機能を有することを特徴とする分散認証システム。
【請求項27】
請求項5に記載の分散認証システムにおいて、
前記個人鍵生成部は、
前記所定数台の代表ノードから受信する個人鍵の秘密鍵の素となる所定数の情報から前記個人鍵の秘密鍵を生成する機能と、
受信した前記個人鍵の公開鍵と秘密鍵とが有効に動作するか確認する機能と、
受信した電子証明書の有効性を確認する機能と、を有することを特徴とする分散認証システム。
【請求項28】
請求項5に記載の分散認証システムにおいて、
前記電子署名確認部は、
メッセージを受信した場合にメッセージ送信元を確認し、前記分散認証システムにメッセージ送信元のノードの電子証明書発行リクエストを送信する機能と、
メッセージ送信元のノードの電子証明書を得た場合に、前記電子証明書に付加されている前記代表鍵による電子署名を確認するため、前記分散認証システムに分散認証システム電子証明書発行リクエストを送信する機能と、
前記分散認証システム電子証明書に付加されている前記代表鍵の公開鍵を得た場合に、前記電子証明書に付加されている電子署名を前記代表鍵の公開鍵で復号し、前記電子証明書の正当性を確認する機能と、
受信したメッセージに付加されている電子署名を前記電子証明書に付加されている前記個人鍵の公開鍵で復号し、当該メッセージの正当性を確認する機能と、
他ノードから前記電子証明書発行リクエストを受信した場合に、該当する電子証明書を前記ノード情報保存部から読み出し、電子証明書発行レスポンスを返送する機能と、
他ノードから前記分散認証システム電子証明書発行リクエストを受信した場合に、該当する公開鍵を前記ノード情報保存部から読み出し、分散認証システム電子証明書発行レスポンスを送信する機能と、を有することを特徴とする分散認証システム。
【請求項29】
請求項2に記載の分散認証システムにおいて、
前記署名付加部は、
前記分散認証システムが前記総意モードの場合に前記ノード情報保存部に保存されている仮鍵を使用し、前記一般ノード機能部、前記代表ノード機能部、及び前記共通機能部からのメッセージに電子署名を付加する機能と、
前記分散認証システムによって前記電子証明書の発行を受けていない場合に前記ノード情報保存部に保存されている前記仮鍵を使用し、前記一般ノード機能部、前記代表ノード機能部、及び前記共通機能部からのメッセージに電子署名を付加する機能と、
前記分散認証システムが前記総意モードの場合でなく、前記分散認証システムによって前記電子証明書の発行を受けている場合に、前記ノード情報保存部に保存されている前記個人鍵を使用し、前記一般ノード機能部、前記代表ノード機能部、及び前記共通機能部からのメッセージに電子署名を付加する機能と、を有することを特徴とする分散認証システム。
【請求項30】
請求項2に記載の分散認証システムにおいて、
前記送信部は、前記署名付加部からのメッセージを受け、そのメッセージに記載された宛先のノードに対し、当該メッセージを送信する機能を有することを特徴とする分散認証システム。
【請求項31】
請求項2に記載の分散認証システムにおいて、
前記ノード情報保存部は、自ノードのノード情報、仮鍵、前記電子証明書、前記ノードリスト、前記分散認証ネットワーク電子証明書、を保存する機能を有することを特徴とする分散認証システム。
【請求項32】
ひとつまたは複数のノードで構成される分散認証システムであり、前記分散認証システムに参加するノードのうち所定数台のノードが前記分散認証システムを代表する代表ノードとなり、前記代表ノードが、互いに連携することによって、前記分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、前記分散認証システムに参加するノードの電子署名で用いる個人鍵と、前記分散認証システムに参加するノードの電子証明書とを発行する分散認証システムの分散認証方法であって、
(A)前記分散認証システムへの参加を開始するステップと、
(B)前記分散認証システムに参加する全ノード数が所定数未満の場合、総意モードの動作を行うステップと、
(C)前記分散認証システムに参加する全ノード数が所定数以上の場合、代表モードの動作として、前記代表ノード以外の一般ノードのときの動作を行うステップと、
(D)前記代表モードの動作として、前記代表ノードのときの動作を行うステップと、
(E)他ノードから受信したメッセージの電子署名を確認するときの動作を行うステップと、
(F)前記代表ノードの初期の動作を行うステップと、
(G)前記代表ノードを更新するときの動作を行うステップと、
(H)前記代表ノードを離脱するときの動作を行うステップとを有することを特徴とする分散認証方法。
【請求項33】
請求項32に記載の分散認証方法において、
前記(A)分散認証システムへの参加を開始するステップは、
(A1)初期状態ステップと、
(A2)仮鍵を生成するステップと、
(A3)仮鍵及びノード情報を保存するステップと、
(A4)前記分散認証システムに既に参加している他ノードに対し、参加リクエストを送信するステップと、
(A5)前記分散認証システムのモードを確認するステップと、
(A6)参加依頼レスポンスとして、参加依頼リクエストを送信したノードの仮鍵及びノードリストを受信し、ノードリストを更新するステップと、
(A7)ノードリストを読み出し、ノードリストに記載の全ノードの仮鍵を保持しているか確認するステップと、
(A8)参加レスポンスを受信するステップと、
(A9)所定数台の代表ノードから個人鍵の秘密鍵の素となる情報と、電子証明書を受信するステップと、
(A10)受信した前記個人鍵の秘密鍵の素となる情報から個人鍵を生成するステップと、を有することを特徴とする分散認証方法。
【請求項34】
請求項32に記載の分散認証方法において、
前記(B)総意モードの動作を行うステップは、
(B1)前記総意モードの動作時の初期状態ステップと、
(B2)キープアライブ動作により、他の分散認証システムに参加するノードとノードリストの交換を行うステップと、
(B3)前記ノードリストを読み出し、前記分散認証システムに参加するノード数が所定数に達しているかどうかを確認するステップと、を有することを特徴とする分散認証方法。
【請求項35】
請求項32に記載の分散認証方法において、
前記(C)一般ノードのときの動作を行うステップは、
(C1)前記一般ノード動作の初期状態ステップと、
(C2)ノードリストを読み出し、他のノードに対し、ノードリストを付加したキープアライブメッセージを送信するステップと、
(C3)他ノードから、ノードリストが付加されたキープアライブメッセージを受信するステップと、
(C4)受信した前記キープアライブメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新するステップと、
(C5)前記ノードリストを読み出し、前記分散認証システムに参加するノード数が所定数に達しているかどうかを確認するステップと、
(C6)参加リクエストを受信するステップと、
(C7)前記参加リクエストを送信してきたノードに対し、参加レスポンスを送信するステップと、
(C8)前記所定数台の代表ノードのうち、任意の代表ノードに対し、電子証明書作成リクエストを送信するステップと、
(C9)代表ノード指名リクエストを受信するステップと、
(C10)前記代表ノードになるかどうか選択するステップと、
(C11)前記代表ノードになるために、前記代表ノード指名リクエストを送信してきたノードに対し、代表ノード指名レスポンスを送信するステップと、
(C12)代表ノードになることを拒否するために、前記代表ノード指名リクエストを送信してきたノードに対し、代表ノード拒否の情報を付加し代表ノード指名レスポンスを送信するステップと、
(C13)電子証明書発行リクエストを受信するステップと、
(C14)前記電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信するステップと、を有することを特徴とする分散認証方法。
【請求項36】
請求項32に記載の分散認証方法において、
前記(D)代表ノードのときの動作を行うステップは、
(D1)代表ノード動作時の初期状態ステップと、
(D2)ノードリストを読み出し、他のノードに対し、ノードリストを付加したキープアライブメッセージを送信するステップと、
(D3)他のノードから、ノードリストが付加されたキープアライブメッセージを受信するステップと、
(D4)受信した前記キープアライブメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新するステップと、
(D5)ノードリストを読み出し、分散認証システムに参加するノード数が所定数に達しているかどうかを確認するステップと、
(D6)ノードリストを読み出し、代表ノードが離脱していないか確認するステップと、
(D7)代表ノードを離脱したい場合、他の代表ノードに対し、代表ノード離脱リクエストを送信するステップと、
(D8)代表ノード離脱レスポンスを受信するステップと、
(D9)参加リクエストを受信するステップと、
(D10)参加リクエストを送信してきたノードに対し、参加レスポンスを送信するステップと、
(D11)参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報となるランダム素数を生成するステップと、
(D12)前記所定数台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの個人鍵の公開鍵を生成するステップと、
(D13)前記所定数台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの電子証明書を生成するステップと、
(D14)前記参加リクエストを送信してきたノードに対し、前記個人鍵の秘密鍵の素となる情報と、前記個人鍵の公開鍵と、前記電子証明書とを送信するステップと、
(D15)電子証明書生成リクエストを受信するステップと、
(D16)代表ノード離脱リクエストを受信するステップと、
(D17)代表ノード離脱レスポンスを送信するステップと、
(D18)代表ノード指名確認メッセージを受信するステップと、
(D19)代表ノード指名確認レスポンスを送信するステップと、
(D20)電子証明書発行リクエストを受信するステップと、
(D21)前記電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信するステップと、
(D22)前記分散認証システム電子証明書発行リクエストを受信するステップと、
(D23)前記分散認証システム電子証明書発行リクエストを送信してきたノードに対し、分散認証システム電子証明書を付加した分散認証システム電子証明書発行レスポンスを送信するステップと、を有することを特徴とする分散認証方法。
【請求項37】
請求項32に記載の分散認証方法において、
前記(E)受信したメッセージの電子署名を確認するときの動作を行うステップは、
(E1)署名確認動作の初期状態ステップと、
(E2)メッセージ送信元のノードの電子証明書発行リクエストを送信するステップと、
(E3)電子証明書発行レスポンスを受信するステップと、
(E4)前記代表ノードに対し、分散認証システム電子証明書発行リクエストを送信するステップと、
(E5)分散認証システム電子証明書発行レスポンスを受信するステップと、
(E6)分散認証システム電子証明書に付加されている代表鍵の公開鍵を用い、電子証明書に付加されている電子署名を前記代表鍵の公開鍵で復号し、前記電子証明書の正当性を確認し、さらに、受信したメッセージに付加されている電子署名を前記電子証明書に付加されている前記個人鍵の公開鍵で復号し、当該メッセージの正当性を確認するステップと、を有することを特徴とする分散認証方法。
【請求項38】
請求項32に記載の分散認証方法において、
前記(F)代表ノードの初期の動作を行うステップは、
(F1)代表ノード初期動作時の初期状態ステップと、
(F2)前記分散認証システムの代表鍵の秘密鍵の素となる情報となるランダム素数を生成するステップと、
(F3)所定数台の代表ノード間で互いに連携し、前記分散認証システムの代表鍵の公開鍵を生成するステップと、
(F4)この時点のノードリストに対し、前記個人鍵の秘密鍵を用いて電子署名をするステップと、
(F5)他の代表ノードに対し、電子署名済みのノードリストを送信するステップと、
(F6)他の代表ノードから、ノードリストを受信するステップと、
(F7)受信した前記ノードリストに全代表ノードの電子署名が付加されているか確認するステップと、
(F8)全代表ノードによる電子署名が完了したノードリストを、残存する旧代表ノードに送信するステップと、
(F9)残存する旧代表ノードによる電子署名が付加されたノードリストを受信するステップと、
(F10)受信した前記ノードリストに、残存する旧代表ノード全てによる電子署名が付加されているか確認するステップと、
(F11)前記所定数台の代表ノード間で互いに連携し、分散認証システム電子証明書を作成するステップと、を有することを特徴とする分散認証方法。
【請求項39】
請求項32に記載の分散認証方法において、
前記(G)代表ノードを更新するときの動作を行うステップは、
(G1)代表ノード更新動作時の初期状態ステップと、
(G2)新たに代表ノードになるノードを選出するステップと、
(G3)代表ノード指名確認メッセージを、他の代表ノードに送信するステップと、
(G4)代表ノード指名確認レスポンスを受信するステップと、
(G5)受信した前記代表ノード指名確認レスポンスに、選出した前記ノードを拒否するメッセージが付加されているか確認するステップと、
(G6)選出した前記ノードに対し、代表ノード指名リクエストを送信するステップと、
(G7)選出した前記ノードから、代表ノード指名レスポンスを受信するステップと、
(G8)受信した前記代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されているか確認するステップと、
(G9)代表ノード数が所定数に達しているかどうか確認するステップと、を有することを特徴とする分散認証方法。
【請求項40】
請求項32に記載の分散認証方法において、
前記(H)代表ノードを離脱するときの動作を行うステップは、
(H1)代表ノード離脱動作時の初期状態ステップと、
(H2)前記代表ノードから、全ての代表ノードの電子署名が付加されたノードリストを受信するステップと、
(H3)受信した前記ノードリストに、電子署名を付加するステップと、
(H4)前記全ての代表ノードの電子署名が付加されたノードリストを送信してきた代表ノードに対し、電子署名を付加した前記ノードリストを送信するステップと、を有することを特徴とする分散認証方法。
【請求項41】
請求項32から40のいずれか一項に記載の分散認証方法を、コンピュータに実行させるための分散認証プログラム。
【請求項1】
ひとつまたは複数のノードで構成される分散認証システムであって、
前記分散認証システムに参加するノードのうち所定数台のノードが前記分散認証システムを代表する代表ノードとなり、
前記代表ノードが、互いに連携することによって、前記分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、前記分散認証システムに参加するノードの電子署名で用いる個人鍵と、前記分散認証システムに参加するノードの電子証明書とを発行することを特徴とする分散認証システム。
【請求項2】
請求項1に記載の分散認証システムにおいて、
前記分散認証システムを構成するノードは、
他ノードから送られてくるデータを受信する受信部と、
前記分散認証システムを構成するノードの情報を含むノードリストを更新可能に保存するノード情報保存部と、
前記ノードリストに基づいて、前記分散認証システムのモードとして、前記分散認証システムに参加する全ノード数が所定数未満のときの総意モードと、前記分散認証システムに参加する全ノード数が所定数以上のときの代表モードとを管理するモード管理部と、
前記代表モードの場合、前記代表ノードのときの動作を行う代表ノード機能部と、
前記代表モードの場合、前記代表ノード以外の一般ノードのときの動作を行う一般ノード機能部と、
前記総意モード及び前記代表モードに共通の動作を行う共通機能部と、
前記代表ノード機能部、前記一般ノード機能部、及び前記共通機能部から渡される前記他ノードへのデータに電子署名を付加する署名付加部と、
前記電子署名が付加されたデータを前記他ノードに送信する送信部と、を有することを特徴とする分散認証システム。
【請求項3】
請求項2に記載の分散認証システムにおいて、
前記一般ノード機能部は、
前記ノードが前記一般ノードである場合に、仮鍵を生成する機能を有する仮鍵生成部と、
前記分散認証システムに参加するための参加リクエストを前記分散認証システムに既に参加している他ノードに送信する機能を有する参加動作部と、を有することを特徴とする分散認証システム。
【請求項4】
請求項2に記載の分散認証システムにおいて、
前記代表ノード機能部は、
前記ノードが前記代表ノードである場合に、他の代表ノードと互いに連携し、前記代表鍵と前記分散認証システム電子証明書とを生成する代表鍵生成部と、
他ノードからの参加リクエストまたは電子証明書生成リクエストを受信し、前記他ノードの個人鍵とその電子証明書とを生成する他ノード電子証明書生成部と、
前記代表ノードが規定数より少なくなった場合に前記代表ノードを指名する機能と、前記代表ノードを離脱する機能とを有する代表ノード指名・離脱機能部と、
前記代表鍵と前記他ノードの個人鍵との秘密鍵の素となるランダム素数を生成するランダム素数生成部と、を有することを特徴とする分散認証システム。
【請求項5】
請求項2に記載の分散認証システムにおいて、
前記共通機能部は、
前記ノードが前記一般ノードまたは前記代表ノードの場合に、キープアライブ動作により他ノードと前記ノードリストを交換するキープアライブ動作部と、
前記分散認証システムを利用するアプリケーションを実施するアプリケーション部と、
前記規定数台の代表ノードから受信する前記個人鍵の秘密鍵の素となる情報から前記個人鍵の秘密鍵を生成する個人鍵生成部と、
前記他ノードから受信するメッセージに付加されている電子署名の正当性を確認する電子署名確認部と、を有することを特徴とする分散認証システム。
【請求項6】
請求項2に記載の分散認証システムにおいて、
前記受信部は、受信したメッセージを前記モード管理部へ送ることを特徴とする分散認証システム。
【請求項7】
請求項2に記載の分散認証システムにおいて、
前記モード管理部は、
前記ノード情報保存部に保存されているノードリストを読み出す機能と、
前記分散認証システムに参加しているノード数を確認する機能と、
前記分散認証システムのモードを確認する機能と、
自ノードが前記代表ノードであるか、前記一般ノードであるかの状態を管理する機能と、
前記ノード情報保存部に保存されているノード情報を定期的に読み出し、前記分散認証システムに参加するノード数が前記所定数未満であるかそうでないかを確認する機能と、
前記分散認証システムに参加するノード数が前記所定数未満であった場合、自ノードを前記総意モードで動作させる機能と、
前記分散認証システムに参加するノード数が前記所定数以上であった場合、自ノードを前記代表モードで動作させる機能と、
前記代表ノードに指名されていた場合、自ノードを前記代表ノードとして動作させる機能と、
前記代表ノードに指名されていなかった場合、自ノードを前記一般ノードとして動作させる機能と、
前記総意モードにおいて、前記ノード情報保存部に保存されているノードリストを確認し、前記分散認証システムに参加している全ノード数が前記所定数に到達していた場合、自ノードを前記代表モードに移行させる機能と、
前記代表ノード機能部に、前記分散認証システムの代表鍵を生成するよう指示する機能と、
前記一般ノード機能部に、前記分散認証ネットワークに改めて参加し前記分散認証システムの発行する電子証明書及び鍵を得るよう指示する機能と、
前記代表ノード機能部に前記鍵の秘密鍵を用いて前記ノードリストに電子署名をするよう指示する機能と、
前記代表ノード機能部に、前記所定数台の代表ノードによる電子署名の完了した前記ノードリストに前記代表鍵による電子署名を付加するよう指示する機能と、
受信したメッセージを適切な機能部へ振り分けを行う機能と、を有することを特徴とする分散認証システム。
【請求項8】
請求項1に記載の分散認証システムにおいて、
前記代表ノードは、
他の代表ノードと互いに連携し、前記代表鍵と前記分散認証システム電子証明書とを生成する機能と、
他ノードからの参加リクエストまたは電子証明書生成リクエストを受信し、前記他ノードの前記個人鍵と前記電子証明書を生成する機能と、
前記代表ノードを離脱する機能と、
前記代表ノードが前記所定数より少なくなった場合に前記代表ノードを指名する機能と、
前記代表鍵と前記他ノードの個人鍵との秘密鍵の素となるランダム素数を生成する機能と、
前記キープアライブ動作により前記他ノードと前記ノードリストを交換する機能と、
前記分散認証システムを利用するアプリケーションを実施する機能と、
前記所定数台の代表ノードから受信する前記個人鍵の秘密鍵の素となる情報から前記個人鍵の秘密鍵を生成する機能と、
前記他ノードから受信するメッセージに付加されている電子署名の正当性を確認する機能と、を有することを特徴とする分散認証システム。
【請求項9】
請求項2に記載の分散認証システムにおいて、
前記ノードリストは、前記分散認証システムに参加している全ノードのノード情報と、代表ノード情報と、を有することを特徴とする分散認証システム。
【請求項10】
請求項9に記載の分散認証システムにおいて、
前記ノード情報は、ノードのIDと、ノードのIPアドレスと、ポート番号と、代表ノード情報と、旧代表ノード情報と、を含むことを特徴とする分散認証システム。
【請求項11】
請求項9に記載の分散認証システムにおいて、
前記代表ノード情報は、前記代表ノードがどのノードであるかという情報を含むことを特徴とする分散認証システム。
【請求項12】
請求項9に記載の分散認証システムにおいて、
前記旧代表ノード情報は、過去に前記代表ノードがどのノードであったかという情報を含むことを特徴とする分散認証システム。
【請求項13】
請求項3に記載の分散認証システムにおいて、
前記仮鍵は、前記分散認証システムによって発行された鍵ではなく、各ノードが生成する鍵であって、新規に前記分散認証システムに参加する場合と、前記総意モードの場合とに、他ノードへの全てのメッセージに付加される電子署名に利用されることを特徴とする分散認証システム。
【請求項14】
請求項1に記載の分散認証システムにおいて、
前記代表鍵は、公開鍵暗号系の秘密鍵と公開鍵とから成り、
前記個人鍵は、公開鍵暗号系の秘密鍵と個人鍵とから成ることを特徴とする分散認証システム。
【請求項15】
請求項1に記載の分散認証システムにおいて、
前記代表鍵は、ノードリストと、前記分散認証システムに参加するノードの電子証明書とに前記分散認証システムの電子署名を付加する場合に使用され、
前記代表鍵の秘密鍵は、前記分散認証システム上のどのノードも知ることができないように複数の代表ノードに分散して保存され、
前記代表鍵の公開鍵は、前記分散認証システム上のどのノードも参照することができるように前記分散認証システム上に公開されることを特徴とする分散認証システム。
【請求項16】
請求項1に記載の分散認証システムにおいて、
前記分散認証システムに参加するノードの電子証明書は、前記個人鍵の公開鍵と、前記分散認証システムに参加するノードの情報とに加え、前記個人鍵の公開鍵及び前記ノードの情報のダイジェスト情報に前記代表鍵による電子署名を付加したものであることを特徴とする分散認証システム。
【請求項17】
請求項16に記載の分散認証システムにおいて、
前記ダイジェスト情報は、元になる情報の要約情報であり、その元になる情報に一方向関数を適用することで生成されることを特徴とする分散認証システム。
【請求項18】
請求項3に記載の分散認証システムにおいて、
前記参加動作部は、
自ノードが新規に前記分散認証システムに参加する場合に、前記仮鍵の公開鍵を付加した参加リクエストを自ノードの仮鍵の秘密鍵による電子署名と共に送信する機能と、
他ノードから前記参加リクエストを受信した場合に前記参加リクエストに付加されている前記仮鍵の公開鍵を用いて前記電子署名を確認し、改ざんがない場合は参加レスポンスを送信する機能と、
前記分散認証システムが前記総意モードであった場合、前記参加レスポンスに自ノードの仮鍵の公開鍵と、ノードリストとを付加し、自ノードの仮鍵の秘密鍵による電子署名と共に送信する機能と、
前記分散認証システムが代表モードであった場合、前記参加レスポンスに前記参加リクエストを受理した旨のメッセージを付加し、自ノードの個人鍵の秘密鍵による電子署名と共に送信する機能と、
前記ノード情報保存部からノードリストを読み出し、前記代表ノードを確認し、ある代表ノードに対し、前記参加リクエストを送信してきたノードのノード情報を付加した電子証明書生成リクエストを送信する機能と、を有することを特徴とする分散認証システム。
【請求項19】
請求項3に記載の分散認証システムにおいて、
前記仮鍵生成部は、前記仮鍵を生成する機能と、生成した仮鍵を自ノードのノード情報と共に前記ノード情報保存部に保存する機能と、を有することを特徴とする分散認証システム。
【請求項20】
請求項4に記載の分散認証システムにおいて、
前記ランダム素数生成部は、
前記代表鍵生成部と前記他ノード電子証明書生成部からのリクエストを受けて、ランダムな素数を生成する機能と、
生成したランダムな素数を前記代表鍵生成部と前記他ノード電子証明書生成部とに渡す機能と、を有することを特徴とする分散認証システム。
【請求項21】
請求項4に記載の分散認証システムにおいて、
前記代表鍵生成部は、
前記分散認証システムが前記代表モードかつ自ノードが前記代表ノードであった場合に、前記モード管理部から前記代表鍵を生成するように指示を受けると、他の代表ノードと連携し、前記ランダム素数生成部が生成した素数を素に、前記代表鍵の公開鍵の素となる情報を他ノードに知らせることなく、マルチパーティプロトコルを用いて、前記代表鍵の公開鍵を生成する機能と、
自ノードが前記代表ノードでなくなるまで前記代表鍵の生成に利用した素数を保存する機能と、
前記分散認証システムが前記代表モードかつ自ノードが前記代表ノードであった場合に、前記モード管理部から前記所定数の代表ノードによる電子署名の完了したノードリストに前記代表鍵による電子署名を付加するように指示を受けると、他の代表ノードと連携し、前記代表鍵の素となる情報を他ノードに知らせることなく、ノードリストに前記代表鍵の秘密鍵を用いた電子署名を付加する機能と、を有することを特徴とする分散認証システム。
【請求項22】
請求項4に記載の分散認証システムにおいて、
前記代表ノード指名・離脱機能部は、
自ノードが前記代表ノードであり前記代表ノードを離脱したい場合に、前記ノード情報保存部からノードリストを読み出し、代表ノード離脱リクエストを他の代表ノードに送信する機能と、
自ノードが前記代表ノードであった場合に、前記代表ノード離脱リクエストを受信すると、前記代表ノード離脱リクエストを送信してきた代表ノードに対し、代表ノード離脱レスポンスを送信する機能と、
前記代表ノードが前記所定数未満である状態から、前記代表ノードを前記所定数とするため、前記ノード情報保存部からノードリストを読み出し、適当な一般ノードを選出する機能と、
選出した前記一般ノードのノード情報を記載した代表ノード指名確認メッセージを他の代表ノード全てに送信する機能と、
前記代表ノード指名確認メッセージを受信した場合に、選出された前記一般ノードのノード情報を確認し、可否情報を含む代表ノード指名確認レスポンスを返送する機能と、
自ノードを除く全ての代表ノードから代表ノード指名確認レスポンスを受信した場合に、選出した一般ノードに代表ノード指名リクエストを送信する機能と、
自ノードが前記一般ノードであり前記ノード代表ノード指名リクエストを受信した場合に、可否情報を含む代表ノード指名レスポンスを返送する機能と、
前記代表ノード指名レスポンスを受信した場合に、新しく代表ノードとなるノードのノード情報を、自ノードを除く全ての代表ノードに送信する機能と、
前記代表ノード機能部に、前記個人鍵の秘密鍵を用いてノードリストに電子署名をするよう指示する機能と、
前記代表鍵を更新する前まで前記代表ノードであった旧代表ノードに対し、現在代表ノードであるノードによる電子署名が終了しているノードリストに電子署名をするよう指示する機能と、
前記代表ノード機能部に、前記所定数の代表ノード及び前記所定数の旧代表ノードによる電子署名の完了したノードリストに前記代表鍵による電子署名を付加するよう指示する機能と、
前記電子署名が付加されたノードリストと前記代表鍵の公開鍵とをセットで前記分散認証ネットワーク電子証明書として、前記ノード情報保存部に保存する機能と、を有することを特徴とする分散認証システム。
【請求項23】
請求項22に記載の分散認証システムにおいて、
前記代表ノード指名・離脱機能部は、前記各機能を、前記代表ノードが前記規定数台になるまで繰り返す機能を有することを特徴とする分散認証システム。
【請求項24】
請求項4に記載の分散認証システムにおいて、
前記他ノード電子証明書生成部は、
前記分散認証システムが前記代表モードかつ自ノードが前記代表ノードであった場合に、電子証明書生成リクエストを受信すると、他の代表ノードと連携し、前記ランダム素数生成部が生成する素数を素に、電子証明書に付随する個人鍵の素となる情報を他ノードに知らせることなく、マルチパーティプロトコルを用いて、電子証明書リクエストに記載のノードの個人鍵を生成する機能と、
前記代表鍵生成部と連携し、前記ノードのノード情報と前記個人鍵から電子証明書を生成する機能と、
前記個人鍵の秘密鍵の素となる情報と公開鍵と前記電子証明書を電子証明書生成リクエストに記載のノードに送信する機能と、を有することを特徴とする分散認証システム。
【請求項25】
請求項5に記載の分散認証システムにおいて、
前記キープアライブ動作部は、
他ノードに対し定期的にキープアライブメッセージを送信する機能と、
他ノードから定期的に前記キープアライブメッセージを受信することで通信路のつながりをチェックする機能と、
前記キープアライブメッセージに付加されたノードリストと前記ノード情報保存部から読み出したノードリストとを比較し、ノードリストを最新の情報に更新する機能と、
前記キープアライブメッセージに対し一定期間レスポンスがない場合は、該当ノードは前記分散認証システムから離脱したと判定し、ノードリストを更新し、前記キープアライブ動作を用いて他ノードに最新の情報を伝える機能と、
前記代表ノードが離脱したと判定した場合に、前記ノード管理部に前記代表ノードが離脱したことを送信する機能と、を有することを特徴とする分散認証システム。
【請求項26】
請求項5に記載の分散認証システムにおいて、
前記アプリケーション部は、前記分散認証システムを利用するアプリケーションの処理をする機能を有することを特徴とする分散認証システム。
【請求項27】
請求項5に記載の分散認証システムにおいて、
前記個人鍵生成部は、
前記所定数台の代表ノードから受信する個人鍵の秘密鍵の素となる所定数の情報から前記個人鍵の秘密鍵を生成する機能と、
受信した前記個人鍵の公開鍵と秘密鍵とが有効に動作するか確認する機能と、
受信した電子証明書の有効性を確認する機能と、を有することを特徴とする分散認証システム。
【請求項28】
請求項5に記載の分散認証システムにおいて、
前記電子署名確認部は、
メッセージを受信した場合にメッセージ送信元を確認し、前記分散認証システムにメッセージ送信元のノードの電子証明書発行リクエストを送信する機能と、
メッセージ送信元のノードの電子証明書を得た場合に、前記電子証明書に付加されている前記代表鍵による電子署名を確認するため、前記分散認証システムに分散認証システム電子証明書発行リクエストを送信する機能と、
前記分散認証システム電子証明書に付加されている前記代表鍵の公開鍵を得た場合に、前記電子証明書に付加されている電子署名を前記代表鍵の公開鍵で復号し、前記電子証明書の正当性を確認する機能と、
受信したメッセージに付加されている電子署名を前記電子証明書に付加されている前記個人鍵の公開鍵で復号し、当該メッセージの正当性を確認する機能と、
他ノードから前記電子証明書発行リクエストを受信した場合に、該当する電子証明書を前記ノード情報保存部から読み出し、電子証明書発行レスポンスを返送する機能と、
他ノードから前記分散認証システム電子証明書発行リクエストを受信した場合に、該当する公開鍵を前記ノード情報保存部から読み出し、分散認証システム電子証明書発行レスポンスを送信する機能と、を有することを特徴とする分散認証システム。
【請求項29】
請求項2に記載の分散認証システムにおいて、
前記署名付加部は、
前記分散認証システムが前記総意モードの場合に前記ノード情報保存部に保存されている仮鍵を使用し、前記一般ノード機能部、前記代表ノード機能部、及び前記共通機能部からのメッセージに電子署名を付加する機能と、
前記分散認証システムによって前記電子証明書の発行を受けていない場合に前記ノード情報保存部に保存されている前記仮鍵を使用し、前記一般ノード機能部、前記代表ノード機能部、及び前記共通機能部からのメッセージに電子署名を付加する機能と、
前記分散認証システムが前記総意モードの場合でなく、前記分散認証システムによって前記電子証明書の発行を受けている場合に、前記ノード情報保存部に保存されている前記個人鍵を使用し、前記一般ノード機能部、前記代表ノード機能部、及び前記共通機能部からのメッセージに電子署名を付加する機能と、を有することを特徴とする分散認証システム。
【請求項30】
請求項2に記載の分散認証システムにおいて、
前記送信部は、前記署名付加部からのメッセージを受け、そのメッセージに記載された宛先のノードに対し、当該メッセージを送信する機能を有することを特徴とする分散認証システム。
【請求項31】
請求項2に記載の分散認証システムにおいて、
前記ノード情報保存部は、自ノードのノード情報、仮鍵、前記電子証明書、前記ノードリスト、前記分散認証ネットワーク電子証明書、を保存する機能を有することを特徴とする分散認証システム。
【請求項32】
ひとつまたは複数のノードで構成される分散認証システムであり、前記分散認証システムに参加するノードのうち所定数台のノードが前記分散認証システムを代表する代表ノードとなり、前記代表ノードが、互いに連携することによって、前記分散認証システムの電子署名で用いる代表鍵と、分散認証システム電子証明書と、前記分散認証システムに参加するノードの電子署名で用いる個人鍵と、前記分散認証システムに参加するノードの電子証明書とを発行する分散認証システムの分散認証方法であって、
(A)前記分散認証システムへの参加を開始するステップと、
(B)前記分散認証システムに参加する全ノード数が所定数未満の場合、総意モードの動作を行うステップと、
(C)前記分散認証システムに参加する全ノード数が所定数以上の場合、代表モードの動作として、前記代表ノード以外の一般ノードのときの動作を行うステップと、
(D)前記代表モードの動作として、前記代表ノードのときの動作を行うステップと、
(E)他ノードから受信したメッセージの電子署名を確認するときの動作を行うステップと、
(F)前記代表ノードの初期の動作を行うステップと、
(G)前記代表ノードを更新するときの動作を行うステップと、
(H)前記代表ノードを離脱するときの動作を行うステップとを有することを特徴とする分散認証方法。
【請求項33】
請求項32に記載の分散認証方法において、
前記(A)分散認証システムへの参加を開始するステップは、
(A1)初期状態ステップと、
(A2)仮鍵を生成するステップと、
(A3)仮鍵及びノード情報を保存するステップと、
(A4)前記分散認証システムに既に参加している他ノードに対し、参加リクエストを送信するステップと、
(A5)前記分散認証システムのモードを確認するステップと、
(A6)参加依頼レスポンスとして、参加依頼リクエストを送信したノードの仮鍵及びノードリストを受信し、ノードリストを更新するステップと、
(A7)ノードリストを読み出し、ノードリストに記載の全ノードの仮鍵を保持しているか確認するステップと、
(A8)参加レスポンスを受信するステップと、
(A9)所定数台の代表ノードから個人鍵の秘密鍵の素となる情報と、電子証明書を受信するステップと、
(A10)受信した前記個人鍵の秘密鍵の素となる情報から個人鍵を生成するステップと、を有することを特徴とする分散認証方法。
【請求項34】
請求項32に記載の分散認証方法において、
前記(B)総意モードの動作を行うステップは、
(B1)前記総意モードの動作時の初期状態ステップと、
(B2)キープアライブ動作により、他の分散認証システムに参加するノードとノードリストの交換を行うステップと、
(B3)前記ノードリストを読み出し、前記分散認証システムに参加するノード数が所定数に達しているかどうかを確認するステップと、を有することを特徴とする分散認証方法。
【請求項35】
請求項32に記載の分散認証方法において、
前記(C)一般ノードのときの動作を行うステップは、
(C1)前記一般ノード動作の初期状態ステップと、
(C2)ノードリストを読み出し、他のノードに対し、ノードリストを付加したキープアライブメッセージを送信するステップと、
(C3)他ノードから、ノードリストが付加されたキープアライブメッセージを受信するステップと、
(C4)受信した前記キープアライブメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新するステップと、
(C5)前記ノードリストを読み出し、前記分散認証システムに参加するノード数が所定数に達しているかどうかを確認するステップと、
(C6)参加リクエストを受信するステップと、
(C7)前記参加リクエストを送信してきたノードに対し、参加レスポンスを送信するステップと、
(C8)前記所定数台の代表ノードのうち、任意の代表ノードに対し、電子証明書作成リクエストを送信するステップと、
(C9)代表ノード指名リクエストを受信するステップと、
(C10)前記代表ノードになるかどうか選択するステップと、
(C11)前記代表ノードになるために、前記代表ノード指名リクエストを送信してきたノードに対し、代表ノード指名レスポンスを送信するステップと、
(C12)代表ノードになることを拒否するために、前記代表ノード指名リクエストを送信してきたノードに対し、代表ノード拒否の情報を付加し代表ノード指名レスポンスを送信するステップと、
(C13)電子証明書発行リクエストを受信するステップと、
(C14)前記電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信するステップと、を有することを特徴とする分散認証方法。
【請求項36】
請求項32に記載の分散認証方法において、
前記(D)代表ノードのときの動作を行うステップは、
(D1)代表ノード動作時の初期状態ステップと、
(D2)ノードリストを読み出し、他のノードに対し、ノードリストを付加したキープアライブメッセージを送信するステップと、
(D3)他のノードから、ノードリストが付加されたキープアライブメッセージを受信するステップと、
(D4)受信した前記キープアライブメッセージに付加されていたノードリストと自ノードが保存していたノードリストを比較し最新の情報に更新するステップと、
(D5)ノードリストを読み出し、分散認証システムに参加するノード数が所定数に達しているかどうかを確認するステップと、
(D6)ノードリストを読み出し、代表ノードが離脱していないか確認するステップと、
(D7)代表ノードを離脱したい場合、他の代表ノードに対し、代表ノード離脱リクエストを送信するステップと、
(D8)代表ノード離脱レスポンスを受信するステップと、
(D9)参加リクエストを受信するステップと、
(D10)参加リクエストを送信してきたノードに対し、参加レスポンスを送信するステップと、
(D11)参加リクエストを送信してきたノードの個人鍵の秘密鍵の素となる情報となるランダム素数を生成するステップと、
(D12)前記所定数台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの個人鍵の公開鍵を生成するステップと、
(D13)前記所定数台の代表ノード間で互いに連携し、参加リクエストを送信してきたノードの電子証明書を生成するステップと、
(D14)前記参加リクエストを送信してきたノードに対し、前記個人鍵の秘密鍵の素となる情報と、前記個人鍵の公開鍵と、前記電子証明書とを送信するステップと、
(D15)電子証明書生成リクエストを受信するステップと、
(D16)代表ノード離脱リクエストを受信するステップと、
(D17)代表ノード離脱レスポンスを送信するステップと、
(D18)代表ノード指名確認メッセージを受信するステップと、
(D19)代表ノード指名確認レスポンスを送信するステップと、
(D20)電子証明書発行リクエストを受信するステップと、
(D21)前記電子証明書発行リクエストを送信してきたノードに対し、自ノードの電子証明書を付加した電子証明書発行レスポンスを送信するステップと、
(D22)前記分散認証システム電子証明書発行リクエストを受信するステップと、
(D23)前記分散認証システム電子証明書発行リクエストを送信してきたノードに対し、分散認証システム電子証明書を付加した分散認証システム電子証明書発行レスポンスを送信するステップと、を有することを特徴とする分散認証方法。
【請求項37】
請求項32に記載の分散認証方法において、
前記(E)受信したメッセージの電子署名を確認するときの動作を行うステップは、
(E1)署名確認動作の初期状態ステップと、
(E2)メッセージ送信元のノードの電子証明書発行リクエストを送信するステップと、
(E3)電子証明書発行レスポンスを受信するステップと、
(E4)前記代表ノードに対し、分散認証システム電子証明書発行リクエストを送信するステップと、
(E5)分散認証システム電子証明書発行レスポンスを受信するステップと、
(E6)分散認証システム電子証明書に付加されている代表鍵の公開鍵を用い、電子証明書に付加されている電子署名を前記代表鍵の公開鍵で復号し、前記電子証明書の正当性を確認し、さらに、受信したメッセージに付加されている電子署名を前記電子証明書に付加されている前記個人鍵の公開鍵で復号し、当該メッセージの正当性を確認するステップと、を有することを特徴とする分散認証方法。
【請求項38】
請求項32に記載の分散認証方法において、
前記(F)代表ノードの初期の動作を行うステップは、
(F1)代表ノード初期動作時の初期状態ステップと、
(F2)前記分散認証システムの代表鍵の秘密鍵の素となる情報となるランダム素数を生成するステップと、
(F3)所定数台の代表ノード間で互いに連携し、前記分散認証システムの代表鍵の公開鍵を生成するステップと、
(F4)この時点のノードリストに対し、前記個人鍵の秘密鍵を用いて電子署名をするステップと、
(F5)他の代表ノードに対し、電子署名済みのノードリストを送信するステップと、
(F6)他の代表ノードから、ノードリストを受信するステップと、
(F7)受信した前記ノードリストに全代表ノードの電子署名が付加されているか確認するステップと、
(F8)全代表ノードによる電子署名が完了したノードリストを、残存する旧代表ノードに送信するステップと、
(F9)残存する旧代表ノードによる電子署名が付加されたノードリストを受信するステップと、
(F10)受信した前記ノードリストに、残存する旧代表ノード全てによる電子署名が付加されているか確認するステップと、
(F11)前記所定数台の代表ノード間で互いに連携し、分散認証システム電子証明書を作成するステップと、を有することを特徴とする分散認証方法。
【請求項39】
請求項32に記載の分散認証方法において、
前記(G)代表ノードを更新するときの動作を行うステップは、
(G1)代表ノード更新動作時の初期状態ステップと、
(G2)新たに代表ノードになるノードを選出するステップと、
(G3)代表ノード指名確認メッセージを、他の代表ノードに送信するステップと、
(G4)代表ノード指名確認レスポンスを受信するステップと、
(G5)受信した前記代表ノード指名確認レスポンスに、選出した前記ノードを拒否するメッセージが付加されているか確認するステップと、
(G6)選出した前記ノードに対し、代表ノード指名リクエストを送信するステップと、
(G7)選出した前記ノードから、代表ノード指名レスポンスを受信するステップと、
(G8)受信した前記代表ノード指名レスポンスに、代表ノードになることを拒否するメッセージが付加されているか確認するステップと、
(G9)代表ノード数が所定数に達しているかどうか確認するステップと、を有することを特徴とする分散認証方法。
【請求項40】
請求項32に記載の分散認証方法において、
前記(H)代表ノードを離脱するときの動作を行うステップは、
(H1)代表ノード離脱動作時の初期状態ステップと、
(H2)前記代表ノードから、全ての代表ノードの電子署名が付加されたノードリストを受信するステップと、
(H3)受信した前記ノードリストに、電子署名を付加するステップと、
(H4)前記全ての代表ノードの電子署名が付加されたノードリストを送信してきた代表ノードに対し、電子署名を付加した前記ノードリストを送信するステップと、を有することを特徴とする分散認証方法。
【請求項41】
請求項32から40のいずれか一項に記載の分散認証方法を、コンピュータに実行させるための分散認証プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2008−186064(P2008−186064A)
【公開日】平成20年8月14日(2008.8.14)
【国際特許分類】
【出願番号】特願2007−16562(P2007−16562)
【出願日】平成19年1月26日(2007.1.26)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
【公開日】平成20年8月14日(2008.8.14)
【国際特許分類】
【出願日】平成19年1月26日(2007.1.26)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】
[ Back to top ]