一个“理想”的 HTTPS 服务是否只能启用 TLS 1.0、1.1 和 1.2,并且密钥大小变体遵循密码?
不,“理想”的 HTTPS 服务将仅启用 TLS 1.2 并仅启用基于 AEAD(带有关联数据的身份验证加密)的密码套件,该密码套件具有 SHA-2、4096 位 DH 参数和 521 位 EC 曲线,其类型符合您的要求(政府批准或不是政府产生的)。
所述服务也将无法被各种旧客户端使用,包括 Android 4.3 及更早版本、IE 10 及更早版本、Java 7(至少 u25 及更早版本)、OpenSSL 0.9.8y 及更早版本(OpenSSL 1.0.0)。 0 根本没有在我的来源中列出),依此类推。但是,它不会受到任何仅适用于 TLS 1.1 及更低版本的攻击、任何依赖 SHA-1 的攻击以及任何依赖 CBC 模式或过时密码(如 RC4)的攻击。
每个https://www.ssllabs.com的客户端密码套件限制。
最喜欢的密码套件应该是什么?
这取决于!
我认为前向保密是一项要求。
我认为“目前被认为是相当安全的”是一项要求。
我认为“至少由一个主要参与者实际实施”是一项要求。
所有关于必须有/不能使用某些或另一个密码子集的要求(必须使用 X,不能使用 Y 等)。
因此,我建议以下列表作为一个合理的开始。从顶级类别(TLS 1.2 AEAD)开始,然后继续向下列表并添加类别,直到您达到适合您的用户群的级别或您已经到达舒适区的尽头,以先到者为准。
尽可能多地包含每个类别的密码套件,以便在下一次攻击发生时,您将能够删除受影响的密码套件并继续其余的密码套件。
密切关注威胁环境,以便您可以继续删除存在漏洞的密码套件。
在每个主要类别中,请根据您的喜好订购或剔除密码套件:DHE 当然比 ECDHE 慢,但完全去掉了椭圆曲线的出处,依此类推。此时,排序似乎是一种权衡,但如果您想要速度,更喜欢甚至需要 TLS_ECDHE_*。如果您不信任当前普遍实施的椭圆曲线,或者由于 2015 年 8 月的 NSA Suite B 指南而担心椭圆曲线,这表明在不久的将来将远离之前的 Suite B 椭圆曲线,并且愿意刻录 CPU,更喜欢甚至需要 TLS_DHE_* 套件。
请记住,“普通”证书是 RSA 证书,可与 TLS_ECDHE_RSA_* 和 TLS_DHE_RSA_* 密码套件一起使用。到目前为止,与 TLS_ECDHE_ECDSA_* 密码套件一起使用的 DSA 证书非常罕见,而且许多 CA 不提供它们。
- 仅 TLS 1.2 AEAD(也都是 SHA-2)
- TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256(新 0xcca9,RFC7905 前 0xcc14)
- TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256(新 0xcca8,RFC7905 前 0xcc13)
- TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256(新 0xccaa,RFC7905 前 0xcc15)
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x9f)
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x9e)
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
- 这些是我目前在常见 TLS 实现中所知道的最高级别的安全性。
- 截至 2017 年 1 月,主要的现代浏览器都处理这个级别,包括但不限于支持 AES-GCM 的 6.0 的 Android 和 - 仅主要的 - 旧值 CHACHA20-POLY1305 和支持新 CHACHA20-POLY1305 的 7.0,Chrome 与 AES -GCM 和 CHACHA20-POLY1305,Firefox 带有 AES-GCM 和 CHACHA20-POLY1305,IE 和 Edge 仅带有 AES-GCM,Java 仅带有 AES-GCM,OpenSSL 1.1.0 带有 AES-GCM 和 CHACHA20-POLY1305,Safari 带有仅 AES-GCM)。
- 许多主流浏览器都无法处理这个问题,即使是 2015 年的老式浏览器(OSX 10.9 上的 Safari 7、Android 4.3 及更早版本,Win7 上的 IE 10(如果 Windows 已修补,IE 11 即使在 Win7 上也将支持 0x9f 和 0x9e)
- TLS 1.2 SHA2 系列(非 AEAD)
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x6b)
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x67)
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
- TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 (0xc077)
- TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 (0xc076)
- TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 (0xc4)
- 请注意,您已经失去了 AEAD 模式并且正在使用更旧的 CBC 模式;这不太理想。CBC 模式是过去多次攻击的促成因素,包括 Lucky 13 和 BEAST,相信 CBC 模式也可能与未来的漏洞有关并不是没有道理的。
- 一些没有任何 AEAD 密码套件的现代浏览器确实有一个更适合这一类别的浏览器,例如,Win7 上的 IE 11 可以使用 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 而 Safari 6 和 7 可以使用其中的一些
- 再次,这是如果您没有 ECDHE_ECDSA GCM 套件工作)
- 具有现代密码的 TLS 1.0 和 1.1(以及过时的哈希,因为这就是所有可用的)
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39)
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33)
- TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (0x88)
- TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (0x45)
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
- 一旦你包含了这个级别的密码套件,你很可能会找到适用于几乎所有现代实现的东西。
- 在这个级别,您不仅使用 CBC 模式,还使用 SHA-1。NIST SP800-131A建议在 2013 年 12 月 31 日之后(实际上是一年前的今天)禁止 SHA-1 用于数字签名生成。
- TLS 1.0 和 1.1 具有较旧但仍然合理的密码和过时的哈希
- TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x16)
- TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012)
- TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA (0xc008)
- Windows XP 上的 IE 8 仍然不走运,由于 DH 参数最大值,Java 6u45 也是如此。
- 这绝对是我推荐的最低水平。
- 请注意,对于使用 RSA 私钥和需要NIST SP800-52 第 1 版合规性的 RSA 证书的服务器,您应该、应该并且可能实施不提供前向保密的特定其他 TLS_RSA_* 密码套件,因此我不推荐,除非这合规是必需的。
- 另请注意,该文档的第 3.3.1 段具体说明了“服务器应配置为仅使用完全由批准的算法组成的密码套件。本节提供了可接受的通用密码套件的完整列表......”
- 当然,其他国家和行业要求会有所不同。
我将在此处插入常用插件 - 使用您自己的工具尝试您的密码列表(openssl ciphers -v '...' 对于基于 openssl 的系统),请访问https://www.ssllabs.com/index.html首先检查各种客户端支持的密码套件,然后设置您的站点,然后返回 www.ssllabs.com 并运行他们的服务器测试。
请注意,_ECDSA_密码套件当然需要 ECDSA 证书,而且这些证书仍然很难找到。
ETA:NSA Suite B EC 建议,IE 11/Win7 现在支持 0x9f 和 0x9e。
ETA:截至 2016 年 1 月,NIST SP800-52r1 保持不变,并且已将一个新密码套件 (0xc00a) 添加到列表中。
ETA:截至 2017 年 1 月,RFC7905 已更改三个 TLS 1.2 AEAD CHACHA20-POLY1305 密码,并且“现代”浏览器已大大改进了 AEAD 支持,如新项目符号中所述。 有关最新的 IANA 密码套件,请参阅https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-4 。