政府はどのようにVPN通信を検出するのか、暗号化だけでは隠せない理由

自宅では問題なく使えるVPNが、国家規模のファイアウォールを持つ国に着いた途端に使えなくなることがあります。暗号化の強度が変わったわけではありません。AESが破られたわけでも、WireGuardの鍵が解読されたわけでもありません。トンネルは前日と同じ安全性を保っているにもかかわらず、数分でブロックされてしまいます。

その理由は、VPNが隠すのは送信する内容であり、VPNを使っているという事実ではないからです。検閲側は、通信を止めるために中身を読む必要はありません。接続を開始するハンドシェイク、パケットのサイズとタイミング、サーバーのIPアドレスの評判、第三者が接続を試みた際のサーバーの応答など、通信の周辺情報をすべて読み取ります。VPN通信の検出は暗号強度ではなくシグナルをめぐる攻防であり、国家ファイアウォールの構築者はそのシグナルの読み取りに非常に長けてきています。

低コストから高コストまで、検出手法の重層構造

ネットワーク事業者は単一の手法に頼りません。手法を重ね、通常は最も低コストなものから始めて、予算や動機に応じてコストの高い手法を加えていきます。

  • IPレピュテーションとブロックリスト。最も単純なのは、VPNサーバーが置かれているアドレスをブロックする方法です。商用VPNは数千台のサーバーを運用していますが、それらは既知のデータセンターのアドレス帯にあり、IPインテリジェンスのデータベースがどのアドレスがどの事業者のものかを追跡しています。動画配信サービスや銀行サイトもこの層に依存しており、パケットを1つも検査しないWebサイトがVPNを「検出」できるのはこのためです。
  • ポートとプロトコルのブロック。多くのネットワークは、想定外のポートの通信を単純に破棄したり、UDPを丸ごとブロックしたりします。OpenVPNの既定はUDPポート1194で、WireGuardには必須のポートはなくUDPを使用します。ネットワーク制限を通過するため、通信を追加のトランスポート内に載せるプロバイダーもあります。VPNをHTTPSで使われるTCPポート443に移せば、基本的なポートフィルターは通過できます。ただし、これは偽装ではありません。ポート443が示すのは通信の宛先であり、通信の種類ではないからです。
  • ディープパケットインスペクション(DPI)。DPIは通信の構造を調べるもので、主要なVPNプロトコルは容易に識別できます。WireGuardのハンドシェイクは固定のメッセージタイプとサイズを使い、開始メッセージは常に148バイト、応答は常に92バイトです。OpenVPNもパケットヘッダーに特徴的なパターンを残します。
  • USENIX Security 2022の論文では、研究者らが受動的なトラフィック分析とアクティブプロービングを組み合わせました。約100万人のユーザーにサービスを提供するISPと協力し、誤検知をほぼ出さずにOpenVPNのフローの85%超を特定しています。この手法は、検証した41種類の難読化VPN構成のうち34種類を使った接続も特定しました。
  • TLSフィンガープリンティング。多くの回避ツールは、通常のHTTPSに見せかけるため通信をTLSで包みます。しかしTLSハンドシェイクにも固有の指紋があり、提示される暗号スイート、要求される拡張、その順序に表れます。Chromeブラウザ、Pythonスクリプト、VPNクライアントは、それぞれ異なる方法でハンドシェイクを組み立てます。ブラウザを想定しているファイアウォールが別のものを見つければ、より詳しく調べる理由になります。

アクティブプロービングでは、検閲側が疑わしいサーバーに追加の接続を行い、その応答を調べます。サーバーがプロキシではないかと疑った場合、検閲側は自らそのサーバーに接続してテスト通信を送り、反応を確認します。

本物のWebサーバーであれば、Webサーバーとして応答します。一方、作りの甘いプロキシは、応答が止まったり、接続をリセットしたり、通常のWebサイトならあり得ない反応を返したりすることがあります。中国のグレートファイアウォールは、隠されたTorブリッジやShadowsocksサーバーを見つけるため、長年にわたりアクティブプロービングを使ってきました。

各層はそれぞれ異なる手がかりを探すため、1つの問題を直しても全体の解決にはなりにくいのが実情です。ポート443への移行はポートフィルターには有効ですがDPIには通用せず、クリーンなIPアドレスはブロックリストには有効ですがプロトコルのフィンガープリントには通用しません。

ポート変更や難読化の有効化といった選択肢の実践的な解説としては、VPNを検出されにくくする方法を扱ったこのガイドが一般的なアプローチを紹介しています。ただし、その効果は、ネットワークが接続をどう識別しブロックするかによって左右されます。

長年、DPIを回避するための定番の対策は、通信を「何でもないもの」に見せることでした。Shadowsocks、VMess、obfs4などのプロトコルは、ハンドシェイクを含むすべてのバイトを暗号化します。そのため通信は一様なランダムノイズに見え、照合できるヘッダーやフィンガープリントがありません。

2021年11月、中国のグレートファイアウォールはこの発想を覆しました。グレートファイアウォールが完全暗号化通信をどう検出しブロックしているかを調べたUSENIX Security 2023の研究によると、検閲側はこうしたプロトコルを直接識別しようとするのをやめていました。代わりに、完全暗号化とは考えにくい通信を除外する単純で低コストなルールを用い、それ以外をすべて疑わしいものとして扱っていたのです。

CompareSecurity

