邮件服务器的完美前向保密 (PFS)

邮件服务器的完美前向保密 (PFS)

完美前向保密是 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 密钥被泄露,则允许嗅探流量被追溯解密的密码套件。

如果你想慢慢地手动完成,opensslportmanteau 工具集非常方便:

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

相关内容