3年前から稼働させているWinnyネットワーク観測システムで、観測したWinnyキーを記録している*1のだが、そのデータから利用者ひとりひとりがどんな行動をしているか、直感的に読み取れるよう視覚化を試みた。
これを行うためには、長期間にわたり同じ人が使っているノードを見つけ出すことが必要で、一般的には、IPアドレスが頻繁に変わってしまうので、単純には追跡できない*2のだが、今年のゴールデンウィークに観測システムを改良して以来、DNSの逆引きを自動化した関係で、固定のIPアドレスで(しかも固有のドメイン名に割り当てられたアドレスで)稼働させているノードが数十個見つかったので、それについて調べてみたところ、長期にわたって稼働し続けているものがいくつかみつかった。
図1は、2006年8月末から2009年4月末までの間に観測されたキーのうち、「〓.〓〓〓〓〓.org」というホストで稼働していたノードがソースとなっていたキー(そのノードがファイルを提供可能ということを表すキー)*3についてプロットしたものである。横軸は時間であり、縦軸は観測された順に0番から番号を振ったファイル番号である。水平に並んだ点の並びは、同じファイルが何度も(そのタイミングで)観測されたことを表している*4。図1のケースでは、この期間に、1万個あまりのファイルのキーが観測されたことを表している。
ここで、直角三角形を成す塊が見て取れる。これは、「キャッシュ」の削除が行われた様子を表していると考えられる。つまり、図中の矢印が削除のタイミングである。
矢印のタイミングで削除がなされても、一部のファイルが再び右側で観測されているケースも散見されるが、これはおそらく、一旦は削除されたが、再び同じファイルをダウンロードしてしまったケース*6を表しているのだろう。
別のノードのケースを図2に示す。(縦軸のスケールは図毎に異なるので注意。)
このケースでは、小さな三角形がいくつか見えることから、比較的早期にキャッシュ消しを行っていたと思われる。しかし、ほとんどの期間で三角形は見えない。ここで、三角形の存在しない連続した線は何を意味するのかだが、これは、(即消ししていた場合も含まれているだろうが、それ以外に)何もダウンロードしていないときに送出されるキーが観測されたものと考えられる。
Winnyでは、何もダウンロードしていないときでも、他のノードから入ってくるキーについて、一定の確率で、ソースIPアドレスを自分のアドレスに書き換え(4%の確率で起きると言われる中継のための書き換え)て他ノードに送信するようになっており、それが観測されているのだと考えられる。そうした、ソース書き換えキーは、ランダムに選ばれたファイルに対して発生するので、図2のように、1回しか現れなかったファイルとして、斜めの連続した線として現れているのだと考えられる。
そこで、そうしたソース書き換えキーを排除してプロットすることを試みた。図3は、図2と同じノードについて、2回以下しか現れなかったキーを除いてプロットしたものである*7。ファイルの個数が3万5千個から、500個に減っている。図2のキーはほとんどが空運転時のキーで、実際にダウンロードした数は500個以下だったと考えられる。
このグラフから、いつごろ多くのダウンロードをしていたかがわかる。2007年の2月から9月にかけてはあまりダウンロードしていなかったらしいことがわかる。それでも、図2では連続した線となっていることから、稼働だけはずっとしていたようだ。
次に、図1のノードについて、同じ処理を施したものを図4に示す。ファイルの個数は、1万個から3千個に減っているが、グラフの形状はほとんど変わっていない。これは、常時まんべんなくダウンロードをしていたということを意味すると思われる。自動ダウンロードをし続けていたのだろう。
次に、別のノード www.〓〓〓〓〓.co.jp(有限会社として登録されたドメイン)の事例を図5に示す。元のプロットと、ソース書き換えキー排除後のプロットを続けて示す。
このケースでは、1年以上キャッシュを消さずに連続稼働させていたが、ダウンロードしない期間もかなりあったと読み取れる。観測開始当初から大量のファイルのキーが一気に出てきていることから、2500個ほどのファイルは、これより以前から集められ、キャッシュに蓄積されて放置されていたものと考えられる。2007年11月中旬に一度、稼働をやめ*8、11月末に再び起動した後、キャッシュをすべて消して、再び何かを500個ほど集めたようである。
他の事例をいくつか示しておく。以下では、ソース書き換えキー排除後のプロットだけを示す。
図6は、一度もキャッシュ削除が行われていない事例である。これだけ思い切りがよいとなると、いわゆる「UP0パッチ」を適用しているのかもしれない*9と考えられるので、今、このノードに転送リンク接続を試みたところ、正常に接続することができ、コマンド32(転送限界切断要求)が返ってこないことから*10、UP0パッチは適用していないようである。大量のファイルの安定供給源となっていると思われる。
図7も、一度もキャッシュ削除が行われていない事例で、今接続してみるとコマンド32(転送限界切断要求)が返ってこないことから、大量のファイルの安定供給源となっていると思われる。ここはコンピュータ関係の(従業員数があまり多くなさそうな)株式会社のドメインで、会社概要にはISO27001取得とある。大丈夫だろうか。
図8は、fw.〓〓〓〓〓.co.jp という有限会社内のノードの事例で、連続稼働はしないで、必要なファイルをダウンロードしたら止めるという利用形態で、キャッシュは消さずに放置しているものと読み取れる。
図9は、個人登録のドメイン(ブログのWebサイトがある)で稼働するノードで、1年近くのブランクがありつつ、キャッシュは数か月消さずに放置するという運用のようである。
図10は、一度もキャッシュを削除せず、2007年6月からはときどきしか稼働させない運用に変化した事例である。今年2月からは再び活発になっていることが窺える。
図11は、1、2か月毎にキャッシュを削除しながら、ずっと使い続けている事例である。(co.jpのドメインであるが、ある小規模マンションで取得したドメインのようなので、居住者によるものと思われる。)
図12は、国立大学での事例で、少しだけしか使っていないが、キャッシュを消さずに、3月の卒業までときどき使っていたことを窺わせる。
図13は、私立大学の事例で、数日から1週間程度でキャッシュを消しつつ、1月の卒業まで使用していたことが窺える。
以上は、今年のゴールデンウィーク前までの旧観測システムでのデータである。ゴールデンウィーク以降の新観測システムでは、キーの観測密度が大幅に向上したため、旧システムと同列には比較できない。図1のケースについて、両システムでの観測データを同じグラフ上にプロットすると、図14のようになり、急激にファイル数が増えて表示されてしまう。
しかし、これに、ソース書き換えキー排除の処理を施すと、図15のようになり、ファイルの増え具合は普通になっている。つまり、ダウンロードの様子は概ね正しく視覚化できているのだと推定できる。
*1 こうした調査は(プライバシーに関わるものにはなり得ても)通信の秘密に抵触するものではないと認識している。ISPなどの通信インフラ上で調査しているわけではなく、通信の当事者である私のコンピュータで行っているものであり、(ユーザ単位のアクセス制限があるわけではない)ファイル共有ソフトは不特定多数に向けた公開サービスであって、Webのクローラが(無断リンク禁止の隠しページも含めて)全てのページを拾っていくのと同列だからである。
*2 追跡する方法はいろいろ考えられるところで、それは今後やってみたい課題の一つだ。
*3 そのようなキーには、直接そのノードに接続したときに観測したものと、他のノードに出回っているキーを観測したものの、2つのケースがあるが、図1では、後者のキーだけをプロットしている。本来は両方を合わせてプロットすべきところ、集計方法に考慮不足があったため、前者を集計しそびれたもので、再計算に時間がかかるので今回はそのままとした。なお、前者を集計しそびれているのは、当該ノードがNATノードである場合であり、RAWノードの場合には、前者と後者の両方が合わせて集計されている。この点については後日再検討したい。
*4 プロットは、1日単位で離散化している。つまり、同じ日のうちに何度も観測された複数キーを1個の点で表すようにしている。これは、同じファイルのキーが短時間に多量に観測されることがあって、それが起きる原因は偶然っぽいので、それがプロットの濃さに影響しないようにするためのもの。
*5 Winnyが「Cache」と称しているものは、コンピュータ用語としてのcacheの本来的意味から外れたものである(2004年9月12日の日記参照)が、ここでは便宜的に「キャッシュ」と呼ぶ。
*6 Winny利用者の間には、「地曳き」と俗称される、キーワード指定の自動運転ダウンロード機能がの使用が広く浸透しているため、不必要なファイルまでダウンロードしてしまうことがよくあると思われる。キーワードによっては、頻繁にひっかかりやすいファイルがあるようである。
*7 1回以下という設定が自然であるが、たまたま2回現れることもいくらかありそうなので、この設定にした。
*8 2007年6月上旬に空白の期間があるが、これはこちらのシステムが観測を中断していた時期である。
*9 「UP0パッチ」を適用しても、キーは流れてくる。
*10 Winnyのメモリ上の変数を書き換えて、UP数を0にする方式では、転送リンク接続をすると即座にコマンド32(転送限界切断要求)が応答してくる。
今日の気になった記事。
Security関連
* チェックしておきたいぜい弱性情報<2009.08.17>
* 相変わらず多い。それだけ今のプログラムが「機能」にばかり注目して、「安全性」の優先順位を下げていると言うことなのだろうか?