« P2P・DHTオフ会 in 関西(12/3[日]開催) | トップページ | [P2P]P2P・DHT勉強会 in 関西 »

2006.11.11

[P2P][DHT]サーバレスなP2P認証方法の提案

□はじめに

先日はゼロ知識証明を応用した認証方法を提案した。

このエントリーには色々とコメントを頂きその後改良を加えた。しかし以下の2つが欠点でとして残っている。

[欠点1]中間侵入攻撃を許す。
[欠点2]ノードIDをそのノードが保有していることを完全には証明できない。

そこで上記2点を改良した方法を提案する。今回の基本的アイデアはある条件化で自己証明書を作る事である。

□ノードが事前に実施すべきアルゴリズム

これから各ノードが事前に実施すべきアルゴリズム案を書いておく。

[手順1]ノード1は大きな素数a1,b1を選び、c1=a1×b1を計算する。nodeID1=hash(c)とする。ただしhash()はハッシュ関数。nodeID1はノードIDに相当する。
[手順2]ノード1はc1を利用してRSA暗号アルゴリズムから公開鍵e1と秘密鍵d1のペアを生成する。
[手順3]ノード1はpublicinfo1=(nodeID1,c1,e1,sgn1)を公開する。この際、sgn1はhash(node1,e1)をd1で暗号化したもの、つまり自己証明書相当のものを意味する。

□ノードの認証

次にノード2がノード1を認証するアルゴリズムを書く。ノード2はpublicinfo2(nodeID2,c2,e2,sgn2)を公開している。

[手順1]ノード2はDHTを使ってノード1のpublicinfo1を入手する。
[手順2]ノード2はnodeID1,c1よりc1を検証し且つnodeID1,c1,e1,sgn1を使ってpublicinfo1を検証する。
[手順3]ノード1はc1,d1を使い、ノード2はc1,e1を使ってRSA暗号通信を開始する。
[手順4]上位RSA暗号通信はプロトコルが決まっており、随時「暗号通信路内」でノード2からノード1へのチャレンジレスポンス、ノード1からノード2へのチャレンジレスポンスを実施する。なおノード1がノード2にチャレンジレスポンスをする際には(c2,e2)を利用する。これでノード1とノード2が相互認証されたことになる。

□制約条件
今回のアルゴリズムが有効なのは各cの素因数分解が複数ユーザが知らない事が前提である。
ユーザ3がcを作成したときに、たまたまユーザ1が既にcを保有した場合には、ユーザ3はユーザ1の成りすましが可能である。

|

« P2P・DHTオフ会 in 関西(12/3[日]開催) | トップページ | [P2P]P2P・DHT勉強会 in 関西 »

P2P」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [P2P][DHT]サーバレスなP2P認証方法の提案:

« P2P・DHTオフ会 in 関西(12/3[日]開催) | トップページ | [P2P]P2P・DHT勉強会 in 関西 »