ミシガン大学の研究者グループは、トランジットトラフィックを監視する際に、OpenVPN ベースのサーバーへの接続を識別 (VPN フィンガープリンティング) できる可能性に関する研究結果を発表しました。その結果、トラフィック検査システムで OpenVPN ベースの仮想ネットワークをブロックするために使用できる他のネットワーク パケットの中から OpenVPN プロトコルを識別するための 3 つの方法が特定されました。
85 万人以上のユーザーを抱えるインターネット プロバイダー Merit のネットワーク上で提案された方法をテストしたところ、OpenVPN セッションの 20% を低レベルの誤検知で識別できることがわかりました。テストのために、最初にパッシブ モードで OpenVPN トラフィックをオンザフライで検出し、次にアクティブ サーバー チェックを通じて結果の正確さを検証するツールキットが準備されました。約 XNUMX Gbps の強度のトラフィック フローが、研究者が作成したアナライザーに反映されました。
実験中、アナライザーは、1718 の異なる典型的な OpenVPN 構成を使用した、不正なクライアントによって確立された 2000 のテスト OpenVPN 接続のうち 40 を正常に識別することができました (この方法は、39 の構成のうち 40 で正常に機能しました)。さらに、実験の 3638 日間で、トランジット トラフィックで 3245 の OpenVPN セッションが確認され、そのうち XNUMX のセッションが確認されました。提案された方法における誤検知の上限は、機械学習の使用に基づいて以前に提案された方法よりも XNUMX 桁低いことに注意してください。
これとは別に、商用サービスにおける OpenVPN トラフィック追跡保護手法のパフォーマンスが評価されました。OpenVPN トラフィック隠蔽手法を使用してテストされた 41 の VPN サービスのうち、34 のケースでトラフィックが特定されました。検出できなかったサービスは、トラフィックを隠すために OpenVPN に加えて追加のレイヤーを使用していました (たとえば、追加の暗号化されたトンネルを介して OpenVPN トラフィックを転送しました)。識別に成功したサービスのほとんどは、XOR トラフィックの歪み、適切なランダム トラフィック パディングのない追加の難読化レイヤー、または同じサーバー上の難読化されていない OpenVPN サービスの存在を使用していました。
関連する識別方法は、暗号化されていないパケット ヘッダー、ACK パケット サイズ、およびサーバー応答の OpenVPN 固有のパターンへのバインディングに基づいています。最初のケースでは、パケットヘッダーの「opcode」フィールドへのバインディングは、接続ネゴシエーション段階での識別用のオブジェクトとして使用できます。これは、固定範囲の値をとり、接続に応じて特定の方法で変化します。セットアップ段階。識別は、結局のところ、フローの最初の N パケット内のオペコード変更の特定のシーケンスを識別することになります。
2 番目の方法は、OpenVPN では ACK パケットが接続ネゴシエーション段階でのみ使用され、同時に特定のサイズを持つという事実に基づいています。識別は、特定のサイズの ACK パケットがセッションの特定の部分でのみ発生するという事実に基づいています (たとえば、OpenVPN を使用する場合、最初の ACK パケットは通常、セッションで送信される 3 番目のデータ パケットです)。
3 番目の方法はアクティブ チェックであり、接続リセット要求に応答して、OpenVPN サーバーが特定の RST パケットを送信するという事実によるものです (OpenVPN サーバーが「tls-auth」モードを使用している場合、このチェックは機能しません) TLS 経由で認証されていないクライアントからのリクエストは無視されます)。
出所: オープンネット.ru