Tor（トーア、トール ）は、Transmission Control Protocol（TCP）を用いた通信を匿名化するための規格、およびそのリファレンス実装であるソフトウェアの名称である。名称の由来は、オリジナルのソフトウェア開発プロジェクトの名称である「The Onion Router」の頭文字である。

 略史 

Torは当初、オニオンルーティングの開発元でもある、アメリカ海軍調査研究所によって支援されていたが、2004年以降は電子フロンティア財団（Electronic Frontier Foundation）により支援されるプロジェクトとなった。2005年11月以降はEFFによる金銭の支援は終了した。ウェブホスティングは継続されている。

 中国とTorプロジェクトの攻防 

中華人民共和国（中国）は、2009年9月30日の建国60周年記念式典に併せるかたちでインターネット検閲を強化し、Torを始めとする類似技術を用いたグレート・ファイアウォール（中国の検閲システム）回避を行う者の摘発、Tor公式サイトへのアクセス遮断、Torリレーノードへのアクセス遮断などを強化した。

これに対抗するため、Torプロジェクトでは、Torリレーノードとなってくれるボランティアの増強を呼びかけている。たとえISPに規制（通信を遮断）されても、IPアドレスが公開されていないTor Bridgeを利用すればこれらの規制を回避することが可能であり、Torへのアクセスが禁止されている非民主主義的な国内も利用可能である。

 機能 

Torは接続経路を匿名化する技術であり、通信内容を秘匿化するものではない。Torでは経路の中間に限り暗号化を行っているが、経路の末端では暗号化が行われていない。通信内容の秘匿まで行いたい場合は、TLSなど（HTTPSやSMTP over SSLなど）を用いて、別途暗号化を行う必要がある。しかし、Torの機能として後述のOnion ServiceというTorサーキット上でサービスをホストする機能があり、これを用いれば末端の通信も暗号化される。

 トラフィックの動作 

Torは、Microsoft WindowsやmacOS、Linux等の各種Unix系OSで動作する。「オニオンルーティング」と呼ばれるカプセル化技術により、複数のノードを経由させて通信を行い、通信を匿名化する。暗号化が、「あたかもタマネギの皮のように、1ホップごとに積み重ねられること」が名前の由来である。TCPで通信が可能で、UDPやICMPなどの通信プロトコルは使用することができない。

通信を秘匿するにあたって、まずTorは各ノード間に回線を構築する。このとき、ユーザは各ノードと共通鍵を共有する。この鍵はユーザと1つ1つのノードのみが共有している。回線構築後は、この回線を使って通信を行う。データは先述の共通鍵を使って暗号化されるが、このとき、データは終端ノードから順番に暗号化される。ユーザはこのデータを構築した回線に渡し、各ノードは共通鍵を用いて、1枚ずつ暗号化の層を剥いでいく。こうすることで、終端ノード以外はデータの内容を読み取ることができなくなる。

 Torのデザイン 
接続元がオニオンプロキシ（OP）を立て、オニオンルータ（OR、ノード）経由で本来の宛先へ接続する。OPはユーザの複数のTCPストリームを受け取り、それらを多重化、ORがそれらを宛先までリレーする。

それぞれのORは、長期のidキーと、短期のオニオンキーを維持している。前者はルータディスクリプタに署名するのに、後者は回線を構築する際や、別の短期のキーを作るときのリクエストを復号するのに使われる。短期のキーは漏洩したときの影響を小さくするため、一定期間ごとに交換されている。関連項目のオニオンルーティングも参照。

 セル 
セルとは、TLS 接続を流れるデータの単位で、512バイト。ヘッダとペイロードを持ち、ヘッダに回線id（circID）が含まれる。これは、単一の TLS 接続で、複数の回線を多重化できるため、回線を特定するための識別子である。

セルはコントロールセルとリレーセルの2種類があり、前者は受け取ったノードによって処理されるコマンドを伝達し、後者は接続元から宛先へのデータの受け渡しに使われる。リレーセルは、circID の他に、streamID、チェックサム、リレーコマンド等を持つ。リレーセルのヘッダとペイロードの全ては、暗号化されて送信される。

 回線の構築 
