密码的最大长度是否意味着非散列存储?

信息安全 密码 密码管理 密码策略
2021-09-07 20:57:06

当系统要求密码长度在 6 到 20 个字符之间时,这是否意味着密码是在不使用散列函数的情况下存储的,并且 mysql 字段(或类似字段)的长度为 20 个字符?

如果使用散列函数,是否有任何理由设置最大长度?
我在考虑散列大量密码时可能存在 DOS 漏洞。大约 100 个字符的限制应该足以阻止这种情况,而不会打扰用户。也许甚至在拥有密码之前将密码剪成特定长度?

1个回答

限制可能有几个原因:

  • 一些开发人员认为合理的限制(例如 120 个字符)有助于减少服务器负载以散列大小可笑的密码。实际上,传输开销可能更加密集,因为在大多数哈希的第一轮中数据被减少到固定长度状态,所以这是一个相当有争议的问题。
  • 遗留建议。真正的旧系统曾经有技术限制,要求密码短(例如 14 个字符或更少),这已经渗透到给新开发人员的建议中。这是令人恼火的和倒退的,但它确实发生了。它还与许多地方所拥有的“我们一直这样做”的态度有关。
  • 减少技术支持电话和重置音量。这是迄今为止最合理的原因,但它也带有一些警告,这在很大程度上使它成为一个坏主意。预计用户会经常忘记密码,而复杂/长密码会增加这一比率。但是,如果您的密码碰巧有一个“结构”,其中包含对于此特定服务来说太大的固定长度,那么它会导致重置的可能性更高。

总而言之,这并不意味着没有进行散列。这只是意味着他们正在遵循错误的建议并继续保持不良做法的现状。

一些相关问题: