<前の日記(2009年08月15日) 次の日記(2009年08月22日)> 最新 編集

高木浩光@自宅の日記

目次 はじめに 連絡先:blog@takagi-hiromitsu.jp
訪問者数 本日: 628   昨日: 3852

2009年08月16日

Winnyの利用形態を視覚化してみた

3年前から稼働させているWinnyネットワーク観測システムで、観測したWinnyキーを記録している*1のだが、そのデータから利用者ひとりひとりがどんな行動をしているか、直感的に読み取れるよう視覚化を試みた。

これを行うためには、長期間にわたり同じ人が使っているノードを見つけ出すことが必要で、一般的には、IPアドレスが頻繁に変わってしまうので、単純には追跡できない*2のだが、今年のゴールデンウィークに観測システムを改良して以来、DNSの逆引きを自動化した関係で、固定のIPアドレスで(しかも固有のドメイン名に割り当てられたアドレスで)稼働させているノードが数十個見つかったので、それについて調べてみたところ、長期にわたって稼働し続けているものがいくつかみつかった。

図1は、2006年8月末から2009年4月末までの間に観測されたキーのうち、「〓.〓〓〓〓〓.org」というホストで稼働していたノードがソースとなっていたキー(そのノードがファイルを提供可能ということを表すキー)*3についてプロットしたものである。横軸は時間であり、縦軸は観測された順に0番から番号を振ったファイル番号である。水平に並んだ点の並びは、同じファイルが何度も(そのタイミングで)観測されたことを表している*4。図1のケースでは、この期間に、1万個あまりのファイルのキーが観測されたことを表している。

グラフ
図1: 「キャッシュ」*5削除の様子がよく現れた事例

ここで、直角三角形を成す塊が見て取れる。これは、「キャッシュ」の削除が行われた様子を表していると考えられる。つまり、図中の矢印が削除のタイミングである。

矢印のタイミングで削除がなされても、一部のファイルが再び右側で観測されているケースも散見されるが、これはおそらく、一旦は削除されたが、再び同じファイルをダウンロードしてしまったケース*6を表しているのだろう。

別のノードのケースを図2に示す。(縦軸のスケールは図毎に異なるので注意。)

グラフ
図2: 早期に「キャッシュ」削除をしている事例

このケースでは、小さな三角形がいくつか見えることから、比較的早期にキャッシュ消しを行っていたと思われる。しかし、ほとんどの期間で三角形は見えない。ここで、三角形の存在しない連続した線は何を意味するのかだが、これは、(即消ししていた場合も含まれているだろうが、それ以外に)何もダウンロードしていないときに送出されるキーが観測されたものと考えられる。

Winnyでは、何もダウンロードしていないときでも、他のノードから入ってくるキーについて、一定の確率で、ソースIPアドレスを自分のアドレスに書き換え(4%の確率で起きると言われる中継のための書き換え)て他ノードに送信するようになっており、それが観測されているのだと考えられる。そうした、ソース書き換えキーは、ランダムに選ばれたファイルに対して発生するので、図2のように、1回しか現れなかったファイルとして、斜めの連続した線として現れているのだと考えられる。

そこで、そうしたソース書き換えキーを排除してプロットすることを試みた。図3は、図2と同じノードについて、2回以下しか現れなかったキーを除いてプロットしたものである*7。ファイルの個数が3万5千個から、500個に減っている。図2のキーはほとんどが空運転時のキーで、実際にダウンロードした数は500個以下だったと考えられる。

グラフ
図3: 図2からソース書き換えキーを排除したもの

このグラフから、いつごろ多くのダウンロードをしていたかがわかる。2007年の2月から9月にかけてはあまりダウンロードしていなかったらしいことがわかる。それでも、図2では連続した線となっていることから、稼働だけはずっとしていたようだ。

次に、図1のノードについて、同じ処理を施したものを図4に示す。ファイルの個数は、1万個から3千個に減っているが、グラフの形状はほとんど変わっていない。これは、常時まんべんなくダウンロードをしていたということを意味すると思われる。自動ダウンロードをし続けていたのだろう。

グラフ
図4: 図1からソース書き換えキーを排除したもの

次に、別のノード www.〓〓〓〓〓.co.jp(有限会社として登録されたドメイン)の事例を図5に示す。元のプロットと、ソース書き換えキー排除後のプロットを続けて示す。

グラフ
グラフ
図5: キャッシュを長期間放置して連続稼働させていた事例
(上:元のデータ、下:ソース書き換えキーを排除したもの)

このケースでは、1年以上キャッシュを消さずに連続稼働させていたが、ダウンロードしない期間もかなりあったと読み取れる。観測開始当初から大量のファイルのキーが一気に出てきていることから、2500個ほどのファイルは、これより以前から集められ、キャッシュに蓄積されて放置されていたものと考えられる。2007年11月中旬に一度、稼働をやめ*8、11月末に再び起動した後、キャッシュをすべて消して、再び何かを500個ほど集めたようである。

他の事例をいくつか示しておく。以下では、ソース書き換えキー排除後のプロットだけを示す。

グラフ
図6: 削除した様子のない事例

