昨日、「P2PソフトShareの暗号を解析,ネットワーク可視化システムを開発」という記事を公開させて頂きましたが、特に、Shareネットワーク可視化システムについて、知人から沢山質問を頂きました。今回は、このShareネットワーク可視化システム(以降、"Sharebot")とその運用について、もう少しお話したいと思います。

Sharebotのキー収集の仕組み

 Sharebotは、基本的にShareネットワークの「クローラー」です。Shareネットワーク内に存在するノードの一つとして振る舞い、相手を次々と変えながら接続し、キーを収集していきます。相手のノードとは、暗号化されたShareプロトコルに則って一対一で通信します。動きとしては、SSLに対応したサーチエンジンのクローラーに近いものがあります。Shareの暗号は、全て既知のアルゴリズムが使われています。

 まずは、Shareネットワークに存在するどこか一つのノードに接続し、そのノードが持っているキー情報(ファイル名やそのハッシュ、ファイルの存在するノードのIPアドレスとポート、などが含まれている)の一覧を取得します。キー情報には、他のノード情報が含まれていますので、今度は、得られたキー情報一覧に存在している全てのノードに接続し、同様の手順でキー情報一覧を取得します。これを次々に繰り返す事で、Shareネットワーク内のキー情報を蓄積していくというものです。理論的には、ネットワークが分断されていない限り、Shareネットワークの全てのノードをクロールする事ができます。キー情報の膨大なデータベースができれば、指定されたファイル(の完全キャッシュ)を所持しているノードのIPアドレスを検索するといった事が可能となります。図1に、Sharebotのキー収集の仕組みを示します。

図1●Sharebotのキー収集の仕組み

 Sharebotは、この仕組みをマルチスレッドで実行しています。一度に複数のノードに接続し、キー情報をキーデータベースに蓄積します。また、キー情報からノード情報を抽出し、ノードデータベースに蓄積します。キー、ノードとも重複がないよう蓄積時にチェックしますが、ノード情報は、新しく取得したものほど上位に蓄積していきます。これは、新しく取得できたものほど、現在接続可能状態にある可能性が高いためです。なお、一度接続に失敗したノードも、諦めずに複数回リトライすると効率があがります。

Sharebotの運用

 Sharebotは、以前開発したWinnyネットワーク可視化システム(通称 Winnybot)同様、公益性を重視した運用を進めるべきだと考えています。このため、eEyeがこのシステムを使って独占的にファイル追跡サービスなどのビジネスを展開する予定はありません。解析結果についても、何か新たな事実が分かれば、随時公開したいと考えています(システムそのものの一般公開は、それはそれで悪用の懸念がありますし、法的事柄の整理が出来ていないという事もありますので当面は差し控えたいと思います)。

 目的は前回も述べましたが、P2Pネットワーク内での情報漏えいの抑止力となる事です。しかし、その手段については、様々な社会的要因を考慮して慎重に進めるべきだと考えています。ただ基本的に、ネットワーク内のファイルを削除する機構の無いP2Pファイル交換共有システムについては、極力早い段階でファイル削除機構が実装されるか、あるいは、淘汰されるべきであると考えています。あまりにリスクが高く、特に個人においては、一生を台無しにしかねない深刻な問題をこれからも招き続ける恐れがあります。

 いずれにせよ、各関係機関と足並みを揃えつつ、何が今の日本社会にとって必要なのかといった目線で、運用方針を考えていきたいと思っています。