清水理史の「イニシャルB」
[HowTo]中国のグレートファイアウォールを突破する方法
学術的アプローチで自由なインターネットに挑む「VPN Gate」
(2014/6/18 06:00)
数々の斬新なアイデアで、海外のユーザーに自由なインターネット環境を届けるプロジェクトが存在する。ソフトイーサ株式会社の代表を務める傍ら筑波大学で研究の日々を送る登大遊氏が手がけた「VPN Gate」だ。中国のグレートファイアウォールに事実上勝利したその方法とはいかなるものなのだろうか? 賛否の意見も含め、その実体に迫ってみた。
映画さながらの攻防
サービスのリリースから、土日を挟んだ中3日でVPN Gateの存在に気づいたグレートファイアウォールの担当者は、まずは手動でVPN Gateサーバーのリストをアクセス禁止用のブラックリストへと登録開始する。
驚くことに、そのわずか2日後には自動的にVPN GateのWebサイトに掲載されているサーバーリストを取得するクローラーが稼働。アクセス履歴にエージェットが残るお粗末なものではあったが、自動的にVPN Gateのサーバーがブラックリストに追加されるようになる。
先方の対応をある程度予測していた登氏は、「イノセントIP」や「協調型スパイ発見」と呼ばれるアイデアを次々に繰り出し、当局のさらに上をいく対策を実施していく――。
顔も見たこともない相手と、ここまで激しい頭脳戦が繰り広げられることが現実にあるとは……。
取材を通じて登大遊氏の口から出てくるここ数カ月の出来事の面白さに、まるで映画のストーリーでも聴くかのように、すっかり引き込まれてしまった。
テーマは、「中国のグレートファイアウォールをいかに突破するか?」だ。
世界には、国家などの検閲によってSNSの利用などが制限されている国・地域が複数存在する。そんな海外のユーザーに自由なインターネット環境を届けるための技術的方法の研究という広いテーマがそもそもの趣旨だが、現状の主な対象は、世界最強、最大の検閲システムと噂される(公式には検閲はないことになっている)中国のグレートファイアウォール。その攻防が現在もリアルタイムで進行中だ。
ボランティアVPNサーバーを全世界に展開
詳しい話に入る前に、「VPN Gate」について軽く解説しておこう。VPN Gateは、インターネット上に仮想的なプライベートネットワークを構築するVPNサービスの一種だ。
ボランティアによって運営されたVPN Gateのサーバーが、現状、全世界で7000ほど存在し、誰もが自由に利用できるように公開されている。
中国など、インターネットの利用が決して自由ではない国では、通常、国家の検閲などによって、アクセスが禁止されてしまうサイトやサービスが存在する。具体的には、Facebook、Youtube、Twitterなどがそうだ。
その検閲避けに利用されるのが、VPNサービスを利用したインターネット接続だ。たとえば、筆者がサーバーを公開したとしよう。このアドレスは、VPN GateのプロジェクトのWebページ(http://www.VPN Gate.net/ja/)で公開され、ユーザー名vpn/パスワードvpnという全サーバー共通のアカウントで、だれもが自由に利用できる状態で公開される。
中国からFacebookにアクセスしたいユーザーは、VPN GateのWebページから、筆者のサーバーのアドレスを確認し、OpenVPN、L2TP/IPSec、SoftEtherなどの方法で接続すればいい。
すると、中国のユーザーは、筆者の自宅に敷設された光ファイバーからインターネットに接続することが可能になり、検閲のない自由なインターネットを手に入れることができるというわけだ。
登氏によると、現状、VPN Gateの利用者は、IPアドレスベースで全世界で1日あたり40万あり、うち中国からは3万2000 IPほどもあるという。
グレートファイアウォールを突破する3つの方法
このようにVPNを利用する方法自体は、古くから試されてきたアプローチで、実は当局側の対応もさほど難しくない。VPNサービスの接続先となるサーバーをブラックリストに登録し、アクセスを禁止してしまえばいいわけだ。
しかし、VPN Gateが注目されるのは、3つのアイデアで、従来のVPNサービスに対する当局側の対策を無効にすることに成功している点にある。
1)数千のサーバーを離散的に展開する
VPNサーバーの数が限られていれば、ブラックリストに登録するのは難しくない。手動で登録しても、さほど手間もかからない。
しかし、これが数千、将来的に数万という数に増加したとすれば、その対策は容易ではない。しかも、全世界に離散的にサーバーが点在すれば、IPアドレスの範囲を指定してアクセスを禁止することも難しくなる。
前述したように、VPN Gateではボランティアで運営されているサーバーが、すでに全世界で7000ほどもある。しかも、各サーバーは、通常のクライアントPCで実行されているため、ISPから割り当てられるIPアドレスが変化するケースも多い。
このような、そのときどきで変化する数千もの対象を手動で管理するのは、事実上、不可能というわけだ。
$null
2)イノセントIPミキシングによるクロールの無効化
手動での管理が無理となれば、自動登録を試みればいい。前述したように、グレートファイアウォールのケースでも、当局の担当者は2日でクローラーを仕上げ、自動登録に動いている。
そもそも、VPN Gateのサーバーリストは、Webページで公開されているので、これを取得して一括で登録してしまえば、苦労はないわけだ。
しかし、このリストの中に、万が一、ダミーのIPアドレス、しかも間違ってもブラックリストに登録してはならないような重要なIPアドレスがダミーとして紛れ込んでいたとしたらどうなるだろうか?
登氏によると、実際にイノセントIPとして利用したのは国内で存在するとあるサーバーであるとのことだったが、GoogleのパブリックDNSを利用した場合で、その効果を解説してくれた。
仮にイノセントIPとして「8.8.8.8」をVPN Gateのサーバーリストに紛れ込ませておいたとしよう。これに気づくことなく、当局のクローラーがリストを取得し、自動的にブラックリストに登録すると、大変なトラブルが発生する。
8.8.8.8をDNSとして設定していたユーザーは、ブラックリストのおかげで、ここへの通信が一切遮断され、インターネットを利用できないことになってしまう。
現実には、このようなIPアドレスは、大規模な影響が発生するだけでなく、当局もチェックしてはじきやすいためイノセントIPとして利用することはありえないと登氏は述べていたが、別のサーバーを登録して実験を行ったところ効果があり、当局にクロール結果を単純にブラックリストに登録するという運用をあきらめさせることに成功したという。
3)協調的スパイ検知
単純なクロール結果の登録をあきらめた当局が次に取ったVPN Gateへの対策は、ボランティアが運営するサーバーの個別の検知だ。
クロールによってボランティアサーバーのIPアドレスを取得すること自体は可能なのだから、リストのIPアドレスがボランティアサーバーなのか、それともイノセントIPなのかを確認し、ボランティアサーバーのIPアドレスだけを抽出してブラックリストに登録すればいい。
検知用のサーバーを用意し、ここからリスト上のIPアドレス宛てに接続を試みる。VPNサーバーとしての返答があればブラックリストに登録し、VPNサーバーとして返答がなければイノセントIPと判断して、ブラックリストからはじけばいい。
ここまで、当局の対応をすべて事前に折り込み済みだった登氏が実施した対策が、「協調的スパイ検知(Collaborative spy detection)」という方法だ。
当局がリストから接続を試みるのに利用するサーバーのIPアドレス(これをスパイIP呼ぶ)は、多少、変更されることはあっても、ほぼ共通している。
VPN Gateでは、詳しくは後述するが、不正利用の禁止なども想定し、ボランティアのサーバーに接続してきたクライアントのIPアドレスを中央サーバーで収集している。
このログを解析し、異常な接続パターンを発見するプログラムを実行することで、全世界に点在するボランティアのサーバーに対して、同じIPアドレスから頻繁にアクセスがあったり、短時間に接続と切断を繰り返すIPがある場合に、検知し、スパイ(当局のサーバー)であることを検知することができる。
すると、中央サーバーからスパイである可能性があるIPアドレスを各ボランティアのサーバーに対して配信し、万が一、このIPからアクセスがあった場合は、何も反応を返さないようにすることができる。
登氏によると、「何も反応を返さない」というのも意外に難しいとのことだが、こうすることでスパイIPから、ボランティアサーバーを検知しようと、総当たりで接続が繰り返されても、しばくらくすると、リスト上のどのIPアドレスからも反応がまったくなくなってしまう。
これにより、リスト上のIPアドレスが、稼働中のVPN Gateのサーバーなのか、前述したイノセントIPなのかを判断できないようにしているわけだ。
このように、VPN Gateでは、大きく3つの対策でグレートファイアウォールを事実上無効化することに成功している。
実際、サービス開始当初の2013年3月~4月にかけて、グレートファイアウォールに70%以上ブロックされていたVPN Gateのサーバーは、数々の対策によって、2013年9月以降はほぼ0%にまで減少したとのことだ。
登氏によると、実際のところはわからないが、おそらくVPN Gateへの対策をあきらめたのではないかとのことだ。VPN Gateの利用者は、前述したように中国で32000IP/1日。膨大な人口の中国からすれば、わずかなアクセスのために労力を払うよりは、他の対策に時間をかけた方がいいと判断したのではないかと推測できる。
また、ハードウェアの処理性能の限界の可能性も登氏は指摘する。こちらも詳細は不明だが、中国側が利用しているハードウェアは、検閲されていることを利用者に意識させないために、超高速な処理が可能になっているという。ブラックリストを参照してアクセスを瞬時に遮断するためのハードウェアの性能が、万単位のリストに対応しきれないのではないかとも予想される。
事実上、中国のグレートファイアウォールに勝利したというわけだ。
なお、詳しくは公開できないが、登氏によると、このさらに先の対策もすでに実施済みだという。協調的スパイ検知に対して、当局が次に取るであろう対策も予想済みで、その対策もすでに稼働しているという。常に先手先手の対策がなされているあたりは、さすがと言えるだろう。
ちなみに、このたりの攻防、具体的な対策の詳細については、USENIXでの登氏の講演で詳しく解説されている。英語のプレゼンだが、動画で内容を見ることもできるので、興味がある人はチェックしておくといいだろう(https://www.usenix.org/conference/nsdi14/technical-sessions/presentation/nobori)。
利用や実験参加には技術的興味とは別の判断が必要
さて、このように非常に面白いサービスのVPN Gateだが、実際に自らが利用したり、ボランティアとしてサーバーの提供に参加する場合は、サービスの中身について、理解することを心がけたい。
まず、利用する場合から見ていこう。国内からの場合、海外のIPアドレスでしか利用できないサービスを利用したり、フリーの公衆無線LANなどを利用する場合に通信を暗号化したいというニーズも考えられるが、おそらく海外旅行に行った際に利用するというケースが多いだろう。
使い方などについてはVPN GateのWebサイトを参照して欲しいが、利用時に注意しなければならないのは、接続先、つまりボランティアの人が所有しているサーバー上にログが記録されることを常に意識することだ。
ログには、日時や接続元のIP、プロトコル、さらにHTTP GETのURLなどが記録される。このログは、正当な目的以外での利用や漏洩が禁じられているが、善意のボランティアとは言え、見知らぬユーザーにログを把握されていることは常に意識する必要がある。
特にプレーンテキストでの通信は要注意だ。試しに、筆者が自宅で公開したサーバーに自分自信で接続し、マイクロソフトのOneDriveで共有した短縮URLにアクセスした際のログを確認してみたが、ファイル共有用のURLがはっきりと記録されていた。
OneDriveの場合、通常のURLはHTTPSで、短縮URLのみHTTP通信となるので、普段はHTTPSを利用すればいいのだが、第三者から、このURLが送られてきた際にうっかりVPN Gate経由でリンクを踏むと、ログとして記録されてしまう。
2014-05-21,16:55:32.653,SID-VPN-[SSTP]-2,SID-SECURENAT-1,CA757CD15E1B,00ACF66868F3,0x0800,308,TCP_DATAv4,PSH+ACK,10.211.1.1,53102,69.58.188.49,http(80),3207869299,3193358084,WindowSize=1024 HttpMethod=GET HttpUrl=http://1drv.ms/1l5tkOj HttpProtocol=HTTP/1.1 HttpUserAgent=Mozilla/5.0_(Windows_NT_6.3;_WOW64;_Trident/7.0;_rv:11.0)_like_Gecko,-
プレーンテキストの問題は、VPN Gateならではの問題というわけではなく、インターネットを利用する場合であれば、常に意識しなければならない問題ではあるが、こういった情報が接続先で保管されることを意識することは非常に重要だ。
「よくわからないが、VPNなら安全だろう」と思って利用することは避けて欲しい。
ちなみに、標準のログだけでなく、ボランティアがサーバー上でパケットキャプチャなどをしかけておけば、その情報もまるまる取得される可能性もある。善意の元に運営されているサービスだが、その相手が誰なのかわからないということも意識する必要があるだろう。
サーバー公開で帯域制限の可能性も
続いて、ボランティアとしてサーバーを公開する場合を見ていこう。この場合、意識しなければならないのはインターネット接続環境の帯域と不正利用への対応だ。
実際にサーバーを公開してみるとわかるが、日本のサーバーはとにかく人気が高い。回線品質は安定しているし、アクセス先の制限もないため、公開してしばらくすれば、接続が殺到する。
試しに、フレッツ光ネクストに接続したサーバーで、朝6:00~午後15:00まで稼働させてみたが、稼働直後から30セッションの接続が最後まで継続し、この約9時間で、合計13GBほどの転送量が発生した。
継続的に稼働させておくと、ISPによっては帯域制限の対象になる転送量で、ボランティアのために解放した回線から、自らが締め出されてしまうことになる。
前述した通り、利用規約によってログの情報を正当な理由なく利用したり開示することは禁じられているため、海外のユーザーがどこにアクセスしているかをここで紹介することはできないが、ざっくり言って、転送量のほとんどを占めるのは成人向けサイトへのアクセスだ。
これを知ってしまうと、急にボランティアとしてサーバーを公開することの意義を考えさせられてしまう。
登氏によると、今後、帯域制限など、ボランティアの方が選択できるアクセス制限の方式なども検討しているとのことだが、現状、どうしても制限したいのであれば自分で対策をするしかない。
たとえば、サーバーPCのLANポートの速度を落としたり、ISPが提供しているフィルタリングサービスを併用するという方法が考えられる。実際、筆者はLANポートの速度を10Mbpsに下げ、ぷららが提供しているネットバリアベーシックで特定のポートとURLへのアクセスを制限し、その旨をVPN Gateサーバー公開時のメッセージとして利用者に掲示してみた。
VPN Gateでは、サーバーにスコアを設定し、高速なサーバーほど高い順位に表示されるようになっているが、これとメッセージの効果か、平均的なセッション数を30から7~8の一桁へと減らすことができた。
また、ぷららのURLフィルタリングサービスはあまり優秀ではないのだが、それでも大量のポートを遮断したり、明らかに成人向けと思われるURLもいくつか遮断できるようになった。
VPN Gateのそもそもの発想が「自由なインターネット」の提供であることを考えると、ボランティアとして参加している側がアクセスを制限するというのは矛盾している。しかしながら、背に腹は代えられないといったところだ。
万が一の場合の覚悟も
一方、不正利用の可能性があることも頭にいれておく必要がある。同プロジェクトのWebページにも詳細に記載されている通り、ボランティアとして公開したサーバーを経由して、不正な書き込みをしたり、何らかの犯罪に利用される可能性は否定できない。
もちろん、同プロジェクトでは、そうならないようにするために、警察庁などと協力したり、どのようなルールでログを収集しているかといったルールを公開している。
しかし、自らが公開したサーバー経由で、何かが発生すれば、それと無関係でい続けることはできない。事情を説明しなければならないだろうし、ログや機器の提出などにも協力しなければならない。その覚悟だけは必要だ。
新しいテクノロジーは、常に、メリットと対になる面を持っている。現状のVPN Gateは、あくまでも学術的な実験であり、それに参加するかどうかはユーザー自らの判断にまかせられている。参加することのリスクについて、きちんと説明されているのだから、それをユーザーが理解して使うことが大前提となるだろう。
個人的には、前半で述べたようなテクノロジー対テクノロジーの対決というのは、ワクワクするものだし、ぜひ今後もサービスとして発展してほしいと考えているため、可能なかぎりボランティアとして協力していくつもりだ。
登氏には、今後とも、このVPN Gateというサービスをより多くのユーザーが参加できるような形で進化させてくれることを期待したいところだ。