完美前向保密密码套件

信息安全 tls
2021-09-10 09:33:21

我还没有找到一种直接的方法来确定给定的密码列表在哪里支持 PFS。例如,我如何使用以下输出:

$ openssl ciphers -v aECDSA:aECDH:kEDH:kRSA

确定是否有任何配置支持(非)基于 PFS 的通信?

1个回答

完美前向保密是通过使用临时 Diffie-Helman 密钥(DHE 或 EDH)获得的。因此,要获得该列表中支持 PFS 的密码套件,您可以执行以下操作:

$ openssl 密码-v aECDSA:aECDH:kEDH:kRSA | grep DHE

这将包括基于 ECDHE(椭圆曲线)和 DHE(RSA)的密码。ECDHE 的一个优点是它比 DHE 快得多。然而,在该命令生成的列表中,仍有不少使用弱密码或不使用密码的弱密码:DES、RC4、SSLv3、NULL。

所有这些都碰巧有 SSLv3,所以通过排除 SSLv3,你会得到一个包含 12 个可靠密码的列表:

$ openssl 密码-v aECDSA:aECDH:kEDH:kRSA | grep DHE | grep -v SSLv3

ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac =SHA384
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128 ) Mac=SHA256
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc =AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc =AES(256) Mac=SHA256
DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=DSS 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

请注意,您在 aECDSA:aECDH:kEDH:kRSA 选择中排除了 4 个 PFS 密码。

ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac =SHA384
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128 ) Mac=SHA256