完美前向保密是 SSL/TLS 通信的一项重要增强功能,有助于防止捕获的 SSL 流量被解密,即使攻击者拥有私钥也是如此。它在 Web 服务器中很容易支持,但也适用于任何其他 SSL 环境,例如 SMTP、POP3 和 IMAP 的邮件服务器。
这一现象最近(2014 年 9 月)在德国达到了顶峰,该国数据保护机构已开始检查和罚款机构不支持邮件服务器上的 PFS,以及 heartbleed 和 poodle 漏洞。Web 浏览器中的 PFS 支持有些不完整,尽管所有主流浏览器都支持它 - 但我正在寻找邮件服务器和客户端上的 PFS 兼容性信息,理想情况下是这样的SSL 实验室'握手测试提供,但针对邮件服务器。
有人可以提供或指出有关邮件服务器 PFS 兼容性的良好来源吗?
需要澄清的是,我并不是想询问某个特定的服务器,而是想看看这种测试在各种不同服务器上的结果,例如,了解 Outlook 2003 不支持 ECDHE 或 Android 2 不允许大于 2048 位的 DH 参数会很有用(我不知道这些是否属实,它们只是示例)。这样做的好处是,如果我选择禁用某个特定的密码,那么它可能会影响哪些客户端,就像 SSL 实验室测试针对 Web 客户端显示的那样。
答案1
这样做的好处是,如果我选择禁用某些特定的密码,我知道它可能会影响哪些客户端,就像 SSL 实验室测试对 Web 客户端显示的那样。
您无需将自己限制在特定密码上,只需启用所有您能接受的密码并按照您喜欢的顺序启用即可。然后,客户端和服务器将根据两个站点支持的密码协商最终密码。不要给自己不必要的限制。
至于服务器端通常使用的密码,你可以看看量化 TLS 支持的质量我分析了 Alexa 排名前 100 万的站点对 SMTP 的 TLS 支持情况,其中约有 600000 个邮件服务器启用了 TLS。根据我的测试,约有 33% 的服务器使用 ECDHE 密码,52% 使用 DHE 密码,因此 85% 使用前向保密。
有关所用密码的更多信息,您不会在研究中找到,这里是与 OpenSSL 1.0.1 的默认密码集一起使用时协商的密码的详细列表:
100.00% 600433 TOTAL
29.53% 177285 DHE-RSA-AES256-GCM-SHA384
21.20% 127304 ECDHE-RSA-AES128-GCM-SHA256
20.62% 123804 DHE-RSA-AES256-SHA
7.65% 45919 AES256-SHA
6.40% 38404 ECDHE-RSA-AES256-GCM-SHA384
4.42% 26558 AES256-GCM-SHA384
4.36% 26189 ECDHE-RSA-AES256-SHA384
1.76% 10586 AES128-SHA
1.17% 7003 RC4-SHA
0.93% 5577 DHE-RSA-AES256-SHA256
0.90% 5389 ECDHE-RSA-AES256-SHA
0.56% 3372 DHE-RSA-CAMELLIA256-SHA
0.19% 1137 RC4-MD5
0.08% 503 EDH-RSA-DES-CBC3-SHA
0.08% 454 DES-CBC3-SHA
0.07% 444 AES128-SHA256
0.04% 235 DHE-RSA-AES128-GCM-SHA256
0.01% 82 AES128-GCM-SHA256
0.01% 59 AES256-SHA256
0.01% 53 DHE-RSA-AES128-SHA
0.00% 23 ECDHE-RSA-AES128-SHA
0.00% 14 DHE-DSS-AES256-SHA
0.00% 11 ECDHE-RSA-AES128-SHA256
0.00% 10 ECDHE-RSA-RC4-SHA
0.00% 10 ECDHE-RSA-DES-CBC3-SHA
0.00% 4 DHE-DSS-AES256-GCM-SHA384
0.00% 2 CAMELLIA256-SHA
0.00% 1 DHE-RSA-SEED-SHA
0.00% 1 AECDH-DES-CBC3-SHA
答案2
请检查公司编写的免费脚本一名高素质人士在 Security SE 工作:https://labs.portcullis.co.uk/tools/ssl-cipher-suite-enum/
ssl-cipher-suite-enum 确定了以下与 SSL 相关的常见安全问题:...支持不支持前向保密的密钥交换算法 - 或者等效地,如果私有 SSL 密钥被泄露,则允许嗅探流量被追溯解密的密码套件。
如果你想慢慢地手动完成,openssl
portmanteau 工具集非常方便:
从https://community.qualys.com/thread/12193:
openssl s_client -starttls smtp -crlf -connect YOUR_SMTP_SERVER:25
如果您在密码套件中看到 DHE(Diffie-Hellmann Ephemeral),则它是 PFS。
从这个帖子在 Security SE
TLS_DHE_DSS_WITH_DES_CBC_SHA DHE-DSS-CBC-SHA TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA DHE-DSS-DES-CBC3-SHA TLS_DHE_RSA_WITH_DES_CBC_SHA DHE-RSA-DES-CBC-SHA TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA DHE-RSA-DES-CBC3-SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA DHE-DSS-AES128-SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA DHE-DSS-AES256-SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA DHE-RSA-AES128-SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA DHE-RSA-AES256-SHA
TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA DHE-DSS-CAMELLIA128-SHA
TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA DHE-DSS-CAMELLIA256-SHA
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA DHE-RSA-CAMELLIA128-SHA
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA DHE-RSA-CAMELLIA256-SHA
TLS_DHE_DSS_WITH_SEED_CBC_SHA DHE-DSS-SEED-SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA DHE-RSA-SEED-SHA
如果我们包括椭圆曲线密码,以下内容也实现了 PFS:
TLS_ECDHE_RSA_WITH_NULL_SHA ECDHE-RSA-NULL-SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA ECDHE-RSA-RC4-SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA ECDHE-RSA-DES-CBC3-SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ECDHE-RSA-AES128-SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA ECDHE-RSA-AES256-SHA
TLS_ECDHE_ECDSA_WITH_NULL_SHA ECDHE-ECDSA-NULL-SHA
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA ECDHE-ECDSA-RC4-SHA
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA ECDHE-ECDSA-DES-CBC3-SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA ECDHE-ECDSA-AES128-SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA ECDHE-ECDSA-AES256-SHA
如果您还想包含 TLS 1.2(请注意,没有 TLS 1.1 特定套件),那么您可以扩展列表以包含:
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 DHE-RSA-AES128-SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 DHE-RSA-AES256-SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 DHE-RSA-AES128-GCM-SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 DHE-RSA-AES256-GCM-SHA384
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 DHE-DSS-AES128-SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 DHE-DSS-AES256-SHA256
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 DHE-DSS-AES128-GCM-SHA256
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 DHE-DSS-AES256-GCM-SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 ECDHE-RSA-AES128-SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 ECDHE-RSA-AES256-SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ECDHE-RSA-AES256-GCM-SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 ECDHE-ECDSA-AES128-SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 ECDHE-ECDSA-AES256-SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 ECDHE-ECDSA-AES128-GCM-SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 ECDHE-ECDSA-AES256-GCM-SHA384
TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 ECDHE-ECDSA-CAMELLIA128-SHA256
TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 ECDHE-ECDSA-CAMELLIA256-SHA384
TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 ECDHE-RSA-CAMELLIA128-SHA256
TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 ECDHE-RSA-CAMELLIA256-SHA384