uTLSとは何か?TLSフィンガープリントとRealityを解説
uTLSは、クライアントが自身のTLSハンドシェイクの形を厳密に制御し、本物のブラウザと一致させられるようにするライブラリです。検閲側がTLSハンドシェイクをフィンガープリント化してVPNクライアントを見つけ出せるために存在し、uTLSはそのフィンガープリントを通常のブラウザ通信と見分けがつかないものにします。
TLSハンドシェイクとフィンガープリント
すべてのHTTPS接続は、クライアントが対応する暗号方式、拡張機能、設定を列挙したHelloメッセージを送るTLSハンドシェイクから始まります。これらのフィールドの正確な順序と組み合わせがフィンガープリントを形成します。Chrome、Firefox、あるいはVPNライブラリといったソフトウェアごとに、観察者が一目で認識できる異なるパターンが生成されます。
JA3がVPNクライアントを暴く仕組み
JA3は、TLS Client Helloの詳細をハッシュ化して短いシグネチャにする手法です。検閲側やファイアウォールは、VPNやプロキシツールに属するJA3ハッシュのリストを保持しています。あなたのハンドシェイクが既知のVPNフィンガープリントを生成すると、通信自体が完全に暗号化され、宛先が無害に見えても、接続は即座にブロックされてしまいます。
uTLSが実際に行うこと
標準的なTLSライブラリは、それぞれ識別可能な独自のHelloメッセージを生成します。uTLSはその代わりに、選んだブラウザ(たとえば最新版のChrome)とバイト単位で完全に一致するハンドシェイクをアプリケーションに送信させます。結果として生成されるJA3フィンガープリントは数百万人の実在ユーザーと一致するため、検閲側は正当なブラウザまで巻き添えにブロックしない限り、それを特定できません。
RealityとXrayの内部でのuTLS
Xrayコアにおいて、VLESS Realityは実在するウェブサイトに向けた説得力のあるハンドシェイクを偽装するためにuTLSを利用します。検閲側には、ブラウザと完璧に一致するフィンガープリントを持つ、人気ドメインへの通常のTLS接続に見えます。その後Realityは、認証されたクライアントを密かにプロキシへリダイレクトし、認証されていない探査は本物のサイトへそのまま通過させます。
フィンガープリントが重要な理由
DPIが高度化するにつれ、TLSフィンガープリントを一致させられるかどうかが、安定した接続と即時ブロックの分かれ目になることがしばしばです。プロトコルが完璧に暗号化されていても、そのハンドシェイクが異質に見えれば失敗する可能性があります。uTLSはそのギャップを埋めるものであり、だからこそ検閲耐性ツールの中核的な構成要素となっているのです。
VeepenはXrayを基盤に、VLESS RealityとuTLSを用いて、Android・Android TV上であなたのハンドシェイクを本物のブラウザのように見せます。タップひとつで接続でき、@veepen_vpnに参加すればプロトコルの改善情報を追えます。