为什么有些网站会强制用户输入高难度密码?

信息安全 密码 密码策略
2021-08-21 08:55:37

我不明白为什么我们通常会强迫用户想出难以记住的密码。

* 您的密码必须至少包含一个数字、一个大写字符和一个特殊字符。

这是为了保护用户自己(通过猜测密码登录),还是为了保护我们的应用程序或其他用户?

作为用户,我发现密码格式限制非常烦人。作为一个程序员,我不明白重点是什么。如果我们强迫某人创建一个难以记住的密码(如果它不是他们的“常用”密码之一),那么他们很有可能会将其写下来或以纯文本形式存储在某个文件中,这似乎是失败了(至少在某种程度上)。

严格的密码格式不是通过减少可能性的数量来使攻击者更容易“猜测”密码吗?

强迫用户想出一个晦涩的密码背后的动机是什么?

3个回答

当一个网站实施某事时,总是为他们的利益服务;然而,这有时也与服务于用户的利益相吻合,例如“保护用户免受他们自己的伤害”,这就是这里的情况。

限制的重点是(尝试)使密码更难被攻击者猜到。确实,防止某些用户使用某些特定的密码值在数学上会减少可能的密码数量;但是,实际上,这更多是关于禁止简单的用户如果可以选择几乎总是会选择的密码。可能的密码总数非常大。如果我们认为密码可能包含字母(小写和大写)、数字,例如,一些可以从普通键盘访问的标点符号;如果我们允许密码最长为 30 个字符,那么可能的密码数量等于 157935773974908502215194845377591539584935386309545795005451(包括长度为 0 的“空密码”;否则,减去 1)。可能的密码不是稀缺资源,从该数量中删除数十亿也没有什么问题。

可怕的资源是用户的想象力和耐心。鉴于这种可能性,大多数用户将使用只有小写字母的短密码,因为这是最容易记住和输入的密码。他们会选择“有意义的”词,例如“城堡”而不是“bsigrz”。攻击者知道:简单的密码是他会首先尝试的,而且数量不多,所以攻击者会成功。

“密码规则”试图迫使用户远离简单的密码。如果你强制他们包含一个数字和一个大写字母,他们会这样做,但是使用攻击者无法预测的数字,并且大写应用于随机字母。(至少在理论上;在实践中,用户会将大写字母放在第一个字母上,数字将添加到末尾,并且将是“1”)。热切希望将增加用户将有效选择的可能密码的数量,从而使攻击者更加困难。

密码规则可能会适得其反,有时甚至是惊人的;用户将忘记他们的密码并唠叨帮助台;用户会将密码写在巧妙地隐藏在键盘下的便利贴上。(就事与愿违而言,在存储在用户钱包中的一张纸上写一个复杂的密码并没有那么糟糕:至少,用户关心他们钱包的下落。)一个非常常见的事与愿违的例子是,确切地说,用户在许多网站上使用的“常用”密码。这意味着一个站点上的安全漏洞会立即扩展到用户也拥有帐户的所有其他站点。那很糟。

大多数地方这样做是因为用户在选择密码方面非常糟糕。任其选择他们想要的任何东西,许多人会使用他们的生日、“密码”或其他容易猜到或用字典破解的东西。

对于 Web 服务,大多数攻击都是远程发生的,攻击者无法访问键盘底部的便笺。因此,这种方式仍然更安全。

不过,许多情况只是因为管理层表示这是个好主意。

一个好的密码需要熵。这些特殊字符要求的发生是因为站点程序员懒得进行熵计算并强制最小量的熵。

相反,他们将工作推给用户,迫使他们使用一种特定的方法来增加熵(更多种类的字符)。然而,人类实际上更擅长使用另一种添加熵的方法(更多字符),即以一种令人难忘的方式将单词组合在一起。因此,真正的熵计算是首选方法,它可以适应所使用字符的数量和种类。

图片由 Randall Munroe 抄送

图片由 Randall Munroe 抄送, http: //xkcd.com/936/

Aaron Toponce 关于熵的一篇非常易读的文章:https ://pthree.org/2011/03/07/strong-passwords-need-entropy/

熵计算器:https ://www.google.com/#q=javascript+entropy+calculator