Torは「串弾き」を潜れるのか
今注目の匿名化技術「Tor」を2004年フリーソフト10選に入れたりネトランで紹介したりしたのですが、このソフトウェアの本質的な疑問について書いてみたい。・・・本来こういうテキストは、ある程度Torがメジャーにならないと全く意味が無いのですが計算してみたので自己満足的に掲載します(ぇ?)。一応「Torとは」という話も書くので「Torって何だ」という方もどうぞ。
一応書いておきますと、僕はTorという技術を評価(というと偉そうだけども要は「すげぇ!」の意)していますし今後にも期待しています。ただ、Torの方法論はある用途・あるレベルにおいて原理的な限界を持っている、という話です。あらゆるものがそうであるように、その「用途」「レベル」を知った上で今後への期待や(役に立たない)応援や活用などを行うべきだ。
Torとは、世界中に点在する「Torサーバー」と呼ばれるマシンを介してあらゆるネットワークツールを動作させる仕組みです。「匿名化のための串」というのと原理的に似ている(というか分かる人向けに書くと、TorはSocksプロキシとして動作する)んですが、つまるところ、例えばある人間が「tokix.netサーバーに匿名アクセスしよう」と思った場合、自分のマシンとtokix.netサーバーの間に「Torサーバー」を挟むことで自分の情報をtokix.netに渡さずアクセスすることが可能なのです。さらに、自分のマシンが接続するTorサーバーは、無数のTorサーバーの中から一定時間毎に変更される。
・・・既に「この記事に必要のない話は省略」ということで上の動作概要もかなり省略があるんですが、まぁ要はそういうシステムです。
※参考
原理についても書かれているので興味のある方は参考にして下さい。
で、Torサーバーは「無数に」存在します。例えば僕が「Tor経由のアクセスは弾く!(匿名だとアレだし)」と思った場合、自分が探し出したTorサーバーを「ブラックリスト」型のフィルタリングにかけて遮断すれば良いのですが、「無数に」存在するTorサーバーを弾くことは可能なのだろうか。と、いう話です。
自分が探し出したTorサーバー
どうやって探すか、というと、例えば下記のような方法が最も簡単でしょう。
- 自分でTorを利用し自分のサーバーにアクセスする
- 接続元(=Torサーバー)を取得する
- 取得したサーバーをブラックリストに記録する/既に記録していたら無視
- 1に戻る
これはCGIなりPHPなりとReadMe!不正投票マニュアルの原理を組み合わせれば最低限のプログラミング能力で可能なので、まぁ「たいていの人にできるTor探し方」ということにしておきます。そして「個人でTorを探す」というテーマなので同時接続数は3にしておきます(単純なことを言えば三台のマシンで上記の方法を行えば良いし、本当はTorが利用するポートを変えれば一台でも何とでもできるけどそこらへんは省略)。
で、ちと高校数学の話を使います。「世界中のTorサーバー」が全部でA個、上記作業をN回行うとすると
- あるサーバーがある時に選ばれる確率:1/A
- あるサーバーがある時選ばれない確率:1-1/A
- あるサーバーがN回選ばれない確率:(1-1/A)^N
- あるサーバーがN回の中で一度でも選ばれた確率:1-(1-1/A)^N
- A個のサーバーが全てN回の中で一度でも選ばれた確率:(1-(1-1/A)^N)^A
- N回の作業後、一個でも「一度も選ばれなかったサーバー」が存在する確率:1-(1-(1-1/A)^N)^A
Torはデフォルトでは60秒で接続先を変えるので同時接続数が3なら「20秒ごとに接続先が変更される」。ということで
- ある試行回数において
- Tor鯖がある個数だとした時に
- 「一回も選ばれなかった鯖」が一つでも存在する確率(%表示)
を求めます。つまりこれは「そのブラックリストで行うフィルタリングが完璧でない確率」。ついでに「その回数試行するために(上記条件下で)必要な日数」も併記します。「必要時間」が「1」「03」とかなってるのは「1日と3時間」の意味。
| 試行回数 | 鯖数 | 必要時間 | ||||||
| 50 | 200 | 1000 | 3000 | 30000 | 300000 | 日数 | 時間 | |
| 50 | 99.99 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 00 |
| 100 | 99.91 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 00 |
| 200 | 58.82 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 01 |
| 250 | 27.47 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 01 |
| 300 | 11.02 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 01 |
| 500 | 0.20 | 99.99 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 02 |
| 1000 | 0.00 | 73.69 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 05 |
| 1200 | 0.00 | 38.67 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 06 |
| 1500 | 0.00 | 10.28 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 08 |
| 1800 | 0.00 | 2.38 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 10 |
| 2000 | 0.00 | 0.88 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 11 |
| 2500 | 0.00 | 0.07 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 13 |
| 3000 | 0.00 | 0.00 | 100.00 | 100.00 | 100.00 | 100.00 | 0 | 16 |
| 5000 | 0.00 | 0.00 | 99.88 | 100.00 | 100.00 | 100.00 | 1 | 03 |
| 8000 | 0.00 | 0.00 | 28.40 | 100.00 | 100.00 | 100.00 | 1 | 20 |
| 10000 | 0.00 | 0.00 | 4.41 | 100.00 | 100.00 | 100.00 | 2 | 07 |
| 15000 | 0.00 | 0.00 | 0.03 | 99.99 | 100.00 | 100.00 | 3 | 11 |
| 20000 | 0.00 | 0.00 | 0.00 | 97.79 | 100.00 | 100.00 | 4 | 17 |
| 30000 | 0.00 | 0.00 | 0.00 | 12.71 | 100.00 | 100.00 | 6 | 22 |
| 40000 | 0.00 | 0.00 | 0.00 | 0.48 | 100.00 | 100.00 | 9 | 08 |
| 50000 | 0.00 | 0.00 | 0.00 | 0.01 | 100.00 | 100.00 | 11 | 13 |
| 60000 | 0.00 | 0.00 | 0.00 | 0.00 | 100.00 | 100.00 | 13 | 21 |
| 250000 | 0.00 | 0.00 | 0.00 | 0.00 | 99.92 | 100.00 | 57 | 20 |
| 350000 | 0.00 | 0.00 | 0.00 | 0.00 | 22.67 | 100.00 | 81 | 00 |
| 500000 | 0.00 | 0.00 | 0.00 | 0.00 | 0.17 | 100.00 | 115 | 17 |
| 600000 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 100.00 | 136 | 21 |
| 3000000 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 99.99 | 694 | 10 |
| 4000000 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 38.48 | 925 | 22 |
| 5000000 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1.71 | 1157 | 09 |
| 7000000 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 1620 | 08 |
この数字をどう捉えるかなのですが、「Tor鯖」とは「Torプロジェクトに賛同し提供されているサーバー」です。現在50個程度らしい(少し前に聞いたのでもうちょい増えてるのかも)ので、二時間ほどマシンを回せば現実的には「全ての」Tor鯖をリストアップし「Tor経由のアクセスを完全遮断」することが可能でしょう。これが200個になると半日/1000個になると数日程度/3000個になると二週間弱。これが、「Torネットワーク」というものが一個人に対して粘れる時間です。・・・つまり「一個人」でない大規模な「Tor潰し」はこれよりも明らかに早い時間でTorを「ブラックリスト」に登録しうる。
どこだったかで読んだ話なんですけど
Tor鯖は増加している。Tor弾きを行っている掲示板などもあるが、いずれ「Tor弾き」はTor鯖の増加に追いつかなくなる。
こういった言論は、少なくとも現状を考えると「楽観的」と言わざるを得ない。少なくとも少し前まで三桁にも満たず、爆発的な増加が見込めないTorサーバーは「本気の」ブラックリストフィルタリングを潜れない。
・・・ということで下記二点でこの記事を締めておきます。
- Torは「本気のブラックリストフィルタリングを潜ることの出来る匿名化技術」にはなり得ない。つまり原理的に「ある用途」では「あるレベル」の限界があるので、それを踏まえた上で期待と応援と活用を行うべき技術である
- 本気でブラックリストフィルタリングを潜ろうとするのならば、「原理」を変えるしかない。例えばそれは「ユーザー同士が形成するP2Pネットワークによるネットサーフィン」。たとえて言うなら「Winnyでファイルを交換するように他人のマシンを踏み台にしあってネットへアクセス」。上の表で「鯖数」30,000や300,000を併記したのは例えばその意味です(Winnyのユーザー数がピークで30万弱)。・・・もちろんコレは「自分と関係のない(自分が中継者に過ぎない)アクセスのせいで犯罪に巻き込まれる」可能性のある技術なんですけど、そこらへんはほら、Winnyでの違法ファイル中継にも(2005年1月現在)有罪判決は出ていないし、サイバーノーガード戦法が有効な世の中だし。・・・実は既にこういうツールが登場しかけているのですがここらへんは書くにしても別の記事で書きます。
「FAQ: ***で使える串を探しています」をアップした直後なのでその責任の意味でも書いておくけど、現状Torは2ちゃんねるでは使えませんし、おそらく今後も使えないでしょう。「だからTorなんて役に立たない」のではなく、「それはTorの用途/活用術ではない」という意味です。
・・・あと、上の計算が間違ってたら優しくして下さい(「小学生が難しいこと書かない方がいいよ」とか)。

TrackBack
この記事へのトラックバックImovane.
Imovane use in geriatrics.