Tor(The Onion Router、トーア)は、世界中にあるサーバーをいくつも経由して通信を行うことにより、発信者の身元の特定を防ぐことができる匿名化ソフトウェアであるということは、もはや周知の事実となっています。
Torを利用してのサイバー犯罪が摘発される事例は世界中で相次いでいるものの、Tor自体は依然としてその強力な匿名性を維持し続けており、その技術には世界中の諜報機関ですら手をこまねいている現状があります。
そんなTorですが、その仕組み上、悪意あるサーバーとの通信によってTorを利用したインターネット上での行動が明らかになってしまう危険性も孕んでいます。
この記事では、なぜそのようなことが起きてしまうのかをTorの仕組みとともに説明しながら、それをできる限り回避する方法について紹介していきます。

まずTorの仕組みについてですが、Torのネットワークは世界中のボランティアがTorのためにサーバーを提供することで成り立っています。
このボランティアには誰でも参加することができます。僭越ながら僕もこのプロジェクトに参加し、VPSですがある程度回線が優秀なサーバーを提供しています。
それらのサーバーをいくつか経由して、サーバーを経由するたびに通信内容を暗号化して送信するのがTorの仕組みで、その一つ一つのサーバーはノードと呼ばれます。
しかし、その仕組み上最後のノード(以下、出口ノード)は最終的に接続するサーバー(目的のサイトのサーバーなど)には通信を暗号化せず送信します。これはやむを得ない処理で、暗号化してしまうと最終的に接続するサーバーは訳のわからないデータを受け取ってしまいます。
ただし、HTTPSを利用した通信などによってこの問題は回避できます。が、最近はNSA(米国家安全保障局)も対象は限られるもののHTTPSを利用した通信も解読できるようになったそうです。あとSSLの脆弱性もしばしば出てきていますがTorが問題ではないことまで考えると面倒なのでこれらについては忘れましょう。
なお、onionドメインを利用した通信だと盗聴は不可能です。これについては気が向いたらまた別の記事で書きたいと思います。
出口ノードが通信を暗号化しないということは、そのノードの運営者は最後のノードにそれを選んだ利用者の通信を盗み見ることができてしまうということです。
実際にTorの出口ノード運営者が通信を盗聴してTor利用者の行動を明らかにした事例があります。

匿名化ツール『Tor』の落とし穴(1) – 大使館等の通信傍受に成功
http://wired.jp/2007/09/13/匿名化ツール『tor』の落とし穴――大使館等の通/

Stripping Tor Anonymity: Database Dumps, Illegal Services, Malicious Actors, Oh My!
https://www.recordedfuture.com/stripping-tor-anonymity/

ただ、実際にTorを利用しているときは経由するノードもランダムに選ばれるので、これらのように個人を特定できる内容のやりとりが手に入ることはあっても特定ユーザーの追跡には役立ちません。
しかし、依然としてこれらの行為がTorの利用者にとって脅威であるという事実は変わらず、またTorの出口ノードの盗聴は現在でも世界中の諜報機関や研究者によって当たり前のように行われています。
どのノードが諜報機関や研究者のものなのかは、正直なところわかりません。ですからこの脅威に対する方法として一番よいものは、疑わしい国にあるノードと通信しないことでしょう。
Torの設定をそのように変更するには、Torの設定ファイルであるtorrcを編集する必要があります。今回はこの設定ファイルに、Torネットワークに接続するうえでどのノードと接続するのか、もしくはしないのかなどの指定をします。

設定ファイルの場所
Torブラウザの場合:tor-browser_ja-JP/Browser/TorBrowser/Data/Tor/torrc
Tor本体をインストールした場合:/etc/tor/torrc

TorブラウザやTorを終了したら、torrcファイルをテキストエディタ(メモ帳ではダメ)で開き、 /etc/tor/torrc の最下行に以下の内容を追記します。

ExcludeNodes SlowServer,{jp},{gb},{us},{ca},{au},{nz}
StrictNodes 1

