<前の日記(2009年10月23日) 次の日記(2009年11月15日)> 最新 編集

高木浩光@自宅の日記

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

2009年11月03日

日記予定、Nyzillaの進捗

「Winny作者事件二審無罪判決で今後どうなるか」といったエントリを書かなくてはと思っていたが、まだ書いていない。書きたいのは次の点など。

  • 判決を伝える新聞各紙の論調がもたらしかねない今後への悪影響。
  • 朝日新聞10月8日夕刊大阪3版掲載の安田直氏の有識者コメントに見る典型的な害。
  • 私の新聞コメントについて。
  • 金子氏の発言内容が以前から変わってきている件。
  • (金子氏発言に依拠すると)私たち(利用者、開発者)はどうするべきなのか。
  • 金子氏に望むこと。
  • 高裁の判決理由についての考察(判決要旨を基にして)。

ところで、開発中の「Nyzilla」は、かなり開発が進み、残すところあと1つを実装すれば、機能的には完成といったところとなった。

最初の接続時には注意書きが出る。*1

画面キャプチャ
図1: 最初の接続時の注意書き

このプログラムは、いわゆる「クローラ」ではなく、アドレスバーの「接続先」に入力されたホストにしか接続しないものであり、接続先のWinnyノードから受信した情報だけをもとに表示する。*2

今回、「ファイル保持の真偽」を判定する機能を付けた。図2のように、緑背景に「(+)」と表示されているのは、保持している(「Cache」フォルダないしアップロード用フォルダに入っている)らしいと推定(「陽性判定」)したファイルで、「?」と表示されているのは、まだ判別できておらず、不明なファイルである。

画面キャプチャ
図2: 「保持の真偽」が判定されていく様子
(6列目から「消滅タイマー」、「出現回数」、「保持の真偽」、「最終出現時刻」)

この判別は、受信した「キー消滅判定タイマー」の値*3(単位は秒)の変化に基づいている。一次放流者のアップロード用フォルダに入っているファイルと、共有者の「Cache」フォルダに入っているファイルについては、この値が、1500〜1599の間でランダムにセットされるようで、セットされるタイミングは謎なのだが、頻繁に再セットされているようである。ただし、消滅タイマー値がこの範囲内だからといって、このノードが本当にそれを保持しているとは限らない。Winnyにはいわゆる「中継機能」があり、最低でも4%の確率で起きるとされる*4ソースIPアドレスの書き換えによって、他のノードからのキーを(ここがソースのキーとして)受信したという可能性がある。しかし、その場合、消滅タイマーの値は時間とともに減少し、再びそのキーを観測したときに1499以下になっていくようだ。したがって、同じファイルのキーを何回も受信するのを待てば、アドレス書き換えキーか否かを判別できるというわけである。

図3のように、1499以下になったファイルは、「陰性判定」として灰色背景に「(-)」で表示される。

画面キャプチャ
図3: 陰性判定されていく様子

メニューから、判定結果ごとに表示することができる(図4)。

画面キャプチャ
図4: 保持の真偽でフィルタして表示する様子

次の図5は、判定が変化した場合の様子である。「(-)+」は、一度は陽性判定されたものが、現在は陰性判定になっていることを表しており、「(+)-」は、陰性判定されたものが現在陽性判定になっていることを表している。

画面キャプチャ
画面キャプチャ
図5: 判定が変化した場合の様子

このような判定の変化は、判定アルゴリズムが不十分なために起きた誤判定*5という可能性のほかに、実際にファイルが削除されたり、追加されたとき(ダウンロードの最中だったとき)にも起き得る。また、持っているのに持っていないと判定される事態(偽陰性判定)は、当該ノードが、保持しているのと同じファイルのキーを他ノードから受信した際にも起きているのではないかと考えられる*6が、これについてはまだ確認できていない。(その結果として、陽性→陰性→陽性という経過をたどることがあるようだ。)

こうした判定に用いた「消滅タイマー」値の直近の履歴を、以下の図のようにして、ツールチップで閲覧することができる。

画面キャプチャ 画面キャプチャ
図6: 消滅タイマー値の履歴を確認した様子

図6上は、最初に消滅タイマー値「1529」として受信したキーを、44秒後に「1484」として、さらにその453秒後に「1054」として再び受信したことを意味している。この場合はこの時点では陰性判定である。同様に同図下は、消滅タイマー値が、97秒後、3秒後、195秒後、85秒後にそれぞれ、「1562」、「1554」、「1526」、「1554」、「1561」として観測されたことを意味しており、値が時刻に関係なく前後していることから、陽性判定となっている。

観測結果は、文字列検索でフィルタして表示することもできる。次の図(上)は、陽性判定のもののうち「仁義」または「殺人」をファイル名等に含むものを抽出して閲覧した様子である。表を任意の列で並べ替えることもできるので、同じファイル名で異なるIDのファイルの存在も把握できる(図7の下)。

画面キャプチャ
画面キャプチャ
図7: 文字列フィルタ機能を使用した様子

このようにして、流出ファイルを共有している輩の実態を知ることができるようになる。

一方、「他のノード」機能では、アドレスバーに表示中の接続先から受信した情報から得た、他のWinnyノードの一覧を表示しており、次の図のように、「フィルタ」欄に文字列を入力することで、「marunouchi」のWinnyユーザを一覧することができる。

画面キャプチャ
図8: 「marunouchi」の巨匠たち

ここから行を選んで、ダブルクリックすることで、そのノードを接続先とした新しいウィンドウを開くことができる。

次の図は、ここから辿ってたまたま訪れた、成年コミックを専門に共有しているサイトの様子である。

画面キャプチャ
図9: 成年コミック専門サイトの事例

