通过多个密码创建密码的模式

信息安全 密码
2021-09-03 06:22:41

假设我创建了 100 个单独的密码,由大约 8 个随机字符组成,后跟两个对所有密码都相同的常量:

Generated password = 8 random characters + `.p`

如果我为所有 100 个密码执行此操作,是否.p为每个密码添加相同的密码会使它们或多或少安全?如果所有这些密码中有两个被泄露,会有多大的影响?

3个回答

这取决于您要防范的攻击类型:

  • 如果您的密码是数以百万计的数据泄露事件中的一个,而攻击者并未专门针对您,那么您的密码实际上是 10 个随机字符而不是 8 个。破解将更加困难。
  • 如果攻击者以您为目标,并且知道您的模式,那么它根本不会为您提供任何保护。
  • 如果攻击者以您为目标,并且不知道该模式,那么它可能会有所帮助,直到攻击者发现它为止。破坏一个帐户会有所帮助,破坏两个会使模式变得明显,因此无用。

因此,您的系统有时会有所帮助,但并非总是如此。或者换句话说:您的“有效”密码长度将在 8 到 10 之间,具体取决于您的威胁模型。但是,除非您有特定的理由不这样做,否则我会忘记所有关于智能系统的内容,而只是安装密码管理器。

到目前为止,答案是“如果我作为用户在各个站点上添加'.p'作为我所有密码的结尾”

所以我想解决原始问题可能意味着的另一种可能性:“如果我作为系统程序员将'.p'添加到我所有用户密码的末尾”

您所描述的内容称为“Pepper” - 它是一个特定于应用程序的片段,在散列之前附加到密码上。

那么这对你有什么好处?

  • 它可以防止字典攻击(因为攻击者不知道每个密码都有一个特定的字符串附加到末尾。)
  • 它可以防止另一组凭据的泄露损害您的凭据(因为其他系统的 Hash(Password) 无法与您的 Hash(Password+AppSpecificPepper) 匹配。

没有得到什么?

  • 它不会阻止一个密码被破解到具有相同密码的所有帐户,因为 Hash(Password+Pepper) 将匹配具有相同密码的所有帐户。

那么,当一切都说完了呢?绝对 - 将“.p”(或更长的秘密字符串)添加到用户密码的末尾。它使密码比单独的原始 8 个字符更安全 - 最坏的情况是,攻击者设法破坏应用程序并获得胡椒,在这种情况下,你只会像你没有使用胡椒一样糟糕第一名。但请确保同时添加 Salt,这样您就不会让攻击者通过一次密码破解来破坏多个帐户。

没有更多,也没有更少的安全性。攻击者即使泄露了您的一个密码也毫无头绪(如果您不使用 2 位数字作为后缀,这对于攻击者来说是其攻击规则的常用设置)。

但是,如果攻击者泄露了您的两个或更多密码并试图破解其中的其他密码,他肯定会看到该模式并使用它。