「Winny作者事件二審無罪判決で今後どうなるか」といったエントリを書かなくてはと思っていたが、まだ書いていない。書きたいのは次の点など。
ところで、開発中の「Nyzilla」は、かなり開発が進み、残すところあと1つを実装すれば、機能的には完成といったところとなった。
最初の接続時には注意書きが出る。*1
このプログラムは、いわゆる「クローラ」ではなく、アドレスバーの「接続先」に入力されたホストにしか接続しないものであり、接続先のWinnyノードから受信した情報だけをもとに表示する。*2
今回、「ファイル保持の真偽」を判定する機能を付けた。図2のように、緑背景に「(+)」と表示されているのは、保持している(「Cache」フォルダないしアップロード用フォルダに入っている)らしいと推定(「陽性判定」)したファイルで、「?」と表示されているのは、まだ判別できておらず、不明なファイルである。
この判別は、受信した「キー消滅判定タイマー」の値*3(単位は秒)の変化に基づいている。一次放流者のアップロード用フォルダに入っているファイルと、共有者の「Cache」フォルダに入っているファイルについては、この値が、1500〜1599の間でランダムにセットされるようで、セットされるタイミングは謎なのだが、頻繁に再セットされているようである。ただし、消滅タイマー値がこの範囲内だからといって、このノードが本当にそれを保持しているとは限らない。Winnyにはいわゆる「中継機能」があり、最低でも4%の確率で起きるとされる*4ソースIPアドレスの書き換えによって、他のノードからのキーを(ここがソースのキーとして)受信したという可能性がある。しかし、その場合、消滅タイマーの値は時間とともに減少し、再びそのキーを観測したときに1499以下になっていくようだ。したがって、同じファイルのキーを何回も受信するのを待てば、アドレス書き換えキーか否かを判別できるというわけである。
図3のように、1499以下になったファイルは、「陰性判定」として灰色背景に「(-)」で表示される。
メニューから、判定結果ごとに表示することができる(図4)。
次の図5は、判定が変化した場合の様子である。「(-)+」は、一度は陽性判定されたものが、現在は陰性判定になっていることを表しており、「(+)-」は、陰性判定されたものが現在陽性判定になっていることを表している。
このような判定の変化は、判定アルゴリズムが不十分なために起きた誤判定*5という可能性のほかに、実際にファイルが削除されたり、追加されたとき(ダウンロードの最中だったとき)にも起き得る。また、持っているのに持っていないと判定される事態(偽陰性判定)は、当該ノードが、保持しているのと同じファイルのキーを他ノードから受信した際にも起きているのではないかと考えられる*6が、これについてはまだ確認できていない。(その結果として、陽性→陰性→陽性という経過をたどることがあるようだ。)
こうした判定に用いた「消滅タイマー」値の直近の履歴を、以下の図のようにして、ツールチップで閲覧することができる。
図6上は、最初に消滅タイマー値「1529」として受信したキーを、44秒後に「1484」として、さらにその453秒後に「1054」として再び受信したことを意味している。この場合はこの時点では陰性判定である。同様に同図下は、消滅タイマー値が、97秒後、3秒後、195秒後、85秒後にそれぞれ、「1562」、「1554」、「1526」、「1554」、「1561」として観測されたことを意味しており、値が時刻に関係なく前後していることから、陽性判定となっている。
観測結果は、文字列検索でフィルタして表示することもできる。次の図(上)は、陽性判定のもののうち「仁義」または「殺人」をファイル名等に含むものを抽出して閲覧した様子である。表を任意の列で並べ替えることもできるので、同じファイル名で異なるIDのファイルの存在も把握できる(図7の下)。
このようにして、流出ファイルを共有している輩の実態を知ることができるようになる。
一方、「他のノード」機能では、アドレスバーに表示中の接続先から受信した情報から得た、他のWinnyノードの一覧を表示しており、次の図のように、「フィルタ」欄に文字列を入力することで、「marunouchi」のWinnyユーザを一覧することができる。
ここから行を選んで、ダブルクリックすることで、そのノードを接続先とした新しいウィンドウを開くことができる。
次の図は、ここから辿ってたまたま訪れた、成年コミックを専門に共有しているサイトの様子である。
陽性判定のものの全てが「成年コミック」であり、約8,700個、675ギガバイトものファイルが共有されている。無駄なファイルの共有がないことから、「Cache」フォルダが管理されているのではないかと考えられ、明確な意思を持ってこれらを共有状態に供している様子が窺える。
こうした大量のファイルを共有しているサイトの実態を調査するには、大量のキーを受信する必要があるが、このくらいの規模でも、30分から1時間ほどで全貌を把握することができるようである(「接続積極度」が「中」の設定でも)。
次の図は、図9のサイトの「陽性判定」以外のファイルも閲覧した様子で、灰色の部分を見ると、「成年コミック」でないものがちゃんと陰性判定されている(他のノードから流れてきたキーと判断されている)ことがわかる。
次の図は、別のサイトで、ここは専門性なく無差別に共有状態にしていると考えられるサイトの様子である。「wmv」や「rar」といった拡張子で無差別に集めたように見受けられる。
ここで重要なのは、こうしたタイプのサイトでは、(おそらく本人が望んだものではなく)児童ポルノまで共有してしまっていることがある点である。次の図は、図11の画面で、英語圏の小児性愛者らの間で通用する隠語と思しき英字の略語で検索した様子である。
2つの該当ファイルが紛れ込んでいる。こうした事態が生ずることが、他の(諸外国で広く利用されている)ファイル交換・共有ソフトにない、Winny等の固有の問題性である。この実態が(利用者にも利用者以外にも)広く知られるべきである。
ちなみに、何かを専門に共有しているサイトというのはかなり多くあるようで、てきとうにブラウズしているだけで、そういったサイトに行き当たる。次の図13は、別のコミック専門の共有サイトである。ここでは、99.9%が陽性と判定されるまで受信した様子である。出現回数がそれぞれのファイルで40回前後となっており、ここが保持していることは確実といえる。
次の図は、8月16日の日記の図6に示していた、固定IPアドレスのサイトをブラウズした様子である。2テラバイトを超えるファイルを共有している様子が窺える。
こういったサイトがファイルの安定供給源となっていると考えられる。
なお、このサイトの場合は、次の図のように、ある種のファイルは大量に共有しているが、流出ファイルは共有していない様子が窺える。
最後に、「完成まで残すところあと1つ」というのは、次の機能である。
これができたらリリースに向けて最終デバッグをしたい。
なお、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ネットワークに対するインデックスポイズニングを用いたファイル流通制御方式」参照。
先々週、こんなニュースがあった。
捜査関係者によると、書類送検されたのは、全国の10〜50代の男。いずれも世界有数の利用者がいる「Cabos(カボス)」と呼ばれるファイル交換ソフトを使い、日本人の中学生の少女を写した同じ画像をネット上から入手して自宅などのパソコンに保存。他人が閲覧できるように公開していた疑いがある。カボスは、1人がパソコン内の特定の場所に画像などのファイルを保存することで、ネットワークでつながる他のソフト利用者も入手、保存できる仕組みになっているという。
少年課が5月、児童ポルノの捜査にカボスを導入したところ、この少女の画像を多数の利用者が保存、公開しているのを確認。(略)
10人のうち3人は、すでに略式起訴され、罰金50万円の略式命令を受けたが、7人については刑事処分が出ていない。男らは互いに面識がなく、多くは調べに対して、「カボスは初心者でも扱いやすかった。みんながダウンロード(入手)しているので捕まらないと思った」と話しているという。
Cabosは、日本人*1によって製作された、Gnutella対応ユーザエージェントの一つであり、朝日新聞記事が言う「世界有数の利用者がいる」というのはGnutella全体のことであって、Cabosのユーザはおそらくごく少数で、世界で広く使われているのはLimeWireである。
CabosはLimeWire等のソースコードの一部を使用して製作されたものであるが、既にLimeWireが存在するのに、なぜわざわざ新たにCabosを製作する必要があったのか。以下、世界で広く使われているLimeWireのユーザエクスペリエンス(ユーザ体験)と、日本で生まれたCabosのユーザ体験の違いを見比べることによって、日本のP2Pファイル共有カルチャーが世界から孤立して異端なものとなっている事実の傍証を試みる。
LimeWireは、米国のLime Wire LLCという会社が開発して、無償配布している(有償版もある)ファイル交換ソフトで、インストールから利用までの間に、以下のようにいくつもの警告や注意書きを目にする構成になっている。
違法な目的に使用するのはユーザの責任であることを明確にするために、何が違法な行為になるのかを改めてここで説明することで、開発・提供者としての責任を果たそうとしている様子が窺える。
同意して進むと、次のように初期設定の画面が現れる。
ここが重要で、このチェックボックスを有効にしたまま先に進むと「ダウンロードすると共有状態になる」、つまり、「ダウンロードしたファイルは即時、公衆送信可能化される」ということを説明して、ユーザの確認を待つようになっている。「もっと知りたい」のリンク先には、以下のように、「Auto-Sharing」という見出しで、何が起きるのかの説明文が掲載されている。
チェックボックスを外して利用開始することで、それ(ダウンロード即公衆送信可能化)を避けることができるようになっている。
もしこの設定をデフォルトのままで利用開始するとどうなるか。その場合でも、以下のユーザ体験がもたらされることになる。
図4は、検索結果から2つのファイルをダブルクリックしてダウンロードした直後の様子である。
ここで、画面の左上角の「自分のファイル」というアイコンをクリックすると、次の図5の画面が現れる。
「パブリック共有」のところを選んでみると、上の図のように、今ダウンロードしたばかりのファイルが既に公衆送信可能化されているという事実が、画面上で確認できるようになっている。このことは、画面右下の「2ファイルを共有中」という表示(図6)からも、ユーザは大いに認識するだろう。
つまり、「自分は何をやっているのか」ということがわかるよう、ソフトウェアが設計されている。
これが、世界の(あるいは英語圏の、少なくとも米国の)スタンダード、ファイル共有におけるユーザ体験の常識感である。
このように設計されているからこそ、私はこうして、LimeWireを安心してインストールし、適法にテストのための利用をすることができた。
ちなみに、LimeWireでは、検索で見つけたファイルを公開している相手(IPアドレスで示される)が、他にどんなファイルを公開しているかも、閲覧できるようになっている(図7)。
一方、日本産と言われるCabosの場合はどんなユーザ体験となるだろうか。
インストールして起動するといきなり以下の画面が現れる。
この時点で既に共有が開始されている。何の説明も警告も同意確認もない。
上のLimeWireのときと同じダウンロードをCabosでやってみると、以下のようなユーザ体験となる。
ダウンロードされたことはわかるが、それがどうなっているのか、どこを見てもわからない。今ダウンロードしたファイルは公衆送信可能化された状態となったはずだが、そのことをユーザが認識できる仕組みが用意されていない。
設定画面を見ると、次の図10のように、「完了したダウンロードファイルを共有する」というチェックボックスがデフォルトで有効になっている。
これを外さず、よくわからないままにCabosを使っていると、ダウンロードしただけのつもりの児童ポルノ画像等が、じつは公衆送信されているという事態となり、冒頭の朝日新聞記事のような事件となる。
このユーザ体験の違いは何なのか。
LimeWireも古いバージョンでは設定がわかりにくく、情報漏洩事故の原因にもなったと言われている*2が、そうであるにしても、Cabosほどまでに、何を共有状態にしているのかさえ示さないような構成ではなかったはずだ。
Cabosの作者はこのような画面構成を「シンプルなユーザインターフェイス」と称しているが、これは、違法な公衆送信をユーザに認識させないために意図的に機能をそぎ落としたものではないのか。
Cabosの作者がそれを企図したのかはわからないが、少なくとも、ユーザに何をやっているか認識させる機能の実装を、必要と思うことがなかったのだろう。
LimeWireでは、ユーザに法的責任を負わせ、開発・提供元が責任を問われないようにするために、ユーザ自身が何をやっているかよくわかるようソフトウェアを設計しているのと対照的である。
LimeWireと真逆に、Cabosのような、ユーザが何をやっているかわからなくする設計をしていると、作者や提供者の責任の度合いが増すのではないか。
冒頭の朝日新聞の記事が伝える事件で、検挙された人たちが、罰金50万円の略式命令で済まされたり、「7人については刑事処分が出ていない」とされている*3のは、当人たちに自分が公衆送信可能化したという認識があったのか、はっきりしないためではないだろうか。
Cabosのようなユーザに認識させないやり方は、「日本式」であり、日本の法文化の下、Winnyがコンセプト実証し、Shareその他の派生ソフトに広がった。この「日本式」がGnutellaにまで広がり、Cabosを生んだと言えるのではないか。
私は、このような日本特有のP2Pファイル共有方式の特性が、この6年間、他国では類を見ない害をもたらしてきた根本的要因の一つ*4であって、このことを理解せずに「Winnyは悪くない(by 宮台真司)」などと浅はかなことを言っていてはいけないと思う。*5
ちなみに、余談ではあるが、Mac版のCabosはもっと危ないことになっている。図10の設定画面は、Mac版Cabosでは次のようになっている。
矢印が指す部分にあるように、ダウンロードフォルダが「OSのダウンロードフォルダ」(ユーザごとに用意されたダウンロード用フォルダで、Webブラウザ等がダウンロードしたファイルの格納先として用いるフォルダ)になっている。
ダウンロードだけならいいのだが、Cabosでは、ダウンロードしたファイルを同時に公衆送信可能化するのだから、これでは、Cabosを使い始める前までにWebブラウザ等でダウンロードしたファイルも、全部、Cabosで公衆送信可能化してしまう。そのフォルダには、公衆送信可能化すると違法になるファイル*6が含まれることも少なくないであろう。実際、図11の下の画面のように、私のダウンロードフォルダには、Apple社に著作権があるであろう「ダウンロードについて.pdf」というファイルが入っていたし、ダウンロードしたばかりのCabos本体も置かれていた*7。実験に際し、危うくこれらを公衆送信してしまうところだった*8。
私は、上記の理由から、日本のP2Pファイル共有の常識感を、米国スタンダードのレベルまで引き上げたいと考え、「Nyzilla」のリリースに向けた開発を進めている。
前回の日記から進んで、以下のように機能の変更と追加をした。
図14は、高速に閲覧できる典型的なケースで、接続積極度「中」の場合でも、10分ほどでほとんどのファイルを閲覧できていることを表している。薄い緑色が、「ファイル一覧」画面で「(+)」のマークで示される、ファイル保持の陽性判定が出たファイルの個数を表しており、白い部分は、判定が未確定のファイルの個数を表している。
画面下の黄色の領域は、接続積極度が「中」だった期間を表しており、赤の縦線は、キーを受信したタイミングを表している。
別のサイトの例を示すと、図15のようになることもある。このサイトは、接続積極度「中」では、20分では把握しきれないことを表している。このサイトはファイル数が多めである。
全貌を把握するまでにかかる時間は、当該サイトが公衆送信可能化しているファイルの個数と、当該サイトの申告回線速度、Winnyネットワーク全体の混雑度(昼か夜か、平日か休日かによる)、Winnyの設定値「保持する仮想キーの最大数」などによって左右されるようだ。
次の図16は、公衆送信可能化されているファイルが少ないサイトの例で、接続積極度「強」で閲覧したところ、3分で全ファイル(8個)を閲覧できたことを示している。同じサイトを接続積極度「中」で閲覧したところ、やはりファイル数は8個で、10分半かかっている。ファイルの数が少ないサイトで閲覧し続けると、そのサイトが持っていないファイルのキー(ソース書き換えキー)が到着するようになってきて、陰性判定された灰色の領域が増えていくことがわかる。
このNyzillaを使って、あちこちのWinnyサイトを閲覧して見て廻り、ウイルス頒布サイトを探してみたのだが、見つけることはできなかった。
というのも、Nyzillaは、URLで示されたWinnyサイトが公開しているファイルのリストを閲覧するだけのものであって、あるファイルがどこのWinnyサイトにあるのかを探す機能はないからであり、「他のサイト」機能を使ってあちこちを訪れてみても、ありがちなファイルを公開しているWinnyサイト(成年コミックとか、一般コミックとか、同人誌とか、無修正とか)ばかりに行き当たって、その中にウイルスや児童ポルノらしきものが含まれていることはあるけれども、それをメインにしたサイトを見つけることはできなかった。
以下は、別途、Winnyネットワーク観測システムとして運用しているクローラで得られたキー情報の集計から、拡張子偽装ファイルのキーを多く放出しているサイトを探して、そこをURLとして指定してNyzillaで閲覧した様子である。
図17は、3000個を超える大量のウイルスファイルを送信可能化しているWinnyサイトで、接続積極度「強」で1時間閲覧しても、その全貌を把握することのできなかったサイトである。
「ファイル一覧」画面で、確認したところ、3357個の公衆送信可能化ファイルのうち、3102個が拡張子が「.exe」のファイルだった。
次の図18は、別の同様のサイトで、789個のファイルが閲覧できたところで、拡張子順に並べ替えて調べてみたところ、なんと、1個のファイルが「.zip」なだけで、他は全部が「.exe」だった。
こういったサイトを運営している人たちは、明確な意志を持って、人をウイルス感染させる目的で、これらのファイルを送信可能化しているのだろう。
残念ながら、日本の国会議員は全くこの問題に取り組む様子がなく*10、国会に提出されたウイルス罪の新設を盛り込んだ刑法改正案は5年も放置されており、こういった輩がいることがわかっていても、やめさせることができない状態が続いている。
次の図19の事例は、誤ってウイルスを拾ってしまったと考えられるケースである。
図のように、ファイル名で並べ替えてみると、ドラマやアニメのタイトルで地曳ダウンロード(キーワード指定での無差別ダウンロード)したために、同名の「.exe」や「.scr」ファイルを拾ってしまったのだろうと推察できる。
このサイトの運営者にウイルスを頒布する意思があるかどうかはわからないが、ないのだとすれば、こうして、望まないのに社会に害を垂れ流してしまうのが、Winny等の「日本式」ファイル共有であり、これをなんとかしなくてはいけない。
Nyzillaを使って自分のWinnyサイトを閲覧してみる*11ことで、自分が何をやっているのかを自覚して頂きたいと思う。これは、LimeWire等では初めからそうなっていることである。
しかしWinnyの場合、通信相手は不特定であり、Winnyプロトコルを使う誰もが通信相手になれます。たとえば、Winnyプロトコルを真似てWinnyノードに接続するようなプログラムの作成ができれば、接続相手のキャッシュファイルを観察することも可能です。このため、たとえどんなに強い暗号方式で通信内容を暗号化したとしても、通信相手は解読可能であり、通信内容は隠しようがありません。
また、Winnyのキャッシュファイルは、そもそも公開されているデータと考えるべきです。
*1 少なくとも日本語を使う者。
*2 LimeWireにこのような丁寧な、起動時の説明と同意確認、初期設定の画面が搭載されている背景には、情報漏洩事故を懸念する米国議会が、Lime Wire LLCに改善を求めたことがあるらしい。(関連記事:そろそろP2P業界を規制しようか? - LimeWireやり玉に米国で法制化の動き, マイコミジャーナル, 2009年8月3日)
*3 「刑事処分が出ていない」がどういう意味かはわからないが。起訴猶予や嫌疑不十分になる可能性があるようにも読めるし、これから重い罪で起訴する準備段階なのかもしれない。
*4 その他に、「地曳」ダウンロード(自動ダウンロード)機能がそれに該当する。
*5 学生時代はファンで、テレビで拝見して、よく関心したものだったが。今ではまったくそういう感触がない。
*6 Webで公開されているが再配布が禁止されているファイルなど。
*7 「incomplete」フォルダは、Cabosの起動によって作られたフォルダ。
*8 が、Snow LeopardではCabosが動作しない(通信が機能しない)ようで、難を逃れた。
*9 Port0モードでは著しく反応が遅くなるサイトが、稀に存在する可能性があるため。
*10 たとえば、Winnyやウイルスの問題について、議員が、私に何らかの直接的、間接的コンタクトをしてきたということは、これまでに一度たりともない。
*11 ただし、自分のWinnyサイトを、同じLAN(プライベートアドレスの)からNyzillaで閲覧することはできない。これはWinny側の制約によるもの。別回線を使ってインターネット経由で自分のWinnyサイトを閲覧する必要がある。
(建設予定地)
(27日追記)建設計画廃止。XMLHttpRequestだけ止めても効果がないことを理解したため。
(29日追記)何が言いたかったか、後日書く。
Nyzillaのアイコンを作成するために、ニッポンハムのウイニーを買ってきた。
写真を撮ってアイコンにしようというわけだが、ウイニーが思っていたより小さく、32ピクセルサイズにすると、何だかわからない絵になってしまう。どうしようか……。
撮影後はあんかけスパにして食べた。
正直、ウイニーは美味しそうじゃなかったので、アルトバイエルンを加えて食べた。
Nyzillaの開発は、前回以降、以下のように進んだ。
この調子だと、12月下旬のリリースとなりそう。