これらの設定を上から順に説明すると、まず「ExcludeNodes」は入口・中継・出口のすべてにおいて指定したノードと接続を行いません。
「ExcludeExitNodes」は出口のみ指定したノードと接続を行いません。
「StrictNodes」は 1 にするとこの設定を厳密に守ります。 0 にするとたまにこの約束を破ったりします(Hidden Service関係)。
この ExcludeNodes で指定しているのは SlowServer (速度の遅いノード)とイギリス・アメリカ・カナダ・オーストラリア・ニュージーランド(いわゆるファイブアイズ)と日本です。日本のISPは業者にもよりますがログの保存期間は3ヶ月から1年だそうなので除外します。
ExcludeExitNodes で指定している国は、ある方曰く注意したほうがいい国々と、個人的に怪しく感じた国を追加しました。ほとんど偏見で追加したのであまり鵜呑みにしないほうがいいです。これらの国々を ExcludeNodes に追加してしまうと接続するノードが固定化されてしまいそうなので、出口だけの除外にとどめています。
以下の資料も参考にしてカスタマイズするとよいでしょう。

https://onionoo.torproject.org/summary?flag=badexit
Badノードです。個人的にkasperskytorは全部除外した方が…

フォーマットは以下のようになります。区切る場合はコンマ(,)で区切り、一行で書くようにしてください。

国で指定する場合は国コード {} で囲う(例:{jp},{cn})
フィンガープリント(ノードのIDのようなもの)で指定する場合は先頭に $ をつける(例:$5040F714B2720A479F235C3BBE3FA8BB36DACE0D)
ノードの名前で指定する場合はそのまま(例:kasperskytor01)

編集できたら、保存してTorを再起動します。
LinuxであればOnion Circuitsをインストールすることでどのノードと通信しているか確認できます。
お疲れ様でした。


投稿をシェア

記事の内容が面白いと思ったら、SNSでシェアしていただけると記事を投稿するモチベーションにつながります。

ディスカッションに参加

