« [DHT]DHTオフ会参加者募集について | トップページ | [P2P][DHT]P2P分散プロキシの検討:その3 »

2005.05.23

[DHT][P2P]P2P分散プロキシの検討:その2

前回はP2P分散プロキシの設計の概略を書いた。
今回から数回に分けてセキュリティや匿名性の議論を行う。匿名性と非匿名性のバランスについても後ほど書ければと思う。

今、Chordを使って分散プロキシを設計することを考えてみよう。
実際にWEBサーバにアクセスするノードはURL=urlとするとNode_ID=hash(url)とすることにしよう。このノードをGWノードと呼ぶ事にし、urlに接続要求したノードを接続要求ノードと定義する。

さて匿名性が高いということはGWノードからみて接続要求ノードがわからないこととほぼ同値である。

Chordを使って分散プロキシを設計すると、実は匿名性があまり高くならない事が考えられる。その理由は一体なんでしょう?

それはChordが「きれいに」設計されたDHTだからである。Chordにおいて、ノードAのリンク先はノードAのNodeIDから2n離れたNodeIDのノード群となる。ということは、GWノードや中間プロキシとなるノードからすると、接続要求ノードが「大体この辺にあるな」と推測できる(というよりもNodeIDの範囲を絞る)事ができるのである。ここで中間プロキシとは接続要求ノードがGWノードにルーティングする際に使用するノードで、それ自体がGWノードと接続要求ノードのプロキシになるノード群を意味する。

このような事を避けるためには、ランダムネスを取り入れたDHTを入れることも考えられる。例えば、DHTとしてSymponyを入れることにより、このような推測はややしにくくなる事が考えられる。

もっとも、Sympnonyを取り入れたとしても接続要求ノードのNodeIDの範囲を絞る事が可能である。
そこで、ルーティングにもランダムネスを入れることが考えられる。

DHTの場合、非常に効率よくルーティングするため、GWノードへ一番効率のよい中間ノードへルーティングすることになる。そのため、下記のようなルーティングポリシを実行すれば効率は多少劣るが匿名性は高くなるだろう。

・各リンク先において、GWノードに近づくリンク先へ行く確率をp,逆に遠ざける確率をqとする。
 p+q=1である。
・pは各ノードでランダムに設定する。ただし、一般にpはp>>qであるような確率発生関数を設定すること。
・GWノードに効率よくルーティングするリンクほど、実際にルーティングする確率が高くすることに確率発生関数を設定する。つまりルーティングする毎に確率発生関数を計算し、それを基に乱数を発生させて、ルーティング先を決めるわけだ。ランダムネスを取り入れつつ、効率良くルーティングしやすくなるように設計していることに注意!
・qの確率で、逆方向(つまりGWノードに遠ざける)にルーティングする。

このようにすれば、GWノードから中間プロキシから接続要求ノードを推測するのは困難になるはずだ。

次回は暗号、その応用としてMix-net(Onion-routing)を取り入れた際にどのぐらい分散プロキシの匿名性が高まるか検討してみることににする。


|

« [DHT]DHTオフ会参加者募集について | トップページ | [P2P][DHT]P2P分散プロキシの検討:その3 »

P2P」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/18781/4254452

この記事へのトラックバック一覧です: [DHT][P2P]P2P分散プロキシの検討:その2:

« [DHT]DHTオフ会参加者募集について | トップページ | [P2P][DHT]P2P分散プロキシの検討:その3 »