匿名通信技術Torの概要

# はじめに
現在、大学での研究活動の一環として、セキュリティプロトコルの安全性検証に取り組んでいます。その中で、匿名通信プロトコルであるTorの匿名性がどのような技術によって保障されているのかに関心を持ちました。これまで、Torについては主にダークウェブとの関連で耳にする機会がありましたが、具体的な仕組みや技術については詳しく理解していませんでした。

そこで今回、Torが提供するサービスや匿名通信を実現する技術の概要について調査しました。本記事では、その結果をわかりやすく紹介します。

## Torが提供するサービス
Torは、インターネット検閲が厳しい国々で活動家が匿名で通信を行えるように設計された技術です。この匿名通信を実現するTorネットワークは、ボランティアによって運営される数千ものリレー（中継サーバ）で構成され、世界中で何万人ものユーザーに利用されています。

Torは主に以下のサービスを提供します：

- 匿名通信
- 位置秘匿サービス
- 検閲の回避

#### ●匿名通信
匿名通信は、その名の通り、第三者が送信者や受信者を特定することが極めて困難な通信方式です。Torでは、通信データがネットワーク内の複数のリレーを経由して目的地のサーバに到達します。リレー間では暗号化が施されているため、ネットワーク上のどのトラフィックを観測しても、送信者と受信者を直接結びつけることは難しくなっています。

#### ●位置秘匿サービス
位置秘匿サービスは、受信者のIPアドレスや物理的な位置情報を隠したまま通信を可能にするサービスです。この機能は「ランデブーポイント」という仕組みを活用して実現されており、受信者（レスポンダ）の匿名性を強力に保証します。
この技術は、ダークウェブの基盤を形成しており、Tor専用の「.onion」ドメインに属するサーバ群へのアクセスを可能にしています。これにより、匿名性を保ったままサービスを提供することができます。

#### ●検閲の回避
Torネットワークへのアクセスは、一部の地域でインターネット検閲の対象となっています。しかし、検閲を回避するための仕組みとして、**ブリッジリレー（Bridge Relay）**が存在します。通常のリレーは公開されているため検閲者に知られる可能性がありますが、ブリッジリレーは非公開であり、Torネットワークへのアクセスが検閲者に特定されるリスクを低減します。

## 匿名通信技術の概要
![スクリーンショット 2024-11-18 193223.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828892/43c73846-2224-1004-8ca1-aa5d678ffbe4.png)

既に述べたように、TorクライアントはTorネットワーク内の複数のリレーを経由して目的地のサーバにデータを送信します。経由するリレーの数は匿名性と通信コストのバランスを考慮し、通常3つとなっています。最初に経由するリレーをGuard Relay（ガードリレー）、2番目に経由するリレーをMiddle Relay（ミドルリレー）、最後に経由するリレーをExit Relay（エグジットリレー）と呼びます。

![スクリーンショット 2024-12-16 201712.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828892/eb11dd20-fb36-dd8f-e5f6-8982ed61abd7.png)

Torクライアントが匿名通信を開始する際、経由するリレーの選択は、ディレクトリキャッシュから取得するネットワークステータス文書とサーバ記述子に基づいて行われ、Exit Relay Guard Relay Middle Relayの順で選択されます([パスの選択](https://spec.torproject.org/path-spec/path-selection-constraints.html))。これらの情報には、各リレーの状態や能力に関する詳細（稼働状態、帯域幅、IPアドレスなど）が含まれます。

詳細については、[Tor公式](https://spec.torproject.org/dir-spec/#v1-protocol)を参照してください。

経路が決まったら、経路上の最初のリレー(Guard Relay)にチャネルを開きます。チャネルは、クライアントとリレーの間、リレーとリレーの間の暗号化された接続(TLSセッション)であり、Torではチャネル構築の一環としてTLSハンドシェイクに加えて、Torリレーである事の証明(identityの証明)をセルと呼ばれるメッセージを用いて行います。

詳しくは[Tor公式](https://spec.torproject.org/tor-spec/negotiating-channels.html)を参照してください。

双方のアイデンティティを確認した後、セルを用いて鍵交換と経路拡張を行います。
鍵交換ではディフィー・ヘルマン（DH）鍵交換が実行され、クライアントと各リレーの間で対称鍵が共有されます。
経路の拡張は段階的に行われ、接続済みのリレーに次のリレーへの接続を指示します。リレーは次のリレーとチャネルを開設し、クライアントから送信されたデータを中継します。以下に鍵交換と経路拡張の図を示します。


![スクリーンショット 2024-11-18 193326.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828892/c7d68ac0-374e-117c-f339-275a6c96bf86.png)

鍵交換とExit Relayまでの経路が構築されたら目的地サーバとの通信を行います。クライアントから送信されるデータは、各リレーの対称鍵で多重に暗号化されて送信されます。リレーがクライアントからのデータを受信したら、自身の対称鍵で復号して次のリレーに送信します。

![スクリーンショット 2024-12-17 114901.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828892/24340444-857e-12fe-0b40-3f7c6fba0dc9.png)

上の図から分るように、多重の暗号化により各リレーは、自身の前後のノードしか認識しておらず、クライアントと目的地サーバをリンクすることは不可能です。また、ネットワーク上のトラフィックを悪意ある第三者が盗聴したとしても、同様にリンクすることが出来ません。
これにより、匿名通信が実現されています。ただしTorでは、OR3(Exit Relay)で全ての暗号化層が剥がれクライアントの送信データは平文になります。これに対応するため、通常はTLSなどを用いてクライアントと目的地サーバのエンドツーエンドの暗号化と併用して用いられます。

目的地サーバからクライアントへの送信を表した図を下に示します。
![スクリーンショット 2024-12-17 121359.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3828892/f64859a3-d974-e25f-c462-dce1d925ea6b.png)

目的地サーバからのデータを受信した各リレーは、自身の対称鍵でデータを暗号化して、自身の一つ前のリレー（OR3だったらOR2）に送信します。クライアントがリレーからデータを受け取った際は、各リレーの対称鍵を使って復号し、サーバからのデータを取得します。

## まとめ
今回は、匿名通信がどのような技術によって成り立っているのかを調査し、その概要を簡単に説明させていただきました。TorはThe onion routing の略である事もあって、多重の暗号化層を一つずつ剥がしながらデータを送信する様子が実装されていました。これにより、匿名での通信を可能となり、世界中で使用される技術となっている事を知りました。位置秘匿サービスや検閲の回避など、まだ学習出来ていない技術がたくさんあるので、今後も学習を進めていこうと思います