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

I2Pは、標準TCP/IPネットワークインフラストラクチャに内在する脅威――通信の端点を容易に特定し追跡できること――の解消を目的としている。いずれプライバシーとセキュリティーに最も配慮したアプリケーションとなり、その上、最も安全なものになるだろう。いち早くそのI2Pを解説する。

» 2006年09月21日 09時00分 公開
[Leslie-P.-Polzer,Open Tech Press]

 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のWebサイトにあるGUIインストーラーを使うとよい。

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


java -jar i2pinstall.exe

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

ヒント

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

サービス

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

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

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

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

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

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

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

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