一方面,复杂性规则可能并不好。另一方面,你的“废话”可能没有你想象的那么复杂。
暴力破解的难易程度没有“大概”:这是可以衡量的。对于给定的攻击者,蛮力攻击的成本是在找到密码之前的平均尝试次数。虽然您不认识您的攻击者,但您可以假设他很聪明,并且会围绕您的密码选择方法进行攻击。(无论如何,这是您最需要防御的最聪明的攻击者。)攻击者绝对不会知道您为每个密码随机选择的部分。密码中的随机性数量称为熵;它是翻转硬币以确定密码的数量,以位表示。熵还衡量了聪明的攻击者将需要的蛮力尝试的次数:对于n位熵,有 2n 个可能的密码,攻击者平均需要尝试其中的一半,即 2 n -1。
要求标点符号、数字或大写字母很常见,但这对安全性帮助不大。几乎每个选择字典单词作为密码的用户都会将第一个字母大写并1
在末尾添加一个。破解密码的人并不愚蠢:他们在破解字典中包含了这个和其他 l33tspeak 变体。总而言之,这个要求在实践中可能会增加一到两位熵。有更好的方法来制作具有更多熵的令人难忘的密码。这在xkcd 936中进行了说明,并在此站点的XKCD #936 中进行了讨论:短复杂密码,还是长字典密码?
而不是假设你的无意义词生成器的强度,你应该测量它。弄清楚它是如何生成密码的,更准确地说,可能的密码总数是多少。我们无法从一个例子中看出。如果生成器将 5 个随机元音(大概是a
, e
, i
, o
, u
)与 20 个随机辅音组(b
, f
, l
, rt
, st
,...)交替使用,则 (5*20) 5 = 10 10 ≈ 2 33。假设您的密码受到适当保护,这对于在线攻击来说已经足够了,对于离线攻击来说还可以。(如果您没有使用足够慢的哈希,33 位是花生。)如果密码生成器正在组合字典中的单词片段,则熵可能会少得多。
如果您无法解除密码复杂性规则,请发布符合要求的密码。研究他们是否能记住每个密码的一个大写字母和一个数字;如果他们不能,请始终将第一个字母大写并在后面加上 1。