2.Tor/I2P
2.1. Torの概要
Torは外部インターネットへの匿名アクセス向けの匿名化通信システムである。 例えばWebサイトのアクセス等に向いている。
Torではクライアントからサーバーへの接続に複数のノードを経由することにより、発信元の秘匿化を実現する。
また通信内容は暗号化されているが、末端の出口ノードでは暗号化されないため、サーバ側には末端ノードのIPアドレスが発信元IPアドレスとして記録される。
後述するがVPNと併用することでさらなる匿名化通信を行うことができる。
2.2. Torの仕組みと構成要素
2.2.1. オニオンルーティング
オニオンルーティングはTorネットワーク内で通信経路を隠蔽するために行われる暗号化と通信を行う機能を指す。
Torが構築したネットワークを経由するとクライアント(Webブラウザ)から目的のWebサイト(Webサーバ)に到達するまでの経路を隠蔽することができる。
なお匿名化を行う通信のプロトコルはTCPのみである。
2.2.1.1. オニオンルーティングのフロー
- Torクライアントは、ディレクトリオーソリティにアクセスしアクセスできるノード(サーバ)一覧を取得
- Torクライアントは、取得したノード一覧からランダムに3つのノードを選択
- Torクライアントは、送信するデータを3重に暗号化し、最初のノード:ガードリレーにデータを送信。Torでデータを3重に暗号化し、各リレーで一つ一つ、複合化していく。3重に暗号化されたデータを各ノードで一つずつ複合化していく処理がタマネギの皮をむく過程と似ていることからオニオン(タマネギ)・ルーティングといわれる。
- ガードリレーはデータを受取・解読し、次のミドルリレーへとデータを送信。各リレーはどこからデータがきて最終目的地はどこかは分からない。自分の前と後ろのノードしか分からない構造になっている。これによりアクセス元のIPや情報が秘匿され、アクセス経路の匿名性が保たれる。
- ミドルリレーはデータを受取・解読し、次のエグジットリレーへとデータを送信
- エグジットリレーはデータを受取・解読し、インターネットを経由して、Webサーバへアクセスし、必要なデータやWebページを取得し、クライアントにデータを送信
オニオンルーティング単体自体ではアクセス経路の匿名性は保たれるが、通信内容(データ)の秘匿化は行われない。
2.2.1.2. サーキット
Torでは3つのノードを経由して通信経路を匿名化する。
この3つのノードをつないだ経路はサーキットと呼ばれる。
- 第1ノード(ガードリレー) … 最初にアクセスするノード
- 第2ノード(ミドルリレー) … 2つ目にアクセスするノード
- 第3ノード(エグジットリレー) …最後にアクセスするノード。Webサイトを提供するサーバからはアクセス元として表示される。
2.2.1.3. ブリッジ
Torでは非公開のガードリレー(ブリッジ)を提供している。
これはTorのWebサイト上ですべてのノードに関する情報を提供しているため、インターネットに制限をする国がガードリレーへのアクセスを遮断する可能性があるため。
2.2.2. オニオンサービス
オニオンサービスはTorネットワークを介してのみアクセスできるサービスを指す。
2.2.2.1. onionドメイン
Torネットワーク内ではIPアドレスでのアクセスと異なり、公開鍵が埋め込まれたonionドメインを基にアクセスする。
2.2.2.2. オニオンサービスの構築/運用方法
参考になるページをいくつか記載する。
Tor 公式サイト onion ドメインのウェブサイトを開設する
2.3. Torブラウザ
Torの開発元でもあるThe Tor Projectが開発しているFirefoxをベースとしたOSSのブラウザであり、非常に手軽に使え、強力な匿名化方法でもある。
TorブラウザはTorネットワークを迂回した通信を行なわないよう設定されている、またすべてのユーザーが同じように見えるよう設定されていたり、ブラウザを閉じるとCookieや検索履歴、サイトデータなどが自動で削除されたり、サードパーティートラッカーや広告による追跡を妨げたりと匿名性を上げるための多くの工夫がなされている。
ちなみに、Torを用いずに一般ブラウザ上でTorネットワーク内のWebコンテンツを閲覧できるサービスがあり代表的なものにはOnion.toがある。
2.3.1. torrcの設定
torrcというファイルの設定で通信の際に経由するノードを指定することができる。
経由するノードをログ保有期間が短い国に設定することで匿名性をさらに高めることも可能。
ファイル場所はtailsの場合/etc/tor/torrc
、Torブラウザの場合tor-browser_ja-JP/Browser/TorBrowser/Data/Tor/torrc
にある。
匿名性の高いtorrc設定
参考までにログの保管期間の長い/サーバー犯罪条約に加盟している国家のノードの未使用にするための設定を以下に記載。
ExcludeNodes {jp},{us},{gb},{ca},{au},{nz},{de}, {fr},{nl},{no},{de},{be},{it},{es},{il},{sg},{kr},{se}
ExcludeExitNodes {jp},{us},{gb},{ca},{au},{nz},{dk},{fr},{nl},{no},{de},{be},{it},{es},{il},{sg},{kr},{se},{bg},{cz},{fi},{hu},{ie},{lv}
NumEntryGuards 5
StrictNodes 1
- StrictNodes … Excludeで指定したノードへ接続するかしないかを0(接続する場合がある)と1(絶対に接続しない)で指定
- NumEntryGuards … 中継ノード数の設定
- ExcludeExitNodes … ここで指定された国の出口ノードでの回路構築を行わない
- ExcludeNodes … 指定したノードには接続しない。国コード、IPアドレスなどが指定可能。
ちなみに過度にExcludeNodesの数を設定しすぎると逆に経由するノードの数が限られてしまい不規則性が損なわれ匿名性を落としてしまうため注意。
2.3.2. セキュリティのレベル
Torブラウザのセキュリティは設定から「標準」「より安全「最も安全」の3つが選ぶことができる。
設定 | 説明 |
---|---|
標準 | すべての機能が有効 |
より安全 | HTTPSではないサイト(HTTP)ではJavaScriptはすべて無効化。また、HTML5メディア(音声、動画)は自動再生されず画面クリック後に再生される。 |
最も安全 | 静的コンテンツのみを表示。HTTP/HTTPSに関わらず、JavaScriptはすべて無効化。また、HTML5メディア(音声、動画)は自動再生されず、画面クリック後に再生する。 |
ダークウェブにアクセスする場合は最も安全に設定することを勧める。
2.3.3. Torの設定
2.3.3.1. クイックスタート - Quickstart
起動時に自動でTorネットワークに接続するかどうか設定可能。
2.3.3.2. ブリッジ - Bridge
Bridgeはインターネットの制限が大きい国でTorへのアクセスも遮断されている場合にTorへ接続するための機能。
Bridgeを使用すると、Torへの最初のアクセス先は非公開のサーバとなる。
日本からアクセスする場合は基本的には使用する必要はないが、中国やロシアなどの国から使用する場合は使用した方がよい。
なおブリッジを使用することでISPにTorの使用を秘匿できる。
2.3.3.3. 詳細 -Details
プロキシサーバを経由してインターネットにアクセスしている場合にここにプロキシの情報を入力を行う。
2.3.4. Torブラウザで利用するダークウェブ検索エンジン
名称 | 種類 | 説明 |
---|---|---|
DuckDuckGo | トラッキング防止検索エンジン | Torブラウザデフォルトの検索エンジン、.onionは検索できない |
Ahmia | ダークウェブ検索エンジン | 有名どころ |
Torch | ダークウェブ検索エンジン | ダークウェブで最も古く人気のある検索エンジン |
Onion URL Repository | ダークウェブ検索エンジン | シンプルな検索エンジン |
Virtual Library | WWWの開発者のTimBerners-Leeにより開発されたダークウェブ検索エンジン |
2.4. I2Pの概要
I2P(Invisible Internet Project)は匿名性の高い通信を実現するための分散型ネットワークである。 内部ネットワーク向けの匿名サービス構築に向いている。(例:ファイル共有,掲示板)
Torと同様にインターネット上の通信を匿名化することが目的だが、Torが主にクライアント→サーバ通信(例:Webアクセス)に重点を置いているのに対し、I2Pは双方向通信(例:ファイル共有、チャットなど)に重点を置いた設計となっている。
I2P内のサービス(“eepsite”)は、I2Pネットワークを通じてのみアクセス可能であり、.i2pドメインを持つ。
2.5. I2Pの仕組みと構成要素
2.5.1. ガーリックルーティング
I2Pでは**Garlic Routing(ガーリックルーティング)**という技術を使用して通信の匿名性を確保している。
これはTorのOnion Routingと似ているが、複数のメッセージ(“cloves”)を一つのメッセージ(“garlic message”)にまとめて転送する仕組みである。
2.5.1.1. ガーリックルーティングのフロー
- クライアントはルーター(ノード)のネットワーク情報を「NetDB(ネットワークデータベース)」から取得。
- クライアントはOutbound Tunnel(送信トンネル)とInbound Tunnel(受信トンネル)を構築。
- 通信データはガーリックメッセージとして暗号化され、複数のトンネルノードを経由しながら、受信者のInbound Tunnelを通じて送信される。
I2Pでは、送信と受信が完全に別のトンネルを使用する点が特徴。
また、各ノードは次のノードの情報しか知らず、発信者・受信者の特定ができない構造になっている。
2.5.1.2. NetDB(ネットワークデータベース)
NetDBはI2Pネットワークに参加するルーター情報やサービス情報を分散管理している。
この情報はFloodfillノードと呼ばれる特殊なノードにより保持・配信される。
2.5.1.3. トンネル構造
I2Pでは以下のようにトンネルを使用して通信を行う。
トンネル名 | 用途 | 備考 |
---|---|---|
Outbound Tunnel | 発信時に使用 | クライアントからの送信データを中継 |
Inbound Tunnel | 受信時に使用 | 他者からの通信を受け取るトンネル |
各トンネルは定期的に再構築され、一定時間後に破棄・再生成される。これにより匿名性を高めている。
2.5.2. I2Pサービス(Eepsitesなど)
I2Pネットワーク上で動作するサービスには以下のようなものがある。
名称 | 概要 |
---|---|
Eepsite | I2P上に存在するWebサイト(.i2pドメイン) |
I2PTunnel | TCPプロキシのようなもの。外部またはI2P内サービスへの接続を可能にする |
SAM API / BOB API | I2Pとアプリケーションを統合するためのAPI |
I2Pメール | 匿名性を高めたメールシステム |
Irc2P | IRCプロトコルに基づくチャット |
2.6. I2Pの使用方法
公式サイトからI2Pをダウンロードし、Javaがインストールされた環境で起動できる。
ブラウザのプロキシ設定をlocalhostのI2Pポート(通常HTTP:127.0.0.1:4444)に設定することで、.i2pドメインへアクセスできるようになる。
2.6.1. ブラウザ設定(例:Firefox)
Firefoxで使用する場合は以下のように設定する。
- HTTP Proxy: 127.0.0.1
- ポート: 4444
- HTTPS/FTPも同様に設定
- .i2p以外のトラフィックは通常のインターネットへ出ないように制限するのが推奨
2.6.2. I2Pを使用した高度匿名化構成
VPNとI2Pの併用によりISPからのI2P使用隠蔽が可能。
また、Tor→I2PやI2P→Torのように併用することでさらなる匿名性が得られる。