DHTのセキュリティ考察~その5 ノードIDの偽装対策
今回はDHTのNodeIDの偽装対策について検討しよう。
□Chordの実装
ChordはNodeIDとして、IPアドレスのハッシュ値を取っている。
IPアドレスは(グローバルなら)一意だし、また通信ノードのIPアドレスが分かれば、NodeIDとIPアドレスからノードの正当性が簡単に確認できる。
しかしこの方法は次のような課題点がある
[課題点]プライベートアドレスのノードが存在すると、NodeIDが衝突する恐れがある
[課題点1-1]NAT-FW、プロキシがある場合、仮にグローバルアドレスをノードが
取得しても
NodeIDが衝突してしまう。
[課題点1-1-1]グローバルアドレスをノードが自動的に取得する方法がない場合
がある
[課題点1-2]固定IP払い出しサービスでない限り、IPアドレスは変動する
ではどのようにすれば良いのか?
□Chord実装の拡張
ひとつの方法はIPアドレスとポートを組み合わせた数値のハッシュ値をNodeIDとする方法である。これにより課題点1-1はクリアする。ただし、やはり[課題点1-1-1]を検討する必要がある。
課題点1-1-1,1-2の解決方法としてはSTUNやTURNサーバを使って、ノードがインターネットで通信する際のグローバルアドレスとポートを定期的に取得することが必要だろう。もちろんUPnPを利用する方法もある。
□電子証明書による正当性確認
もうひとつの正当性確認方法は電子証明書を利用する方法である。
各ノードに配布した電子証明書のシリアル番号と名前の組み合わせを数値化し、そのハッシュ値をNodeIDとする。検証する際には電子証明書を参照し、検証するノードとチャレンジレスポンスをすればよい。
(チャレンジレスポンスをする理由は電子証明書を持っている人が本当に発行元のノードであることを確認するため)上記方法はノードがプライベートアドレスでもグローバルアドレスでもまったく関係なく正当性が確認できる利点がある。
ただし、この方法はノードに負担かかることは言うまでもないだろう。
「P2P」カテゴリの記事
- [P2P]Websocketでブラウザ間P2P通信は実現できるか?(2011.10.30)
- TwitterをP2Pで実現する方法をもう少し考えてみる(2010.05.03)
- オフィスツアー(ビットメディア)を振り返る(2009.10.25)
- [開催日変更]オフィスツアー(株式会社ビットメディア)参加者募集のご案内(2009.08.14)
- [NAT]NAT越え入門1-NATとは何か?(2009.04.11)

Comments