密码强度、密码策略差或根本没有密码策略更糟糕的是什么?

信息安全 密码 密码管理 密码策略
2021-08-29 06:57:40

最近我在Twitter 上看到了下面的截图,描述了一个明显很糟糕的密码策略:

错误的密码策略

我想知道密码强度更糟的是什么。根本没有密码策略或密码策略不佳(如屏幕截图中所述)?

4个回答

问题是:更糟的是什么?

根据您发布的政策,可能的密码少于 64⁸ (~2.8*10¹⁴)。在实践中,很多密码可能是 [az]*6[0-9][special char](例如 aabaab1!)和类似的密码。

具有相同字符且长度小于 8 的所有可能密码仅为 64⁷+64⁶+64⁵+...,即 ~4.5*10¹²。这比长度为 8 的密码要少得多,因此允许它们并不会提高安全性。(允许更长的密码显然会大大提高安全性)

如果没有任何政策,很多人也会使用错误的密码,当然。但攻击者无法确定这一点。还有一些人会使用更好的密码。

如果没有任何策略,攻击者永远无法确定破解密码的难度。如果你给我一个密码哈希数据库,我可能会尝试破解它。但如果没有结果,一段时间后我可能会停下来。有了政策,我可以确定在 64^8 次尝试后我拥有所有密码。

我想说,错误的密码策略更糟糕。但这取决于攻击场景。

使用密码散列转储,没有密码策略,很可能更容易破解任何密码,但更难破解大多数密码。使用像给定的错误策略,破解所有密码会更容易,但破解第一个密码会稍微困难一些,很可能。

如果您担心破解自己的密码有多难,如果您愿意,可以在没有任何策略的情况下使用安全的 20 字符随机密码。政策到位后,您将被迫使用不安全的密码。(实际上,密码的存储方式等更为相关,但这超出了这里的范围)。因此,作为网站/服务的用户,错误的密码策略要糟糕得多。

如果从组织的角度来看,错误的密码策略比没有密码策略更糟糕。

没有密码策略意味着,可能没有人考虑过(他们不考虑安全性并不是很好,但是好的......)

但是一个糟糕的密码策略意味着:有人考虑过并想出了那个废话。这意味着他们可能对安全性一无所知。

最后,如果您可以实施一个错误的密码策略,您也可以实施一个好的密码策略,这样就没有任何借口可以为错误的密码策略。只需将策略更改为“密码必须至少为 8 个字符”就会大大提高安全性,而且并不难做到。

现在我想知道密码强度更糟糕的是什么。根本没有密码策略,或者像图片中的密码策略很差?

您提到的密码强度要求绝对弊大于利,尤其是最大长度。

  1. 他们可能正在使用一个非常旧的、不安全的哈希例程。(因此是最大长度)
  2. 在某些领域,这支持方便而不是安全。
    (以纯文本表示密码时,没有空格很有帮助,
    不区分大小写,因此没有大写锁定支持调用)
  3. 其他项目只是愚蠢的。

详细分类

您的密码必须:

  • 正好是八个字符长

唯一一次我认为这是一个合理的解决方案是当系统运行一个遗留哈希方案时,它会截断除前 8 个字符之外的所有字符。

例如,Solaris 10 用户帐户密码默认使用这样的方案,所以像这样的密码passwordSup@rsecur☺被截断为password!!! Solaris 11 的默认设置没有这个缺点。

在这种情况下

  1. 开发人员应该致力于迁移到更好的哈希例程,该例程支持超过 8 的密码长度。

  2. 在推出此类修复程序之前,最大长度是合理的。

在任何其他情况下,拥有如此短的最大长度肯定是一件愚蠢的事情。

  • 至少包括一个字母和一个数字。

  • 至少包括以下一组中的一个特殊字符:...

这些是必须的,因为它们的最大长度很短。我相信您可以理解在使用短密码时使用这种原始方法来增加熵的必要性。

  • 注意:密码不区分大小写。

虽然这对用户来说可能很方便(不用担心大写锁定),但从不建议这样做,因为它总是会降低密码的熵。在这种情况下,由于存在最大长度为 8 个字符,因此更加不鼓励这样做。

这应该修复,但现在对他们来说会很麻烦,因为现有用户已经习惯了不安全的配置!

不包含任何空格

我看到的唯一原因是他们是否以纯文本形式显示密码。(即忘记密码电子邮件,或技术支持查找)根据大多数标准,软件设计很差(不安全)。

更好的策略是禁止查找,只允许更改。事实上,强烈建议使用强(慢)密码哈希,例如 BCrypt,它本质上禁止查找作为其核心设计的一部分。

  • 不以?或开头!

非常奇怪,但不是密码熵的重要杀手。

  • 不以三个相同的字符开头

嗯,我不太在意这个,但我想知道他们为什么只看开头。8 字符密码中任意位置的 3 个相同/相邻字符比它可能的弱。

  • 密码必须与您之前的 5 个密码不同。

这个主题可能有一个专门的安全堆栈交换问题。这是网上银行和某些其他身份验证系统的常见做法。

我认为这也与强制预定的密码更改相结合。可能的结果是:

  • 用户将写下他们的密码而不是使用他们的记忆,
  • 或者,用户会选择一个简单的模式。

但是,如果密码更改不是强制性的,那么唯一的问题是

  • 必须继续存储未使用密码的哈希值,以便进行比较。

虽然这不是一个严重的问题,但它是不受欢迎的。

像这样的糟糕政策比没有更糟糕。

此策略意味着通常使用“123”的人现在将拥有更安全的密码,但它仍然很弱。这也意味着使用类似“fzFEZ#5$3rt4564ezezRTyht”(随机生成)或只是:“cat j_umps over the brownpainted wall412”(强熵)的人现在将拥有更弱的密码。

在这种情况下,无论如何使用弱密码的人也会被黑客入侵(因为这种限制性和弱策略,并且攻击者能够设置特定的攻击规则)。但是通常使用强密码的人也会这样做。

换句话说,它的安全性要低得多。没有任何策略,只有使用弱密码的人容易受到攻击;现在每个人都很脆弱。

在我看来,没有会更好 原因列表如下:

  • 这些策略使人们倾向于在那里写下密码并将其粘贴到监视器或类似设备上。(密码比提供什么安全性?)
  • 这些规则很容易推断出来,并且(通过使用这些类型的盒子)甚至可以向任何潜在的入侵者宣布。(就像让我们想把我们的密码的“规则”排除在外的人一样,所以他们只需要做一个有限的设置......)
  • 通过使密码变长,密码的熵显着提高。如今,8 是微不足道的,以至于攻击可以使用移动设备来暴力破解密码。
  • 混合大小写而不检查它们的规则建议密码以纯文本形式盯着(即使存储是加密的,大多数时候加密密钥与数据一起存储,这实际上意味着以明文形式存储) .
  • 对于大多数应用程序,不同的模式将允许更高的安全性,而根本不需要密码,例如:
    • 2 因素认证。
    • 辅助设备身份验证。
    • 智能卡身份验证。

这些策略似乎是由不完全了解密码威胁如何影响您的系统的人考虑的。相反,他们只是出于某种原因勾选“所有框”。

话虽如此,他们这样做可能有一个真正的原因。一些认证和使用需要实施其中的一些(想想卫生部门或一些政府使用)。