このシステムは、TLSやHTTPなど既知のプロトコルに似た通信や、その他の除外ルールを満たす通信を通過させていました。ルールが調べていたのは、最初のTCPデータパケットにおけるセットされたビットの割合と、表示可能なASCII文字の数と位置です。除外の条件を満たさない接続は、ブロックの対象になり得ました。

研究者らの測定では、ブロックは特定のホスティング事業者のIPレンジに集中しており、条件に該当する接続がブロックを引き起こす確率は約26%でした。これとは別に、推定した検出ルールを大学のネットワークトラフィックに適用すると、TCP接続の約0.6%がブロック対象に分類される結果となりました。このシミュレーションでは、ファイアウォールが実際に行う宛先レンジやサンプリングによる制限は適用していません。

回避ツールを設計・利用する側にとって、この教訓は厄介なものです。ランダム性そのものがシグナルになるのです。ほぼすべての通信が識別可能なハンドシェイクで始まるインターネットでは、何もない状態で始まる接続はかえって目立ちます。

回避ツールはどう適応したか

対応策は、「何でもないもの」に見せるのをやめ、「ありふれた何か」に見せることでした。

  • TLSの模倣。現在では多くのVPNプロバイダーが、通常のHTTPSセッションに似せた通信でトンネルを包む「ステルス」または難読化プロトコルを提供しています。2022年10月に登場したProton VPNのStealthプロトコルは、TCP上で難読化したTLSトンネリングを使います。Protonは、DPIがどのポートでもVPNのハンドシェイクを認識できるため、単にポート443でVPNを動かすより検閲耐性が高いと説明しています。さらに進んで、実在する人気サイトのTLSアイデンティティを借用し、アクティブプローブに対しても正当に見える応答を返すツールもあります。
  • WireGuardを置き換えず、包む。WireGuardは高速で監査も十分に行われていますが、固定のハンドシェイクのため見つけやすいという弱点があります。プロバイダーはWireGuardを捨てる代わりに、他のトランスポートで包んでいます。2026年1月15日にOpenVPNのサポートを終了したMullvadは、現在、QUICやShadowsocksなど他のプロトコル上でWireGuardを運ぶ検閲対策手法に依存しており、ネットワークから見えるのは内側のWireGuardのハンドシェイクではなく外側のラッパーになります。
  • 従来の難読化の見直し。2021年の調査結果は、特に素のShadowsocksの位置づけを変えました。ポートのフィルタリングやプロトコルシグネチャの照合しか行わないネットワークでは今も有用ですが、グレートファイアウォールのエントロピールールが働くネットワークでは事情が異なります。これらの調査結果は、従来型のプロトコルシグネチャがなくても素のShadowsocksがブロックされ得る理由を示しています。TLSの模倣は別のアプローチになりますが、その効果は実装とネットワークの検出ルールに左右されます。

これらの手法に恒久的なものはありません。いずれも検閲側が現在頼っているシグナルを1つ取り除きますが、検閲側が新たなシグナルを見つけるきっかけにもなります。

企業やキャンパスのネットワークでも同じ手口が使われる

注目を集めるのは国家規模のファイアウォールですが、同じ仕組みを縮小した形のものが、オフィスや大学のネットワークで日常的に動いています。次世代ファイアウォールは、ポートではなく挙動でアプリケーションを識別し、DPIで既知のVPNプロトコルを検知し、ゲストWi-Fiではデータセンターのアドレス帯をブロックします。

セキュリティチームにとって、これは諸刃の剣です。ファイアウォールが許可されていないVPNを発見できる可視性は、復号しなくてもネットワークが暗号化通信についてどれだけ推測できるかを示すものでもあります。ユーザーにとっては、「VPNがつながった」ことは「VPNが気付かれなかった」ことを意味しません。接続が許可されても、VPN通信として記録される可能性があります。

VPNの利用を制限または禁止している国もあり、そうした国でVPNを隠すことは、接続を失う以上の法的な結果を招く可能性があります。企業や学校のネットワークでは、法律に違反しなくても、制限を回避すること自体が利用規定違反になり得ます。

実務面では、潤沢な資金を持つ検閲側はルールを絶えず更新します。今週うまくいった設定が来週には通用しなくなることもあり、ネットワーク事業者が検出に投じるリソースが多いほど、その猶予期間は短くなります。

まとめ

VPNの検出は、暗号を破ることではありません。暗号化が露出させたままにしているもの、つまりアドレス、ポート、ハンドシェイク、エントロピー、プロービングに対する挙動を読み取ることです。グレートファイアウォールによる完全暗号化通信への対応は、検閲側がわずかな低コストのヒューリスティックによって、プロトコルの最大の強みを弱点に変えられることを示しました。

この環境で生き残るツールは、通常の通信から隠れるのではなく、そこに溶け込むものです。検閲側がシグナルを増やし、ツールの開発側がそれを取り除き続ける限り、この攻防は続きます。そして戦場となるのは数学ではなく、メタデータです。

VPNは接続の内容を保護できますが、ネットワークが接続を識別したりブロックしたりするのに十分な情報は見えたまま残ります。難読化はそうしたシグナルの一部を減らせますが、接続に成功したからといって、VPNの利用が検出されなかったことの証明にはなりません。

翻訳元: https://hackread.com/how-governments-detect-vpn-traffic-encryption/

本記事は hackread.com の記事を翻訳・要約したものです。