このページの目次
プロキシプロトコルの比較
プロキシプロトコルの進化は、検閲と検閲回避の軍拡競争を反映している——ShadowsocksのAEAD暗号化がDPI(ディープ・パケット・インスペクション)で検出された後、TrojanはHTTPSを装い、VLESS+REALITYは実在するウェブサイトを装い、Hysteria2はQUIC上でTLSフィンガープリントを排除した。世代ごとに、プロキシトラフィックを通常のトラフィックと見分けにくくしている。
概要
プロキシプロトコルの進化は、検閲と検閲回避の軍拡競争を反映している。Shadowsocks(2012)はAEAD暗号化で検閲を回避したが、後にDPIで識別された。Trojan(2019)は標準的なHTTPSを装い、見分けが難しい。VLESS+REALITY(2023)は実在するウェブサイト(microsoft.com)を装い、能動探査では無効化される。Hysteria2(2024)はQUIC上でTLSフィンガープリントを排除し、現在最も検出が困難である。
プロトコルスタックの概要
| 伝送 | 暗号化 | 偽装 | マルチプレクス | 検閲回避 | |
|---|---|---|---|---|---|
| HTTP CONNECT | TCP | なし | なし | なし | 極めて低い |
| SOCKS5 | TCP/UDP | なし | なし | なし | 極めて低い |
| Shadowsocks | TCP/UDP | AEAD (AES/ChaCha) | 任意の obfs | mux (smux) | 低い (AEAD は識別可能) |
| VMess | TCP | AEAD | 任意の obfs | mux | 中程度 |
| Trojan | TCP+TLS | TLS | HTTPS を装う (CDN フォールバック) | mux | 中高 (TLS ハンドシェイクで探査可能) |
| VLESS+REALITY | TCP+TLS | TLS+XTLS Vision | 実在するウェブサイトを装う (microsoft.com) | mux (XUDP) | 高い (能動探査では無効) |
| Hysteria2 | UDP (QUIC) | QUIC+TLS 1.3 | salamander obfs (フィンガープリント対策) | QUIC ネイティブ | 極めて高い (TLS フィンガープリントなし) |
各プロトコルの設計ポイント
Shadowsocks → AEAD フィンガープリントの問題
Shadowsocks の AEAD 暗号 (AES-128-GCM) は、ハンドシェイク段階で生成される暗号文に固定パターン (salt + encrypted payload) を持つ。GFW は能動探査(Shadowsocks ハンドシェイクを送信し、特定のサイズの応答を期待する)によって識別できる。2020年以降、大量の Shadowsocks サーバーがブロックされた。
VMess → カスタムプロトコル
標準的な TLS ではなく、独自のカスタム暗号プロトコルを使用する。GFW は DPI によって VMess のトラフィック特徴(TLS ではない暗号化データストリーム)を識別する。WebSocket + CDN 中継を組み合わせることで、難読化が可能である。
Trojan → TLS 偽装
Trojan は HTTPS を模倣する:ハンドシェイク段階は標準的な TLS であり(SNI は正常なウェブサイトを指す)、GFW は「通常の HTTPS 接続」として認識する。しかし、能動探査(GFW が ClientHello を送信 → Trojan サーバーが異常な Certificate を返す)によって識別される可能性がある。
VLESS+REALITY → 完全な偽装
VLESS は UUID 検証を削除し、TLS+XTLS Vision によって暗号化とフロー制御を提供する。REALITY は TLS ハンドシェイクを実在するウェブサイト(例:www.microsoft.com)へのアクセスとして偽装する:
Hysteria2 → フィンガープリントのない QUIC
QUIC 自体には識別可能な TLS フィンガープリントがない(TCP+TLS の固定バイトパターンとは異なる)。Hysteria2 は salamander obfs を追加し、QUIC パケットのヘッダーを難読化することで、QUIC 標準に一致しなくなり、QUIC detector による識別を不可能にする。
参考
- REALITY: github.com/XTLS/REALITY
- Hysteria2: v2.hysteria.network/docs
- mihomo: wiki.metacubex.one/config/proxies
キーワード: Shadowsocks, VMess, Trojan, VLESS, REALITY, Hysteria2, AEAD, obfs, salamander, QUIC フィンガープリント