兩個密碼套件下面有什麼不同?
我有兩個問題;
- 我需要解釋以下兩個密碼套件的差異。
- 它們如何使用 SSL/TLS 協議?(我主要關心的第一個沒有 ‘
ecdhe_rsa'
部分)tls_aes_128_gcm_sha256
tls_ecdhe_rsa_with_aes_128_gcm_sha256
不同之處在於
tls_aes_128_gcm_sha256
TLS 1.3tls_ecdhe_rsa_with_aes_128_gcm_sha256
用於較舊的 TLS 1.2。第一個密碼套件沒有指定密鑰協商算法和身份驗證機制。這些可能會被使用,但它們是在 TLS握手的其他地方指定/配置的。TLS 1.3 基本上是 TLS-done-right;即使密碼套件的最後一部分匹配,這兩種協議也不兼容。但是,它可以使用相同的密鑰協議和身份驗證機制(因此可以使用相同的伺服器證書和密鑰)。
引用 OpenSSL:
SSL_CTX_set_ciphersuites()
用於為 ctx 配置可用的 TLSv1.3 密碼套件。這是一個簡單的冒號 (":") 分隔的 TLSv1.3 密碼套件名稱列表,按優先順序排列。有效的 TLSv1.3 密碼套件名稱為:TLS_AES_128_GCM_SHA256
好的,所以我們在這裡談論 TLS 1.3,讓我們看看那裡:
雖然 TLS 1.3 使用與之前版本的 TLS 相同的密碼套件空間,但 TLS 1.3 密碼套件的定義不同,僅指定對稱密碼,不能用於 TLS 1.2。同樣,TLS 1.2 及更低版本的密碼套件不能與 TLS 1.3 一起使用。
所以我們有兩個密碼套件,它們與使用的消息加密/身份驗證基本相同。但是,一種是針對 TLS 1.2 並且還指定了密鑰協議,而另一種是針對 TLS 1.3 並且僅指定了消息加密/身份驗證。
對於 TLS 1.3,未指定其他組件的原因是它們是在握手期間協商的。這使得 TLS 1.3 更加靈活,因為它似乎沒有在密碼套件中指定所有可能的組合。但是,您應該提醒自己,密碼套件遠不是唯一的配置參數。
…
在 TLS 中,加密協商由客戶端在其 中提供以下四組選項進行
ClientHello
:
- 指示客戶端支持的 AEAD 算法/HKDF 雜湊對的密碼套件列表。
- 一個“supported_groups”(第 4.2.7 節)擴展,指示客戶端支持的(EC)DHE 組,以及一個“key_share”(第 4.2.8 節)擴展,其中包含部分或所有這些組的(EC)DHE 共享。
- “signature_algorithms”(第 4.2.3 節)擴展,指示客戶端可以接受的簽名算法。還可以添加“signature_algorithms_cert”擴展(第 4.2.3 節)以指示特定於證書的簽名算法。
…
所以基本上 ECDHE 選項現在在
supported_groups
(TLS 1.3 需要 DH)並且 RSA 在 中signature_algorithms
(如果存在)。密碼套件中組件的簡短說明:
tls
:協議;ecdhe
: ephemeral-ephemeral elliptic curve diffie hellman for key agreement, 帶來安全性;rsa
:使用證書認證時的簽名算法(用於伺服器);aes-128-gcm
:塊密碼和密碼模式,以保持消息的機密性和身份驗證;sha256
:用於 PRF 的雜湊算法(用於密鑰派生)。請注意,對於 PRF,TLS 1.3 使用 HKDF 而不是 TLS 1.2 中基於 HMAC 的專有機制。因此,儘管您提到的 TLS 1.2 和 1.3 密碼套件可能使用相同的原語,但協議有所不同(如本答案的初始部分所述)。