Tor
![]() | |
開発元 | The Tor Project[1] |
---|---|
最新版 | 0.3.5.7 - 2019年1月7日[2][±] |
最新評価版 | 0.4.0.1-alpha - 2019年1月18日[3][±] |
リポジトリ |
gitweb |
プログラミング言語 | C言語、Python |
対応OS | クロスプラットフォーム |
種別 | オニオンルーティング/匿名 |
ライセンス | BSD License |
公式サイト |
www |
Tor(トーア、英語: The Onion Router)とは、TCP/IPにおける接続経路の匿名化を実現するための規格、及びそのリファレンス実装であるソフトウェアの名称である。通常、ユーザはローカルにSOCKSプロキシ (オニオンプロキシ) を立て、そのプロキシ経由で通信を行うことになる。Torという名称は、オリジナルのソフトウェア開発プロジェクトの名称である「The Onion Router」の頭文字を取ったものである。
Torのリファレンス実装は、Microsoft WindowsやmacOS、Linux等の各種Unix系OSで動作する。設定済みのTorとMozilla Firefoxをセットにし、USBメモリに入れての利用を想定したゼロインストールパッケージも用意されている。
Torは主として接続経路を匿名化するものであり、通信内容の秘匿を保証するものではない。Torでは経路の中間に限り暗号化を行っているが、経路の末端では暗号化が行われていない。通信内容の秘匿まで行いたい場合は、TLSなど(HTTPSやSMTP over SSLなど)を用いて、別途暗号化を行う必要がある。しかし、Torの隠し機能として後述の hiddenservice というTorサーキット上でサービスをホストする機能があり、これを用いれば末端の通信も暗号化される
目次
概要[編集]
当初はオニオンルーティングの開発元でもある、米海軍調査研究所(United States Naval Research Laboratory)によって支援されていたが[4]、2004年以降は電子フロンティア財団(Electronic Frontier Foundation)により支援されるプロジェクトとなった。2005年11月以降[5]はEFFによる金銭の支援は終了した。なお、ウェブホスティングは継続されている。
「オニオンルーティング」と呼ばれる多重化接続により、通信を複数のノードを経由させることにより、匿名性を高めている。暗号化が、「あたかもタマネギの皮のように、1ホップごとに積み重ねられること」が名前の由来である。現実装においてはTCPでの通信を行うことができるが、UDPやICMPなどのプロトコルは使用することができない。
通信を秘匿するにあたって、まずTorは各ノード間に回線を構築する。このとき、ユーザは各ノードと共通鍵を共有する。この鍵はユーザと1つ1つのノードのみが共有している。回線構築後は、この回線を使って通信を行う。データは先述の共通鍵を使って暗号化されるが、このとき、データは終端ノードから順番に暗号化される。ユーザはこのデータを構築した回線に渡し、各ノードは共通鍵を用いて、1枚ずつ暗号化の層を剥いでいく。こうすることで、終端ノード以外はデータの内容を読み取ることができなくなる。
Tor のデザイン[編集]
接続元がオニオンプロキシ (OP) を立て、オニオンルータ (OR、ノード) 経由で本来の宛先へ接続する[6]。OPはユーザの複数のTCPストリームを受け取り、それらを多重化、ORがそれらを宛先までリレーする。
それぞれのORは、長期のidキーと、短期のオニオンキーを維持している。前者はルータディスクリプタに署名するのに、後者は回線を構築する際や、別の短期のキーを作るときのリクエストを復号するのに使われる。短期のキーは漏洩したときの影響を小さくするため、一定期間ごとに交換されている。
セル[編集]
セルとは、TLS 接続を流れるデータの単位で、512バイト[7]。ヘッダとペイロードを持ち、ヘッダには回線id (circID) が含まれる。これは、単一の TLS 接続で、複数の回線を多重化できるため、回線を特定するための識別子である。
セルにはコントロールセルとリレーセルの2種類があり、前者は受け取ったノードによって処理されるコマンドを伝達し、後者は接続元から宛先へのデータの受け渡しに使われる。リレーセルは、circID の他に、streamID、チェックサム、リレーコマンド等を持つ。リレーセルのヘッダとペイロードの全ては、暗号化されて送信される。
回線の構築[編集]
以下は、TorクライアントAlice(発信元)から、オニオンルータBob、Carolまでの回線を構築する際の説明である[8]。
- 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 まで届く様子を説明したものである[9]。
- Alice はペイロードやペイロードのダイジェストをリレーセルに入れ、circID 以外の全てを終端ノードから順番に、共通鍵を用いて暗号化して送信する
- Bob は1つ復号し、ダイジェストが一致しない場合、Bob は circID を置き換えて、Carol へセルを送信する
- Carol も同じように1つ復号し、ダイジェストが一致した場合、かつ relay cell の内容を認識可能なら、Dave へ送信する (送信完了)
- Carol に到着したペイロードとそのダイジェストが一致しなかった場合、回線そのものを切断する
逆に Dave が送信し、Alice が受信する場合、各ノードは自分にセルが回ってきたときに、ペイロードを暗号化していく。
ランデブーポイントと秘匿サービス(Hidden Service)[編集]
Torの特徴として、身元を明かさずに各種 TCP のサービス(Webサーバ、メールサーバ、IRCサーバなど)を運用することが可能である。 これは、.onionの識別子を持つ、特殊な疑似アドレスを持たせることにより、特定のIPアドレスと結びつけることなく、Torを実行させているノード同士が接続することができる。また、一般のWebサイト等にTor経由で接続するのとは異なり、出口ノードは存在しないし、中継ノードが通信の内容を見ることは不可能である。
Alice を接続元、Bob を宛先とすると、このサービスを用いることで、Bob は自身のIPアドレスをさらすことなくサービスを提供でき、また、アプリケーションもTorの存在を透過的に扱うことができる。
サーバのBobはまず、複数のORを introduction point として指名し、ルックアップサービスへ広告する[10]。このとき、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 の認証トークンも乗せることができる。秘匿サービスの仮想ドメイン、x.y.onion は、xが認証トークン、yがBobの公開鍵のハッシュになっている[11]。
エントリーガード[編集]
現在、Torの回線は3つのノードを経由しているが、悪意のある攻撃者が両端のノードをコントロールできた場合、匿名性が破られてしまう[12]。そのため、Torは2、3ヶ月の間最初のノードを使い続けることで、攻撃のコストを上げており、このノードはエントリーガードと呼ばれる[13]。
問題点[編集]
通信傍受[編集]
2007年8月30日、スウェーデンのセキュリティー研究者、ダン・エガースタッド(Dan Egerstad)は、「世界中の大使館や人権擁護団体の電子メールを傍受することに成功した」と発表した[14]。
Torノード間の通信は暗号化されているものの、末端(出口)となるTorノードと通常のTCP通信先との間では、その暗号化が解除されるという点を利用したもので、LANアナライザを搭載したTorノードを設置することで、そこからTorネットワークを抜けようとする通信を監視するだけで、簡単に傍受できてしまうというものである。
なお、この問題はTorネットワークに対して送信するデータ自体を、たとえばHTTPSやSMTP over SSLなどを用いて別途暗号化することで、防ぐことができる。
DNS漏洩[編集]
ほとんどのソフトウェアは、UDPを用いてDNSを参照するため、TCP専用であるTorネットワークを経由せず直接参照してしまい、匿名性が不完全になる可能性がある。
DNS規格自体はUDPとTCPの両方をサポート(RFC 2136)しており、多くのDNSサーバー実装も両対応となっているが、DNSを参照する多くのソフトウェアではUDPを用いるのが一般的であるという事が問題の根底にある。なお、TCPを用いたDNS参照をサポートしているソフトウェアであれば、この問題の影響を受けることはない。
以上のことより、古いバージョンのTorでは、HTTP通信を行う場合に、TCPを用いたDNS参照をサポートしているPrivoxyをWebブラウザとTorの間に設置し、併用することが推奨されていた。
バージョン0.2.0.1-alpha以降のTorには、DNS参照をTorネットワーク経由で行うDNSリゾルバが搭載された。これを使用するためには、ユーザはシステム上の任意のDNSリクエストを、指定したポートで動作するTorのDNSリゾルバ経由で処理させるよう、リダイレクトする必要がある (iptables 等を用いて)。こうすることでDNS漏洩問題は解決され、SOCKSに非対応のアプリケーションでも安全にTor経由の通信を行うことができるようになるが、少々設定が複雑で、パケットがリークする可能性があるため、安易に使うべきではない[15]。
代替案として、公式のFAQでは、以下のSOCKSベースの解決策が挙げられている[16]:
- SOCKS 4a (ホスト名を使う) を用いる
- SOCKS ベースのポートフォワーダ (socat 等) を用いて、SOCKS 経由で通信させる
- tor-resolve を用いて、Tor経由でホスト名を解決。その後、アプリケーションに解決されたIPアドレスを渡す
トラフィック分析[編集]
2005年5月8日〜11日に米国カリフォルニア州オークランドで開催された2005 IEEE Symposium on Security and Privacyにおいて、ケンブリッジ大学のSteven J. MurdochとGeorge Danezisは論文「Low-Cost Traffic Analysis of Tor」を提示した。この論文によると、Torの匿名性を大幅に低下させる手法が存在する。当該論文はDanezis自身のページ[17]ないしIEEE Computer Society digital libraryなどで閲覧可能である。
匿名性を低下、又はユーザーを危険に晒す迂回サービスの存在[編集]
本来、自身もTorネットワークに接続することでしか閲覧できない.onionドメインのサイトに対し、迂回サービスを利用することによって通常のブラウザ経由でもそのまま検索、閲覧することが可能となっている。前述の通り、.onionドメインには一般的にアングラに属する情報が多く集まるが、本来は技術/知識を持ち、意識をしてアクセスを行うべきサイトへ誰もが場所を問わず気軽にアクセスできる状況が発生している。逆にこの状況を逆手に取り、悪意のあるJavaScriptを仕込むサイトなどの登場が危惧される。(通常、TorブラウザはNoScriptがデフォルトでインストールされており、JavaScriptがOFF、もしくはOFFにするべき状況のため影響を受ける可能性は低く、知識のない一般人が被害に会う可能性がある)
秘匿サービスの問題点[編集]
2000年代後半より、ブラックビジネスの基盤としても利用され始め、Tor経由でしかアクセス出来ない秘匿された違法サービスが多数運営されていることが確認されている。取り扱うサービスは武器・麻薬・ギャンブル・偽造通貨などである。サーバの存在が秘匿された違法サイトが運営されているウェブの領域は、ダークウェブと呼ばれており、特定の違法サイトの摘発と新たな違法サイトの展開といういたちごっこが続いている。
また、攻撃者がTorを使って攻撃を仕掛けた場合、被害者側のログには出口ノードを運営するボランティアとの通信が記録される。そのため、運営するだけで逮捕されかねないようなリスクを負うことになる。公式もこのことを問題視しており、ボランティアはExit Policyを設定することで、出口ノードになるかどうか、出口ノードとしてどのサービスを許可するか、等を制限することができる[18]。
中国とTorプロジェクトの攻防[編集]
中華人民共和国(中国)は、2009年9月30日の建国60周年記念式典に併せるかたちでインターネット検閲を強化し、Torを始めとする類似技術を用いた金盾(中国の検閲システム)回避を行う者の摘発、Tor公式サイトへのアクセス遮断、Torリレーノードへのアクセス遮断などを強化した[19]。
これに対抗するようにTorプロジェクトでは、Torリレーノードとなってくれるボランティアの増強を呼びかけている。
サイト管理者へのTor規制要請[編集]
日本においては、2012年のパソコン遠隔操作事件の発生を受け、Torの存在がマスコミにより連日報道された。ここ数年、Torを悪用した犯罪行為が発生しており、殺人予告やオンラインバンキング等への不正アクセス、2010年の警視庁国際テロ捜査情報流出事件でも使用が確認されている[20]。
警察庁の有識者会議は、2013年4月18日の報告書において「国内外で犯罪に使われている状況に鑑みると対策が必要」として、末端となるTorノードのIPアドレスからアクセスがあった場合には通信を遮断するよう、国内のウェブサイト管理者に自主的な取り組みを要請する構えを見せている[20][21][22]。
また、たとえISPに規制されても、IPアドレスが公に公開されていないTor Brigdeを利用すればこれらの規制を回避することが可能であり、Torへのアクセスが禁止されている非民主主義的な国においても利用可能である。
なお、国際ハッカー集団「アノニマス」は、Torの検閲への動きを撤廃することを望む動画を、YouTubeにアップロードした[23]。
2014年7月に「Tor」を管理する非営利団体は、Torのネットワーク上で5カ月間にわたり密かにトラフィックに変更を加え、「秘匿サービス」と呼ばれるサイトにアクセスしているTorユーザーの身元を探ろうとしていたコンピュータの存在が確認されたとして、秘匿サイトを利用しているTorユーザーの多くが政府が支援する研究者によって身元を特定された可能性があると発表した[24]。
注・出典[編集]
- ^ “Tor: People” (2008年7月17日). 2011年4月8日閲覧。
- ^ “New Releases: Tor 0.3.5.7, 0.3.4.10, and 0.3.3.11”. Tor Blog. Tor Project (2019年1月7日). 2019年1月25日閲覧。
- ^ “New Release: Tor 0.4.0.1-alpha”. Tor Blog. Tor Project (2019年1月18日). 2019年1月25日閲覧。
- ^ 米海軍が産み、オープンソース陣営が育てる匿名ネット技術『トーア』
- ^ Tor: People
- ^ https://svn.torproject.org/svn/projects/design-paper/tor-design.html#tth_sEc4
- ^ https://svn.torproject.org/svn/projects/design-paper/tor-design.html#tth_sEc4.1
- ^ https://svn.torproject.org/svn/projects/design-paper/tor-design.html#tth_sEc4.2
- ^ https://svn.torproject.org/svn/projects/design-paper/tor-design.html#tth_sEc4.2
- ^ https://svn.torproject.org/svn/projects/design-paper/tor-design.html#tth_sEc5
- ^ https://svn.torproject.org/svn/projects/design-paper/tor-design.html#tth_sEc5.2
- ^ https://gnunet.org/sites/default/files/Wright-2004.pdf
- ^ https://support.torproject.org/en-US/tbb/tbb-2/
- ^ Rogue Nodes Turn Tor Anonymizer Into Eavesdropper's Paradise
- ^ https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy
- ^ https://www.torproject.org/docs/faq.html.en#WarningsAboutSOCKSandDNSInformationLeaks
- ^ Low-cost Traffic Analysis of Tor.(pdf)
- ^ https://svn.torproject.org/svn/projects/design-paper/tor-design.html#tth_sEc6.2
- ^ 【Bloomberg Businessweek特約】【BusinessWeek特約】中国、建国60周年でネット検閲をさらに強化| nikkei BPnet 〈日経BPネット〉
- ^ a b “警察庁有識者会議:サイト管理者が通信遮断を 匿名悪用で” (2013年4月18日). 2013年5月3日閲覧。
- ^ “NPA to urge ISP industry to help site administrators block users of anonymity software” (2013年4月18日). 2013年5月3日閲覧。
- ^ “日本の警察庁、匿名化ツール「Tor」のブロックをサイト管理者に促す” (2013年4月22日). 2013年5月3日閲覧。
- ^ [1]
- ^ 匿名化ツール「Tor」ユーザーの身元が特定された可能性 ソフト更新を呼びかけ IT MECIA 2014年8月4日
関連項目[編集]
- Orbot - AndroidユーザーがTorに接続することを目指すプロジェクト
- Bitmessage
外部リンク[編集]
公式[編集]
Hidden Serviceの例[編集]
Hidden Service(onionドメイン)への接続にはTor本体及びSOCKS4aもしくはSOCKS5に対応したローカルプロキシが必要。
|