陽性判定のものの全てが「成年コミック」であり、約8,700個、675ギガバイトものファイルが共有されている。無駄なファイルの共有がないことから、「Cache」フォルダが管理されているのではないかと考えられ、明確な意思を持ってこれらを共有状態に供している様子が窺える。

こうした大量のファイルを共有しているサイトの実態を調査するには、大量のキーを受信する必要があるが、このくらいの規模でも、30分から1時間ほどで全貌を把握することができるようである(「接続積極度」が「中」の設定でも)。

次の図は、図9のサイトの「陽性判定」以外のファイルも閲覧した様子で、灰色の部分を見ると、「成年コミック」でないものがちゃんと陰性判定されている(他のノードから流れてきたキーと判断されている)ことがわかる。

画面キャプチャ
図10: 専門サイトにおける陰性判定の様子

次の図は、別のサイトで、ここは専門性なく無差別に共有状態にしていると考えられるサイトの様子である。「wmv」や「rar」といった拡張子で無差別に集めたように見受けられる。

画面キャプチャ
図11: 無差別に共有状態にしていると考えられるサイトの事例

ここで重要なのは、こうしたタイプのサイトでは、(おそらく本人が望んだものではなく)児童ポルノまで共有してしまっていることがある点である。次の図は、図11の画面で、英語圏の小児性愛者らの間で通用する隠語と思しき英字の略語で検索した様子である。

画面キャプチャ
図12: 児童ポルノらしきものが共有されている様子

2つの該当ファイルが紛れ込んでいる。こうした事態が生ずることが、他の(諸外国で広く利用されている)ファイル交換・共有ソフトにない、Winny等の固有の問題性である。この実態が(利用者にも利用者以外にも)広く知られるべきである。

ちなみに、何かを専門に共有しているサイトというのはかなり多くあるようで、てきとうにブラウズしているだけで、そういったサイトに行き当たる。次の図13は、別のコミック専門の共有サイトである。ここでは、99.9%が陽性と判定されるまで受信した様子である。出現回数がそれぞれのファイルで40回前後となっており、ここが保持していることは確実といえる。

画面キャプチャ
図13: 別のコミック専門サイトの事例

次の図は、8月16日の日記の図6に示していた、固定IPアドレスのサイトをブラウズした様子である。2テラバイトを超えるファイルを共有している様子が窺える。

画面キャプチャ
図14: 2テラバイトを超える共有サイトの事例

こういったサイトがファイルの安定供給源となっていると考えられる。

なお、このサイトの場合は、次の図のように、ある種のファイルは大量に共有しているが、流出ファイルは共有していない様子が窺える。

画面キャプチャ
画面キャプチャ
図15: 流出ファイルは陰性判定となっている様子

最後に、「完成まで残すところあと1つ」というのは、次の機能である。

画面キャプチャ 画面キャプチャ
図16: 残された実装予定の機能

これができたらリリースに向けて最終デバッグをしたい。

なお、Nyzillaをリリースする趣旨は、以前から述べている通りである。

また、金子氏も著書で以下のように述べている。

しかしWinnyの場合、通信相手は不特定であり、Winnyプロトコルを使う誰もが通信相手になれます。たとえば、Winnyプロトコルを真似てWinnyノードに接続するようなプログラムの作成ができれば、接続相手のキャッシュファイルを観察することも可能です。このため、たとえどんなに強い暗号方式で通信内容を暗号化したとしても、通信相手は解読可能であり、通信内容は隠しようがありません。

また、Winnyのキャッシュファイルは、そもそも公開されているデータと考えるべきです。

金子勇著「Winnyの技術」(アスキー出版、2005年)p.151より

*1 もう少し書き足さないといけないと思っているところ。

*2 そのほかに、DNSへ逆引きの問合せは発生する。

*3 Winnyでは、ファイルのありかを示す「キー」について、存在しなくなったWinnyノード発のキーがいつまでも還流しないようにするために、キー消滅判定タイマーの値を時間とともに減らしていくことで、25分ほどの有効期限が設けられている。「Winnyの技術」p.120 参照。

*4 「Winnyの技術」p.111 参照。

*5 判定アルゴリズムは改良しており、現在の版では、図5の画面のときより判定の変化は少なくなっている。

*6 情報処理学会論文誌 Vol.50, No.9「Winnyネットワークに対するインデックスポイズニングを用いたファイル流通制御方式」参照。

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

高木浩光@自宅の日記
日記予定、Nyzillaの進捗 より
『接続先のWinnyノードから受信した情報だけをもとに表示する。*2』機能をつくれるとこが..

検索

<前の日記(2009年10月23日) 次の日記(2009年11月15日)> 最新 編集

最近のタイトル

2024年11月11日

2024年07月28日

2024年07月27日

2024年07月07日

2024年04月07日

2024年04月01日

2024年03月23日

2024年03月19日

2024年03月16日

2024年03月13日

2024年03月11日

2023年03月27日

2022年12月30日

2022年12月25日

2022年06月09日

2022年04月01日

2022年01月19日

2021年12月26日

2021年10月06日

2021年08月23日

2021年07月12日

2020年09月14日

2020年08月01日

2019年10月05日

2019年08月03日

2019年07月08日

2019年06月25日

2019年06月09日

2019年05月19日

2019年05月12日

2019年03月19日

2019年03月16日

2019年03月09日

2019年03月07日

2019年02月19日

2019年02月11日

2018年12月26日

2018年10月31日

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|10|12|
2019|02|03|05|06|07|08|10|
2020|08|09|
2021|07|08|10|12|
2022|01|04|06|12|
2023|03|
2024|03|04|07|11|
<前の日記(2009年10月23日) 次の日記(2009年11月15日)> 最新 編集