技術者のためのTor

2015年6月15日



Torは、近年のニュース記事で頻繁に登場するテクノロジーです。しかし、それに関する多くの誤解が存在します。多くの技術者でさえ、ネガティブな目的での使用を超えて見ていませんが、Torはそれ以上のものです。それは民主主義と表現の自由にとって重要なツールですが、技術者の日常生活でも非常に役立つものです。Torは、非常に具体的なセキュリティ要件を持つシステムを設計する方法に関する興味深いケーススタディでもあります。

現在のインターネットは、非常に敵対的な場所です。スクリプトキッドディやドライブバイフィッシング攻撃から、世界中の多くの主要な諜報機関による広範なドラッグネット監視まで、あらゆる種類の脅威があります。これらの問題の深刻さは、最近になってようやく明らかになりました。このような状況において、Torのようなツールは非常に重要な役割を果たします。Facebookのような企業でさえTorの使用を推奨していることは、時代の象徴と言えるでしょう。Torをあなたのツールベルトに加える時が来ました。

Torの仕組み

Torの目標は、匿名のネットワークトラフィックを実現することです。Torという言葉は、元々はThe Onion Routerの略でした(ただし、Torは頭文字語のように大文字にする必要はありません)。Onionルーティングは、TorがクライアントのIPアドレスを隠すために使用する手法です。これには、中間の誰かがインターネット上で誰がどのような情報を要求しているかを見ることを非常に困難にするという追加の利点もあります。実際には、これは、コンピュータの近くにトラフィックを傍受している人がいる場合、Torはあなたがどのサーバーと通信しているかを隠します。サーバーの近くにトラフィックを傍受している人がいる場合、そのサーバーに誰がアクセスしているかを見ることはできません。

Torは、何千人ものボランティアがTor中継と呼ばれるものをホストすることによって機能します。これらは基本的に、トラフィックの転送に全時間を費やすサーバーです。そのため、サービスにアクセスしたい場合、コンピュータ上で実行されているTorクライアントプログラムは、3つの異なる中継を選択します。次に、パケット情報を公開鍵暗号を使用して暗号化します。この通信セッションのために選択された各中継の公開鍵を使用して、パケットを3回暗号化します。次に、リスト上の最初の中継に3重に暗号化されたパケットを送信します。その中継は、自分宛ての暗号化を解き、残りは2層の暗号化されたパケットになります。最初のリレーはパケットを2番目のリレーに送信し、そこで別の暗号化層が解かれます。それを最終的な中継に送信すると、最後の暗号化が解かれます。暗号化が残っていないため、最終的な中継はパケットの本当の宛先を知っています。そのため、要求された元のサービスに連絡します。次に、応答を受信し、同じプロセスを逆に使用して情報を送信します。

最終的な中継は通常、出口中継と呼ばれます。最初のリレーは通常、エントリリレーと呼ばれます。この仕組みでは、エントリリレーだけがマシンの実際のIPアドレスを知っており、出口リレーだけが実際に連絡したいサービスを知っています。そして、サービスは出口中継のIPアドレスだけを見ます。これらすべてが組み合わさり、クライアントの匿名性を非常にうまく保護します。

重要な点は、Torネットワークを信頼するために、すべてのTor中継を信頼する必要がないことです。誰でも独自の中継を設定できるため、悪意のある行為者が中継を設定することを阻止するものは何もありません。したがって、Torは、このようなことが発生した場合でも侵害されないように設計されています。

Torは、明示的に低遅延ネットワークとして設計されています。つまり、良好な状況下では、インスタントメッセージング、オーディオ会議、ビデオ会議などの用途に使用できます。

Torクライアント

Torを使用する場合は、クライアントプログラムを実行するか、Torブラウザバンドルと呼ばれるものをダウンロードして実行するかの2つの選択肢があります。Web以外の種類のトラフィックにTorを使用する場合は、Torクライアントソフトウェアを直接実行すると便利です。インストールは通常、オペレーティングシステムの通常のパッケージ管理システムを通じて行われ、インストールされると、何もする必要なくバックグラウンドでマシン上で実行されるはずです。Torはプロキシとして機能するため、Torと直接やり取りすることはありません。代わりに、通常のプログラムにTor経由でトラフィックをトンネリングするように要求します。

Torクライアントプログラムは、デフォルトでSOCKSと呼ばれるプロトコルを使用してポート9050をリッスンします。これは、多くのアプリケーションで使用するために構成できる標準的なプロキシプロトコルです。たとえば、インスタントメッセージングにはGajimというプログラムを使用しています。このプログラムでは、正しいSOCKSプロキシ設定を指定することで、すべてのアカウントをTor経由で接続するように構成しています。

