如何创建安全密码?

信息安全 密码
2021-08-23 11:35:35

我知道标准技巧,创建一个长密码、数字、符号、大写字母等。我的问题是如何判断密码的安全性。

我听说过制作安全密码的不同技巧。例如,在著名的 xkcd 漫画问世(correcthorsebatterystaple)之前,这将是一个完美的密码。没有破解者会以它本身为目标,而暴力破解将需要永远。既然知道了这种模式,那么这种密码风格就没有那么安全了,因为现在破解软件是针对它的。

因此,尽管密码安全工具通常会测量熵位,但破解者会使用一些技术来使密码更容易破解。

我怎么知道我的密码真的安全?有没有工具可以根据真正的破解软件检查我的密码?

2个回答

严格来说,您无法测量密码的熵。(或者如果你喜欢,你可以测量它,但值为 0。)密码中没有熵:熵是密码生成的方式。

xkcd 漫画中对此进行了解释:“正确的马电池订书钉”只是一个示例,密码说明的是生成该密码的过程。即:“四个随机常用词”。下一个面板给出了量化“44 位熵”,它基于每个单词 11 位(即在 2 11 = 2028 个单词中随机选择每个单词)。该密码生成过程具有 44 位熵,这意味着平均而言,知道密码是如何生成的攻击者需要进行 2 43 次猜测才能找到密码。(平均而言,攻击者需要枚举一半的密码空间。)

漫画不建议您选择“正确的马电池订书钉”作为密码。它建议您选择 4 个随机单词。模式是已知的,但不是随机选择。Diceware是这种方法的一种流行变体:您通过为每个单词掷 5 个骰子从 6 个5 个单词的列表中选择单词。

换句话说:选择密码有两个方面,随机性和巧妙性。该方法很巧妙,对密码的安全没有帮助。随机性使密码安全,不管任何聪明之处。聪明只对使密码更容易输入和记忆有用。如果你很聪明,你只会得到保护,以抵御不如你聪明的攻击者。

像“挑选随机词”这样的方法很容易量化,因为只要随机选择是独立的,熵就会加起来如果您添加约束(例如生成某些内容并“平滑”以使其令人难忘),您需要计算剩余的可能性数量并注意平滑是否可以将多个不同的随机滚动映射到相同的最终密码。

是的,有一些工具可以检查密码的强度它们有两种。快速的应用一些启发式方法他们并不总是正确,因为他们不知道密码是如何生成的;他们倾向于使用具有聪明位的密码而不是具有随机性的密码。由于他们只看到最终结果而不是生成方法,因此他们无法考虑随机性。例如(随机挑选——不是加密意义上的)passwordmeter.com告诉我“correcthorsebatterystaple”很弱(25%),而“homechasebogbigamy”(我刚刚用 XKCD 程序随机生成)很弱(19%)。然而,如果我只告诉你我是如何生成第二个密码而不是随机选择是什么,那么以 100 次尝试/秒/计算机的速度,大约需要 3 年的时间才能找到 1000 台计算机!相比之下,pass+word1!被评为强(64%)。

第二种密码强度检查器是……破解软件。这为您提供了针对相同破解软件的密码的完美衡量标准。它并没有告诉你太多关于其他破解软件的信息。

确保您的密码安全的最佳方法是测量其中的随机性数量。N 位随机性 = 平均需要 2 N-1次猜测才能破解它。算出你想要多少 2 N-1并推导出 N。


练习:为了生成“homechasebogbigamy”,我使用了一个按字母顺序排列的 4172 个不同单词的列表,并通过在前 2048 个单词中随机抽取一个单词来生成每个单词。假设该列表是公开的。列表按字母顺序排序的事实是否会降低密码的熵?我声称此过程具有 44 位熵的说法正确吗?

看看这个来自 Thomas Pornin 的这篇文章的理论。

如果您想感受一下密码的强度,我建议您尝试使用真正的破解工具(如John the RipperHashcat)输入密码。

请记住,密码破解需要调整以构建良好的字典和规则。John the Ripper wiki包含许多关于该主题的宝贵提示和建议。