2005-11-29 (Tue)

* Winny の技術を読了

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [] [winny] [ネットワーク]

Winnyの技術Winnyの技術

金子 勇 / アスキー書籍編集部
発売日: 2005/10


amazon で詳しく見る   bk1で詳しく見る

「Winny の技術」を読了した。この本はピアツーピア (P2P) のファイル共有ソフト Winny を、その作者の金子勇氏が解説した技術解説本。純粋に Winny の設計と実装を解説した技術本であるため、Winny の使い方や法律論などは載っていない。

2005-10-05 の『Winny の技術解説本「Winny の技術」を発注』で購入しておいたのだが、読むのがだいぶ遅くなってしまった。

- 資料的価値がある

今まで Winny のソースコードやプロトコルは非公開だった。Winny の設計や実装を学ぶためには、配布された実行ファイルをソースコードに逆変換したりするリバースエンジニアリングや、通信パケットを解析するのが一般的だったようだ。また、作者自身とユーザーが掲示板などに書き込んだ情報を元に推測するということもおこなわれていた。

Winny のネットワークは大規模といえるレベルまで成長しており、その設計と実装を作者自らが解説したこの本は、資料的価値がある。以下に参考になった部分を列挙する。

- 上流と下流によるノードの重み付け

Winny では、Winny ネットワークに参加するノードを対等な関係とするのではなく、上流と下流という概念を取り入れ、回線速度や処理性能で分類している。

過去の P2P アプリケーションは参加するノードが入り交じり、全体の効率を落としていた。回線と処理性能に余裕があるノードは上流に位置づけ、大量のデータをやりとりさせる。また、人気のあるファイルは上流でキャッシュするようにし、Winny ネットワーク内での流通速度を上げる。一方、回線や処理性能に余裕のない下流ノードは上流のノードにぶら下がるようにし、相応の負荷に抑える。

この仕組みであれば、上流は負荷が高いがその分大量のファイルを受信できるし、下流よりも広い範囲でファイルを探すことができる。下流は自分の身の丈にあった範囲でファイルを探すことができ、それぞれの住み分けができる。

上流と下流の概念があることで、どんな参加ユーザーでも受け入れることができ、ネットワーク全体の受容能力が高まる。ネットワークの価値は、まず参加しているノードの数で決まる。もちろん、各ノードの持っているリソースの質も重要だが、量は質に転換する。それを踏まえた設計になっているのが素晴らしい。

- クラスタリングによる分割統治

Winny はクラスタという概念を取り入れ、ネットワークの規模が大きくなっても効率を落とさない仕組みを実現している。

参加しているノードの数が増え、ファイルの流通量が爆発的に増えると、流通量全体に占める目当てのファイルの比率が下がる。これはネットワークが成長すると避けられない事態だ。この問題への対処は上流と下流だけでは難しい。そのため、目当てのファイルや保持しているファイルの傾向でノードを分類し、集団 (クラスタ) を形成するようになっている。これにより、目当てのファイルの検索ヒット率と、キャッシュヒット率が向上する。

問題解決の基本は「分割して統治せよ」だ。上流と下流という一次元の軸しかなかった Winny ネットワークにクラスタという別の次元の軸を与えることで、大量のノードを分割して統治することができる。しかも、お互いのクラスタは明確に分割されるのではなく、ある程度のつながりを保持したままゆるく分割されていく。良くできた仕組みだ。

- 自動ダウンロード、自動ハッシュチェック

Winny は自動ダウンロード、自動リトライ、自動ファイルハッシュチェックなど、Winny ネットワークとアプリケーションの信頼性を高める仕組みを導入している。

欲しいファイルを「予約」して Winny を起動しておけば、あとは Winny 自身が勝手にファイルを持っているノードを検索し、リクエストを発行してダウンロードし、ファイルの整合性のチェックまでしてくれる。

この仕組みはユーザの手間を減らすという点で非常に強力だ。とくに、ネットワークアプリケーションで懸念されるデータ化けやファイル破損を、MD5 ハッシュのチェックをおこなうことで回避している点が良い。TCP 自体にエラーチェックの仕組みがあるが、アプリケーションが保証していることが重要だ。

この仕組みがあることで、数百メガバイトを超えるファイルの共有も安心してできるようになる。チェックは自動でおこなわれるので、ユーザーに手間をかけさせない。安心して任せられるので、流通するファイルが増える。その結果、Winny ネットワークはより大きくなる。

全体的に見て、Winny はファイルの交換を促進する良い仕組みを持っている。IX やプロバイダーが Winny のトラフィックの増加に悩んでいたようだが、これだけの機能を備えていれば、それも頷ける。

- 疑問点

