見出し画像

金子勇とWinnyの夢を見た 第7話 ファイル共有ソフト

※この記事は、Advent Calendar 2023 『金子勇とWinnyの夢を見た』の八日目の記事です。

P2P型ネットワーク登場の背景

 P2Pアーキテクチャは、インターネットの基本的な考え方に存在していました。インターネット自体が分散化されたコンピューター(ノード)が網の目のように接続し、特定のノードが破壊されても別のノードを経由して通信機能が維持できる自律分散型ネットワークを目指していました。しかし実際は、データの分散化や自律的なルーティングに対応していませんでした。

 当時のインターネットは、画像ファイルの転送も時間がかかっていたナローバンド(狭帯域)から音声ファイル、更に大容量の動画ファイルを配信できるブロードバンド(高速・広帯域)環境への移行が始まるところでした。

 人々はさらなるなるリッチコンテンツを求め、国内のインフラや企業、各家庭のネット環境の進化は加速します。冗長性や対障害性、スケーラビリティに優れたP2P技術は動画配信サービスなどで欠かせないものとなっていきました。

この記事では、P2Pが始まる少し前に遡って書いてみます。

BBS

 アメリカのパソコン通信の歴史は、1980年代に盛り上がりを見せたCompuServeThe Sourceから始まります。1990年代に入ると、AOL(America Online)へと受け継がれ、さらなる拡大を見せました。

 日本では、1990年代から、ニフティサーブPC-VAN(現BIGLOBE)、アスキーネットなどの大規模なパソコン通信ホストのサービスが人気を集めます。

 パソコン通信は、サービスをホストするシステムに直接電話を繋いで通信します。ホストへ接続するためのアクセスポイントが複数配置され、1991年の利用者は115万人。1996年には573万人まで増えました。(※1)

 一方で、草の根BBSという、コンピュータ関連企業や個人が運営する小規模のパソコン通信ホストの運用も行われ、それまであったアマチュア無線の利用者は減少していきました。

アマチュア無線局数の推移(※2)

 当時のアナログ通信速度は、300bpsから徐々に高速になり、1996年頃には28,800bpsになり、デジタル回線のISDNを使用すると64kbpsで通信できました。まだキャラクターベースの通信が精一杯で、画像ファイルも一旦テキストに変換するなどの方法で扱われていました。

 その後、ウェブブラウザというツールが発明され、キャラクターベースのBBSの利用者は急激に現象していきました。

Hotline

Hotline

 Hotline Communications Limited(HCL)は、1997年にカナダで設立されました。Hotlineは、多目的クライアント/サーバーソフトウエアで、掲示板とファイルの共有機能が利用できます。

 1996年にMacintoshのアプリケーションとして作成され、IRCよりも使いやすかったため利用者が広がり、1997年には各種の賞も受賞しました。人気がピークに達すると、MP3や海賊版ソフト、映画、ポルノを流通させる「アンダーグラウンド・コミュニティ」を増やすことになりました。

 1990年代の終りには、GnutellaやKazaaなどに置き換わり、Hotlineソフトウエアは徐々に衰退していき、2001年にHotline 2.0の開発が中止されたまま、現在まで新しいバージョンはリリースがされていません。

ICQ

 1996年にイスラエルの Mirabilis 社が開発した、インスタント・メッセンジャーです。名称の語源は、 "I Seek You" (私はあなたを探す)と言われています。当時は可愛いネーミングと思いましたが、現代でこの言葉を言われると怖いですね。

 主な機能は、特定の相手と1対1あるいはグループで直接会話を行います。ユーザー一人ひとりにICQ番号(UIN)が付けられ、アカウントにログインすると様々なデバイスで使うことができます。また、ファイルを転送することもでき、当時として数Mバイトの大容量のファイルを転送可能でした。

 通信はP2Pで行われますが、すべての管理はサーバーが行っており、連絡先リスト、メッセージ内容、送信したファイルは全てサーバーに残り、クラウド・ストレージとしての機能もありました。

 比較的簡単に自分や相手のIPアドレスが分かってしまうというセキュリティ上の問題があり、多くのクラッキングツールが作成され、次第にウイルスやワームなどの被害が拡大していきました。

Napster(P2P第一世代)

