本文へスキップ
ecdsa.com

ダウングレード保護

強いプロトコルバージョンやアルゴリズムに対応している二者を、攻撃者がより弱いものへ切り替えさせることを防ぐ仕組みで、ServerHello.random に入る TLS 1.3 のセンチネル値などがあります。
別表記downgrade attack protectionDOWNGRD sentinelTLS_FALLBACK_SCSV

古いバージョンをネゴシエートする TLS 1.3 サーバーは、ServerHello.random の末尾 8 バイトを、TLS 1.2 の場合は 44 4F 57 4E 47 52 44 01(ASCII の DOWNGRD に 0x01 を付けたもの)に、TLS 1.1 以下の場合は …00 に設定しなければなりません。これを受け取った TLS 1.3 クライアントは、ハンドシェイクを中止しなければなりません(RFC 9846 §4.2.3)。サーバーランダムはサーバーの署名の対象に含まれるため、攻撃者はこの値を取り除けません。

それ以前からある対策には、低いバージョンで再試行するブラウザーの動作(POODLE の時代)に対抗する TLS_FALLBACK_SCSV シグナリング値(RFC 7507)と、ネゴシエートされたパラメーターの改ざんを検出する Finished 内のハンドシェイクトランスクリプトハッシュがあります。TLS 1.2 では、サーバーが弱い選択肢をまだサポートしていたため、輸出グレードの鍵交換や RSA 鍵交換へのダウングレード(FREAK、Logjam)が成功しました。本当の対策は、それらを無効にすることです。

同じ考え方はほかの場面にも当てはまります。HSTS と MTA-STS は HTTPS や STARTTLS から平文へのダウングレードを防ぎます。また、ハイブリッド鍵交換は、ピアがポスト量子の部分を取り除けるものであってはならず、そのために 1 つのグループとしてネゴシエートされます。

規格と参考文献

すべての用語