共有できるファイルサイズの上限が 2GB というのはちょっと少ない。たとえば、Debian GNU/Linux sarge の DVD ISO イメージは 4GB くらいあったはず。こういう巨大ファイルは分割しなければならない。開発当時のネットワーク回線事情では、この程度のサイズのファイルを気軽に流通させることはできなかったのかもしれない。

表紙がグレーなのは、Winny の利用される形態が「グレーゾーン」だからかな?

2ページ目の鍵の指紋が気になる。金子氏はこれで何をしようとしているんだろう?

Fingerprint:

16B6 7953 A7C1 2DCA 9DEF C7D1 2546 1CCE C03F 2BA3

- Winny の技術 pdf 版を Winny でダウンロード

Winny の技術 winny ネットワーク上で流通しているようだ。以下がファイル情報。左から順に、ファイル名、 Winny 上のトリップ、ファイルサイズ、md5 ハッシュ。

PDF(一般書籍) [金子勇] Winnyの技術 [05-10-03].zip cbwdWRCPoE 1,900,259 9d2dd618c580e38ea6869c51d9ed1107

2005-10-05 (Wed)

* Winny の技術解説本「Winny の技術」を発注

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [] [winny]

P2P 型ファイル共有ソフト Winny の技術解説本「Winny の技術」を発注した。
Winnyの技術Winnyの技術

金子 勇 / アスキー書籍編集部
発売日: 2005/10


amazon で詳しく見る   bk1で詳しく見る


私が発注したときは amazon は「2から3週間以内に発送」だったが、bk1 は「24時間以内に発送」となっていたので bk1 で発注。

- Winny の作者自身が Winny を解説する

著者は47氏こと金子勇氏。Winny の作者だ。

Winny は非常に興味深い。数十万のノードが参加しても破綻無くネットワークが稼働するスケーラビリティや、「中継」による匿名性の確保、クラスタと呼ばれる効率を高める仕組みなどが面白い。アーキテクチャを知りたくて 2ちゃんねるの Winny 関連スレや「次の雑談」スレ、関連ウェブサイトを読んでいた時期もあった。興味深い内容も多数あったが、いかんせんノイズも多かったし、推測するしかない部分もあった。

しかし、「Winny の技術」は作者本人が書いた本。正確さは折り紙付きだ。この本があれば、2ちゃんねるの Winny 関連スレッドの過去ログや、技術を解説したウェブサイトのアーカイブを削除しても困らなくなるだろう。削除するつもりはないけど。

- Winny のバイナリは今でも入手可能

ところで、今でも Winny のバイナリって手に入るんだろうか? 2004-05-14 の「winny 配布ファイルと exe のハッシュ値」で winny 各バージョンの md5 や sha-1 ハッシュをメモしておいたが、ハッシュ値だけわかってもバイナリが手に入らなければ無意味だ。私は手元にバイナリがあるからいいけど、本を読んで実際に動きを見たりしたい人は探す手間がかかるな。・・・と思ったら、Google で Winny2b71.zip を検索すれば配布してるサイトがあるのね。

2004-05-14 (Fri)

* winny 配布ファイルと exe のハッシュ値

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [winny]

winny.info別館で、winny 配布ファイルと実行ファイルのハッシュを掲載していた。

はてなダイアリー - winny.info別館
http://d.hatena.ne.jp/winny/20040514#1084533557
Tipsさんの家宅捜査を受け、ハイ初さんを初めとした関連サイトが続々と自主的に閉鎖されています。ここでは言論封殺だなどと主張はしませんが、少なくともWinnyのバイナリの入手手段が限られてしまったことは確かです。

有志によりバイナリ配布を行うサイトも出てきていますが、あくまで可能性として、何らかの手を加えられたバイナリと差し替えられている可能性も考えられます。

私はこれまでと同様にバイナリの配布をする予定はありませんが、その代わりとして私が保持しているWinny2 b7.1のハッシュ値を掲載しておきます。

これを信用するかはあなた次第。

RedHat9 ftp 版をはじめとする Linux の iso イメージの入手と配布に winny を使ったことがある。公開直後で ftp サイトが混雑しているせいか、それとも私の契約している回線が不安定なのかはわからないが、何度ダウンロードしても md5 が一致しないという症状に見舞われたことがあり、winny でも配布していると聞いて使ったのだ。

私はダウンロードしたツール類は極力保存しておくようにしている。保存先ディレクトリを検索してみると、winny の配布ファイルがいくつかヒットした。47氏の公式サイト以外からは winny をダウンロードした記憶がないので、すべてオリジナルのはずだ。

私はこれらのファイルを配布するつもりはないし、著作権侵害行為を助長するつもりもない。単にオリジナルの winny とはどういうものであるかを判別するために、ハッシュやファイルサイズを記録しておく。メモなので「これを信用するかはあなた次第」だ。

- ハッシュ確認には HashTab Shell Extension を使用

各種ハッシュの確認には、windowsの ファイルのプロパティにハッシュを表示してくれる HashTab Shell Extension を使用した。なお、HashTab Shell Extension はハッシュのアルファベットは大文字で表示するが、私は小文字が好きなので xyzzy の文字列変換機能を使って小文字化してある。

ファイルのプロパティでハッシュ値を確認・比較「HashTab Shell Extension」
http://www.forest.impress.co.jp/article/2004/04/13/hashtab.h ...

- Winny v2.0b7.1 ( 03/11/16 )

配布アーカイブ: Winny2b71.zip 645,502 バイト
md5: 205d53ad7f14816a3a3d12fd14bc4338
sha-1: 34eefeb00cec94980fff57ff47a65ea635226188
crc-32: 1545ab7a

実行ファイル: Winny.exe 663,040 バイト
md5: 0d53d1782fb2009f953fa68b4ff7ef2d
sha-1: 6a1c80c2fde37f43d7282e610fdaa6e7f8af203d
crc-32: 4fce331e

- Winny v2.0b6.6 ( 03/09/13 )

配布アーカイブ: Winny2b66.zip 637,742 バイト
md5: 085372a5f7f42e141c09af135cb652cc
sha-1: a252f97196c2b327b322b7fba6b94c3f6171ecad
crc-32: a8fc441a

実行ファイル: Winny.exe 655,360 バイト
md5: fe2641850a2f891cbf4b7ccc7080c713
sha-1: 03f281cdbad5b4fa27336388a6bfb3384040c3ae
crc-32: 813fdc56

- Winny v2.0b6.47 ( 03/09/03 )

配布アーカイブ: Winny2b647.zip 636,362 バイト
md5: 23559a89da1b038fb1c158116cd2ec20
sha-1: 618b1e7dfd70923dc26bed6756a45b890ba50a72
crc-32: 66acd1dd

実行ファイル: Winny.exe 653,824 バイト
md5: 3a9c94ca428e0b2bf9d372487263c749
sha-1: 41149e69419fadb615cd853e6b9227b2cd100789
crc-32: 609455fa

- Winny v1.14 (2003/04/05)

配布アーカイブ: Winny114.zip 233,106 バイト
md5: 1268bda1ec55f4439beef1b1a0c06546
sha-1: ba35f6a8ace70d2b8efb80841e9270ce84e86ff8
crc-32: cfce0dc6

実行ファイル: Winny.exe 243,200 バイト
md5: ddd8a25a37b93915c6e9f823da8e1a75
sha-1: 97b6aa917623b0fe0fa3805067a37207d1ced7a8
crc-32: d07a9838

2004-01-27 (Tue)

* Winny逮捕者祭まとめ

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [winny]

Winny逮捕者祭まとめ
http://dayomon.fc2web.com/winny/
Winny BBS は匿名性が低い。そこを京都府警が突いてきた、という話。47氏の家宅捜索についても考察がある。

刑事訴訟法
http://www.houko.com/00/01/S23/131.HTM#s1.9
刑事訴訟法第102条:" 被告人以外の者の身体、物又は住居その他の場所については、押収すべき物の存在を認めるに足りる状況のある場合に限り、捜索をすることができる。 "

容疑者でないのに令状がでるのだろうか?という疑問がよぎるが、上記の刑事訴訟法第102条によって可能である。また、実際は家宅捜索など行われていなく、ソフトやハードを任意提出しただけかもしれない。

「容疑者でなくても令状があれば家宅捜索できる」は知らなかった。さらに、以下を読んで驚いた。もしかしたら、令状を申請するまでの裏付けの積み上げや根回しが大変なのかもしれないけど、もともと家宅捜索ってその裏付けを取るために行うはず。

851 名前:朝まで名無しさん[] 投稿日:03/11/30 19:43 ID:O7hBgNcQ

http://www.aurora.dti.ne.jp/~osumi/y98-99-2.html
>憲法第33条、第35条は令状がなければ何人も逮捕、家宅捜査されない
>権利を保障しているのだが、この令状が、請求のあったもののうち
>なんと99.9%も通っているのだ。
>これでは令状審査がまともに機能しておらず、別件・微罪捜査の温床に
>なっているといっても過言ではない。

警察が裁判所に家宅捜索令状を請求すると99.9%が許可される。

ついでに言うと、起訴されたうち99.9%が有罪の判決を受ける。
平成13年度の統計を見ると
 死刑判決件数<無罪判決件数<無期懲役件数

http://courtdomino2.courts.go.jp/tokei_y.nsf
 刑事で表32をみてくれ。

849 名前:朝まで名無しさん[] 投稿日:03/11/30 19:10 ID:qIJDASXl
家宅捜索令状の一例(これは捜索される人間が「被疑者」となっている)

ttp://www2s.biglobe.ne.jp/~reijo/siryo/data/sousaku.htm

違法な家宅捜索に対抗するには

