哪些 SSL/TLS 密码可以被认为是安全的?

信息安全 加密 密码学 tls 哈希
2021-08-27 21:55:52

OpenSSL 网站提供了一长串可用于 SSL 和 TLS 的不同密码我的问题是,现在哪些密码可以被认为是安全的。我对 HTTPS 特别感兴趣,如果这很重要的话,虽然我猜它不重要。我知道使用Apache建议SSLCipherSuite HIGH:MEDIUM并同意这是最佳实践。

我正在寻找的是官方标准或来自公认安全组织等公认来源的最新论文。如果存在这样的论文,包括对具有特定密钥长度的某些密码将被视为安全多长时间的估计,这将更好。这样的事情存在吗?

4个回答

带有“ NULL”的密码套件不提供数据加密,仅提供完整性检查。对于大多数用途,这意味着“不安全”。

从设计上讲,带有“ ”的密码套件EXPORT很弱。它们加密的,但只有小到足以被业余硬件破解的密钥(例如,一台基本的家用 PC——依赖于 40 位密钥的对称加密)。这些套件被定义为符合美国关于密码系统的出口规则,这些规则在 2000 年之前非常严格。如今,这些限制已被取消,支持“ EXPORT”密码套件的意义不大。

DES带有“ ”(不是“ ”)的密码套件3DES依赖于 DES 上的对称加密,DES是一种使用 56 位密钥的旧分组密码(从技术上讲,它使用 64 位密钥,但它忽略了其中的 8 个位,因此有效密钥大小为 56 位)。一个 56 位的密钥是可以破解的,尽管使用 PC 不会在五分钟内破解。深度破解是 1998 年造的专用机器,造价约 25 万美元,平均可以在 4.5 天内破解 56 位 DES 密钥。技术进步了,这可以用几十个 FPGA来复制。仍然不是沃尔玛现成的硬件,但许多人都能负担得起。

OpenSSL 支持的所有其他密码套件都是非弱的;如果您对它们有疑问,那将不是由于算法本身的加密弱点造成的。您可能希望避免使用具有“ MD5”的密码套件,这不是因为实际已知的弱点,而是出于公共关系。MD5作为一个散列函数,被“破坏”了,因为我们可以有效地找到该函数的许多冲突。这对 MD5 来说不是问题,因为它在 SSL 中使用;然而,这足以让 MD5 声名狼藉,你最好避免它。

请注意,密码套件对服务器密钥(服务器证书中的公钥)的大小没有任何强制要求,它必须足够大以提供足够的稳健性(对于 RSA 或 DSS,至少 1024 位,1536 位更好——但不要过分推动它,因为计算开销会随着密钥大小而急剧增加)。


NIST是一个美国联邦组织,与任何安全组织一样广为接受和知名,它已经发布了一些建议(特别是第 22 和 23 页的表格);这是从 2005 年开始的,但今天仍然有效。请注意,NIST 在“已批准/未批准”的基础上运行:他们不以任何方式声称“未批准”的算法在任何方面都很弱;只是他们作为一个组织不为他们担保。

您是否阅读过 Eric Rescorla 的SSL 和 TLS:设计和构建安全系统?它是公认的 SSL 经典,由 IETF 标准 SSL 工作组的主要贡献者之一编写。我希望它可能包含有关各种 SSL 密码套件强度的适当陈述。

如果这不能满足您的需求,您可能会漫步到您友好的图书馆并查看他们拥有的所有密码学和安全教科书,并阅读有关 SSL/TLS 的部分。

基本上,如果您正在寻找每个安全专家都已经知道的文档事实的参考,那么您可能需要自己做一些工作才能找到最佳引用。

Thomas Pornin 回答的一些小补充:虽然 NIST SP800-52 通常对于 TLS 仍然是官方的(如果有些过时),但对于密钥大小,它特别被 SP800-57 取代:第 1 部分通常涵盖密钥大小和生命周期,最后修订2012 年;第 3 部分涵盖了一些特定的应用程序,包括 2010 年发布的 TLS。简而言之,他们试图在 2011 年要求 RSA DSA 和 DH 2048 位和 ECC 224 位,但有太多的阻力,所以现在是 2014 年——即将推出!(2048 或 3072 位的 DSA 在 2009 年由 FIPS 186-3 指定,但我还没有看到太多实现。即使是 openssl 也相当笨拙。) www.CABforum.org 在 2014 年同意 RSA 2048;虽然您不必从“官方”CA 获得证书,但明显低于常见的“标准”做法往往会让您受到怀疑。FWIW NIST 目前表示强度(Z_n 2048,ECC 224,对称 112)在 2030 年之前是“可接受的”,之后需要 3072/256/128;即使他们被证明是错误的,如果你和他们一起去,你就会找到尽可能多的借口,而且你肯定会有很多好伙伴。最后,csrc.nist.gov 是一个更好的 cybsersecurity 起始 URL(NIST 作为一个整体还做了很多其他事情)。

对于大多数用户来说,赶上官方建议可能是一项艰巨的任务。

获取最新现代密码列表的最快方法是定期检查Mozilla SSL 配置生成器

截至 2016 年 8 月,(有序)列表为:

ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-ECDSA-AES128-SHA256
ECDHE-RSA-AES128-SHA256

除了简单地应用这些密码之外,还要确保:

注意:所有这些密码都与(即将推出的)TLS1.3 兼容。