Encryption
在 TLS 1.3 連接中,客戶端和伺服器如何選擇相互密碼套件?
根據KeyCDN,TLSv1.3 連接是在一次往返中建立的:
雖然 TLS 1.2 需要兩次往返才能完成 TLS 握手,但 1.3 只需一次即可完成工作
如果是這種情況,那麼客戶端的第一條消息(在 TCP 握手之後)必須包含伺服器進行對稱加密所需的所有內容,包括密鑰和密碼套件。這意味著客戶端必須在沒有來自伺服器的任何輸入的情況下選擇一個套件。
客戶端如何確保選擇伺服器支持的密碼套件?
客戶端沒有 - 伺服器現在選擇密碼套件。客戶端現在發送支持的客戶端套件,伺服器可以進行選擇。幸運的是,TLS 1.3 的密碼套件並不多,因為伺服器可能有一個較短的列表(請注意,每個密碼套件只需要兩個字節)。
類似地,由於密鑰協商只有 DHE 和 ECDHE,因此“猜測”密鑰協商協議相對容易。伺服器很可能同時支持兩者 - 否則它只會花費另一個往返和密鑰對生成。
可以在此處找到更好的解釋,清楚地表明在客戶端/伺服器之間的通信的哪個步驟發送了什麼。請注意,這裡的“密鑰共享”不是加密密鑰,它只是生成的臨時密鑰對的公鑰。