我需要禁用 SSLv3 特定的 CBC 密码作为 POODLE 漏洞的临时解决方案,因为有些旧版应用程序需要使用 SSLv3。查阅 OPENSSL 文档后,似乎 SSLv3 和 TLSV1 之间存在共享密码,例如:
- SSL_DHE_RSA_WITH_DES_CBC_SHA
- 加密密钥RSA-DES-SHA
- TLS_DHE_RSA_WITH_DES_CBC_SHA
- 加密密钥RSA-DES-SHA
我的问题是,有没有办法禁用,例如,加密密钥RSA-DES-SHA专门针对 SSLv3,此操作会影响 TLSv1 吗?
我正在使用 nginx、Varnish 和 Apache 以及 OPENSSL
答案1
答案2
规范答案是https://security.stackexchange.com/questions/70719/ssl3-poodle-vulnerability并倾向于排除协议SSLv3,不是密码。
初步而言,你提到的两个不同的密码套件使用了原始的 DES,重新命名单DES,并且所有协议版本都不安全原始 DES 十年前被替换并撤销。(更确切地说,FIPS46-3 在 2001 年被 FIPS197 AES 取代,然后在 2005 年撤销,并且仅三重 DEA(而不是单重 DEA)在 2004 年重新发布为 SP800-67,虽然已获批准但不是标准。)它们在 openssl 的密码配置中被归类为 LOW,并且与 EXPORT(更不安全)和 eNULL(完全不安全)一起应该绝不进行配置,除非你必须处理无法升级、更换或前端的严重过时的系统,例如较旧的火星着陆器之一。
对于你的问题,实际上没有特定于 SSLv3 的 CBC 密码,尽管有非-SSLv3 的。在 openssl 中,允许的密码套件和协议的配置是分开的,几乎是独立的;AFAICS 唯一的限制是使用新的 TLSv1.2 功能(经过身份验证的加密 GCM 或 SHA-2 哈希)的密码不能在任何较旧的协议中选择,并且 SSLv2 中使用的一些密码没有分配 SSLv3+ 代码,因为它们在 1996 年就已经不安全了,所以不能在 SSL3+ 中使用。即使根据标准,密码的唯一区别SSL3 与 TLS1 或 1.1 之间的区别在于:
40 位 EXPORT 密码在 1.1 版中被正式删除——但 openssl 仍然在 1.1 版和 1.2 版中作为扩展支持它们。但它们过去和现在都是不安全的,除非你回到 20 世纪 90 年代,并受到法律限制,否则你不应该使用它们一些地方。
在“加密是一种武器”时期,为了安抚美国政府而添加的 Fortezza 密钥交换,除了 NSA 之外从未被任何人使用过,已被 TLS1 删除。它不是由 openssl 在任何协议。
第一批 ECC 密码https://www.rfc-editor.org/rfc/rfc4492正式仅适用于 TLS1+,因为它们依赖于 ClientHello 中的扩展和https://www.rfc-editor.org/rfc/rfc3546对于扩展,无法修改 SSL3,但 openssl >=1.0.0(或经过调整的 0.9.8)在 SSL3 中实现了它们,将扩展视为默认“无限制”——但前提是对方同意,除了故意破坏最近的 openssl 之外,其他对方可能不会同意。这是唯一可能有用的密码差异。假设有一个 RSA 证书和私钥,您可以使用 ECDHE-RSA 并希望它仅在 TLS1+ 上运行。
这就是为什么命令行openssl ciphers -v [$cipherstring]
实用程序将 SSLv3 显示为大多数密码的“版本”;它表示 SSLv3 及以上版本。
总结:如果你的 SSL3-only 客户端不协商 ECC 密码(大多数非常老的客户端可能不会协商,尽管较新的客户端可能会协商),并且你所有的 TLS1+ 客户端做(不太确定)并假设 RSA 证书和私钥的常见情况,您可以启用 ECDHE-RSA-(3DES 或 AES)-CBC 但禁用 DHE-RSA-anything-CBC 和 RSA-anything-CBC。这也会为您提供完美的前向保密。
如果您愿意,您还可以为所有 SSL3+ 启用 RC4,无论是否带有 PFS,但这也存在一些问题:
- https://security.stackexchange.com/questions/32497/tls-rc4-or-not-rc4
- https://crypto.stackexchange.com/questions/10955/which-stream-cipher-can-we-replace-the-rc4-in-the-ssl/
- http://blogs.technet.com/b/srd/archive/2013/11/12/security-advisory-2868725-recommendation-to-disable-rc4.aspx
您的“遗留应用程序”是 Web 还是其他?如果是 Web,您就不能得到一个还算不错的浏览器吗?如果自定义应用程序无法在攻击者数据之后反复重新发送相同的敏感数据,那么它首先就不是“可攻击”的。