请不要强迫用户使用复杂密码
The following article is from 51CTO技术栈 Author Canal
在计算机出现的早期,如果不是坐在终端前,计算机之间和用户之间都是彼此隔离的,存储非常昂贵。
因为只要这两个原则都成立,把熵塞进短密码的唯一方法就是让它更复杂。密码复杂度规则就是这样诞生的。此外,为了使密码更难破解,还需要定期修改它,使其成为一个移动靶子,这样破解起来就更加困难。
但是我们不再生活在那个世界里了。
现在计算机是连接的,我们几乎永久地连接到我们的系统。存储也越来越便宜。
因此,现在有一个更好的方法来提高密码的熵值:让密码变长。这样做更好的原因是人们不能很好地处理复杂的密码。这使得它们更难记忆和输入。没有一种熵的级别是通过增加密码长度而无法达到的,这意味着没有理由使用复杂度规则。如果不喜欢10个字符密码的熵,没关系,我们可以让它变成12个,但不要让它变得复杂。同样的,13个,14个等等都可以。此外,熵随密码长度增加的速度比随密码复杂度增加的速度要快。
另外,使用长密码还有一个好处,那就是大多数常用单词都很短。因此,如果要填写一个长密码,就得把单词合并起来(至少在英语中),这样密码就能抵抗字典攻击了。这甚至不需要用户自己去做,因为用户创建密码更容易。
与定期重置密码相比,有一种更好的方法可以防止暴力破解:当一段时间内登陆失败次数过多时通知用户和管理员。也可以在一定时间内限制登录失败的次数。也就是说,不需定期重设密码,因为我们已经不是早期离线计算的时代了。
密码管理器和多因素身份验证技术更有意义。密码管理器可以方便用户管理密码和选择随机密码。实施这些操作的同时,应同时提供给用户使用所需要的培训。
下面的表格及其设置的变量假定:
每秒不限次数。
用户和管理员将不会被告知暴力破解行为。
尽管密码散列是免费提供的,但它们所属的系统在某种程度上是同步的,并且没有人注意到这个漏洞。
花5年时间破解密码是不安全的。
MFA(多因素身份验证)未使用
比起51年,2300万年要好得多,因为人类可以活好几个世纪,而且重设密码可以消磨时间。
有人闯入了系统,得到了所有的密码散列。
密码复杂度和重新设置不会导致选择预期的随机口令,它会导致用户重复使用有限数量的不同密码,仅改变可预测的数字和日期之类的字符串,这样用户就可以在需要的时候登录和工作。它使密码更易于预测,而且经常离线使用。这会使系统的安全性变得更差!
很多专业人士在2017年出版《NIST800–63》(数字身份指南)之前就明白了这一点,他们在该新技术标准发布后再也找不到任何借口。
遗憾的是,像PCI-DSS之类的一些合规机制仍然要求定期重置密码,我希望以后它们会被更新并要求管理员多因素身份验证。传统是很难改变的!(注:Reddit用户表示,使用“补偿控制”MFA可以获得PCI-DSS认证而无需复杂度规则和密码重置)
全世界的企业浪费了数千小时的用户时间和服务台时间,并且由于他们仍然使用密码复杂度规则和定期密码重置,使得安全变得更加糟糕。是时候停止这种疯狂了。
那该如何做
理解自己的职责是帮助用户提高安全性,而不是帮助用户去遵守那些想象中的、毫无根据的规则
检查您所保护的应用程序,对其进行配置以限制一段时间内失败的登录尝试次数,并在登录尝试次数过多时通知用户和管理员
推广使用密码管理器和多重因素身份验证
停止传播关于密码复杂度和重置的不良建议。
原文链接:
<END>
程序员专属卫衣
商品直购链接
👇👇
【☝🏼点击查看更多详情】
推荐阅读:
接手了一座年收入 2000 万美元的代码“屎山”,我到底是该重写还是该跳槽?