TLS1.3は従来のTLS1.2までと何が共通なのか


RFC8446(Google翻訳)として標準化されたTLS1.3は、従来のTLS1.2とは大幅に異なるプロトコルになってしまいました。とはいえ、TLSはTLSですし、httpsとして使う分には、エンドユーザーにバージョンの違いを意識させない程度には共通性があります。本稿では、TLS1.2と1.3で変わっていない点にスポットを当ててみたいと思います。

証明書はそのまま使えます。

サーバ証明書、クライアント証明書は従来のものがそのまま使えます。Static Diffie-Hellman形式の証明書が使えなくなりましたが、これを使っている人は多分ほぼいないと思われるので無問題と思ってよいでしょう。

ClientHelloメッセージはあります。

サーバがTLS1.3に対応していなければTLS1.2以前のプロトコルにフォールバックするわけですので、ClientHelloのメッセージ形式はTLS1.2以下と互換性を取ってあります。ただし、SSL2.0互換型式は使えません。

ClientHelloメッセージのProtocolVersion値は、TLS1.2と同じ0x0303です。

こんなところでTLS1.2と共通でも困るんですがねという気がしますが、ClientHelloのProtocolVersionでTLS1.2と1.3の区別ができません。TLS1.3では新設された「supported_versions拡張」を使ってバージョン番号を見分けます。

DPI (Deep Packet Inspection) でTLSのハンドシェイクを見ている場合の対応がかなり大変そうな気がしてきましたが、まあ何というか、幸運を祈ります。

サイファースイートという概念はあります。

ただし、中身は変わりました。TLS1.2以前用のサイファースイートは1.3以上では使えませんし、TLS1.3用に新設されたサイファースイートはTLS1.2以前では使えません。TLS1.2以前と1.3で互換性を取るには、ClientHelloのCipherSuiteフィールドにTLS1.2以前用とTLS1.3用の両方のサイファースイートを書き並べる必要があります。

TLS1.3対応のサイファースイートはRFC8446 Appendix B.4に記載されている5種類です。

拡張という概念もあります。

TLS1.2以前用と共通の拡張がかなり使えます。RFC8446 Section 4.2に一覧表があります。
IANAの一覧表に「TLS1.3」列が追加されました。「-」となっている項目はTLS1.3では使えません。CHとかEEとかの記号の説明は、RFC8446 Section 4.2に準拠します。

EAP-TLSは策定中です。

IEEE802.1XでRADIUSでエンタープライズな人向けに、TLS1.3版EAP-TLSがインターネットドラフトdraft-ietf-emu-eap-tls13(Google翻訳)として策定作業中です。標準化までもうしばらくお待ちください。

以上!それ以外は何もかもが違います。

リファレンス

E. Rescorla (2018)
The Transport Layer Security (TLS) Protocol Version 1.3
https://tools.ietf.org/html/rfc8446 (Google翻訳)

Using EAP-TLS with TLS 1.3
https://tools.ietf.org/html/draft-ietf-emu-eap-tls13-08 (Google翻訳)

Transport Layer Security (TLS) Extensions
https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml