[P2P] 分散ハッシュによる匿名性向上の検討
先日、分散ハッシュChordと匿名性という記事を書いた。その後、分散ハッシュによる匿名性を検討したので、それを書いてみたい。
まず、先日の議論の概要を書いておく。
一般的に、分散ハッシュでは、あるハッシュキーhash_keyを持っているノードがユニークに存在する。今、あるノードのIPアドレスをnode_IP、そのノードが所有しているコンテンツのハッシュをhash_contentとすると、hash_contentsに一番近いhash_keyをもつノードに、<hash_content,node_IP>のペアを渡す。分散ハッシュのアルゴリズムはこの<hash_content,node_IP>のペアを高速に検索する手段である。
ところで、問題としては<hash_content,node_IP>のように、あるノードのIPアドレスを記憶している点が匿名性を低下させる要因となっている。そのためもし他のノードがこのnode_IPを知るには、まず、hash_contentを知り、それに近い数hash_content_nearというハッシュキーでノードが参加することをネットワークに宣言すれば、かなりの高い確率でhash_contentを持つハッシュキーのノードのIPアドレスを知る事ができる。後は、このノードを分析すればhash_contentをhash(content)とするコンテンツを所有するnode_IPがわかってしまう。
さて、匿名性を高めるにはどうするか?その一つとして<hash_content,node_IP>の中にあるnode_IPを周知することを行わない事が考えられる。その解決の一つは、ノードのコンテンツ自体をhash_contentをもつノードにコピーしてしまうことである。つまり、<hash_content,content>という対を作る。
コピーする方法としては、分散ハッシュの検索時のルートでバケツリレーすることが考えられる。こうすれば、コピー元は隠蔽できる。hash_contentをハッシュキーとして持つノードIPはわかるが、このノードを問い詰めても、コピー元は判別できない。また、hash_contentを持つハッシュキーがダウンすると、contentがネットワークから無くなる事も考えられるが、論理的に隣接しているノードにcontentをコピーしたり、Winnyのように途中のノードにキャッシュすることで、ある程度はこの課題をカバーすることは可能である。
もちろん、この方法はネットワークに負荷をかけ、またマシンに対してもリソース低下が考えられる。Winnyのようなpull的ではなく、push的なコンテンツ流通であるが、このような方法もいろいろなところで考えられる事だろう。
| 固定リンク
「P2P」カテゴリの記事
- WebRTCを実現するためにSTUNだけでなくTURNも必要な理由(2015.01.08)
- [P2P]P2Pストリーミングのサーベイ文書について(2014.11.09)
- Winnyの開発者、金子 勇氏の急逝を悼んで(2013.07.07)
- 「分散ハッシュシステムでのNAT超えの考察」に対する質問について(2012.12.16)
- [P2P]Websocketでブラウザ間P2P通信は実現できるか?(その2)(2011.11.20)
この記事へのコメントは終了しました。
コメント