平成16年(わ)第726号の第十六回公判の傍聴の続き。




Winnyを作るときにFreenetに関する論文を参考にした。
Freenetに関する論文はA Destributed Anyonymous Information Strage and Retrieval Systemといい、日本語訳は 分散匿名情報の保管と検索システム という。
自分が読んだときには完全な和訳はなかった。
開発当時に読んだのは英語の論文の方である。
一応ドクターなので英語であっても論文を読めるし、プログラミング関係の書籍は英語であることが多いので、英語は読むだけは読める。


弁16号証は、Freenetに関する論文らしきもの(?)であり、この報告書は自分の前で壇弁護士が作った。
Freenetでは、特に匿名性を用いたもの、つまりキャッシュシステムを用いている。
キャッシュシステムとは一時的に情報を蓄えて再送するもので、これを用いることで匿名性を上げる。
Freenetでは特に匿名性を述べている。
匿名性 という言葉は、情報の第一発信者が分からなくする技術を指す。
どのような情報がやり取りされているかを分からなくするのは匿名性ではない。
匿名の技術と暗号の技術は技術的には関係ない。
Freenetそのものが画期的な提案であり技術である。
一般的に匿名と言うと出版社などが情報の発信者を知っているが、それをも匿名にできるFreenetは技術的に画期的な論文である。
ニュースソースの発信者を守り、言論の自由を保障できるので、技術的にはセキュリティ、プライバシーを守るための技術である。


Freenetは、情報共有する効率を考えていないため、それ自身は広まることはないと考えた。
Freenetの考え方はやり方に問題があるのではないかと思った。
Freenetでは、送信者が元情報を断片化して、その断片を順に隣のノードに配送していく。
受信者は、断片が散らばった状態から、情報を検索して断片を集めてくるため、無駄が多い。
具体的には、オリジナルのデータを暗号化して断片化することでキャッシュ化し、他のノードに強制配信する。
強制的に送信されるキャッシュ情報が、その情報を必要としないノードにまで配信されるため、無駄が多くなる。
また、オリジナルのデータが大きいとCacheの数が多くなるため、受信者が情報を集めるのが大変になる。
Winnyを開発するにあたって、匿名性という点ではFreenetを参考にしたが、Freenet全体では効率が悪いので全体は使っておらず参考にした程度である。
Winnyは世間的にはWinMXの次だと思われているが、技術的には全く関係ないし、参考にもしていない
ファイルローグはハイブリッド型でサーバによる検索の効率性を上げており、参考にしていない。
WinMXは階層型ネットワークを使っているが、検索にはC/Sを使っているので、参考にしていない。
Freenetは第二世代と同じであり、システムは堅牢で信頼性はあるが効率が非常に悪い。


Winnyの根本的なアイデアは、ファイル共有ソフトProxyサーバが応用できると考えたことである。
第三世代型で効率が飛躍的に良くなると着目した。
Proxyサーバとは代理サーバという意味で、①名前の通り代理する ②キャッシュシステムを持つ ③ファイヤウォールに使われるのでフィルタリング作用 の3つの働きがある。
代理サーバとは、LAN内部のPCからのリクエストによって、Proxyサーバが外のサーバに代理アクセスする機能である。
ユーザは外部のサーバに直接アクセスしていないので匿名によるアクセスができる。
キャッシュシステムとは、外のサーバへの代理アクセスによって得られたデータを再利用する機能である。
異なるユーザからのリクエストにはProxyサーバに蓄積したデータを再利用することで、キャッシングにより効率性が上がる。
フィルタリングとは、外からの不正なアクセスをカットできる機能である。
外部から内部のPCへ接続するにはProxyサーバを経由する必要があるため、フィルタリングによりセキュリティが上がる。
Winnyでは、これら3機能のうち、キャッシュ機能と代理機能を参考にした。
弁15号証のWinnyの技術のP40-45にこれらのことが載っている。