Napstar Logo

 1999年5月、Shawn Fanningは、MP3形式の音楽ファイルを検索・共有するためのファイル共有アプリケーションを発表しました。世界中で1億数千人以上のユーザーが利用する、爆発的に普及したソフトウエアです。

 Napsterは、接続さたノードと共有されるファイルの情報を管理するサーバーに接続し、要求されたファイルが存在するノードの位置を取得します。この部分はクライアント/サーバー方式で行われます。

 ファイルが存在するノードの情報を得ると、そのノードに直接接続しファイルの転送が始まります。この部分の動作がP2Pとなります。

 転送以外の管理はサーバーが行っているため、サーバーがダウンしてしまうと全体が機能しなくなります。

 Napsterは無料で利用できたため、非常に人気があり、大量の音楽ファイルが無料で取得できるようになりました。これら全ては基本的に著作権の承認無しでおこなわれたため、その殆どが違法でした。

 2000年に、RIAA(米国レコード協会)は著作権で保護された素材の不正配布でNapsterを開発していたNapster,Inc.に対して訴訟を起こし、2001年にネットワークの閉鎖を強要する差し止め命令がくだされました。

 2002年にCD書き込みソフトの大手Roxioに買収され、2003年にはNapster 2.0がサービスを開始します。このサービスでは約50万曲を試聴でき、1曲あるいはアルバム単位で購入できる、合法的なサービスになりました。また、月額のサブスクリプションに加入することもできます。

2011年にRhapsodyに買収され、NapsterのサービスはRhapsodyに統合されましたが、2016年にサービス名称をRhapsodyからNapsterに戻し、音楽配信サービスを提供しています。

WinMX(P2P第1世代)


 WinMX(Windows Music Exchange)は、カナダのFrontcode Technologies社の社長Kevin Hearnによって作成され、2000年12月4日に初回リリースされました。2005年には約210万人のユーザーに使われていました。

 WinMXのテクノロジーはNapsterと同様に、ノードとファイルの管理はクライアント/サーバー型を使用し、ファイル転送をP2Pで行うようになっています。当初はNapsterと互換性のあるOpenNAPプロトコルを使用し、複数のサーバーに同時接続できるようになっていました。2001年に公開されたWinMX2では、独自のP2PプロトコルWPNP (WinMX Peer Networking Protocol)を使用するようになり、Frontcode Technologies社は複数のピアキャッシュサーバーを運用していました。

 WinMXは、マルチポイント・ダウンロードという機能があります。小分けされたファイルを複数のユーザーから同時にダウンロードすることで、人気のある曲は非常に高速にダウンロードできます。また、中断した転送を途中から再開することもできます。更に、帯域幅の監視やチャットルーム、ショートメッセージなどの機能も備わっています。そしていちばん重要なことは、MP3以外のどんなファイルでも共有できました。

 2005年9月13日、RIAA(全米レコード協会)は、Frontcode Technologies社に対し著作権を保護するフィルタを実装するか、サービスを停止するかの選択を迫る勧告書を突きつけ、WinMXのサーバーは2005年9月21日をもって停止することになりました。

 その後、すぐにMXPieとWinMX Worldの2つのコミュニティがパッチを作成し、サービスを継続は継続されています。

 WinMXを作成したKevin Hearnは、2017年にFopnuをリリースしました


