Encryption

兩個密碼套件下面有什麼不同?

  • March 18, 2021

我有兩個問題;

  1. 我需要解釋以下兩個密碼套件的差異。
  2. 它們如何使用 SSL/TLS 協議?(我主要關心的第一個沒有 ‘ecdhe_rsa'部分)

tls_aes_128_gcm_sha256

tls_ecdhe_rsa_with_aes_128_gcm_sha256

不同之處在於tls_aes_128_gcm_sha256TLS 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 1.3,第 4.1.1 節,加密協商

在 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 密碼套件可能使用相同的原語,但協議有所不同(如本答案的初始部分所述)。

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