openssl密碼套件的解釋
我正在尋找有關 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”,但也暗示了特定的組和位大小。
我有興趣詳細解釋所有縮寫是什麼,以及這些密碼套件中的哪些通常被認為是安全的。
具體來說:
- 什麼是 ADH?哪裡標準化了?
- 列出的 MAC 算法是散列函式。是否使用 HMAC?
- “奧”是什麼意思?
什麼是 ADH?哪裡標準化了?
ADH
代表Anonymous Diffie-Hellman,即未經身份驗證的Diffie-Hellman,也稱為“機會加密”。至少從 SSLv3開始,它就已成為 SSL/TLS 標準的一部分。它也在ECDHE
RFC4492 中被擴展。列出的 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)內置了消息身份驗證。
關於這些密碼套件中的哪些被認為是安全的問題。如果不了解更多關於環境的資訊,這很難回答,但本網站和論文試圖給出一個普遍而實用的答案。