TOUCH THE SECURITY Powered by Security Service G
インターネットはさまざまな情報を簡単に収集できる一方で、知られたくない情報も簡単に調べられてしまいます。最近では匿名性の高いネットワークが注目を集めています。
ウィキリークスという匿名で投稿された内部告発情報をインターネット上で公開するウェブサイトの登場により、注目されるようになった「Tor(トーア)」をご存じですか?
今回はデータを匿名で送信する技術「Tor(トーア)」について詳しくご紹介したいと思います。
Tor(トーア)とは
Torとはインターネット上で発信元の秘匿性が高い通信を行うことができるシステムです。 元はアメリカの研究所で開発された技術で、現在は仕様や対応ソフトウェアがオープンソースとして公開されています。
The Onion Routerの略で、玉ねぎルーターという意味ですが、なぜ玉ねぎなのでしょうか。
Torの仕組み
インターネット上でやり取りされるデータはパケットと呼ばれる小さな単位に分割され、送り先の住所(アドレス)をつけて送り出されます。このパケットは、たくさんのルーターをバケツリレーのようにして届けられます。
この時に重要なのが、アドレスが平文でなくてはならないということです。送り先アドレスは世界中に存在する無数のルーターが読んで、適切な方向に中継をするので、暗号化することはできません。一方で、本体のデータ部分は暗号化しようがなにをしようが自由です。
これは封書の仕組みによく似ています。封筒の中身は他人が勝手に見ることはできませんが、宛先と送り元の住所氏名は誰でも見ることができます。
一般的なデータ送信ではこれで問題ありません。しかし、例えば重要な内部告発を公益通報を受け付けている機関に送信する場合、中身は暗号化されても「誰がどこにデータを送ったか」がわかってしまいます。これでは告発者をじゅうぶんに保護することができません。
ここで登場するのがTorです。Torを用いると、「誰が誰に送ったか」を秘匿することができます。
寄り道すれば、追跡しづらくなる
Torでは、ランダムに決定される中継サーバー(ノード)を最低3つ経て、目的のサーバーにパケットが送られる。
ただし、中継をしただけでは、経路が追跡されてしまう危険性がある。
Torでは、世界中にいる協力者のサーバーを中継して、目的地までパケットを届けます。この協力ボランティアのサーバーは、6000以上あると言われています。Torを使おうとした時、まずこのボランティアサーバー(ノード)が3つ、ランダムに選ばれます。パケットは、送信元→ノードA→ノードB→ノードC→送信先という経路で転送されていくことになります。
しかし、ただパケットを中継しただけならあまり意味はありません。アドレスが丸見えなので、送信元からノードAに送られたことはわかってしまいます。ノードAからノードBに送られたこともわかってしまいます。すべてをたどるのはかなり面倒な作業になるとはいえ、誰から誰に送られたのかもわかってしまうかもしれません。そこで、アドレスをなんとか暗号化して、隠す必要があります。
アドレスをつけて暗号化し、玉ねぎ状のパケットを作る
アドレスをつけて暗号化を繰り返していく。まるで玉ねぎのように重層化した暗号化パケットが作れる。
ここでオニオンルーティングの出番です。オニオンルーティングでは、転送経路を逆にたどりながら、アドレスも含めて多重に暗号化をしていきます。これが玉ねぎルーターの由来です
まず、通常通りパケットを準備します。これはデータと送信先のアドレスがついたものになります。これをそのまま放出すると、送信先に直接辿り着きますので、通信をしたことが露見してしまいます。
そこで、送信先への最終的なアクセス元となるノードCが解読できる暗号鍵を用意し、ヘッダごと暗号化します。これを丸ごとデータとして考えて、そこにノードCという送り先アドレスをつけたパケットを作成します。
さらにこのパケットに対して、ノードBが解読できる鍵を使いつつ、丸ごと暗号化します。そしてノードBという送り先アドレスをつけます。これもまた丸ごと暗号化し、今度はノードAが解読できる暗号鍵を使います。そしてノードAという送り先アドレスをつけます。これで準備は完了です。
パケットを放つと、転送される
この玉ねぎパケットをインターネットに放出すると、アドレスに指定されたノードにたどり着く。
そこで復号化されると、次のノードのアドレスが現れるので、転送されていく。
こうして、最終的に目的のサーバーにたどりつく。
この玉ねぎ状のパケットを送信元がインターネットに放出すると何が起こるのでしょうか。暗号化されたパケットにノードAのアドレスがつけられているので、このパケットはノードAに届きます。ノードAでは、受け取ったパケットのアドレス部分を除去すると、暗号化したデータだけが残ります。この暗号化には、ノードAが解読できる暗号鍵が使われていました。ノードAが、暗号を解いて復号化すると、中からノードBのアドレスがついたパケットが現れます。これをインターネットにアップロードします。
パケットにはノードBのアドレスがついているので、ノードBに届きます。ノードBで復号化をすると、ノードCのアドレスがついたパケットが現れ、これをインターネットにアップロードします。そしてパケットはノードCに届き、復号化をすると、送信先のアドレスがついたパケットが現れ、最終的にパケットが送信先に届く仕組みです。
送信先に届いたパケットをいくら分析しても、ノードCから送信先に送られたということしかわかりません。また、ノードBから送られてきたパケットは暗号化されているので、それとこの放出されたパケットに関連性を見いだすこともできません。こうして、送信先へたどりつくことを防いでいるのです。
玉ねぎの皮をどんどん向いていくと目的の場所に届くような仕組み、これがオニオンルーティングです。
ノードとデータの復号化
Torの最大の問題は、出口ノードではパケットの内容が平文に戻されていること。
出口ノードの管理者は、パケットの内容を読んでしまうことができる。
ここまで、オニオンルーティングの説明をしてきましたが、このオニオンルーティングは完璧ではありません。それどころか重大な欠陥を抱えています。それは最後に送信先にパケットを送る出口のノードCにあります。
ノードAの管理者がパケットについて知ることができるのは、「このパケットは送信元からきて、ノードBに転送される」ということだけです。ノードBから先のアドレス、データ部分は暗号化されているので、知ることができません。通信の秘密は保たれます。しかし、出口のノードCでは、玉ねぎの皮が全て剥がれ落ちた無防備な状態です。ここで、例えばデータ部分に暗号化が求められない通信(=非HTTPS)を考えた時、ノードCの管理者がパケットの内容を読んでしまう可能性もあるわけです。
まとめ
今回は匿名で情報を送ることができるTorについてご紹介しました。しかし、このTorも欠点があり、完璧とは言えない仕組みです。実際に、Torに協力しているボランティアサーバーのうち、1割程度は協力するふりをして情報収集を目的にしていることや、公益通報だけでなく、犯罪者が身元を隠して通信するために使用されることも懸念されています。
セキュリティは決して完全ではなく、正しく使用する人の裏で悪用しようとする人も必ず存在します。Torを正しく理解して、利用することが望まれます。