コマンドラインツールを使用している場合、通常はusewithtorまたはtorsocksというプログラムを使用して、プログラムがTorを使用するように透過的にすることができます。Torを使用する他の方法もあります。Thunderbirdは、メールの追跡と傍受を困難にするために、すべてのトラフィックをTor経由で実行するように構成できますが、ThunderbirdでTorを手動で構成することにはいくつかのリスクが伴います。DNSルックアップ、ヘッダーの地理位置情報、場合によってはメールヘッダーのIPアドレスなど、多くの情報漏洩の可能性があります。幸いにも、TorBirdyというプラグインがあり、多くの手順を自動化し、そのような安全でない情報漏洩を防ごうとしています。

Torブラウザバンドル

Torを使用する最も簡単な方法は、Torブラウザバンドルをダウンロードすることです。これはインストールする必要すらありません。ダウンロード後すぐに実行できます(USBメモリやDVDに入れてそこから実行することもできます)。Torブラウザバンドルは、基本的にTorクライアントソフトウェアと非常にカスタマイズされたブラウザを組み合わせたものです。ブラウザには匿名性を漏洩させる可能性のある多くの方法があり、セキュリティを脅かす可能性のある他の多くのものもあるため、Torブラウザバンドルは、通常のブラウザをTorを使用するように構成するよりもはるかに安全です。

Torブラウザバンドルには、プライバシーを向上させるいくつかのプラグインが付属しており、フォント構成、Flashプラグイン、その他の機能など、サイドチャネルを通じて情報を漏洩しないように構成されています。

隠しサービス

Torには、最近注目を集めているもう1つの興味深い機能があります。Tor隠しサービスは、通常のTor操作がクライアントのIPアドレスを隠すことを可能にするのと同様に、サービスがそのIPアドレスを隠す機能を提供します。これは、少し複雑なランデブープロトコルと呼ばれるものを使用して機能します。基本的には、クライアントとサーバーの両方が、それぞれ3つのリレーの完全な回線を確立することを想像できます。次に、Torネットワークの中間点で出会います。そして、そこから接続を確立できます。一般に、隠しサービスは、16文字の英数字と.onionで構成される.onion-URLを使用して検索され、連絡されます。16文字は隠しサービスの公開鍵を表しており、接続のルーティングは自己検証されることを意味します。秘密鍵を盗まないで、隠しサービスであると偽ることはできません。

隠しサービスは、いくつかの理由で非常に強力です。まず、サービスプロバイダーが匿名になることができます。これはもちろん、良い理由と悪い理由の両方で使用されてきました。第二に、隠しサービスとしてのみサービスを公開する場合、クライアントにTorを使用するように強制できます。これにより、誤って情報を公開することがはるかに困難になります。第三に、隠しサービスは、トラフィックがTorネットワークから決して出ていかないように実装されています。隠しサービスには出口中継がありません。つまり、隠しサービスへの通信は、常にサービスまで完全に暗号化されます。これは、通常のTor接続では必ずしも当てはまりません。最後に、パブリックにルーティング可能なIPアドレスを持たずに、隠しサービスを公開できます。これを使用する方法の非常に実用的な例は、SSHを隠しサービスとして公開することです。これにより、ファイアウォールを開いたり、パブリックIPアドレスを持ったりすることなく、どこにいても自分のサーバーにSSH接続して管理できます。私は自宅にいくつかの公開アクセスできないサーバーを実行しており、それらにSSH接続して管理できることは非常に強力です。

Facebookは最近、隠しサービスとしてサーバーを公開することで話題となりました。これは大きな進歩です。そこで、ご自身が取り組むプロジェクトでも同様の措置を講じるべきかどうか疑問に思うかもしれません。一般的には、追加作業とテストが必要ではありますが、「はい」と答えるでしょう。これをユーザーに提供することは、一般的に誰にとっても有益です。

ブリッジと難読化プロトコル

一部地域では、検閲が激しいため、通常の方法でTorを使用しても機能しません。多くの場合、これは単にすべてのTor中継ノードへのトラフィックをブロックするためです。Tor中継ノードは公開されている必要があるため、検閲者はブロックするIPアドレスのリストを簡単にダウンロードできます。

このような状況のため、Torソフトウェアはブリッジと呼ばれる機能をサポートしています。これらは公開されていないエントリ中継ノードであり、必要に応じてオンザフライで要求できます。必要となるもう一つの解決策は、難読化プロトコルを使用することです。高度な検閲ではディープパケット検査が使用されるため、Torトラフィックを他の種類のトラフィックに偽装することが重要です。この問題を解決するために、現在Torにはいくつかの異なるプラグインが実装されていますが、検閲に対抗するためのいたちごっこが続いています。

