我最近收到了将密码设置为 20 个以上字符的建议。用于加密的算法是具有 256 位主密钥的 AES。比方说,针对破解加密文件的暴力攻击的 8 个字符密码有多安全?
我知道这在大多数网站上被认为是一个很好的密码大小。原因之一是他们可以在尝试 3 次左右后停止攻击。
我最近收到了将密码设置为 20 个以上字符的建议。用于加密的算法是具有 256 位主密钥的 AES。比方说,针对破解加密文件的暴力攻击的 8 个字符密码有多安全?
我知道这在大多数网站上被认为是一个很好的密码大小。原因之一是他们可以在尝试 3 次左右后停止攻击。
您可能想在Bruce Schneier 的这篇博文中指出编写该政策的人。
这是一篇很好的文章,说明了为什么密码的强度是网络上任何人的问题中最少的。
这是一篇有趣的文章(如果网络存档不可用,请参阅PDF 打印)。它详细说明了理论上暴力破解不同长度和符号集的密码需要多长时间。
查看这篇文章中接受的答案。表明即使是使用所有字符的 8 个字符的密码也可能需要大约 10,000 年才能破解!
如果您将彩虹表的使用算作暴力破解(意见不一),那么对于 8 个字符,使用包含密码中所有字符的彩虹表,大约需要 10 秒。20 个字符的密码(相同的字符,相同的彩虹表),少于 30 秒。问题是生成表格需要很长时间。我的需要大约一个月的时间才能在 3GHz 机器上仅在晚上进行处理。另一方面,您只需要这样做一次。
尝试记住长密码的问题很容易通过字符替换和使用短语的组合来解决。即使是像“#Fr3ddy M3rcury#”这样简单的东西,对于大多数用途来说也足够复杂,而且非常容易记住。
考虑到一个八字符的密码可能会被记住。将记下20 个字符的密码。
然后有人可以阅读它。
您可能对“密码与密码短语”一文感兴趣。他们的结论是,一个 9 个字符的完全随机密码大约相当于一个 6 个单词的密码短语。但他们觉得 6 个单词的短语更容易记住。
这完全取决于您使用的字符,因为这会改变您拥有的组合数量。假设 8 个字符:
字典词:
小写字母:26 8或 208827064576
大小写字母:52 8或 53459728531456
下限、上限和数字:62 8或 218340105584896
添加标点符号和其他符号和蛮力将需要一些时间。
这些数字是必须尝试的总组合。显然,黑客在获得密码后不会尝试所有组合,因此除以 2 即可获得所需的平均组合数。
更硬的哈希导致计算哈希的 CPU 时间更长,因此总时间更长。约翰的一个例子:
当然,这完全是学术性的,因为黑客只会打电话给你的秘书,告诉他们他们来自 IT,他们需要他们的密码来做某事,而你的强密码毫无价值。
我使用重要的密码来保护
我不太关心我的 gmail 帐户,因为破解该密码的暴力尝试只会锁定该帐户(并且任何有权访问服务器的人只会用他们选择的一个替换哈希,而不是尝试破解它)。
最好的密码是长的(>12 个字符)和加密随机的。但是,这些更难记住。因此,将多个单词与看似随机的字符组合在一起的密码短语可能是一个很好的折衷方案(可能是您最喜欢的歌词前几行的前 1 或 2 个字母)。
您可以从通信客户端/服务器中获得安全性,例如,正如您所说,当您能够在 3 次尝试后阻止攻击者(当他们通过网络进行攻击时,如 Web 应用程序)。在这种情况下,几乎任何长度的密码都可以被认为是足够的。
但是,如果内部人员使用散列短密码获取此数据库,并且能够绕过 3 次尝试的“网络上”限制,则游戏会改变。
限制每个帐户的尝试次数的警告是,这仅适用于一个特定帐户的有针对性的尝试。您还需要使用给定(或排列的)密码保护所有帐户免受攻击 - 当您仅限制每个帐户的尝试次数时,这不会触发任何警报。鉴于当今的 NAT 和僵尸网络,您甚至不能争辩说限制每个 IP 的尝试次数是一种考虑安全性的好方法。
其他答案中已经给出了很好的阅读资源。