要約
- 2018年8月のRFC 8446では、TLS 1.3の実際の版を
supported_versions拡張で交渉する。legacy_versionにはTLS 1.2の番号0x0303が残るため、その欄だけでは接続の版を判定できない。 - TLS 1.3対応サーバーがTLS 1.2を選ぶとき、
ServerHello.randomの末尾8バイトは44 4F 57 4E 47 52 44 01となる。TLS 1.1以下なら末尾は00。TLS 1.3クライアントは古い版の応答でこの印を見たら握手を中止しなければならない。 - 2015年のRFC 7507は別の経路を扱う。クライアントが低い版で再試行するとき
TLS_FALLBACK_SCSVを付け、より高い版を扱えるサーバーが不適切な後退を拒否する。IANAはその値と警報を登録している。
門に掛けた古い番号
TLS 1.3の通信でもServerHello.legacy_versionだけ読めば、TLS 1.2だと誤報する。RFC 8446はそこに0x0303を置き、真の選択をsupported_versionsに移した。「legacy」という名前が、その欄の役目を示している。古い形式を維持するための数字であり、終端同士が実行する暗号方式の記録ではない。監視装置が名札だけを信じれば、安全状態の台帳が最初から間違う。
旧番号が必要だった理由は、通信路の中にあった。古い握手の形を覚えた中間機器の一部が、新しい形を見て通信を壊した。RFC 8446の付録D.4は、その機器を通しやすくする互換モードを記す。クライアントは空でないセッションIDを入れ、ダミーのChangeCipherSpecが現れることもある。終端が拡張でTLS 1.3を選んだなら、暗号通信の本体はTLS 1.3だ。古い衣装は途中の機器に向けられている。
その機器は、暗号の当事者でないまま事実上の拒否権を持った。知らない握手を落とすだけで、新版の設計に古い外見を要求できたからだ。標準は通信の見え方で折り合いをつけた一方、版を選ぶ権限を中間機器へ渡さなかった。どの欄が見えるかと、どの欄が終端の決定を表すかは別の問いになる。
最後の8バイトが知らせること
外見の問題とは別に、経路上の攻撃者が両端を古い版へ押し戻す可能性がある。TLS 1.3対応サーバーがTLS 1.2を交渉した場合、ServerHello.randomの末尾8バイトに44 4F 57 4E 47 52 44 01を入れなければならない。TLS 1.1以下なら最後を00にする。先頭の7バイトをASCIIで読むとDOWNGRD。最後の1バイトが下がった版の範囲を示す。
TLS 1.3クライアントは古い版を示すServerHelloを受けたとき、両方の印を調べる。一致すればillegal_parameterで握手を止める。新しい版を扱えるサーバーが、実際には古い版へ落ちたと分かるからだ。旧版で接続できたというだけでは、互いに使えるはずの新版を使わなかった理由は説明できない。
警報には限界も明記されている。RFC 8446はFinishedのやり取りに加わる限定的な保護と説明する。一時鍵を使う暗号群では旧版の署名が両端の乱数を守るが、静的RSAでは同じ保護は得られない。既存のTLS 1.2実装の多くも新しい印の規則に従わないだろうと記す。8バイトは、サーバーが書き込み、クライアントが読む場所で初めて警報になる。
再試行から来たもう一つの合図
2015年のRFC 7507は、クライアント側の別の後退を扱った。握手が失敗すると、互換性を求めて低い版で再試行するクライアントがある。攻撃者が失敗を作れば、その再試行を誘導できる。クライアントはTLS_FALLBACK_SCSVを添え、サーバーがもっと高い版を扱えるならinappropriate_fallbackで拒否する。IANAのTLS登録表には値と警報が残る。
2015年の印は低い版で再試行するクライアントから出る。2018年の印は新しい版を扱えるサーバーの乱数に入る。それぞれ異なる時点で異なる当事者の知識を示す。二つを一つの「降格防止」として片付ければ、誰がいつ上位版の可能性を知っていたかが消える。
旧い衣装の持ち主
付録D.4は、配備済みの設備が新版の外見を左右した記録だ。TLS 1.3は途中の機器に見慣れた姿を見せた。乱数の末尾には別の線を引いた。外見上の譲歩を、強制的な降格への同意にしてはいけない。終端は版の決定権を保ち、クライアントには低い版を選んだ能力あるサーバーの痕跡を渡した。
公式文書は規則と登録を示す。特定の通信で互換モードや警報が使われたかを確かめるには、日付のあるパケット記録と両端の実装記録が要る。2018年の設計は十分に具体的だ。TLS 1.3は真の版を拡張に置き、門前には旧番号を残し、能力あるサーバーが後退するときは乱数の末尾に警報を付けた。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
ストラテジックサークル限定
ストラテジックサークル
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
ストラテジックサークルに参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加