Winnyを作るときには、まずシミュレータを作り始めた。
擬似的な実験によってモデルを検証するためにシミュレータを作った。
まずWinnyにおける検索部分をシミュレーションしないといけないと思った。
ほぼ全て自分のオリジナルのアイデアだったので、検索の新しい部分の、全体の通信料、全体が検索できないか等を検証するためであった。
ネットワークの方式としては階層型ネットワークの検証を行った。
それらを検証したシミュレータは押収されたPCの中にあるはずである。
甲93号証の指示番号161にProgフォルダの説明があり、フォルダとしては下から4番目のWinnySimフォルダにシミュレータが入っている。
4つの層がある階層型ネットワークの検証として、全体の検索ヒット率の検証や上流でのトラフィック量の検証を行った。
弁15号証のP178-179に100ノードの場合の実験の様子の図がある。
赤い文字が通信速度であり、上から順に、第1層が光回線、第2層が10M級ADSL、第3層が遅いADSL/CATV、第4層がISDN/モデムを想定して作った。
実験時のそれらの比は、第1〜3層が1:2:3で、第4層が2割程度だったと思う。
弁15号証のP179には500ノードの場合の実験の様子の図がある。
ノード数によって、検索の結果やトラフィック量が全く違うので、この検証が必要であった。
主にシミュレーションを行う等のことをしていたため、ファイル共有ソフトを作るときにシミュレータを作れる技術は持っていた。
階層型ネットワークを作るためにシミュレートが必要であった。
検索の時に上流下流を決め、Winnyの場合は回線速度が20倍を超えるとつながらないようにしている。
早い回線は上流として検索を集め、遅い回線の下流では検索を上流に任せて効率を上げている。
動的にC/Sモデル的にすることによって検索効率を上げ、また、ネットワーク負荷を分散している。
下流で検索すると、それだけでネットワークの通信量が飽和するため、検索を上流に任せるようにした。
開発を始めた当時にファイル共有ソフトでは、2層のネットワークはあったが動的な多層的なネットワークはなく、これは自分の提案である。


FreenetWinnyの違いとして、WinnyFreenetのキャッシュと匿名に効率を合わせたものと言える。
Freenetでは断片化したキャッシュを無条件に隣のノードに流すため、それを直すことで効率が上がると考えた。
ファイルをKeyとBodyに分けることを考えた。
Keyには、ファイルのファイル名、ファイルサイズ、Bodyを持つノードのIPアドレスとポート番号などが含まれる。
IPアドレスとはインターネット上にあるノードを識別するためのものであり、一般的に住所のようなものと言われている。
ポート番号とは、同じインターネット上のホスト(PC)でも複数のサービスを提供しているので、どのサービスに繋ぐかというサービス識別番号である。
サービスとは一般的には多くの場合ソフトごとに決まった番号のことである(?)。
インデックス情報をファイルにしたのがサイズの小さなKeyであり、これのみの通信であれば通信量が減るのでネットワーク負荷を下げれると考えた。
Keyにはファイル名、ファイルサイズ、ハッシュ値、被参照量、ファイル所有者のIPアドレス、ポート番号、その他の情報が含まれる。
当時はKeyとBodyに分けるという考え方は無かったと思う。


ファイル検索の方法について、ファイル送信者は、まずファイルのKeyだけを先に、できるだけ上流に対してPushしていく。
受信者は、Queryを上流に向けて投げて、上流でQueryにHitしたKeyをPackして受信者のところに戻ってくる。
Queryとはデータベースの用語で問い合わせを意味する。
Keyには約1500秒の保存期間があり、それはネットワークがKeyで溢れてしまうのを防ぐために設けている。
Queryは6Hopsまでしか検索しないように設定している。
上流では回線が太いために大量のKeyのやり取りが可能であるため、最上流のノードにキーを集めており、上流にKeyが集中している。
そのため、上流を検索することで効率よく検索できる。
弁15号証のP59-61、69-71、90-98、102-107に記載してある。


この方法だと、欲しいデータが見つからない可能性がある。
1万ノード内であればこのままでもほぼ検索できるが、ノード数がこれを超えると検索が難しくなる。
そこで、クラスタ化を導入することを考えた。
クラスタとは群や群れを指す。
似たノードは共有するファイルが似ているので同じ群に分けてあげるようにした。
各ノードがそれぞれ傾向を持っており、似た傾向のノードは近くに配置することで、ネットワーク内で小さな塊ができ、それをクラスタと呼ぶ。
クラスタ化していないと、6Hopsで検索できなくなる可能性が高くなるが、クラスタリングすることで、欲しいファイルを持つ人が近くにいるようになり、ヒットしやすくなる。
Winnyでは3つのキーワード間の相関度で意味的距離を算出している。
実際はもっと複雑だが、キーワードで一致するものが相関が高いとして、優先的につなぎに行く。
弁15号証のP71-75、89-90、99-100にクラスタについての記述がある。
Winnyを開発し始めたとき、クラスタリングをしていたファイル共有ソフトは私の知る限りでは無く、Winnyクラスタリングがかなり有名になった。
検索で多層型ネットワークで上流にキーを集め、またクラスタリングを加えたことがWinnyの特徴である。
被告人が独自に考えた画期的な仕組みであることが分かりやすく説明されました。
ここを読むだけではあまり分かりやすくはありませんけど。


続きはまた明日