密码短语 - 小写和字典单词

信息安全 密码 密码
2021-08-15 14:00:12

在所有关于密码长度与复杂性的讨论中(由著名的 xkcd 条后续讨论总结),我试图对由字典单词组成的密码短语下定决心。

我了解蛮力攻击的各种计算——你知道关于密码短语的合理研究吗?

我想知道一个最小长度的策略,比如 13 个字符 - 全部小写。我希望最终得到像volleyballisfantastic. 这是3个字。如果该短语是英文或法文,则平均大约为 4 个单词。

由于转移到密码短语的原因之一是在某些系统上摆脱限制机制(在登录失败后锁定帐户 10 分钟或以指数方式更改登录提示之间的时间),我想知道字典攻击是否不会在这样的密码短语上更成功。

感谢您对现有研究的想法或指示(我用谷歌搜索,发现是关于纯暴力的讨论)。

4个回答

我想说这不是严格意义上的字典攻击,因为您不是在测试字典中的单词,而是测试单词串。这确实是具有不同“字符”集的蛮力。这使您可以使用常规熵计算。

如果攻击者暴力破解密码,就好像它是一串小写字符,那么它的长度为 13,每个令牌都是 26 个选项之一。那是 61 位的熵。

如果攻击者暴力破解它,就好像它是英语骰子列表中的一系列小写单词,那么它是 4 长,7776 个选择,所以是 51 位熵。或者,如果攻击者将其强制为 OED 中的小写单词,4 长,181,000 个选择,这给了你 70 位。

由于大多数人不会使用晦涩的单词,因此在您的示例中,您将比 60 位更接近 50 位,因此字典攻击会产生更好的结果。13 个字符的随机字母理论上会比 4 个单词强得多。

(当然,从理论上讲,需要 13 个乱码字符的密码规则仅意味着显示器上的便利贴。)

由于大多数人不会使用晦涩的单词,因此在您的示例中,您将比 60 位更接近 50 位,因此字典攻击会产生更好的结果。13 个字符的随机字母理论上会比 4 个单词强得多。

@格雷厄姆,

的确,大多数人不使用晦涩的词;但是,简单地使用数字替换单个字母是否足以提高复杂性?举个例子,而不是houseonfire你写h0useonfire. 它仍然很容易记住,并且字典必须包含“leet speak”才能更有效地暴力破解它。

你认为这准确吗?

如果您查看我们关于 XKCD 条带的问题,您会看到很多关于熵计算的讨论,这在这里很重要,因为 3 或 4 个单词的连接需要正常的蛮力程序,或者使用字典单词连接的蛮力。

你遇到的问题是这样的:

标准的蛮力破坏密码。唯一的问题是时间。如果你把那个时间足够长,那么你可以通过这种方法将密码短语视为牢不可破。

如果密码短语中的所有单词都存在于所使用的字典中,则基于字典的暴力攻击只会破坏密码短语,因此您已经从结果的不确定性开始。然后,您需要为密码短语中位置 1、2、3 和 4 的字典中的每个单词(假设您限制为 4 个单词)以及可能所有 4 个位置进行计划。

当然,一个好的节流机制将使所有在线暴力攻击都成为不可能,所以你只需要一个“足够好”的密码来强制离线攻击花费比你的安全期更长的时间(这可能是你密码到期时间的两倍,或者5 次,或您需要的任何因素)

您应该始终对登录尝试实施某种形式的限制——即使使用随机单词技巧,对于许多人来说,记住一个具有足够熵的密码以防止不受限制的字典攻击是不切实际的,特别是如果他们需要一个单独的密码他们使用的每个网站。

(在客户端有一些方法可以解决这个问题,比如使用安全密码钱包来存储每个站点的密码,使用一个强密码来访问钱包,但由于各种原因,它们还没有广泛流行。)

还值得注意的是,即使没有登录限制,坚定的攻击者也可以很好地对您的站点进行 DOS 操作。节流,如果不小心实施,只会使特定类型的有针对性的 DOS 攻击更容易。为了减轻这种影响,我建议至少采取以下步骤:

  • 设置相当低的每 IP 登录限制,以及更高的每站点登录限制。这意味着攻击者必须使用具有不同 IP 地址的多台计算机才能有效地对您的站点进行 DOS 操作,虽然这当然是可能的,但仍然会出现减速带。(您可能需要也可能不需要每个用户的限制;如果您期望字典攻击针对单个用户,这是有道理的,但在许多情况下,典型的攻击者会对任何帐户的密码感到满意,在这种情况下,他们的最好的策略是同时攻击它们。)

  • 当达到限制时,记录它。如果它不断受到攻击,请提醒站点管理员——无论是 DOS 尝试还是真正的字典攻击,他们都会想知道它。

  • 如果用户因限制而无法登录,请确保为用户提供与管理员联系的替代方式。

  • 最后但同样重要的是,在所有登录尝试中都需要一个反 CSRF 令牌。无论如何,您都希望这样做以防止登录 CSRF,但作为一个有用的副作用,它还可以阻止某些类型的简单分布式攻击(例如制作登录脚本的直接链接并将其作为图像 URL 广泛包含在阅读论坛帖子)。

归根结底,IMO 密码长度和格式要求是一条红鲱鱼,至少从网站管理员的角度来看:如果您让您的用户选择他们自己的密码,那么无论如何他们中的一些人都会选择弱密码。如果您需要带标点的字母数字密码,部分用户会选择“abc&123”;如果您需要四个词的短语,他们会选择“我爱我的妈妈”。

您可以接受这一点并找到与之共存的方法,或者,如果您不能或不会这样做,请从您的用户手中夺走选择权并为他们生成随机密码。在这种情况下,我强烈建议使用“四个(或更多)常用词”方法,因为对于给定的熵,它产生的密码比随机选择字符或音节要容易得多。