以下は、TorクライアントAlice（発信元）から、オニオンルータBob、Carolまでの回線を構築する際の説明である。

 Aliceは、あらかじめ得ているディレクトリリストの中から、無作為的にBobとCarolを選択する（実際は最初のノードは2、3ヶ月同じ）。
 Alice→Bob: Aliceはcreate cell（セルに回線構築要求コマンドを乗せたもの）を送信し、回線構築の要求を行う
 このとき、Aliceは今までに使われていないcircIDを発行する
 ペイロードは Bobのオニオンキーで暗号化された、DH ハーフハンドシェイクを含んでいる ()
 Bob→Alice: Bobはcreated cell（セルに構築完了を通知するためのコマンドを乗せたもの）の中にと共通鍵のハッシュを積んで送る
 AliceとBobは共通鍵を共有できた
 以降、Alice-Bob間の通信はこの共通鍵で暗号化されて行われる

 Alice→Bob: Alice は relay extend cell（セルにサーキットを延長する要求を乗せたもの）を送信する
 この中に次の OR（Carol）のアドレスが含まれており、Carolのオニオンキーで暗号化されたも含まれる
 Bob→Carol: Bob はハーフハンドシェイクをcreate cellに入れ、Carolに送信する
 このとき、Bobは今までに使われていないcircIDを発行する
 Carol→Bob: created cellに共通鍵のハッシュを積んで送る
 Bob は とを対応付けている
 Bob→Alice: Carolがcreated cellを返した場合、ペイロードをrelay extended cellに入れてAliceに返す
 AliceとCarolは共通鍵を共有できた

以上の手続きは一方向エンティティ認証、すなわち、Alice は Bob を知っているが、Alice は公開鍵を使っていないので、BobはAliceが誰なのか知らないということを達成している。一方向鍵認証も達成しており、AliceとBobは鍵について合意しており、AliceはBobのみがその鍵を知っていることを知っていることを意味している。前方秘匿性とキーの新鮮さの保持にも成功していて、これにより、鍵共有プロトコルでセッションキーを生成した際に、のちに秘密鍵の安全性が破れたとしてもセッションキーの安全性が保たれることが保証される。

Alice-Bob間、Bob-Carol間の共通鍵はそれぞれAliceとBob、BobとCarolしか知らないので、データを盗聴されることなく、中継により匿名性を得ることができる。

セッション鍵交換のためにDiffie-Hellman鍵交換方式が用いられ、通信の暗号化としてはAESが使用される。オニオンサーキット構築を含めたTorノード間の全通信は、外部からの盗聴や改竄を防ぐために、TLSによる通信の上で行われる。

 データの送受信 
先述の、リレーセルや回線を用いて行われる。以下は、Alice のデータが Bob、Carol を経由して、Dave まで届く様子を説明したものである。

 Aliceはペイロードやペイロードのダイジェストをリレーセルに入れ、circID以外の全てを終端ノードから順番に、共通鍵を用いて暗号化して送信する
 Bobは1つ復号し、ダイジェストが一致しない場合、BobはcircIDを置き換えて、Carolへセルを送信する
 Carolも同じように1つ復号し、ダイジェストが一致した場合、かつrelay cellの内容を認識可能なら、Daveへ送信する (送信完了)
 Carolに到着したペイロードとそのダイジェストが一致しなかった場合、回線そのものを切断する

逆にDaveが送信し、Aliceが受信する場合、各ノードは自分にセルが回ってきたときに、ペイロードを暗号化していく。

 ランデブーポイントとOnion Service 

Torの特徴として、Tor経由でしかアクセス出来ない秘匿されたOnion Service（旧：Hidden Service（秘匿サービス））が存在する。これにより、サーバのIPアドレスを明かさずに各種 TCP のサービス（Webサーバ、メールサーバ、IRCサーバなど）を運用することが可能である。これは、.onionの識別子を持つ、特殊な疑似アドレスを持たせることにより、特定のIPアドレスと結びつけることなく、Torを実行させているノード同士が接続することができる。一般のWebサイト等にTor経由で接続するのとは異なり、Onion Serviceは深層Webの一角を成すダークネットに含まれ出口ノードは存在しないし、中継ノードが通信の内容を見ることは不可能である。

