I2Pが実現するスケーラブルな匿名接続

Invisible Internet Project(I2P)はIPプロトコルのセキュア版で、標準TCP/IPネットワーク・インフラストラクチャに内在する脅威――最も問題なのは通信の端点を容易に特定し追跡できること――の解消を目的としている。

I2Pでは、通信の端点は、自身が選定した秘密のインバウンド(データ受信用)トンネルとアウトバンド(データ送出用)トンネルを何本か持っている。トンネルは一連のルーターから構成されており、ルーターの数を多くしてトンネルを長くすれば、秘匿性は高まる。ただし、パフォーマンスは落ちる。通信の端点が送出したデータはアウトバンド・トンネルのいずれかを通り、その出口で受信側のインバウンド・トンネルに入る。通過するトンネルを構成する各ルーターには、ルーターごとに持っているキーによる暗号化層が付加されている。この仕組みは「オニオン・ルーティング」の主要機能と同じもので、これによりルーターが立ち聞きされるのを防いでいる(著名なオニオン・ルーティング・プロジェクトTorはI2Pより効率的で狭帯域に適している。しかし、I2Pほどの応用性がなく、動的脅威に対する耐性も劣る)。

I2Pは、「ガーリック・ルーティング」と自ら名付けた技法を採用している。これは、メッセージが同時に複数の経路を通ることができるようにすることで、オニオン・ルーティングの弱点であるメッセージの完全性を強化する仕組みだ。こうしたルーティング技法については、優れた論文Onion Routing and Online Anonymityを参照のこと。

I2Pでは、アドレス(宛先)は暗号化キーの集まりだ。ASCIIを用いるべき場合、キーはBase64で符号化される。TCP/IPやUDP/IPプロトコルではアドレスはホストを指すが、I2Pではサービスを指す。ホストを特定するよりも、あるホストで動作しているサービスを特定する方が難しく、I2Pのアドレスはサービスを提供するサーバーが変わっても変更されない。

I2Pネットワークの名前は、NAME.i2pという形式(Tor匿名ネットワークのADDRESS.onionという形式に類似)を持っている。名前の解決はまだ開発の初期段階にあり、プロジェクトが1.0リリース段階になるまで、その方向性は不透明だ。現在は、NAME:DESTINATIONの対応を含むテキスト・ファイルのデータベースを維持管理することで宛先・名前変換を行っている。I2Pの利用者は使いたいデータベースを「定期購読」する。つまり、データベースの最新版を定期的にダウンロードするようにI2Pルーティング・ソフトウェアを構成しておく。

利用するには

I2Pは開発中のため、各ディストリビューション用のパッケージがすべて揃っているわけではない。Ubuntu Dapper用のパッケージはないが、Arch Linux用のパッケージはあるといった具合だ。対応するパッケージがない場合は、I2PのウェブサイトにあるGUIインストーラーを使うとよい。

ダウンロード後、次のコマンドを実行する。

java -jar i2pinstall.exe

これで、I2Pルーティング・ソフトウェアがインストールされ起動される。自動的にI2Pネットワークに組み込まれるが、危険はないので心配は無用。I2Pの起動・停止は、インストール・ディレクトリにあるi2prouterコマンドで行う。ファイアウォールがある場合は、ポート8887と123に着信するUDPトラフィックを許容するように設定しておく。また、ルーターでネットワーク・アドレスを変換している場合は、前記のポートへのトラフィックをi2prouterが動作するマシンに転送するように設定しておくこと。次いで、新しいI2Pルーターを構成する。構成はウェブブラウザーからhttp://localhost:7657/を開いて行う。このページには、I2Pの世界を探検できる種々のリンクもある。

ヒント

  • .i2pのウェブページを開くときは、ブラウザーのHTTPプロキシ設定をlocalhost:4444としておく。
  • ネームサービスの定期取得の設定はウェブページhttp://localhost:7657/susidns/index.jspで行う。
  • そのほかのウェブページやI2Pについての質問はforum.i2pへ。

サービス

I2Pが提供するアウトバンド用プロキシには、FreenetやHTTP用のものなどがある。前述のポート4444プロキシ経由でそれらのページにアクセスすると、暗号化されていないウェブへのゲートウェイが自動的に作動する。I2Pトラフィック用Freenetゲートウェイは、http://tino.i2p/freenet.htmlにある。

ピアツーピアのファイル共有は、GnutellaネットワークではI2PHex、BitTorrentではI2PSnarkなど、それぞれに対応するクライアントを使えば利用可能。このほか、BitTorrent用には、広く使われているAzureusクライアント向けのAnonBTプラグインもある。

電子メールは、現在、非常によく使われているインターネット・サービスだが、残念なことに、安全なものでは全くない。ほとんどの電子メール・クライアントはドメイン・サーバーに照会する際などに利用者の情報を漏洩しているのだ。そこで、I2Pネットワークの利用者には、ウェブメール・インタフェースが提供されている。そのSusiMailを使うと、I2Pを介して電子メールを暗号化し匿名接続で送ることができる。詳細は、http://localhost:7657/susimail/susimailを参照のこと(このページを開くには、i2prouterが動作している必要がある)。

I2Pの興味深い応用として匿名接続ブログ・サービスが考えられるが、これはすでに、Syndieとして実現されている。検閲や政治的迫害が行われている国々では、これを使えば、身を危険に曝すことなく自由に自分の意見を表明することができる。

I2PにはSAMという機能もある。これはサービスではなく、単純な平文のプロトコルだ。どのような言語によるサービスでも、このプロトコルを使えば、I2Pネットワークとの情報交換が可能になる。

また、I2PTunnelというプログラムを使うと、通常のTCPアプリケーションでもI2Pのトンネルを利用することができる。構成は、http://localhost:7657/i2ptunnel/index.jspで行う(この場合も、i2prouterが動作している必要がある)。ただし、パフォーマンスが大きく低下するため、負荷の重い応用には使えない。

I2Pのバージョンは現在0.6にしかなっていないが、すでに主なバージョンのロードマップがある。コードはTorほどには業界で評価されておらず、現時点では実運用に適さない。とはいえ、I2Pは、いずれプライバシーとセキュリティーに最も配慮したアプリケーションとなり、その上、最も安全なものになるだろう。

NewsForge.com 原文