本文へスキップ
ecdsa.com

ECH(Encrypted Client Hello)

本来の ClientHello をサーバー名も含めて DNS で公開された鍵で暗号化し、ネットワークからは共有の公開名しか見えないようにする、RFC 9849 で定義された TLS 1.3 の拡張です。
別表記ECHEncrypted ClientHelloESNIRFC 9849

サーバーの運営者は、ECH 設定(HPKE の公開鍵、公開名、パラメーター)を DNS の HTTPS レコードの ech パラメーターで公開します(RFC 9460 を土台とする RFC 9848)。クライアントは公開名(たとえば CDN の汎用ホスト)宛ての外側の ClientHello を送り、暗号化した内側の ClientHello を拡張 0xfe0d に入れて運びます。サーバーはそれを復号し、内側のパラメーターで処理を続けます。鍵が古い場合、サーバーは新しい鍵を返し、クライアントは再試行します。

ECH で何かを隠せるのは、多くのサイトが同じプロバイダーを共有し、DNS の名前解決自体も保護されている(DoH または DoT)場合だけです。そうでなければ、HTTPS レコードのクエリから名前がわかってしまいます。Cloudflare は 2023年に ECH を広く有効にしました。Firefox はバージョン 119 から(DNS over HTTPS と組み合わせて)デフォルトで使用しており、Chrome はバージョン 117 で展開を始め、nginx などのサーバーもその後対応しました。SNI に頼ってフィルタリングしているネットワークはその可視性を失うため、一部の企業は ECH をブロックしています。

規格と参考文献

すべての用語