总结:考虑到“易记”密码只是整个密码空间的一部分,那么易记密码生成器的安全性如何?与随机密码相比,易记密码的熵有多大?
每当我需要新密码时,我都会使用一些工具来生成这些密码,最好是容易记住的密码,但我一直想知道这实际上有多安全。
使用xkcd 随机数生成器可能很糟糕,cat /dev/random
也可能很好,但是生成令人难忘的密码似乎有点棘手。
每当程序生成一个容易记住的密码时,它只使用可用密码空间的子集,我不清楚这个空间有多大。当然,在这种情况下,长密码应该会有所帮助,但如果程序的“容易记住”部分太容易预测,那么你的密码最终就不是很好。
我知道的一些工具:
更新:感谢您对理论密码熵和可记忆性的见解,但我也在寻找生成这些密码的实用方面。
在实践中我该如何选择这样的密码?具体来说,pwgen 或 Mac 密码助手 (MPA) 的熵是多少?例如:如果 MPA 的单词数据库非常小,并且可以预测地生成密码,该怎么办?也许我这样说有点迂腐,但我很好奇是否有人可以对此做出解释。
更新二:尽管这个问题收到了很多关于密码生成的答案,但没有一个答案深入探讨这些密码有多安全。这个问题仍然悬而未决,等待答案。
答案1
忘记任何编写密码的“巧妙方案”。黑客知道所有伎俩(黑客语言、连接单词、添加数字等)通过分析被盗密码列表。扩展信息《安全现在》第 366 集“密码破解更新:‘聪明’的消亡”(或阅读其成绩单)。
我建议你使用像最后通行证(在 Security Now 第 256 集中也有详细讨论)为您生成随机密码。人类不擅长随机(无论是生成它或者检测到它)
如果你真的想要记住密码,你可能想要使用密码干草堆技术作为难以记住的随机组合的替代方案。在这里,您将重复字符串 (123 123 123) 附加到包含最大熵 (D0g!) 的短字符串。
无论你选择哪种方法,密码至少包含 12 个字符。 全部8 个字符的密码现在可在 13 小时内被破解在一台花费 12000 美元的自制机器上(主要用于 GPU)
答案2
容易记住的密码生成器有多安全?
对此很容易给出个人的和定性的意见,我认为最好寻求一些定量的答案,以某种方式客观地衡量安全程度。
看维基百科
考虑到书面英语的熵小于每字符 1.1 位,[2] 密码短语可能相对较弱。 NIST 估计,23 个字符的密码短语“IamtheCapitanofthePina4”包含 45 位强度。 这里采用的公式是:[3]
4 位(第 1 个字符)+ 14 位(第 2 至第 8 个字符)+ 18 位(第 9 至第 20 个字符)+ 3 位(第 21 至第 23 个字符)+ 6 位(大写、小写和字母数字的奖励)= 45 位
根据该准则,要达到 NIST 建议的高安全性(非军事)的 80 位强度,密码短语需要有 58 个字符长,假设其组成包括大写字母和字母数字。根据分配的熵位数,该公式的适用性尚有争议。例如,五个字母的单词中的每个字符包含 2.3 位熵,这意味着只需要 35 个字符的密码短语即可达到 80 位强度。[4]
...
密码短语与密码不同。密码通常很短 — 6 到 10 个字符。此类密码可能适用于各种应用(如果经常更改、如果使用适当的策略选择、如果在字典中找不到、如果足够随机、和/或如果系统阻止在线猜测等),例如:
- 登录计算机系统
- 在交互式环境中协商密钥(例如使用密码认证的密钥协议)
- 为 ATM 卡启用智能卡或 PIN(例如,密码数据(希望)无法被提取)
但密码通常不宜用作独立安全系统 (如加密系统) 的密钥,因为此类系统会暴露数据,让攻击者可以离线猜测密码。[需要引文] 密码通常更强大,在这些情况下显然是更好的选择。首先,密码通常 (并且应该一直) 更长 — 通常为 20 到 30 个字符甚至更长 — 这使某些类型的暴力攻击完全不切实际。其次,如果选择得当,密码将不会出现在任何短语或引语词典中,因此此类字典攻击几乎不可能实现。第三,密码可以构造得比密码更容易记住,而无需写下来,从而降低了硬拷贝被盗的风险。[需要引文]。但是,如果密码未得到验证器的适当保护,并且明文密码被泄露,则其使用并不比其他密码好。因此,建议不要在不同或独特的网站和服务之间重复使用密码。
本教区的 Jeff Atwood 也出版了他对这个问题的看法,最后
密码短语显然比传统的“安全”密码更实用。它们也很可能更安全。即使是像“这是我的密码”这样最不重要的密码短语也不容易被破解,至少与单词等价物(例如“password”)相比是这样。
对用户来说更容易,对黑客来说更难:这是完全不用想的。我在我使用的所有系统上都采用了密码短语。
更新:
由于有几个人提到 XKCD,并且 XKCD 明确提供了用于图像嵌入的 URL……
答案3
破解密码有两种方法 - 暴力破解和字典攻击(还有第三种方法 - 即获取散列密码并破解它,但我们现在先忽略它)。长度通常会使暴力破解变得更加困难,尽管专用的硬件破解器或基于 GPU 的破解器会大大加快速度。
字典攻击依赖于人们使用的单词。然而,2 个单词会使攻击变得更加困难(因为他们还必须遍历 2 个单词组合,以及 3 个单词……替换也会增加你需要遍历的可能性)。
我个人使用一个很长的多词密码,每个网站都有不同的修改和不同的替换。我还经常把密码记成电话号码,使用 8 位数字,成对记住它们,然后将它们转换回来。人们记住电话号码,很容易隐藏。再加上个人规则集而且会变得更容易。
我注意到大多数大型密码黑客攻击都发生在服务器端,而拥有一个安全的密码对此并没有帮助 - 拥有一个站点唯一的密码才有用。
答案4
我个人认为你应该运用自己的逻辑来创建容易记住的密码。比如你可以将两个单词和数字相加。然后你可以根据你所知道的或满足某些条件的情况来做出变化。
PS:如果你能记住它,并不意味着它很容易被破解。