匿名性は難しい - Torが保護しないものとは?

Torはツールであり、他のツールと同様に得意な点と不得意な点があります。Torはあらゆる脅威から保護できるわけではないことを知っておくことが重要です。Torを正しく使用していても、考慮すべき点があります。

Torにおける匿名性とセキュリティに関して、日常的に発生する最大の課題は、サーバーに送信するトラフィックが暗号化されていない場合、Torは役に立たないことです。具体的には、ユーザーと最初の2つの中継ノード間のトラフィックは暗号化され、攻撃が困難になります。しかし、出口中継ノードは通過するすべてのトラフィックを見ることができます。これを防ぐ方法は、エンドポイントまで情報を暗号化するプロトコル(HTTPSやSTARTTLS付きSMTPなど)を使用すること、または隠しサービスを公開するサービスを使用することです。後者は、すべてのトラフィックのエンドツーエンドの暗号化を保証します。

Torは通常、低遅延ネットワークとして分類されます。これは匿名性に影響を与えます。基本的に、Torは、攻撃者が中継ノード間のネットワークトラフィックの大部分を監視できる場合、そのトラフィックの多くを匿名化解除できるような設計になっています。これは、Torトラフィックはリアルタイムで送受信されることが想定されているため、パケット時間の相関関係を調べる可能性があるためです。これにより、プライバシー侵害につながる可能性があります。しかし、これはTorの設計上の仕様です。現在の研究では、リアルタイムに近いトラフィックが必要な場合、完全な匿名性を確保することは基本的に不可能であることを示唆しています。各パケットの到着に数時間待つことが問題ない場合は、他のテクニックを使用できますが、Torはそれらのユースケース向けに設計されていません。

また、Torは、誤ってIPアドレスを公開した場合も保護できません。良くない例としては、P2Pファイル共有にTorを使用することが挙げられます。これはTorネットワークを破壊するだけでなく、ほとんどのファイル共有プロトコルが実際のIPアドレスを公開するため、アドレスを隠すことにもなりません。IPアドレスを公開しないようにするには、IPアドレスを公開する可能性のあるプラグインを実行しないようにする必要があります。Tor Browser BundleがFlashプラグインをバンドルしていない理由の一つは、プライバシーの観点から危険すぎるためです。

サーバーを隠しサービスとして公開する場合も同様の注意が必要です。本当に隠しておきたい場合は、サーバーコンポーネントがIPアドレスを公開しないようにする必要があります。これは言うほど簡単ではなく、次のセクションで説明します。

Torは壊れているのか?

技術者とTorについて話す際によく聞かれる質問の一つに、Torが壊れているかどうか、本当に信頼できるかどうか、政府がバックドアを仕掛けたかどうかなどがあります。Torに関する噂や理論は多くありますが、一般的には単なる噂や理論です。つまり、前述のように、Torはすべてを保護するわけではありません。しかし、Torにバックドアがあるとは非常に考えにくいです。コードはオープンソースであり、長年にわたって多くの専門家が調べてきました。プロトコルもオープンであり、他のオープンソースプロジェクトで複数回実装されています。誰も気づいていないバックドアが存在する可能性はゼロではありませんが、個人的にはそれに賭けはしません。この可能性を懸念する技術者には、数時間かけてソースコードを確認することをお勧めします。プロジェクトは常に、より多くの目からのチェックを必要としています。

研究

とはいえ、Torは何度も破られています。その主な理由は、匿名性が非常に難しく、Torがこれまで行われてきたことの限界に挑戦しているためです。そのため、Torは研究者が突いて、予期せぬ動作をさせる方法を見つけるための好ましい対象となっています。また、匿名性の限界はどこにあるのかを知るための主要な方法でもあります。Torが多くの研究の対象となっていることは、最終的にはコミュニティにとって有益です。Torの弱点について述べた新しい論文が発表されるたびに、Tor開発者はそれを修正します。何も最初から完璧ではありません。この反復と修正の方法によって、ツールを信頼できる状態に近づけることができます。

2014年の出来事