Aliceを接続元、Bobを宛先とすると、このサービスを用いることで、Bobは自身のIPアドレスをさらすことなくサービスを提供でき、アプリケーションもTorの存在を透過的に扱うことができる。

サーバのBobはまず、複数のORをintroduction pointとして指名し、ルックアップサービスへ広告する。このとき、Bobは長期の公開鍵暗号のペアを持っており、これでサービスを証明する。先ほどの広告も、Bobの公開鍵で署名されている。Bobはintroduction pointsまでの回線を開き、リクエストを待つように伝える。

AliceはBobのサービスを知ると（ネットや直接Bobに聞いて）、ルックアップサービスから情報を得る。AliceはあるORをrendezvous point（RP）として指名し、回線を構築する。この際、Bobを識別するためにランダムなrendezvous cookieも渡す。

次に、AliceはBobのintroduction pointsの1つに匿名でストリームを開く。このとき、AliceはBobの公開鍵で暗号化したRPの情報とrendezvous cookieを渡し、DH鍵共有を始める。introduction pointはBobへそのメッセージを送る。

Bobは了承するとAliceのRPへの回線を構築し、rendezvous cookie、DH鍵共有の返答、セッション鍵のハッシュを送る。AliceのRPはAliceの回線をBobの回線に接続する。

以上の手続きにおいて、RPはAliceもBobも知らないし、データの内容も知ることはない。両端は双方のOPになっているので、AliceとBob以外の中継ノードがデータの内容を復号することもできない。

Bobのintroduction pointは複数存在しているので、DoS対策にもなっている。さらに、Aliceがintroduction pointへメッセージを送信するとき、end-to-endの認証トークンも乗せることができる。Onion Serviceの仮想ドメイン、x.y.onion は、xが認証トークン、yがBobの公開鍵のハッシュになっている。

 エントリーガード 
現在、Torの回線は3つのノードを経由しているが、悪意のある攻撃者が両端のノードをコントロールできた場合、匿名性が破られてしまう。そのため、Torは2、3ヶ月の間最初のノードを使い続けることで、攻撃のコストを上げており、このノードはエントリーガードと呼ばれる。

 問題点 

 DNS漏洩 
ほとんどのソフトウェアは、UDPを用いてDNSを参照するため、TCP専用であるTorネットワークを経由せず直接参照してしまい、匿名性が不完全になる可能性がある。

DNS規格自体はUDPとTCPの両方をサポート（）しており、多くのDNSサーバー実装も両対応となっているが、DNSを参照する多くのソフトウェアではUDPを用いるのが一般的であるという事が問題の根底にある。TCPを用いたDNS参照をサポートしているソフトウェアであれば、この問題の影響を受けることはない。

以上のことより、古いバージョンのTorでは、HTTP通信を行う場合に、TCPを用いたDNS参照をサポートしているPrivoxy（localhost、ポート番号8118）をWebブラウザとTorの間に設置し、併用することが推奨されていた。

バージョン0.2.0.1-alpha以降のTorは、DNS参照をTorネットワーク経由で行うDNSリゾルバが搭載された。これを使用するには、ユーザはシステム（localhost）上の任意のDNSリクエストを、指定したポート（TCP：9053）で動作するTorのDNSリゾルバ経由で処理させるよう、リダイレクトする必要がある（iptables等を用いて）。こうすることでDNS漏洩問題は解決され、SOCKSに非対応のアプリケーションでも安全にTor経由の通信を行うことができるようになるが、少々設定が複雑で、パケットがリークする可能性があるため、安易に使うべきではない。

代替案として、公式のFAQでは、以下のSOCKSベースの解決策が挙げられている:

 SOCKS 4a（ホスト名を使う）を用いる。
 SOCKS ベースのポートフォワーダ（socat 等）を用いて、SOCKS 経由で通信させる。
 tor-resolveを用いて、Tor経由でホスト名を解決。その後、アプリケーションに解決されたIPアドレスを渡す。

 通信傍受 
2007年8月30日、スウェーデンのセキュリティー研究者、ダン・エガースタッド（Dan Egerstad）は、「世界中の大使館や人権擁護団体の電子メールを傍受することに成功した」と発表した。

