TOUCH THE SECURITY Powered by Security Service G

コラム

2018.02.19

4枚の図解でわかるTor

ウィキリークスの登場とともに注目されるようになった「Tor(トーア)」は、データを匿名で送信する技術です。The Onion Routerの略で、玉ねぎルーターという意味ですが、なぜ玉ねぎなのでしょう。仕組みを紐解いてみましょう。

1.秘匿したい情報はデータ本体だけではない

ご存知の通り、インターネットでやり取りされるデータは、パケットと呼ばれる小さな単位に分割され、送り先の住所(アドレス)をつけて送り出されます。このパケットは、たくさんのルーターをバケツリレーのようにして届けられるというのも、インターネットの教科書の最初に書いてある話です。

この時、注目したいのがアドレスは平文でなくてはならないということです。送り先アドレスは、世界中に存在する無数のルーターが読んで、適切な方向に中継をするので、暗号化することはできません。一方で、本体のデータ部分は暗号化しようがなにをしようが自由です。

これは封書の仕組みによく似ています。封筒の中身は他人が勝手に見ることはできませんが、宛先と送り元の住所氏名は誰でも見ることができます。

一般的なデータ送信ではこれで問題ありません。しかし、例えば重要な内部告発を公益通報を受け付けている機関にデータ送信する場合、中身は暗号化されても「誰がどこにデータを送ったか」がわかってしまいます。これでは告発者をじゅうぶんに保護することができません。

2.Torの仕組みと玉ねぎの由来

Torを用いると、「誰が誰に送ったか」を秘匿することができます。4枚の図を基に考えてみましょう。

2-1.寄り道をすれば、追跡しづらくなる

Tor1

Torでは、ランダムに決定される中継サーバー(ノード)を最低3つ経て、目的のサーバーにパケットが送られる。
ただし、中継をしただけでは、経路が追跡されてしまう危険性がある。

Torでは、世界中にいる協力者のサーバーを中継して、目的地までパケットを届けます。この協力ボランティアのサーバーは、6000以上あると言われています。Torを使おうとした時、まずこのボランティアサーバー(ノード)が3つ、ランダムに選ばれます。パケットは、送信元→ノードA→ノードB→ノードC→送信先という経路で転送されていくことになります。

しかし、ただパケットを中継しただけならあまり意味はありません。アドレスが丸見えなので、送信元からノードAに送られたことはわかってしまいます。ノードAからノードBに送られたこともわかってしまいます。すべてをたどるのはかなり面倒な作業になるとはいえ、誰から誰に送られたのかもわかってしまうかもしれません。アドレスをなんとか暗号化して、隠す必要があります。

2-2.アドレスをつけて暗号化、何重にも包んで玉ねぎ状のパケットを作る

Tor2

アドレスをつけて暗号化を繰り返していく。まるで玉ねぎのように重層化した暗号化パケットが作れる。

ここでオニオンルーティングの出番です。オニオンルーティングでは、転送経路を逆にたどりながら、アドレスも含めて多重に暗号化をしていきます。

まず、通常通りパケットを準備します。これはデータと送信先のアドレスがついたものになります。これをそのまま放出すると、送信先に直接辿り着きますので、通信をしたことが露見してしまいます。

そこでまず、送信先への最終的なアクセス元となるノードCが解読できる暗号鍵を用意、ヘッダごと暗号化します。これを丸ごとデータとして考えて、そこにノードCという送り先アドレスをつけたパケットを作成します。

さらにこのパケットに対して、ノードBが解読できる鍵を使いつつ、丸ごと暗号化。そしてノードBという送り先アドレスをつけます。これもまた丸ごと暗号化、今度はノードAが解読できる暗号鍵を使います。そしてノードAという送り先アドレスをつけます。これで準備は完了です。

何故こんな面倒なことをするのか不思議に思う方も多いと思いますが、それは次の図でわかります。ここでは暗号化がまるで玉ねぎのように重層化していることに注意してください。これが玉ねぎルーティングという名前の所以です。

2-3.パケットを放つと、1枚皮が剥けて転送されていく

Tor3

この玉ねぎパケットをインターネットに放出すると、アドレスに指定されたノードにたどり着く。
そこで復号化されると、次のノードのアドレスが現れるので、転送されていく。
こうして、最終的に目的のサーバーにたどりつく。

さて、この玉ねぎ状のパケットを送信元がインターネットに放出すると何が起こるでしょうか。暗号化されたパケットにノードAのアドレスがつけられているので、このパケットはノードAに届きます。ノードAでは、受け取ったパケットのアドレス部分を除去すると、暗号化したデータだけが残ります。この暗号化は、ノードAが解読できる暗号鍵が使われていました。ノードAが、暗号を解いて復号化すると、中からノードBのアドレスがついたパケットが現れます。これをインターネットに放出します。

パケットにはノードBのアドレスがついているので、ノードBに届きます。ノードBで復号化をすると、ノードCのアドレスがついたパケットが現れます。これをインターネットに放出します。そしてパケットはノードCに届き、復号化をすると、送信先のアドレスがついたパケットが現れ、最終的にパケットが送信先に届きます。

送信先に届いたパケットをいくら分析しても、ノードCから送信先に送られたということしかわかりません。ノードBから送られてきたパケットは暗号化されているので、それとこの放出されたパケットに関連性を見いだすことができません。こうして、送信先へたどりつくことを防いでいるのです。

玉ねぎの皮をどんどん向いていくと目的の場所に届くような仕組み、これがオニオンルーティングです。

2-4.最後の出口ノードとデータの復号化

Tor4

Torの最大の問題は、出口ノードではパケットの内容が平文に戻されていること。
出口ノードの管理者は、パケットの内容を読んでしまうことができる。

このオニオンルーティングは完璧ではありません。それどころか重大な欠陥を抱えています。それは最後に送信先にパケットを送る出口のノードCにあります。

ノードAの管理者がパケットについて知ることができるのは、「このパケットは送信元からきて、ノードBに転送される」ということだけです。ノードBから先のアドレス、データ部分は暗号化されているので、知ることができません。通信の秘密は保たれます。ノードBでも同じです。しかし、出口のノードCでは、玉ねぎの皮が全て剥がれ落ちた無防備な状態です。ここで、例えばデータ部分に暗号化が求められない通信(=非HTTPS)を考えた時、ノードCの管理者がパケットの内容を読んでしまう可能性もある訳です。

実際、ボランティアとしてTorに協力しているボランティアサーバーのうち、1割程度は、協力をするフリをして、実は情報を盗むことを目的にしているのだとも言われます。Torは公益通報だけでなく、犯罪者が身元を隠して通信をするためにも利用されるので、この中には捜査機関も含まれているとも言われます。

セキュリティに完全はありません。どのような素晴らしい技術でも、それを社会のために活用しようとする人もいれば、犯罪のために利用しようとする人もいます。技術の裏をかいて世の中を正しくしようと考える人もいれば、悪どいことを企む人もいます。このような善意と悪意の力学の間で、揺れ動きながら確保されているのがセキュリティなのです。

記事一覧に戻る