Symmetric

TLS 使用什麼對稱算法?

  • March 2, 2021

所以我對 TLS 的理解是它使用非對稱加密技術(例如 DH)來執行密鑰交換,一旦發生這種情況,它就會使用對稱算法進行數據交換。(顯然我在這裡遺漏了很多細節,可能有點不准確,但我認為這通常是高層次的想法?)

我的問題是一旦發生密鑰交換,使用什麼對稱算法?AES?或者它是特定於實現的?還是開發者偏好???

我的問題是一旦發生密鑰交換,使用什麼對稱算法?

好吧,這是在客戶端和伺服器之間協商的(並且協商與密鑰交換一起進行)。

TLS 1.2 有一個相當長的對稱算法列表,客戶端和伺服器可以從中選擇;在 TLS 1.3 中,他們對其進行了大幅削減,目前的選項是 AES-GCM、ChaCha20/Poly1305 和 AES-CCM。

在 TLS握手期間協商用作保持消息機密性的密碼的流或塊算法。它是所謂的密碼套件的一部分。在握手的“Client Hello”消息期間發送密碼套件列表,之後伺服器在“Server Hello”初始消息期間選擇其中一個。

如今,它們通常用於經過身份驗證的操作模式,例如 AES-GCM(其中 AES 是分組密碼,而 GCM 模式定義了它的使用方式以及消息的身份驗證方式)或 ChaCha20/Poly1305(其中 ChaCha20 是流密碼和Poly1305 表示如何計算認證標籤)。

密碼套件字元串的外觀取決於 TLS 協議版本;例如,您需要TLS_ECDHE_RSA_AES_256_GCM_SHA384TLS 1.2 和TLS_AES_256_GCM_SHA384TLS 1.3 來進行類似操作。請注意,實際上這些密碼套件在握手本身中使用兩個字節表示;密碼套件字元串通常僅用作應用程序中的常量或應用程序的配置選項。

請注意,AES_256 顯然與 AES-256 相同,即具有 256 位密鑰大小(和 14 輪操作)的 AES。另請注意,不幸的是,OpenSSL 也允許他們自己的密碼套件字元串來辨識相同的密碼套件。

引用自:https://crypto.stackexchange.com/questions/88570