Torノード間の通信は暗号化されているものの、末端（出口）となるTorノードと通常のTCP通信先との間では、その暗号化が解除されるという点を利用したもので、LANアナライザを搭載したTorノードを設置することで、そこからTorネットワークを抜けようとする通信を監視するだけで、簡単に傍受できてしまうというものである。

この問題はTorネットワークに対して送信するデータ自体を、たとえばHTTPSやSMTP over SSLなどを用いて別途暗号化することで、防ぐことができる。

 トラフィック分析 
2005年5月8日から11日にかけて米国カリフォルニア州オークランドで開催された2005 IEEE Symposium on Security and Privacyで、ケンブリッジ大学のSteven J. MurdochとGeorge Danezisは論文「Low-Cost Traffic Analysis of Tor」を提示した。この論文によると、Torの匿名性を大幅に低下させる手法が存在する。当該論文はDanezis自身のページないし IEEE Computer Society digital library などで閲覧可能である。

 中継トラフィック解析攻撃 

2014年7月に「Tor」を管理する非営利団体は、Torのネットワーク上で5か月間にわたり密かにトラフィックに変更を加え、Onion Service（旧：Hidden Service）にアクセスしているTorユーザーの身元を探ろうとしていたコンピュータの存在が確認されたとして、Onion Serviceを利用しているTorユーザーの多くが政府が支援する研究者によって身元を特定された可能性があると発表した。

 Onion Serviceの問題点 
サーバの所在地が秘匿されたダークウェブと呼ばれるウェブの領域も、2000年代後半より、ブラックビジネスの基盤としても利用され始め、違法サービスが多数運営されていることが確認されている。その一例に、ダークネット・マーケットで取り扱うサービスはギャンブル・人身・武器・麻薬・偽造通貨などが挙げられ、特定の違法サイトの摘発と新たな違法サイトの展開といういたちごっこが続いている。

また、攻撃者がTorを使って攻撃を仕掛けた場合、被害者側のログに出口ノードを運営するボランティアとの通信が記録される。そのため、運営するだけで逮捕されかねないようなリスクを負うことになる。公式もこのことを問題視しており、ボランティアはExit Policyを設定することで、出口ノードになるかどうか、出口ノードとしてどのサービスを許可するか、等を制限することができる。

 Torの利用 
 
政府機関や軍隊が安全な通信を行うため、内部告発、通信を遮断する独裁国（権威主義国）からの接続あるいは通信の秘密やプライバシーを重視する個人や活動家などがネット検閲回避のため使用する。使用例については、ダークネット#使用の項に詳しい。日本国内において、下記の入手や使用は完全に合法であるが、公式サイトから入手する必要がある。なぜなら個人サイトやアップローダーなど第三者によって公開されているものは、改竄やマルウェアなどの混入の可能性があるからである。

 Tor Browser 

Tor Browserは、盗聴防止やプライバシー保護を目的に開発されたウェブブラウザ。Mozilla Firefox ESR（延長サポート版）に、JavaScriptを制御できXSSにも対応可能なNoScriptや、Onion Service以外のHTTP通信で出口ノードからの末端部を暗号（HTTPS）化するHTTPS Everywhereなど、いくつかの拡張機能と設定済みのTorを組み合わせたものである。
さらに、TailsというOSに搭載されているものには、インターネット広告の遮断などに用いられるuBlock Originも標準で組み込まれている。
そして、USBメモリに入れての利用を想定したゼロインストールパッケージも用意されている。従来から公式サイトや公式アーカイブにMicrosoft Windows、macOS、Linuxの各環境で動作するものがあり、2019年5月に公開されたバージョン8.5安定版以降、公式アーカイブのほかGoogle PlayからAndroid端末向けも入手可能となった。
また、バージョン4.5まではStartpage.com、現在はDuckDuckGoが標準検索エンジンに採用されている。Tor Browserは常時プライベートブラウジングモードで動作し、終了時にはパソコンやAndroid端末内に閲覧履歴やキャッシュおよびcookie等も残さず、このためフィルターバブルの影響を受けない。いまのところ、ウェブトラッキングやキャンバス・フィンガープリンティングなどの対策にも有効である。

 TorBirdy 
