Winny解析::雑感
ノードリストの形式
ノードリストのことをすっかり忘れていたので,書いておきます.
IPアドレスの後ろにスペースを挟んでポート番号が続いた文字列を,暗号化して,16進文字列にしたものです.
暗号鍵を探すと,"opiewf6ascxlv"という文字列が見つかりますが,先頭の「o」の部分は実際には使わず乱数で置き換えているようです.で,RC4で暗号化したデータの頭にそのときの乱数を1バイト付加してから,16進文字列に変換しています.で,頭に「@」を付けて完成.
気になる点とか色々
Winnyは匿名性の高いシステムと言われていますが,キーが経由してきたノードや検索したノードのIPがネットワーク上を流れるので,どのユーザが何をダウンロードしようとしているのか,ある程度知ることが出来ます.
また,パケットの暗号化も公開鍵を使っているわけではなく,パケットを横取りすれば簡単に中身が見えてしまいます.まぁ,相手が誰なのか認証しているわけではないので,公開鍵を使ったところで同じことなのですが.
トリップ文字列もキャッシュの構造が分かれば,簡単に偽造できてしまいます.一応,トリップを生成する時はまともな計算(RSA?)をしているようですが,キャッシュには生成されたトリップ文字列しか含まれないので本物かどうか検証できません.
この辺りを改善してみれば,もう少し面白いことが出来そうですが….機会があれば,自分でも作ってみたいところです.
検索やキーの拡散に上流,下流という空間を意識しているようですが,クラスタ形成のしやすさを考えると,もっと次元を増やして,周囲ノードとの相対距離や方向を持たせてみるのも,試してみたいところ.そうすれば,検索やキーの移動にベクトルを持たせて,遠方ノードに対する検索の効率を上げられるんじゃないかなぁ…と思うのですが.直接繋がっていないノードの識別をIPではなく,座標で認識できるし.検索範囲の円錐の鋭さをベクトルの長さにして,グラフィカルに表示するツールなんかがあると,視覚的にも面白そう.Winnyみたいなシステムで上手く動くかどうかは知りませんが.
この文書の履歴
- 2005-11-23 公開