Openssl

openssl密碼套件的解釋

  • August 5, 2019

我正在尋找有關 openssl 中可用密碼套件的詳細說明。

openssl 已經提供了可用於輸出的 ciphers 命令,例如:

$ openssl ciphers -v "HIGH,-SHA,-AES256"
DH-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH/DSS   Au=DH   Enc=AESGCM(128) Mac=AEAD
DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=DSS  Enc=AESGCM(128) Mac=AEAD
DH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH/RSA   Au=DH   Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA256
DHE-DSS-AES128-SHA256   TLSv1.2 Kx=DH       Au=DSS  Enc=AES(128)  Mac=SHA256
DH-RSA-AES128-SHA256    TLSv1.2 Kx=DH/RSA   Au=DH   Enc=AES(128)  Mac=SHA256
DH-DSS-AES128-SHA256    TLSv1.2 Kx=DH/DSS   Au=DH   Enc=AES(128)  Mac=SHA256
ADH-AES128-GCM-SHA256   TLSv1.2 Kx=DH       Au=None Enc=AESGCM(128) Mac=AEAD
ADH-AES128-SHA256       TLSv1.2 Kx=DH       Au=None Enc=AES(128)  Mac=SHA256
AES128-GCM-SHA256       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(128) Mac=AEAD
AES128-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA256

似乎 ADH 代表“匿名 Diffie-Hellman”,但也暗示了特定的組和位大小。

我有興趣詳細解釋所有縮寫是什麼,以及這些密碼套件中的哪些通常被認為是安全的。

具體來說:

  1. 什麼是 ADH?哪裡標準化了?
  2. 列出的 MAC 算法是散列函式。是否使用 HMAC?
  3. “奧”是什麼意思?

什麼是 ADH?哪裡標準化了?

ADH代表Anonymous Diffie-Hellman,即未經身份驗證的Diffie-Hellman,也稱為“機會加密”至少從 SSLv3開始,它就已成為 SSL/TLS 標準的一部分。它也在ECDHERFC4492 中擴展。

列出的 MAC 算法是散列函式。是否使用 HMAC?

確實是的。

“奧”是什麼意思?

它很可能意味著類似Authentication mechanism。這清楚地涵蓋了給定的密碼套件,因為ADH套件在none那裡,RSA 密鑰傳輸和DHE+RSA套件在RSA那裡(伺服器通過 RSA 簽名驗證),DHE+DSS套件在DSS那裡(伺服器通過 DSA 驗證)和使用靜態DH的套件在DH那裡(伺服器通過他的靜態驗證DH 公鑰)。

匿名 Diffie Hellman 只是意味著您不使用身份驗證與 Diffie Hellman 一起進行密鑰交換。這也以某種方式回答了您的第三個問題:Au 代表身份驗證,正如您在套件使用 ADH 時看到的那樣,Au 設置為 none。一般不建議使用 ADH。

由於 SHA256 本身不是 MAC,它使用某種 MAC 結構。AEAD 代表 Authenticated Encryption with Associated Data。Authenticated Encryption 部分告訴您,塊模式(在您的範例中為 GCM)內置了消息身份驗證。

關於這些密碼套件中的哪些被認為是安全的問題。如果不了解更多關於環境的資訊,這很難回答,但本網站和論文試圖給出一個普遍而實用的答案。

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