我已经测试了 Microsoft 提供的工具,该工具可以测试密码强度并对其进行评分。对于诸如“我今晚要吃午饭”之类的密码,该工具将其强度评为“最佳”,而对于诸如“th1$.v4l”之类的密码,该工具将其强度评为“中等”。
我想知道密码长度到底有多重要。在这种情况下,根据他们的工具,第一个密码更好,但真的更好吗?它基于字典单词,除了空格之外没有数字和其他字符的组合,而且看起来很容易破解(不考虑暴力破解)。
那个工具是不是看重长度而不看实力?
我已经测试了 Microsoft 提供的工具,该工具可以测试密码强度并对其进行评分。对于诸如“我今晚要吃午饭”之类的密码,该工具将其强度评为“最佳”,而对于诸如“th1$.v4l”之类的密码,该工具将其强度评为“中等”。
我想知道密码长度到底有多重要。在这种情况下,根据他们的工具,第一个密码更好,但真的更好吗?它基于字典单词,除了空格之外没有数字和其他字符的组合,而且看起来很容易破解(不考虑暴力破解)。
那个工具是不是看重长度而不看实力?
“不考虑蛮力”——这正是这些工具所衡量的。
显然他们不会尝试社交工程,也不会尝试发现是否是用户的第一个女朋友的狗的生日。攻击者可能知道这一点,但这些工具不知道。
他们衡量的只是暴力破解工具破解它的难度。甚至没有密码的熵,这是生成方法的一个属性,只是估计一个暴力破解工具需要多长时间才能成功找到正确的密码。
显然,熵对此有影响,但重要的是总熵,而不是每个字符的熵。所以是的,每个字符有很多等可能的选项确实会增加熵,但是长度可以在使密码不可破解方面发挥更重要的作用,通过将每个字符的熵提高到更高的幂,按字符数数。这使得总熵更高,这是唯一重要的事情。
因此,在您的情况下 - 是的,32 个字符的仅 alpha 密码短语比 8 个字符的标点符号密码强得多。
我将尝试在这里做一些数学运算:(如果我错了,请纠正我):
如果我们假设标准的美式键盘,则有 85 个可能的可打印字符(可能可以再刮一些,但现在先这样吧):小写字母 + 大写字母 + 数字 + 标准标点符号 + 空格。
这赋予每个字符约 6.3 位的强度;密码长度为 8 个字符,为您提供约 50.4 位的强度。
请注意非常强烈...即使我们再添加一些“特殊”字符,您也不会进行太多升级。
现在,对于您的 32 个字符,仅包含 alpha 的密码......
让我们假设只有小写和大写字母(即使您没有使用任何字母),加上一个空格 (U+32)。甚至没有数字......
这给了你 54 个可能的字符,每个字符大约 5.8 位。长度为 32 个字符,即超过 185 位的强度。明显更强。这甚至没有数字,即使在“简单”密码方案中通常也可以接受。
Bruce Schneier 经常谈论如何切换到长而令人难忘的密码短语比短的、随机的、看起来怪异的密码更安全。
现在你明白为什么了。
你担心因为密码使用字典单词,它可能比必须暴力破解的东西更容易破解。
tl; dr:这是一个有效的理论上的担忧,但现在它不是一个实际的担忧。
“我今晚要吃午饭”是一个五个单词的短语,使用英语中最常见的 5000 个单词。天真地,猜测它与在 5000 个字母的字母表中猜测 5 个字母的密码是同构的,这是 3x10^18 种可能性。这与使用大小写、数字和符号的 10 个字符的密码大致相同。
当然,一个足够聪明的破解程序可以大大减少这种情况。这句话是标准的英文散文,它遵循如此严格的规则,以至于它的信息熵率约为每个字母 1 比特。这意味着您的短语具有 33 位熵,使其仅与 5 个可打印 ASCII 字符的完全随机密码一样复杂。
这不是很复杂。
但是,要利用这种复杂性的不足,您需要一个专门的“英语密码破解器”,它可以将诸如马尔可夫链建模之类的东西优化到内核中以进行 GPGPU 处理。据我所知,目前还没有类似的东西正在开发中。因此,除非有资源创建该软件的人想要您的密码,否则您应该安全一段时间。
熵是一个奇怪的测量方法。
NIST 特别出版物 800-63,电子认证指南包括用于估计密码强度的指南:
熵根据密码是由用户选择还是随机生成而有很大差异。据统计,猜测用户选择的密码的第一个字符很难,但猜测第二个更容易,第三个更容易。NIST 指南在使用标准键盘上可用的 94 个字符时为第一个字符提供 4 位熵,但接下来的 7 个字符中的每个字符仅提供 2 位,依此类推。
随机选择的密码不显示模式,因此每个字符携带相同级别的熵,大约 6.6 位。
这意味着用户选择的八字符密码有 18 位熵,而相同长度的随机密码大约有 52.7 位。
也就是说,如果你能确定我密码的前 3 个字符是
敬畏
那么下一个角色出现的几率s
比它要高得多*
。
所以当我们说密码字符可以是任何字符时,这不是真的;大多数人使用其中具有强模式的单词并隐式减少可能的以下字符集 - 从而产生具有较低熵(随机性)的密码。
我不确定“我今晚要吃午饭”是如何在字典中易受攻击的,它是一个七个单词的短语。其中“th1$.v4l”是一个带有字符连接的两个单词短语,以及密码破解者似乎永远处理的字符替换。
一些密码测试人员使用类似cracklib+ajax 的测试和一个小的规则库来清除你的“this.val”密码。