密码复杂性规则会适得其反吗?

信息安全 密码
2021-08-23 20:17:58

在为该站点创建登录名时,我选择了一个非字典密码,该密码极难猜出,但容易记住。

我被告知它不符合复杂性规则。

经过几次迭代之后,我沮丧地尝试了“Password1”——它被接受了。

提出一个问题,有多少非 IT 人员在面对这种情况时也会这样做?高尔夫1?奔驰1?金属乐队1?猜猜你认识那个人?是的。

在工作中,我们发布密码而不是允许用户设置密码。我们使用无意义的词。例如,artifubulist。有软件可以生成这样的词。这样的密码非常容易记住,但想必很难暴力破解。不幸的是,Microsoft 服务器上的默认密码复杂性规则阻止使用这种简单但安全的选项。当然,除非你改变政策。

对此欢迎的想法。

4个回答

密码复杂性规则适得其反——在大多数情况下。

密码复杂度规则:

  1. 使用户生气,因此不合作,并且可能不执行只有他们才能执行的密码保护规则;
  2. 煽动用户选择创造性的解决方法来超越密码规则
  3. 通常非常不完整,并且不要过滤掉用户发现的一些经典或即将成为经典的密码作为解决方法,请参见上面的第 2 点。例如“密码1”。

我遇到的唯一“合理”密码复杂性规则是最小密码长度。要求密码至少有 8 个字符对用户来说并不是一件难事,这是可以理解的,并且避免了由于它们在最愚蠢的详尽搜索范围内而必然很弱的密码。

一方面,复杂性规则可能并不好。另一方面,你的“废话”可能没有你想象的那么复杂。

暴力破解的难易程度没有“大概”:这是可以衡量的。对于给定的攻击者,蛮力攻击的成本是在找到密码之前的平均尝试次数。虽然您不认识您的攻击者,但您可以假设他很聪明,并且会围绕您的密码选择方法进行攻击。(无论如何,这是您最需要防御的最聪明的攻击者。)攻击者绝对不会知道您为每个密码随机选择的部分。密码中的随机性数量称为它是翻转硬币以确定密码的数量,以位表示。熵还衡量了聪明的攻击者将需要的蛮力尝试的次数:对于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。

一些复杂性规则适得其反。

生产力较低的复杂性规则示例:

  • 长度必须在 16 到 17 个字符之间(长度太具体)
  • 必须至少包含以下 3 个 - $%^&(特殊字符太少,无法选择)
  • 必须包含一个大写字母、一个小写字母、没有连续或重复的字符、一个数字和一个标点符号(过于具体)

“好”复杂性规则的示例:

  • 必须超过 X 个字符(鼓励使用更长的密码)
  • 必须包含至少一个数字(鼓励一些,但不要过于复杂)

对我来说最好的解决方案是使用密码管理器,它可以轻松遵守最荒谬的规则,但我永远不会“忘记”任何事情。

这是一个明显的例子,把你所有的鸡蛋都放在一个篮子里,然后通过闭路电视像鹰一样看着篮子,用守卫的老虎和地雷围着篮子。

是的。2018 年的心态是密码复杂性规则确实适得其反。最近的NIST 2017 年 6 月数字身份指南 (SP 800-63B)清楚地反映了这一点。强调:

  • 8 个或更多字符。
  • 验证者不应该为记忆的秘密强加其他组合规则(例如,要求混合不同的字符类型或禁止连续重复的字符)。
  • 验证者不应要求任意更改记忆的秘密(例如,定期)。
  • 在处理建立和更改记忆秘密的请求时,验证者应将预期秘密与包含已知常用、预期或泄露的值的列表进行比较。

如果需要更高的安全性,请使用多因素身份验证。

假设其组成规则足够随机,无意义词是一个好主意。我会谨慎依赖生成器,因为它的算法可以用来帮助破解你的密码——用一些简短但只对你有意义的东西来增加它会走很长的路。

=== 2020 年 1 月更新 ===

为了强调这一点,NIST 更新了他们的常见问题解答(2020 年 1 月 8 日):

Q-B06:是否不再推荐密码组合规则?

A-B06:SP 800-63B 第 5.1.1.2 节第 9 段建议不要对记忆秘密使用组合规则(例如,要求小写、大写、数字和/或特殊字符)。这些规则提供的好处比预期的要少,因为用户倾向于使用可预测的方法来满足这些要求(例如,当需要使用特殊字符时,将 ! 附加到记忆的秘密)。他们经常面临的挫败感也可能使他们专注于最低限度地满足要求,而不是设计一个令人难忘但复杂的秘密。相反,常见密码黑名单可防止订阅者选择非常常见的值,这些值特别容易受到攻击,尤其是在线攻击。

组合规则还会无意中鼓励人们在多个系统中使用相同的密码,因为它们通常会导致人们难以记住密码。