は、Microsoft Windows、macOS、Linuxの各環境で動作するインターネット統合ソフト・SeaMonkeyおよび電子メールクライアント・Mozilla Thunderbird用の拡張機能で、公式サイトや公式アーカイブから入手可能。電子メールの盗聴や傍受の防止を目的に開発されており、メールの送信経路の秘匿化を行う。Torネットワークに接続した状態で動作するため、公式には、特にWindows環境の場合Torブラウザを起動した状態での使用を推奨している。Tailsでは、メールそのものを公開鍵で暗号化（エンドツーエンド暗号化）するGnuPGやEnigmailとともに組み込まれている。

 Tails 

Tailsは、Debianから派生したLinux系OSで、プライバシー保護を重視してTorブラウザやTorBirdyなども標準搭載され、通信はすべてTorネットワーク経由となる。Live DVDやLive USBから起動し、さらにPCに履歴を一切残さない。匿名性・秘匿性が高く、人権活動家や弁護士、ジャーナリストおよび各国の工作員（諜報活動）なども使用する。公式サイトやTails公式アーカイブでISOイメージが配布されている。

 その他のプロジェクト 
以下、公式以外のものについて述べる。

 Orbot 

Orbotは、Androidユーザー向け匿名ネットワーククライアント。Android端末でTorに接続することを目指すThe Guardian Projectとの共同開発プロジェクトである。これも公式アーカイブやGoogle Playから入手できる。
Tor経由でネット閲覧する場合、かつてはWebブラウザOrfoxを組み合わせて用いたが、現在はその後継のAndroid版Torブラウザに移行。
これ以外については、The Guardian Project (ソフトウェア)#運営するプロジェクトも参照。

 Onion Browser 

Onion Browserは、iPhoneやiPod touchなどのiOS端末向けWebブラウザで、2012年4月に公開されiOS 5.1に対応する初版よりApp Storeから入手可能。Mike Tigas氏が開発するソースコードもGitHubにあり、その内容を確認することができる。特に独裁国での使用時に真価を発揮するBridge接続に対応し、初期設定の検索エンジンもDuckDuckGoで、WebKitによる描画を除けばJavaScriptの制限やHTTPS Everywhereを含むその他の機能も概ねTor Browserに準ずる。
起動時には、動物のイラストとともにシュールなメッセージが表示される。また、Onion Browserの稼働中にiOS端末が待受画面になった場合、一旦閉じてブラウザを再起動する必要がある。

なお、iOS端末向けの純正Torブラウザは存在しないため、Tor公式サイトでこれの使用を推奨しており、事実上の公認ブラウザとなっている。

 Brave 

BraveはChromiumから派生したウェブブラウザ。Microsoft Windows、macOS、Linuxの各環境向けのDesktop版では、Tor経由で接続できるプライベートブラウジングモードも利用可能。検索エンジンには、Onion Service上でも利用可能な独自のBrave Searchを採用。セキュリティ保護機能のBrave Shieldsには、導入時から末端ノードを暗号（HTTPS）化するHTTPSeverywhereやフィンガープリント対策のPrivacy Badgerも内蔵するほか、標準搭載の広告遮断機能にAdblock Plusのフィルター構文で書かれたEasylistとEasy Privacyの組み合わせを用いる。

 サイト管理者へのTor規制要請 

日本で2012年にパソコン遠隔操作事件が発生してTorの存在がマスコミにより連日報道された。2013年頃にはTorを悪用した犯罪行為が発生しており、殺人予告やオンラインバンキング等への不正アクセス、2010年の警視庁国際テロ捜査情報流出事件でも使用が確認されている。

警察庁の有識者会議は、2013年4月18日の報告書で「国内外で犯罪に使われている状況に鑑みると対策が必要」として、末端となるTorノードのIPアドレスからアクセスがあった場合は通信を遮断するよう、国内のウェブサイト管理者に自主的な取り組みを要請する構えを見せている。また、WikipediaもTorノードからの投稿を原則受付けない。

Torの悪用は、正当な利用者の不利益にも繋がっており、国際ハッカー集団「アノニマス」は、Torの検閲への動きを撤廃することを望む動画を、YouTubeにアップロードした。

 注・出典