35件のコメント

  1. ありがとございます
    分かりやすくて助かりました

  2. TorBrowserのアップデートの際、当然Tor公式のサーバーと通信を行うと思うのですが、その通信はTor経由になっているのでしょうか?
    また、ブリッジ接続をする設定にした場合、ブリッジの情報を自動で取得していると思うのですが、その取得の際の通信もどうなんでしょう?

    1. ごめんなさい。調べてみましたが、それらしい情報は見つかりませんでした。アップデートについてはTor経由だと思いますが、ブリッジの自動設定についてはわかりません。

  3. NumEntryGuards は設定されていないのですか?

    別サイトでNumEntryGuardsの解説を読んだところ、ここの数値で中継ノードの数を指定すると説明されていました。

    しかしTorの公式英語サイトを読むと、入り口ノードとして Num個の信頼できる(長期運用されている)入り口ノードだけを使う設定であるような気がします。
    また、デフォルト値の0のままの場合、入り口ノードは3台に限定されるという説明のように思います。

    入り口ノードが3つだけって少なくないでしょうか?
    また、中継ノードを増やす方法はあるのでしょうか?

    1. NumEntryGuards は私も中継ノードの数を増やすオプションだと勘違いしていましたが、入口ノードを何個選ぶかというもののようですね。この辺についてはどういう判断でこの設計にしたのか私もよくわかりません、ごめんなさい。
      中継ノードの数については、速度の問題も考慮すると3つが適当なのかもしれません。

  4. badノードのURL先に飛んでみたのですが
    {“version”:”4.2″,
    “build_revision”:”bce585f”,
    “relays_published”:”2017-10-15 06:00:00″,
    “relays”:[
    ],
    “bridges_published”:”2017-10-15 05:41:35″,
    “bridges”:[
    ]}
    と表示されて何をどうしていいのかわかりませんでした。

      1. ありがとうございます。
        Tailsでtorrcの設定を保存するにはどうしたらいいのでしょうか。

        1. torrcを保存する設定はないので、毎起動時にファイルをコピーするなどして適用するしかありません。

  5. 「TorブラウザやTorを終了したら、torrcファイルをテキストエディタ(メモ帳ではダメ)で開き、 /etc/tor/torrc の最下行に以下の内容を追記します。」

    とありますが、なぜメモ帳ではダメなのですか?

    あと、どのようなテキストエディタを使えばよいのでしょうか?

    教えていただけるとありがたいです。

    1. メモ帳だと改行がきちんと表示されないからですが、おそらくこの記述は間違いかもしれません。

  6. torを使うと色々なサイトでブロックされたりしますが、どうしてますか?

      • 諦める
      • ウェブプロキシを使う
      • ウェブページでない場合は、プロキシをcURLなどで使う
  7. Tailsでtorrcファイルが読み込み専用になっており、ファイルを上書きしようとすると”必要な権限がありません”と表示されますがどうすればよいですか?

    1. root権限でファイルを編集してください。詳しくはLinuxのコマンドについて調べてください。

  8. adminの設定とか永続的ボリュームの設定とかTailsの初期設定の仕方をブログの記事にして下さい。

  9. Mac (OS high sierra) ではtorrcファイルが見つかりませんでした。
    お手数をおかけしますが、macでの場所はどこでしょうか。

    1. torブラウザなら
      ~/Library/Application Support/TorBrowser-Data/Tor/torrc

      tor (MacPorts) なら
      /opt/local/etc/tor/torrc.sample を /opt/local/etc/tor/torrc にコピー

      tor (Homebrew) なら
      /usr/local/etc/tor/torrc.sample を /usr/local/etc/tor/torrc にコピー

  10. ブリッジの出口をEU以外(USとか)に設定するにはどうしたらいいでしょうか

    1. ExcludeNodesにEUの国すべて追加するしかないんじゃね?(適当)

  11. ExcludeExitNodesの設定を削除されたのはどのような理由があってのことでしょうか?

    1. むやみに除外する国を追加するのは好ましくないと思ったので編集しました。

  12. 今使ってるtorrcコレなんだけどやりすぎかな
    削れそうなのあったら教えて下さい
    ExcludeNodes {jp},{us},{cn},{ru},{bg},{cz},{fi},{de},{fr},{hu},{ir},{lt},{ch},{lu},{mc},{pt},{be},{es},{nl},{ie},{uk},{id},{pl},{at},{it},{ge},{ca},{gb},{au},{nz},{se},{dk},{sg},{il},{no},{md},{kr},kasperskytor01,SlowServer,200.9.255.32,127.0.0.1
    ExcludeExitNodes {jp},{us},{cn},{ru},{bg},{cz},{fi},{de},{hu},{ir},{mc},{pt},{be},{va},{es},{fr},{ie},{uk},{vn},{id},{ro},{pl},{at},{hk},{mo},{tw},{pe},{br},{co},{ec},{uy},{bt},{np},{no},{dk},{se},{is},{ly},{sa},{il},{ae},{mx},{bs},{dm},{ht},{do},{jm},{vg},{vi},{ng},{cf},{cd},{cg},{fm},{pg},{nz},{tv},{cx},{gu},{as},{mg},{io},{gb},{sv},{ee},{al},{ad},{am},{ss},{ba},{hr},{cy},{lv},{li},{lu},{mt},{md},{me},{nl},{lt},{sm},{rs},{sk},{si},{ch},{mk},{tr},{ua},{ar},{au},{ca},{cl},{ky},{mu},{ma},{pa},{py},{ph},{sn},{lk},{to},{sx},{qa},{kw},{bn},200.9.255.32,127.0.0.1
    StrictNodes 1

  13. PC→プロバイダ→VPN→TORでどの国削るとか考えなくてもOKですよ。
    VPN通してTORね。

  14. ExitNodesの鯖からは如何見えているのですか?
    例えば貴鯖の$5040F714B2720A479~をExitNodesに指定しtorで
    この「torを導入した後に~」のページをDL保存した場合
    ファイル名等全てを出口である貴鯖で確認出来るのでしょうか?

  15. torを利用して、オニオンサイトの動画をダウンロードする際VideoDownloadHelperを利用した場合、匿名性に影響を与えますか?

  16. TAILSでroot権限つかってtorrc書き換えたのにTORサーキットにEdxclueNodesで除外したはずのカントリーが入ってくるのはなんでなんですかね?

コメントを残す

メールアドレスが公開されることはありません。