本文概述 TLS 1.3。TLS 會傳輸一連串記錄。在加密之前,握手資料會由
TLSPlaintext 記錄承載;舊版記錄版本欄位是為了互通性而存在,TLS 1.3 對等端
不會使用該欄位協商通訊協定。在進行允許的擴充之前,記錄的內容大小上限為 2^14 位元組。
握手 #
用戶端傳送 ClientHello,其中包含隨機值、支援的加密套件、金鑰
共享、擴充功能及舊版工作階段 ID。其 legacy_version 為 0x0303;
supported-versions 擴充功能用於協商 TLS 1.3。目前的標準 AEAD 套件包括
搭配 SHA-256 或 SHA-384 的 AES-GCM 與 ChaCha20-Poly1305。
伺服器以 ServerHello 回覆,並選擇套件與金鑰共享。需要另一個可接受的
金鑰共享時,伺服器也可以改為傳送 HelloRetryRequest;接著用戶端會傳送
第二個 ClientHello,其中包含要求的變更。雙方從金鑰交換和握手轉錄內容
衍生握手流量祕密,使用 Finished 驗證握手,並衍生應用程式流量祕密。
使用憑證驗證時,伺服器會傳送 Certificate 和 CertificateVerify。
TLS 1.3 會加密 ServerHello 之後的握手訊息,並移除已淘汰的 RSA 金鑰
傳輸與靜態 DH 協商。憑證驗證仍不可或缺:用戶端會驗證通往受信任簽發者的
憑證鏈、主機名稱或服務身分、有效期限、金鑰用途、簽章演算法,以及相關的撤銷
政策。憑證授權單位在驗證 DNS 名稱或其他主體身分的控制權後簽發憑證;該憑證會將
該身分與公開金鑰繫結。
評論
在 GitHub 上閱讀或評論(發表評論需要登入)