Gnutella(P2P第2世代)

 第一世代は、ノードの発見とファイル検索をクライアント/サーバー方式で行っているため、サーバーがダウンした場合使用できなくなります。そこで、第二世代のファイル共有ソフトでは、ノードの発見やファイルの検索部分も完全にP2Pで行うようになりました。このアプリが、ピュアP2Pモデルでネットワークを構成するアプリの始まりです。独自のルーティング機能を備え、物理ネットワークから完全に独立した仮想ネットワークが誕生しました。

 Gnutellaは、Nullsoft社のJustin FrankelTom Pepperによって開発され、2000年3月14日にNullsoftのサーバーからダウンロードできるようになりました。Nullsoftは既にAOL(America Online)に買収されており、法的な懸念から翌日には公開が停止されましたが、その1日の間にGunutellaの新しい技術に注目が集まり、既に数千人がプログラムをダウンロードしていました。

 Gnutellaネットワークへの人気が高まったのは、2001年初頭にNapsterが廃止の危機にさらされたことが大きな要因となります。ピュアP2Pでは、ネットワークをシャットダウンすることは非常に困難で、サービスを継続できます。

 ソースコードは、GPLライセンスで公開する予定が取りやめになりましたが、公開数日後にはプロトコルがリバースエンジニアリングされ、互換性のあるフリーでオープンソースのクローンが出現し始めます。今日Gnutellaとは、様々なクライアントが使用するオープン・プロトコルを意味します。

 しかし、当初のプロトコルでは、ノードが増えるにつれて指数関数的にPINGリクエストが増加し、クエリー検索でネットワークが高負荷になってしまいました。また、各ノードは接続と切断を繰り返すため、ネットワークは安定せず、検索クエリがごく一部にしか到達しなかったり、ドロップしてしまうことが多く、検索結果は信頼性に欠けるものでした。

 この問題に対処するため、ultrapeersとleavesという階層システムを実装します。また、クエリ・ルーティング・プロトコル (QRP) やダイナミック・クエリ (DQ) 等の技術により、トラフィック量を大幅に減らし、効率的な検索を実現します。

 2001年後半にGnutellaプロトコル互換のLimeWireBasicがオープンソースとして公開され、2007年には全世界のコンピュータの3分の1以上にインストールされていたと推定されています。(Wikipedia

Kazaa(P2P第2世代)

 Kazaaは、BlueMoon InteractiveのJaan Tallinnなどのプログラマーによって開発されたFastTrackプロトコルを使用するP2Pファイル共有アプリケーションです。Niklas ZennströmJanus Friisに売却され、Napster閉鎖後の2001年3月1日に初回リリースされました。

 「スーパーノード」を設定することで、Gnutellaの問題であった、ノード数増加による検索効率の低下を解決しています。「スーパーノード」はインデックス情報を保持する上位のサーバーとして働き、他のノードは検索情報を保持しません。

 有料化し、合法的なサービスを目指しましたが、オランダ、オーストラリア、アメリカなどで訴訟があり、多額の和解金を支払っています。

 2002年にSharman Networksに売却された後に配布されたKazaaに各種スパイウェアやマルウェアがバンドルされていたため、2002年にはKazaa Liteと呼ばれるKazaaの無許可修正版が使われるようになりました。

 Niklas ZennströmとJanus Friisは、Kazaaを売却した後にJoltid社を設立し、P2P技術を利用したインターネット電話サービスSkypeを開発しました。Skypeは、2005年にeBayが26億ドルで買収しましたが、2009年には買い戻され、2011年にはマイクロソフトが95億円で買収しました。

Freenet(P2P第3世代)

 Freenetは、匿名化アプリケーションと位置づけられています。

 エジンバラ大学の Ian Clarke が1999年に卒業のためのプロジェクトで作成した論文 ""A Distributed Decentralised Information Storage and Retrieval System" (分散自立型情報の保管と検索システム)から始まりました。そして、他の研究者と共同で書かれた論文 "Freenet: A Distributed Anonymous Information Storage and Retrieval System"(2001)(フリーネット:分散型匿名情報保管・検索システム)が発表され、2002年に最も引用されたコンピュータサイエンスの論文の一つとなります。

We describe Freenet, an adaptive peer-to-peer network application that permits the publication, replication, and retrieval of data while protecting the anonymity of both authors and readers. Freenet operates as a network of identical nodes that collectively pool their storage space to store data files and cooperate to route requests to the most likely physical location of data. No broadcast search or centralized location index is employed. Files are referred to in a locationindependent manner, and are dynamically replicated in locations near requestors and deleted from locations where there is no interest. It is infeasible to discover the true origin or destination of a file passing through the network, and difficult for a node operator to determine or be held responsible for the actual physical contents of her own node.
=日本語訳============================
Freenetについて説明します。これは、データの公開、複製、および取得を可能にする一方で、著者と読者の匿名性を保護する適応型ピアツーピアネットワークアプリケーションです。Freenetは、同一のノードからなるネットワークとして動作し、これらのノードは共同でストレージスペースをプールし、データファイルを保存し、データの最もありそうな物理的な場所にリクエストをルーティングするために協力します。ブロードキャスト検索や中央集中型のロケーションインデックスは使用されていません。ファイルは場所に依存しない方法で参照され、リクエスト元の近くの場所に動的に複製され、興味のない場所からは削除されます。ネットワークを通過するファイルの真の出所や宛先を発見することは不可能であり、ノードオペレータが自分のノードの実際の物理的な内容を決定したり、責任を負うことは困難です。

Abstruct "Freenet: A Distributed Anonymous Information Storage and Retrieval System"

 Freenetは、2000年3月の初回リリースから継続的に開発されています。

 Freenetは、ノード間でデータを転送するだけでなく、1つのファイルを複数の小さなブロックに分割して暗号化し、巨大な分散キャッシュを作成します。1つのファイルが多くの異なるノードに保存されている可能性があり、データをアップロードしたノードがオフラインになってもダウンロード可能になります。

 この設計により、最初にアップロードしたノードや所有者は特定できなくなります。また、一旦アップロードしたデーターを削除する方法がありません。ノード数の増加によるパフォーマンスは、Freenet固有のセキュリティ機能によって分析が難しくなっています。

 2008年5月8日にリリースされた Freenet 0.7 では、大幅な書き直しが行われ、ダークネットの運用サポートが盛り込まれました。Freenet 0.7 には友達同士で接続するDarknetモードと、他のFreenetユーザーと接続するOpennetモードが提供されています。Darknetモードでは、Freenetは外部からの検出が非常に難しくなっています。

 Freenetは、単一のアプリケーションとして提供されているのではなく、掲示板、ファイル共有、オンラインチャットなど様々なモジュールとして提供されています。

 FreenetはHyphanetと名前を変えて開発が続いているようです。

BitTorrent(P2P第3世代)

 BitTorrentは、P2Pファイル共有プロトコルで、2001年7月2日にリリースされました。効率性を重視し、匿名性は一切考慮していません。転送効率が極めて高く、人気の高いファイルは多数のノードから同時ダウンロードできます。

  • Tracker(トラッカー):BitTorrentクライアントの動作を調整するためのサーバー。

  • Seed(シード):トレントの完全なコピーを持っているコンピュータ。

  • Peer(ピア):ダウンロード中のコンピュータ。完全なコピーを持っているSeedを含めてピアと呼ぶこともある。

  • Swarm(スワーム):SeedとPeerを含めて接続されているコンピュータの集合。

  • Piece(ピース):分割されたファイルの断片

  • Torrent(トレント):拡張子「.torrent」がついたメタデータのファイル。

 BitTorrentは、トレント・ファイルを使ってトラッカーに接続し、シードからファイルをダウンロードします。シードとダウンロード中のピアは、トラッカーに管理され、ダウンロードが完了したピアはシードとして機能します。ピースは、非連続的にダウンロードされ、BitTorrentクライアントによって正しい順序に並べ替えられます。

 2005年に分散ハッシュテーブル (DHT) を導入し、トレントファイル無しで直接交換できるようになり、2006年にはピア・エクスチェンジ (PEX) 機能により、迅速にピアの共有が行えるようになりました。これによって、トラッカーへの依存を軽減し、BitTorrentプロトコルの速度、効率、堅牢性を向上しました。

 しかし、BitTorrentは匿名性を提供していません。スワーム内の全てのピアのIPアドレスは公開される仕様のため、匿名性はなく、BitTorrentのトラフィック解析も可能なため、違法アップローダーを監視するサービスも提供されています。

 大きな転換点となったのは、BitTorrentに大きな商業的価値があると判断し、BitTorrent開発者のBram Cohenと米Yahoo!で事業戦略を担当していたAshwin NavinがBitTorrent社を設立した2004年9月22日です。一方で2004年5月9日には金子勇さんが逮捕されているというのは、皮肉なことです。それまで「違法」というレッテルが貼られていた状況を脱却するため、2005年11月にMPAA(全米映画協会)と違法コピー撲滅で合意するなど、多くのコンテンツ業界と和解を成立させ、事業提携を進めました。2007年2月には、コンテンツ配信サービスを立ち上げるなど、P2P型ネットワークがコンテンツ業界になくてはならないものになっています。


IPFS (InterPlanetary File System)

 IPFSは、2015年にProtocol LabsのJuan Benetによって作られた、P2P技術を使った分散ファイルシステムのプロトコルです。日本語訳では、「惑星間ファイルシステム」となります。

 HTTPプロトコルに代わるプロトコルです。サーバーは存在せず、「ノード」同士がネットワークを形成し、データを保存したり、アクセスできるようにします。

 HTTPプロトコルは、サーバーの場所やファイルの階層を軸としたロケーション志向ですが、IPFSはコンテンツのハッシュ値を使用し、そのコンテンツがどこにあるかを指定しないコンテンツ志向になっています。そのため、複数のサーバーに同じコンテンツを置いて負荷分散したり、データの改竄やサーバーのダウンによるサービスの停止を防げます。

 現在、ChromeやFirefoxの拡張機能のIPFS Companionを使用するか、Braveというブラウザを使って閲覧できます。

I2P (The Invisible Internet Project)

 I2Pは、通信の始点と終点を匿名化し、通信内容も暗号化するソフトウエアとプロトコルの名称です。世界中のボランティアによって55,000台のコンピューターがネットワークを構成しています。I2Pはフリーでオープンソースです。

 Freenetのフォークとして、2003年にI2P Developersからリリースされました。I2Pは匿名化ネットワークレイヤとして、電子メールやファイル共有、HTTPなどの従来のインターネットサービスや、BittTorrentクライアントなどが実行できるように設計されています。

 開発者の多くは偽名を使用しており、6~8週間ごとに安定版がリリースされています。

https://geti2p.net/ja/



※1 総務省 平成27年版情報通信白書

※2 『アマチュア無線が支えるデジタル社会「“ワイヤレス人材”育成を草の根で」』, 関根禎嘉, 2023-06-14, BUSINESS NETOWORK

この記事が気に入ったらサポートをしてみませんか?