Tor
Tor(トーア、The Onion Router)は、TCP/IPにおける接続経路の匿名化を実現するための規格、およびそのリファレンス実装であるソフトウェアの名称である。名称の由来は、オリジナルのソフトウェア開発プロジェクトの名称である「The Onion Router」の頭文字である。
Torは当初、オニオンルーティングの開発元でもある、アメリカ海軍調査研究所によって支援されていたが、2004年以降は電子フロンティア財団 (Electronic Frontier Foundation) により支援されるプロジェクトとなった。2005年11月以降はEFFによる金銭の支援は終了した。ウェブホスティングは継続されている。
中華人民共和国(中国)は、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で動作する。SOCKSの利用と「オニオンルーティング」と呼ばれるカプセル化技術により、複数のノードを経由させて通信を行い、匿名性を高めている。暗号化が、「あたかもタマネギの皮のように、1ホップごとに積み重ねられること」が名前の由来である。現実装ではTCP(ポート番号9050または9150)で通信が可能だが、UDPやICMPなどの通信プロトコルは使用することができない。
通信を秘匿するにあたって、まずTorは各ノード間に回線を構築する。このとき、ユーザは各ノードと共通鍵を共有する。この鍵はユーザと1つ1つのノードのみが共有している。回線構築後は、この回線を使って通信を行う。データは先述の共通鍵を使って暗号化されるが、このとき、データは終端ノードから順番に暗号化される。ユーザはこのデータを構築した回線に渡し、各ノードは共通鍵を用いて、1枚ずつ暗号化の層を剥いでいく。こうすることで、終端ノード以外はデータの内容を読み取ることができなくなる。
接続元がオニオンプロキシ (OP) を立て、オニオンルータ(OR、ノード)経由で本来の宛先へ接続する。OPはユーザの複数のTCPストリームを受け取り、それらを多重化、ORがそれらを宛先までリレーする。
それぞれのORは、長期のidキーと、短期のオニオンキーを維持している。前者はルータディスクリプタに署名するのに、後者は回線を構築する際や、別の短期のキーを作るときのリクエストを復号するのに使われる。短期のキーは漏洩したときの影響を小さくするため、一定期間ごとに交換されている。関連項目のオニオンルーティングも参照。
セルとは、TLS 接続を流れるデータの単位で、512バイト。ヘッダとペイロードを持ち、ヘッダに回線id (circID) が含まれる。これは、単一の TLS 接続で、複数の回線を多重化できるため、回線を特定するための識別子である。
セルはコントロールセルとリレーセルの2種類があり、前者は受け取ったノードによって処理されるコマンドを伝達し、後者は接続元から宛先へのデータの受け渡しに使われる。リレーセルは、circID の他に、streamID、チェックサム、リレーコマンド等を持つ。リレーセルのヘッダとペイロードの全ては、暗号化されて送信される。
以下は、TorクライアントAlice(発信元)から、オニオンルータBob、Carolまでの回線を構築する際の説明である。
Aliceは、あらかじめ得ているディレクトリリストの中から、無作為的にBobとCarolを選択する()。
Alice→Bob: Alice は create cell(セルに回線構築要求コマンドを乗せたもの)を送信し、回線構築の要求を行う
このとき、Alice は今までに使われていない circID C_{AB} を発行する
ペイロードは Bob のオニオンキーで暗号化された、DH ハーフハンドシェイクを含んでいる (g^x)
Bob→Alice: Bob は created cell(セルに構築完了を通知するためのコマンドを乗せたもの)の中に g^y と共通鍵 K = g^{xy} のハッシュを積んで送る
AliceとBobは共通鍵 K_1 = g^{x1y1} を共有できた
以降、Alice-Bob間の通信はこの共通鍵で暗号化されて行われる
Alice→Bob: Alice は relay extend cell(セルにサーキットを延長する要求を乗せたもの)を送信する
この中に次の OR (Carol) のアドレスが含まれており、Carol のオニオンキーで暗号化された g^{x2} も含まれる
Bob→Carol: Bob はハーフハンドシェイクを create cell に入れ、Carolに送信する
このとき、Bob は今までに使われていない circID C_{BC} を発行する
Carol→Bob: created cell に共通鍵のハッシュを積んで送る
Bob は C_{AB} と C_{BC} を対応付けている
Bob→Alice: Carol が created cell を返した場合、ペイロードを relay extended cell に入れて Alice に返す
Alice と Carol は共通鍵 K_2 = g^{x2y2} を共有できた
以上の手続きは一方向エンティティ認証、すなわち、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 が受信する場合、各ノードは自分にセルが回ってきたときに、ペイロードを暗号化していく。
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ヶ月の間最初のノードを使い続けることで、攻撃のコストを上げており、このノードはエントリーガードと呼ばれる。
ほとんどのソフトウェアは、UDPを用いてDNSを参照するため、TCP専用であるTorネットワークを経由せず直接参照してしまい、匿名性が不完全になる可能性がある。
DNS規格自体はUDPとTCPの両方をサポート (RFC 2136) しており、多くのDNSサーバー実装も両対応となっているが、DNSを参照する多くのソフトウェアではUDPを用いるのが一般的であるという事が問題の根底にある。TCPを用いたDNS参照をサポートしているソフトウェアであれば、この問題の影響を受けることはない。
以上のことより、古いバージョンのTorでは、HTTP通信を行う場合に、TCPを用いたDNS参照をサポートしているPrivoxy(ポート番号8118)をWebブラウザとTorの間に設置し、併用することが推奨されていた。
バージョン0.2.0.1-alpha以降のTorは、DNS参照をTorネットワーク経由で行うDNSリゾルバが搭載された。これを使用するには、ユーザはシステム上の任意のDNSリクエストを、指定したポートで動作する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などを用いて別途暗号化することで、防ぐことができる。Torブラウザには、標準でHTTPS Everywhereが添付される。
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年4月、OpenSSLに発覚した脆弱性。公開鍵暗号の秘密鍵などが漏洩する危険があった。
2014年7月に「Tor」を管理する非営利団体は、Torのネットワーク上で5か月間にわたり密かにトラフィックに変更を加え、Onion Service (旧Hidden Service)にアクセスしているTorユーザーの身元を探ろうとしていたコンピュータの存在が確認されたとして、Onion Serviceを利用しているTorユーザーの多くが政府が支援する研究者によって身元を特定された可能性があると発表した。
本来、Onion Serviceは自身もTorネットワークに接続することでしか閲覧できず、技術/知識を持ち意識をしてアクセスを行うべきサイト群である。これらの中には、ニセサイトも存在するため、接続前に目的サイトの正規URLか確認する必要がある。詳細は、Onion Serviceの検索エンジンAhmiaも参照。
また、悪意ある者や犯罪者およびテロリストなどが関わるサイトも存在するため、常に情報機関や治安当局の工作員も監視しており、違法サイトに興味本位やスリルを求めて安易に接続するのは非常に高い危険性をともなう。
前述の通り、Onion Serviceは一般的にアングラに属する情報が多く集まるが、これらのサイトに対し、迂回サービスを利用することによって誰もが場所を問わず通常のブラウザ経由でそのまま気軽に検索、閲覧することが可能な状況が発生している。
この状況を逆手に取り、悪意のあるJavaScriptを仕込むサイトなどの登場が危惧される。また、目立たない画像(ウェブビーコン)を仕込まれウェブトラッキングされる場合もある。
通常、Mozilla Firefoxから派生したTorブラウザはXSSなどに対応するNoScriptが標準でインストールされており、JavaScriptがOFF、もしくはOFFにするべき状況のため影響を受ける可能性は低く、逆に知識のない一般人が通常のブラウザで安易に接続し被害に遭う可能性がある。Google Chrome系ブラウザで接続する場合、シークレットモードで起動しJavaScriptを制御できるScriptSafeのほかトラッキングやキャンバス・フィンガープリンティング対策の拡張機能も必要である。
2000年代後半より、ブラックビジネスの基盤としても利用され始め、Tor経由でしかアクセス出来ない秘匿された違法サービスが多数運営されていることが確認されている。ダークネット・マーケットで取り扱うサービスはギャンブル・人身・武器・麻薬・偽造通貨などである。サーバの存在が秘匿された違法サイトが運営されているウェブの領域は、ダークウェブと呼ばれており、特定の違法サイトの摘発と新たな違法サイトの展開といういたちごっこが続いている。
攻撃者がTorを使って攻撃を仕掛けた場合、被害者側のログに出口ノードを運営するボランティアとの通信が記録される。そのため、運営するだけで逮捕されかねないようなリスクを負うことになる。公式もこのことを問題視しており、ボランティアはExit Policyを設定することで、出口ノードになるかどうか、出口ノードとしてどのサービスを許可するか、等を制限することができる。
政府機関や軍隊が安全な通信を行うため、内部告発、通信を遮断する独裁国(権威主義国)からの接続あるいは通信の秘密やプライバシーを重視する個人や活動家などがネット検閲回避のため使用する。使用例については、ダークネット#使用の項に詳しい。下記の入手や使用は完全に合法であるが、公式サイトから入手する必要がある。ただし、テロリストやスパイなど悪意を持つ者がいることから国際的監視網の形成やPRISMの導入が行われ、情報機関や治安当局に把握される可能性があり、公式サイトの閲覧やブラウザ等の入手・使用は自己責任かつ工夫の上行うこと。また、個人サイトやアップローダーなど第三者によって公開されているものは、改竄やマルウェアなどの混入の可能性がある。
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月に公開されたver 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は、Debianから派生したLinux系OSで、プライバシー保護を重視してTorブラウザやTorBirdyなども標準搭載され、通信はすべてTorネットワーク経由となる。Live DVDやLive USBから起動し、さらにPCに履歴を一切残さない。匿名性・秘匿性が高く、人権活動家や弁護士、ジャーナリストおよび各国の工作員(諜報活動)なども使用する。 公式サイトやTails公式アーカイブでISOイメージが無償配布されており手軽に入手可能である。
以下、公式以外のものについて述べる。
Orbotは、Androidユーザー向け匿名ネットワーククライアント。Android端末でTorに接続することを目指すThe Guardian Projectとの共同開発プロジェクトである。これも公式アーカイブやGoogle Playから入手できる。
Tor経由でネット閲覧する場合、かつてはWebブラウザOrfoxを組み合わせて用いたが、現在はその後継のAndroid版Torブラウザに移行。
これ以外については、The Guardian Project (ソフトウェア)#運営するプロジェクトも参照。
Onion Browserは、Mike Tigas氏がiPhoneやiPod touchなどのiOS端末向けに開発するWebブラウザで、2012年4月に公開されiOS 5.1に対応する初版よりApp Storeから入手可能。ソースコードもGitHubにあり、その内容を確認することができる。特に独裁国での使用時に真価を発揮するBridge接続に対応し、初期設定の検索エンジンもDuckDuckGoで、JavaScriptの制限やHTTPS Everywhereを含むその他の機能も概ねTor Browserに準ずる。
起動時には、動物のイラストとともにシュールなメッセージが表示される。また、Onion Browserの稼働中にiOS端末が待受画面になった場合、一旦閉じてブラウザを再起動する必要がある。
なお、iOS端末向けの純正Torブラウザは存在しないため、Tor公式サイトでこれの使用を推奨しており、事実上の公認ブラウザとなっている。
BraveはChromiumから派生したウェブブラウザ。Microsoft Windows、macOS、Linuxの各環境向けのDesktop版では、Tor経由で接続できるプライベートブラウジングモードが利用可能。検索エンジンには、Onion Service上でも利用可能な独自のBrave Searchを採用。セキュリティ保護機能のBrave Shieldsには、導入時から末端ノードを暗号(HTTPS)化するHTTPSeverywhereやフィンガープリント対策のPrivacy Badgerも内蔵するほか、標準搭載の広告遮断機能にAdblock Plusのフィルター構文で書かれたEasylistとEasy Privacyの組み合わせを用いる。
BitTorrentクライアントのVuzeや、メッセージ関連のBitmessageなど
セキュアOSでは、Linux from Scratch、Qubes OS、Whonix、Parrot OSなどが挙げられる。
日本で2012年にパソコン遠隔操作事件が発生してTorの存在がマスコミにより連日報道された。近年はTorを悪用した犯罪行為が発生しており、殺人予告やオンラインバンキング等への不正アクセス、2010年の警視庁国際テロ捜査情報流出事件でも使用が確認されている。
警察庁の有識者会議は、2013年4月18日の報告書で「国内外で犯罪に使われている状況に鑑みると対策が必要」として、末端となるTorノードのIPアドレスからアクセスがあった場合は通信を遮断するよう、国内のウェブサイト管理者に自主的な取り組みを要請する構えを見せている。また、WikipediaもTorノードからの投稿を原則受付けない。
Torの悪用は、正当な利用者の不利益にも繋がっており、国際ハッカー集団「アノニマス」は、Torの検閲への動きを撤廃することを望む動画を、YouTubeにアップロードした。