図6は、一度もキャッシュ削除が行われていない事例である。これだけ思い切りがよいとなると、いわゆる「UP0パッチ」を適用しているのかもしれない*9と考えられるので、今、このノードに転送リンク接続を試みたところ、正常に接続することができ、コマンド32(転送限界切断要求)が返ってこないことから*10、UP0パッチは適用していないようである。大量のファイルの安定供給源となっていると思われる。

グラフ
図7: 長期にわたり削除した様子のない事例

図7も、一度もキャッシュ削除が行われていない事例で、今接続してみるとコマンド32(転送限界切断要求)が返ってこないことから、大量のファイルの安定供給源となっていると思われる。ここはコンピュータ関係の(従業員数があまり多くなさそうな)株式会社のドメインで、会社概要にはISO27001取得とある。大丈夫だろうか。

グラフ
図8: ダウンロードするときだけ稼働させている事例

図8は、fw.〓〓〓〓〓.co.jp という有限会社内のノードの事例で、連続稼働はしないで、必要なファイルをダウンロードしたら止めるという利用形態で、キャッシュは消さずに放置しているものと読み取れる。

グラフ
図9: 平凡な事例

図9は、個人登録のドメイン(ブログのWebサイトがある)で稼働するノードで、1年近くのブランクがありつつ、キャッシュは数か月消さずに放置するという運用のようである。

グラフ
図10: 長期間にわたり断続的に稼働させている事例

図10は、一度もキャッシュを削除せず、2007年6月からはときどきしか稼働させない運用に変化した事例である。今年2月からは再び活発になっていることが窺える。

グラフ
図11: 長期間にわたり定期的にキャッシュ削除している事例

図11は、1、2か月毎にキャッシュを削除しながら、ずっと使い続けている事例である。(co.jpのドメインであるが、ある小規模マンションで取得したドメインのようなので、居住者によるものと思われる。)

グラフ
図12: 国立大学での事例

図12は、国立大学での事例で、少しだけしか使っていないが、キャッシュを消さずに、3月の卒業までときどき使っていたことを窺わせる。

グラフ
図13: 私立大学での事例

図13は、私立大学の事例で、数日から1週間程度でキャッシュを消しつつ、1月の卒業まで使用していたことが窺える。

以上は、今年のゴールデンウィーク前までの旧観測システムでのデータである。ゴールデンウィーク以降の新観測システムでは、キーの観測密度が大幅に向上したため、旧システムと同列には比較できない。図1のケースについて、両システムでの観測データを同じグラフ上にプロットすると、図14のようになり、急激にファイル数が増えて表示されてしまう。

グラフ
図14: 図1の2009年6月30日までのグラフ

しかし、これに、ソース書き換えキー排除の処理を施すと、図15のようになり、ファイルの増え具合は普通になっている。つまり、ダウンロードの様子は概ね正しく視覚化できているのだと推定できる。

グラフ
図15: 図4の2009年6月30日までのグラフ

*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(転送限界切断要求)が応答してくる。

本日のTrackBacks(全1件) [TrackBack URL: http://takagi-hiromitsu.jp/diary/tb.rb/20090816]

今日の気になった記事。

Security関連

* チェックしておきたいぜい弱性情報<2009.08.17>
* 相変わらず多い。それだけ今のプログラムが「機能」にばかり注目して、「安全性」の優先順位を下げていると言うことなのだろうか?

検索

<前の日記(2009年08月15日) 次の日記(2009年08月22日)> 最新 編集

最近のタイトル

2018年06月17日

2018年06月10日

2018年05月19日

2018年05月04日

2018年03月07日

2017年12月29日

2017年10月29日

2017年10月22日

2017年07月22日

2017年06月04日

2017年05月13日

2017年05月05日

2017年04月08日

2017年03月10日

2017年03月05日

2017年02月18日

2017年01月08日

2017年01月04日

2016年12月30日

2016年12月04日

2016年11月29日

2016年11月23日

2016年11月05日

2016年10月25日

2016年10月10日

2016年08月23日

2016年07月23日

2016年07月16日

2016年07月02日

2016年06月12日

2016年06月03日

2016年04月23日

2016年04月06日

2016年03月27日

2016年03月14日

2016年03月06日

2016年02月24日

2016年02月20日

2016年02月11日

2016年02月05日

2016年01月31日

2015年12月12日

2015年12月06日

2015年11月23日

2015年11月21日

2015年11月07日

2015年10月20日

2015年07月02日

2015年06月14日

2015年03月15日

2015年03月10日

2015年03月08日

2015年01月05日

2014年12月27日

2014年11月12日

2014年09月07日

2014年07月18日

2014年04月23日

2014年04月22日

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|05|06|07|08|09|10|11|12|
2012|02|03|04|05|06|07|08|09|
2013|01|02|03|04|05|06|07|
2014|01|04|07|09|11|12|
2015|01|03|06|07|10|11|12|
2016|01|02|03|04|06|07|08|10|11|12|
2017|01|02|03|04|05|06|07|10|12|
2018|03|05|06|
<前の日記(2009年08月15日) 次の日記(2009年08月22日)> 最新 編集