http://www2s.biglobe.ne.jp/~reijo/110/katudou.htm

最後のリンクの「違法な家宅捜索に対抗するには」は2004年1月にサイトをリニューアルしており、該当記事を見つけられなかったので、サイトのトップにリンクを張っておく。

逮捕令状問題を考える会
http://www2s.biglobe.ne.jp/~reijo/

2004-01-07 (Wed)

* 47氏は某有名国立大学の助手?

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [winny]

インターネット事件簿 第3回:京都府警がWinnyに叩きつけた挑戦状 ―「われわれはすべてを解き明かした」
http://internet.watch.impress.co.jp/static/column/jiken/2004 ...
捜査関係者が、声を潜めて語る。
「Winnyの作者は、某有名国立大学の助手を務めている人物です。学内での立場もあり、今回の事件で家宅捜索を受けたことで開発をこれ以上進めるのは無理なのではないでしょうか」

47 氏の人物像を追う人はたくさんいて諸説があったが、どれが正しいかは私にはわからなかった。
・40歳程度のシステム管理者
・女子中学生説
ぐらいが記憶に残っている。
40歳程度という年齢は、47氏自身がトリップ付きで書き込んだ「情報処理試験は20年くらい前に受けた」というレスから導き出されたものだ。女子中学生説は言うまでもなくネタだろうが、いろんなところで好んでこの表現が使われていたのが印象的だった。

2003-11-30 (Sun)

* 47氏トリップ 47◆KbtLZwerNc

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [winny]

47◆KbtLZwerNc

2003-07-17 (Thu)

* winny の匿名性についての47氏の意見

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [winny]

つまり、winny の匿名性の肝は転送によるファイルの一次公開者の隠蔽にあるということ。

MXの次はなんなんだ? Part165
http://tmp.2ch.net/test/read.cgi/download/1058199380/51
51 :47 ◆KbtLZwerNc :03/07/15 01:57 ID:hsfdr3mD

ちなみにβ5.01→β5.02でBBSのハッシュ値が変わるので5.02に変えた直後は
5.01が放出したキーが消えるまで同じスレが二つに見えるはずです。

あと、匿名性がまた話題になっているようですが、nyの匿名性に暗号はほぼ関係ありません。
もしWinnyのソースを全て公開して暗号を全て取り除いた状態でもnyの匿名性は変わりません。

通信内容、キャッシュなどを全て解析しても匿名性は保たれように設計されています。
Winnyの匿名性の肝は転送動作であって暗号ではないからです。

わざわざ各所を暗号化したり本体の改造を困難にしたり、通信内容を暗号化しているのは
単に解析を困難にさせるためです。そして、なぜ解析を困難にするかというと、
解析されて改造されるとファイル共有効率が落ちるからです
(ただ、キャッシュの暗号化は管理責任の問題があるかな?)

あと、Winnyが起動されているノード情報はもちろんTCPでコネクション繋いでいる以上
ログを取れば判明しますが、これは初期ノードリスト解析することと同じことです。

ここは一番暗号の弱いところで解析されてもほとんど影響の無い部分です。
初期ノードを暗号化しているのは気分的な問題(公開の際の心理的影響考慮)であって、
ここはデコードされてもほぼ匿名性に影響ないと思います。
それでわかるのはそこでnyが起動されているということだけですので。

2003-07-12 (Sat)

* nych Winny BBS Gateway

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [winny]

winny2 の掲示板機能をウェブ上で提供するサイト。

http://nych.info/
当サイトではP2Pを利用した匿名掲示板、WinnyBBSをWEB上から回覧する為のゲートウェイページを設置しています。

2003-06-23 (Mon)

* winny のオープンソース化を考える

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [winny]

Winnyのオープンソース化を考えるスレ
http://pc.2ch.net/test/read.cgi/linux/1056020225/l50

- スレの発端は47氏の発言

http://pc.2ch.net/test/read.cgi/linux/1053087824/882
882 :47 ◆KbtLZwerNc :03/06/19 08:50 ID:AhStOI42
Winny作者ですが

あれがクローズドシステムになっているのは、好きでそうしているわけではなく、
こちらの設計能力不足によるものですので、もしオープンソースでも問題ないメカニズムが
導入できるのなら、こちらでそれを取り入れてWinnyのソースを公開するのもありかと思ってます。

その際には現在のWinnyとの互換性はなくなると思いますが。

今やってるWinny2のその次を考えるとどうしても一人でやっているのは限界があるわけで、
オープンシステム化かもしくは別の方法による大規模化は避けて通れないでしょう。

とりあえず設計さえ煮詰まれば実装はこちらでやっても良いので、考えるのだけはよろしくお願いします。
だめならソース非公開なままでUNIX版を作るという手もありですが、こちらの時間的余裕の問題で
オープンにできないのであればUNIX版ができることは無いと思います。


すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。