A servey of "Security Considerations for Peer-to-Peer Distributed Hash Tables"
http://www.slab.sfc.keio.ac.jp/~atsushi/servey/securityp2p.html
勉強のためのメモその2。DHTのセキュリティに関する考察の日本語訳です。
分散ハッシュ検索は基本的に以下の原則にのっとりデザインすべきである。
- verifiableなシステム不変項を定義すべし(そしてちゃんと検証すること)。
- クエリ発行者が、検索のステップを観測できるようにするべし。
- ノードへのキー割り当てをverifiableな方法で行うべし。
- ルーティングでのサーバ選出は悪用されるおそれあり。
- ランダムなクエリ発行をつかって、ルーティングテーブルのcross-checkingをすべし。
- 単一責任点(single point of responsibility)を避けるべし。
Kademliaはこの6つの基本原則をどれくらい満たしているのでしょうか。上のプレゼンに含まれる範囲の情報では、ちょっとよく分からないです。少なくとも「ノードIDはChordと同様に決める(p.4)」とあるので原則3はダメ。kademliaはメッセージを受け取った時点で経路表を更新する(p.6)ので、原則3によって原則4もダメ……といったところでしょうか?
素人考えですが、なんだか「誰でもDNSサーバをネットワークに追加できるような状態で、果たしてDNSクエリの結果を信用できるか」くらいの難問に見えます。これは2年前の資料なので、現在とは状況が違うとは思いますが、なんだか大変そうです。