最大密码长度较低的技术原因是什么?

信息安全 密码 密码策略
2021-09-04 21:17:03

我一直想知道为什么这么多网站对密码长度有非常严格的限制(正好 8 个字符,最多 8 个字符等)。这些往往是我真正关心其安全性的银行或其他网站。

我知道大多数人会选择像“密码”和“123456”这样的短密码,但有技术上的理由强制这样做吗?使用像 1Password 这样的应用程序,我几乎所有的密码都是类似fx9@#^L;UyC4@mE3<P]uzt或其他随机生成的长串不太可能猜到的东西。

  • 网站是否有特定原因对密码长度进行严格限制(更像是 8 或 10,我理解为什么 100000000 可能是一个问题......)?
4个回答

拿五只黑猩猩。把它们放在一个大笼子里。从笼子的顶部悬挂一些香蕉。为黑猩猩提供梯子。但是还为香蕉添加了一个接近探测器,这样当黑猩猩靠近香蕉时,水管就会被触发,整个笼子都会被彻底浸湿。

很快,黑猩猩就知道最好忽略香蕉和活梯。

现在,取出一只黑猩猩,换上一只新的。那只黑猩猩对软管一无所知。他看到了香蕉,注意到了梯子,因为他是一个聪明的灵长类动物,他想象自己踩着梯子去拿香蕉。然后他灵巧地抓住了梯子……其他四只黑猩猩扑到他身上,狠狠地揍了他。他很快就学会了忽略梯子。

然后,取出另一只黑猩猩,换上一只新的。情景再次发生;当他抓住梯子时,他被其他只黑猩猩咬伤了——是的,包括以前的“新鲜”黑猩猩。他整合了“你不应该碰梯子”的概念。

迭代。经过一些操作后,你有五只黑猩猩准备好对任何敢碰活梯的黑猩猩进行拳打脚踢——它们都不知道为什么。


最初,某处的某个开发人员正在开发上个世纪的旧 Unix 系统,该系统使用旧的基于 DES 的“crypt”,实际上是从 DES 块密码派生的密码散列函数。在该散列函数中,仅使用密码的前 8 个字符(也仅使用每个字符的低 7 位)。后续字符将被忽略。那是香蕉。

互联网上到处都是黑猩猩。

这些限制通常出于各种原因而实施:

  • 与不支持长密码的旧系统交互。
  • 约定(即“我们一直这样做”)
  • 简单的天真或无知。

就安全性而言,无需限制密码长度。无论如何,它们都应该被散列,使用密钥派生函数 (KDF),例如 bcrypt。为了提高性能,可能值得对密码长度设置一个非常大的限制(例如 512 个字符),以防止有人向您发送 1MB 密码并在计算哈希时对您的服务器进行 10 秒的 DoS 攻击。

  1. 如果他们以明文或加密明文存储它,那么这可能是可以存储在数据库中的最大值。另一方面,应该尽可能远离这些站点
  2. 避免DOS攻击。这通常是如果它们有非常高的限制,比如 512 或 1024 字节
  3. 遵守实际上由对 IT 安全一无所知的人制定的法规
  4. 正如 Tom Leek 指出的那样,出于遗留原因

顺便提一句。这是具有最大密码长度的高排名网站的(历史)列表:

http://web.archive.org/web/20130907182806/https://defuse.ca/password-policy-hall-of-shame.htm

我在荷兰最大的网上商店之一 Bol.com 提出了这个问题。他们的反应是防止被有关忘记密码的支持电子邮件淹没。然后他们好奇地忽略了我关于密码重置功能的询问,当您忘记密码时,它只会通过电子邮件向您发送重置链接。

我的结论是,这很可能是管理团队的决定。或者,他们可能没有散列密码并使用它来防止他们的数据库被淹没(即使您可以拥有更长的用户名,所以这似乎不太可能)。他们也没有回答有关他们是否散列密码的问题(您会认为如果一切正常,就没有理由不回复)。