Torのセキュリティレベルについて懸念されている理由の一つに、過去数年間に一連の不審な事件が発生していることが挙げられます。具体的には、Torのユーザーと隠しサービスを使用したユーザーの両方が、さまざまな状況で逮捕されています。しかし、現時点では、これらの摘発がTorソフトウェアまたはプロトコルの欠陥によるものだという兆候はありません。私たちが知っているケースでは、理由はさまざまな種類のミスに帰着できるようです。あるケースでは、Tor Browser Bundleの基盤となっているFirefoxのバージョンにバグがあり、警察がサーバーを乗っ取った後、このブラウザを攻撃して問題のユーザーを匿名化解除することができました(ただし、特定の隠しサービスにアクセスしたユーザーのみ)。最初のSilk Roadの場合、調査官が管理者インターフェースに侵入し、実際のIPアドレスを送信するように説得したことは明らかです。

そして、オペレーション・オニマスがあります。この作戦は、いくつかの異なる法執行機関が協力して、多数の違法オンラインマーケットプレイスを取り締まることを目的としたものです。この作戦で興味深いのは、それを取り巻くプロパガンダです。当初、400以上の隠しサービスを閉鎖したと主張していました。しかし、落ち着いてみると、閉鎖されたのは27サイトだけで、逮捕されたのは17人だけでした。Torと隠しサービスによって保護されていたはずなのに、逮捕されたのは多いと主張することもできます。しかし、実際には、Silk Road 2をホストしていた人物の名前がどこかに書かれていたようです。法執行機関は彼を逮捕し、尋問を始めました。彼は16人の他の人物の名前を挙げ、彼らはすぐに逮捕され、コンピューターを押収されました。英国の法執行機関がTorが破られたことをツイートしたにもかかわらず、これにはTorの侵害は関与していません。すべてプロパガンダでした。このビデオで詳細情報を見つけることができます。

さらに、エドワード・スノーデンによって漏洩された文書を見ても、最も強力な攻撃者でさえ、Torを破る良い方法を持っていないことが明らかです。これは非常に心強く思います。

Torの日常的な使用

これでTorの概要が分かったところで、日常業務でTorをどのように使用できるかについて簡単に説明します。上記の情報から想像できるように、Torはさまざまな目的に使用できます。しかし、開発者が行うような作業の場合、Torを使用して最初にそして最も簡単にできることは、さまざまな方法でシステムをテストすることです。多くの場合、Cookieやパーソナライゼーションなしでシステムがどのように見えるかを確認するのは困難です。Torを使用すると、非常に簡単に確認できます。

その他にできるテストとしては、さまざまな国からのように見える方法でシステムを非常に簡単に試せるようにすることです。Torが使用する中継ノードを制御することにより、トラフィックの送信元となる国を制御できます。

前述のように、SSHをTor隠しサービスの背後に配置することは、地球上のどこからでもシステムにアクセスするための非常に便利な方法であり、接続に少なくとも2層の暗号化を追加します。ただし、このような設定であっても、強力なパスワードを使用すること(またはSSHでは公開キーログインのみを使用すること)、およびルートアカウントへのリモートログインを不可能にすることが重要です。

Tails

Torが絶対必要であり、強力な敵対者からの攻撃を予想しているような状況にある場合は、難しい状況にあります。通常のマシンにTorをインストールするだけでは、必ずしも十分ではありません。Tailsというプロジェクトがあります。これは、CD/DVDまたはUSBドライブから実行されるLinuxディストリビューションです。Tor経由でのみネットワークトラフィックを送信するように事前に構成されており、プライバシーと匿名性の機能も多数備えています。プライベートに通信し、暗号化されたメールを送信し、安全な方法でドキュメントを処理するためのさまざまなツールがバンドルされています。

Tailsの興味深い点は、完全に「健忘症」であることです。実行後、コンピュータ上に痕跡を残しません。少量のデータを保存するように設定することは可能ですが、デフォルトでは一切の痕跡は残されません。

Tailsは日々の仕事で必要になるものではありませんが、Tailsのようなものが非常に強力になる特定のケースがあります。すべてのジャーナリストは、そしてすべての弁護士も、その使用方法を知るべきです。それは強力なツールであり、必要になる前に使用方法を準備しておくことは良い考えです。

結論

Torは、驚くべき多くのことができる素晴らしいツールです。現在、安全な方法で展開された有用な暗号化の最も強力な例の一つです。しかし、私たちが見てきたように、完璧なツールはありません。そして、Torを正しく使用するためには、その仕組みを知ることは良い考えです。次のステップとして、Torをダウンロードして試してみることをお勧めします。匿名性の興味深い点の一つは、仲間を好むことです。たとえあなたが匿名性を必要としなくても、Torを使用することで匿名性を必要とする他の人々を守っています。いつか、あなた自身でTor中継ノードを運用することもできるでしょう - それはすべての人にとってTorネットワークを改善するものです。


重要な改訂

2015年6月15日: 初版公開