我已经测试了Microsoft提供的工具,该工具可以测试密码强度并对其进行评级。对于“我今晚要吃午饭”之类的密码,该工具将其强度评为“最佳”,而对于“ th1 $ .v4l”之类的密码,则将该强度评为“中级”。

我想知道密码长度到底有多重要。在这种情况下,根据他们的工具,第一个密码更好,但是真的更好吗?它基于字典单词,除空格外没有数字和其他字符的组合,并且似乎很容易破解(不考虑蛮力)。

该工具是否优先考虑长度而不是实际强度?

评论

我想知道是否有人为密码短语建立了基于Markov模型的蛮力。

NTLM和MD5已经有可用的Rainbow表,可以使用键盘上的所有字符来破解最长8个字符的密码。 “低位字母,数字和符号”的设置只有400GB大,用于完整空间的设置大约有600GB。

相关的XKCD。

@StephenPaulger,要详细说明“基于Markov模型的蛮力”如何工作?

@Pacerier Markov链可以存储一起使用的频率词,因此,如果您用一个词开始猜测密码短语,则可以先尝试更可能的关联词。这是我可以尝试解释的最快的方法,如果您想了解更多信息,可以在网上进行很多描述该概念的事情。

#1 楼

“不考虑暴力破解”-这正是这些工具所要衡量的。
显然,他们没有尝试进行社会工程学,或者试图发现这是否是用户的第一个女友的狗生日。攻击者可能知道这一点,但是这些工具却不知道。

他们所测量的只是蛮力工具破解它的难度。甚至不是密码的熵(这是生成方法的一个属性),只是估算了暴力破解工具成功找到正确密码所花费的时间。
显然,熵对此有影响,但是只有总熵才重要,而不是每个字符的熵。所以是的,每个字符都有很多等概率的选择确实增加了熵,但是长度可以通过按字符将每个字符的熵提高到更高的幂,从而在使密码不可破解中扮演更重要的角色。计数。这导致更高的总熵,这是唯一重要的事情。

所以,在您的情况下-是的,仅32个字符的仅用于alpha的密码短语比8个字符的标点密码更强。


我将尝试在这里做一些数学运算:(如果我输入错误,请更正我):

如果我们假设使用标准美国样式的键盘,共有85个可能的可打印字符(也许可以再刮一些,但现在就放手):小写字母+大写字母+数字+标准标点符号+空格。
每个字符6.3位强度;密码长度为8个字符时,强度约为50.4位。
请注意,密码强度非常高...即使我们再输入一些“特殊”字符,也不会进行太多升级。

现在,对于您的32个字符,仅使用Alpha密码...
假设仅使用小写和大写字母(即使您没有使用过),再加上一个空格(U + 32) 。连数字都没有...
这将为您提供54个可能的字符,每个字符约5.8位。长度为32个字符时,强度超过185位。明显更强。而且甚至没有数字,即使在“简单”密码方案中也通常会接受数字。


布鲁斯·施耐尔(Bruce Schneier)经常谈论切换到长记忆的密码短语比短的,随机的,看起来很怪异的密码更加安全。
现在,您知道为什么了。

评论


您计算每个字符的位强度的方法是什么?

–史蒂夫
2011-3-24在17:50

@SteveS-我进行了一次简单的计算,确定可接受范围内有多少种可能性(每个字符为85 | 54种可能性),并将其转换为代表这些可能性所需的位数。诚然,这是一个很粗略的估计,是一种餐巾纸式的计算,虽然不是很值得实验室研究(因此是近似值),但我认为它仍然具有代表性。

–AVID♦
2011-3-24在18:55

优秀答案@AviD。如果只有更多的人进行数学运算(并且软件供应商以任意的“对不起,您的密码必须在8到16个字符之间”退出)大小限制,我会很高兴。

–丹·麦克格拉思(Dan McGrath)
2011年6月2日13:13

附录A在这里进行了相同的计算。 csrc.nist.gov/publications/nistpubs/800-63/SP800-63V1_0_2.pdf

–user185
2011年6月13日16:16

@Graham非常有趣。该文档实际上具有不同的结果,主要是因为我指的是完全随机选择的字符,而NIST文档巧妙地考虑了用户选择-即不是随机的,因此每个字符的熵位数更少。我认为NIST文档比我在这里的答案更正确-但仍然不够,如果您采用这种方式,那么也应该考虑用户的知识,而不仅仅是语言功能。但是,到那时,它已经不再是熵比特的问题了……而且不管怎么说,这个q都是关于蛮力的……

–AVID♦
2011年6月13日17:00

#2 楼

您担心,因为密码短语使用词典单词,所以比必须强行破解的单词更容易破解。

; dr:这是一个理论上的担心,但是现在这不是实际问题。

“我今晚要吃午饭”是一个五个字的词组使用英语中最常见的5000个单词。天真的,猜测与猜测5000个字母的字母表中的5个字母的密码是同构的,这是3x10 ^ 18的可能性。这与使用大小写,数字和符号的10个字符的密码大约相同。

当然,足够聪明的破解程序可以大大减少这一点。该句子是标准的英语散文,遵循严格的规则,其信息熵速率约为每个字母1位。这意味着您的短语具有33位熵,使其仅与5个可打印ASCII字符的完全随机密码一样复杂。

并不是很复杂。

但是鉴于缺乏复杂性,您需要专门的“英语密码破解程序”,可以将诸如markov链建模之类的东西优化为GPGPU处理内核。据我所知,目前尚无类似的开发。因此,除非有足够的资源来创建该软件的人想要您的密码,否则您应该在相当长的一段时间内都是安全的。

评论


同样非常重要的是,除非攻击者知道您的密码采用这种格式,否则它不是他们将使用的工具。即使密码数量相对较少,也要通过“万一以防万一”,尤其是通过网络连接时,仍然要花很多时间。

– Ph子
2011-3-24在16:29

重要的是要注意,如果我故意拼错一个单词,例如“午餐”为“午餐”,则复杂性将大大增加。

–AndSoYouCode
2012年5月28日9:37

增加,是的,但不是“巨大”的。攻击者所需要做的就是在词典中包含一些常见错误。如果平均每个单词加上一个错字/拼写错误,那将使字典大小增加一倍,从而每个单词又增加一点熵。因此,这是有价值的,但不仅仅只是从短语转换为真正随机的单词。

–rosuav
18年8月30日在18:18

我认为此答案可能需要一些更新,在过去的大约8年中,情况发生了变化。这些实际上是1600个左右的单词,但更重要的是:github.com/initstring/passphrase-wordlist ...看来人们已经开始开发破解非随机密码短语的工具。

–德罗伯特
19年1月11日在18:57



#3 楼

熵是一个很奇怪的指标。
NIST特殊出版物800-63,《电子认证指南》包含了估算密码强度的指南:

熵的变化取决于用户是否选择了密码或随机生成。从统计上讲,很难猜测用户选择的密码的第一个字符,但是猜测第二个则更容易,而第三个则更容易。当使用标准键盘上的94个字符时,NIST准则将第一个字符的熵加4位,但是接下来的7个字符中的每个字符仅将2位赋予熵,依此类推。
随机选择的密码不显示模式,因此每个字符都带有相同级别的熵,大约为6.6位。
这意味着用户选择的八个字符的密码具有18位的熵,而长度相同的随机密码大约为52.7位。

换句话说,如果您可以确定密码的前3个字符为

敬畏

,那么下一个字符为s的几率是因此,当我们说密码字符可以是任何字符时,这并不是真的。大多数人使用的单词具有很强的模式,并隐式地减少了以下字符的可能集,从而产生了具有较低熵(随机性)的密码。

#4 楼

我不确定“今晚我要吃午饭”如何容易受到字典的攻击,它是一个七个单词的短语。其中“ th1 $ .v4l”是一个带有单词连接的两个词组,而字符替换似乎是密码破解者从此永远解决的东西。

一些密码测试人员使用cracklib + ajax之类的测试加上一个小的规则库即可清除您的“ this.val”密码。

评论


那你到底在说什么?即使第一个密码是由常见的词典词组成,但没有其他特殊字符,第一个密码也会更安全吗?

– iijj
2011-3-24在11:13

@iijj,那是完全正确的-长度更重要。

–AVID♦
2011-3-24在13:14

#5 楼

密码强度检查器的可靠性问题通常还扩展到检查器的安全性。令人震惊的是,在线密码强度计的数量激增。您不必要将密码暴露给互联网上的某个站点!即使是用于密码检查的本地应用程序也可能是邪恶的。声称该站点使用javascript且从不通过Internet传输密码的说法不可信任。某些密码强度测试站点肯定是由黑帽子经营的,他们只是将它们与他们可以收集到的有关您的其他任何信息一起添加到词典中。其他站点由有良好意图的人运营,但可能实施不正确,例如易受攻击的服务器或缺少https。还有一些人容易受到“当局”的攻击,他们有办法强迫该网站进行揭露,例如某些IP地址范围提交的密码。

我建议使用此类网站的任何人都不要提交他们实际打算使用的密码。

评论


看,您错过的重点是您可能已经打算使用该网站。添加“密码强度检查器”不会增加您的风险。如果他们真的很邪恶,他们将不会加密您的密码并采用它,不需要整个“密码强度检查器”诡计...

–丹·麦克格拉思(Dan McGrath)
2011年6月2日13:20

@dan-澄清一下,我是在谈论原始帖子和其他人指向的第三方托管代码。当然,如果我要在其上创建密码的站点提供自己的检查器(由他们托管,安全地保存等),则在同一站点上会有更多的攻击面。

–nealmcb
2011年6月2日14:16

#6 楼

从理论上讲,“密码强度计”不起作用。该工具只能看到密码生成过程的结果,而密码“强度”实际上是该过程的一个属性。请参阅此答案,然后再查看该答案以获取详细信息。

密码强度计应用程序可以为您提供的最佳服务是破解密码所需的时间-换句话说,它假定攻击者运行完全相同的代码,对您一无所知。在实践中,这不是一个合理的假设:攻击者在攻击您时特别是在您之后。依靠密码表来确保安全性就像在祈祷所有攻击者都没有能力:这是一种“信仰飞跃”。

#7 楼

尝试防御暴力攻击时,长度几乎是所有内容。

即使基本的密码破解程序也允许使用1337语言的样式替换,因此在您的示例中,您实际上是在比较7个单词的密码短语和2个单词的密码短语。

,只要您有长密码短语(long的确切定义可能会因您的需要而异,但至少应超过13个字符以使彩虹表攻击的几率最小)强迫攻击者尝试其他形式的攻击,例如社会工程学;找出您在哪里写了密码短语;抓住猫人质等

#8 楼

查看该Microsoft工具的Javascript,看来它只有有限的词典单词列表(请参阅js文件中的264行及更高版本),因此这可以解释为什么您的密码短语获得的评分可能高于其应有的评分。

我个人会推荐这种密码强度测试仪,它对构成密码的元素进行了很好的分类,并告诉您如何进行改进。
它对您的密码“今晚我要吃午饭”的评分为56%,对您的第二个密码“ th1 $ .v4l”的评分为74%,这似乎更现实。

但是,此工具根本不使用任何单词表-您的密码短语被标记为仅小写,而“我今晚要吃午饭!”获得98%。您可以得出有关%年龄等级有用性的结论。

关于长度对裂纹时间的影响,请参见本文。请注意,它的历史可以追溯到2009年,基于GPGPU的密码破解程序现在可以在具有500美元GPU的单台游戏/工作站PC上以10 ^ 9 / sec(本文中的“ F级”最高攻击水平)进行管理。卡。

评论


好像是个很棒的工具,谢谢。总体得分是否意味着很难破解?

– iijj
2011-3-24在11:16

除了它要求您通过http在表单中输入密码之外,其他事实...

– Yaur
2011年5月23日,下午3:07

@Mark Davidson很难验证,并且需要不断进行。

– Yaur
2011年5月23日在8:12

@Yaur,我不同意。验证非常简单,请使用firebug net监视模式,您可以观察到该站点的所有活动。您也可以使用wireshark对其进行监视。

–马克·戴维森
2011年5月23日在8:58

评估密码质量非常困难。您推荐的检查器将“狗吃了作业!”的密码设置为“非常强” /“ 97%”。...也许用Google搜索该密码会是更好的指标?该“密码”给出了6000次匹配,因此可能不是那么好:lmgtfy.com/?q=%22Dog+ate+homework!%22

– Mikko Rantalainen
13年8月8日在10:58

#9 楼

我最近在报纸上看过漫画。我不记得这也许是在线漫画的数字拷贝。

它很好地说明了这一争论。现在,我将向您解释它的意思:

就像“ th1 $ .v4l”那样,密码短并不意味着它容易猜到。但是,仅仅因为密码很长也不意味着容易猜到,就像“我今晚要吃午饭”那样。

事实是,没有认真的人黑客将坐在那里猜测您的密码。他们可能使用词典单词,但是那些词典并不包含所有可能的句子。只是单词。

不,黑客所做的(当他们用尽典型的WORDS词典时)通常是让计算机系统地通过各种可能的组合进行操作。从头到尾。如果迫使他们沿着此路径前进,则密码越短越糟。时间越长越好。无论是否有数字或符号。数字和符号仅对人类记忆和人类猜测至关重要。对于计算机来说,它们是相同的... 1和0的序列...没什么区别。

帮个忙。保持较长但很简单。简短而复杂可能会花费大量的黑客时间,而冗长而简单则会做同样的事情。问题是,您想要一个容易记住或难以记住的密码吗?

#10 楼

好吧,如果您将密码的强度定义为密码的难易程度或被破解的可能性,那么几乎与直觉相反,密码的强度更多是密码长度的函数,而不是密码难于记住的原因。
当潜在的攻击者对您的密码一无所知并且只能使用蛮力破解密码时,更长的密码更容易记住,例如

“我今晚要吃午饭”

破解所需的时间要比

“ th1 $ .v4l”

简单,因为攻击者需要正确猜出更多的字符为了破解密码。较长的密码提供了更大的搜索空间,可让您的针(密码)拥有更大的草垛可隐藏。

#11 楼

好了,所有密码强度检查器工具都会验证使用蛮力和字典攻击来查找密码的工作量。

就像您在此处比较两个密码的结果一样。


http://www.passwordmeter.com/


“ th1 $ .v4l”是


具有74的强密码%


“我今晚要去吃午餐”是


好密码56%


使用蛮力破解此密码所需的时间更少。

评论


passwordmeter.com是用于密码统计的好工具,但最终强度数字不好。请考虑密码:“ 1111111111111111111111111111111111133336666666666666546546644646”。得分是0%。废话我喜欢该工具password-checker.online-domain-tools.com。它也允许您进行字典检查。

–马丁·维斯蒂卡(Martin Vseticka)
13年2月3日,12:38

#12 楼

密码强度只能由您自己或他人来评估,如果您告诉他们如何创建密码。例如,如果我使用使用50个字符集的随机密码生成器,并且密码长度为8个字符,那么我的密码将是大约3.9×1013或245中的1。如果我使用基于汉语拼音的密码,并且密码为由4个单词组成的短语,假设每个单词的可能值为2,050,我的密码为可能的1.8×1013中的1。汉字的平均拼音罗马化长度约为3到4个字符,而“ 4字”密码约为16个字符。但是,此拼音密码比从50个字符集生成的8个字符的密码要弱。

如果攻击者知道密码是如何生成的(例如,通过检查从密码集窃取的纯文本密码)。某些人的不安全站点),他们掌握了将暴力破解的难度降低很多的必要知识!因为他们知道您不再使用键盘上所有可能的字符,所以它们可以消除不可能的组合并节省时间。

下次生成密码时,请考虑一下您的算法/方法正在使用生成一个。使用Password Safe从72个字符集(+-=_@#$%^&<>/~\?abcdefghijkmnopqrstuvwxyzandABCDEFGHJKLMNPQRTUVWXY346789)中生成21个字符的密码,您将获得大约1.0×1039个可能的组合或130位安全性。

评论


从四千个常用单词的列表中随机选择十个单词,将获得相同的密码熵,并且在需要时仍易于键入或转录。即使使用全小写的ASCII码,长度也有很大的不同。

–rosuav
18年8月30日在18:24

#13 楼

通常,密码强度检查器不是很可靠。他们倾向于依靠过于简单的计算,即假定攻击者仅尝试通过尝试所有可能的字符组合来猜测密码,这一假设在实践中很少如此。

实际上,有动机的攻击者可以提出了各种不同的猜测密码的策略,其中一些甚至没有经过编程就可以考虑使用密码强度检查器。例如,密码“!QAZXSW @#EDC”可能看起来像相当随机,直到您意识到我是通过按标准英文键盘上的非常简单的按键模式编写的。攻击者使用设计为猜测基于键盘布局的密码的程序,可以在数分钟内轻松破解该密码。 (并且确实,我是否曾经被Pwned密码检查器表示该确切的密码已经被使用和多次破解了。)类似地,“我今晚要吃午饭”对于典型的密码强度检查器来说似乎很强大,但是可以容易被攻击者使用旨在猜测常见英语句子的程序破解。

密码强度检查器在这种情况下比其他方法更好(例如,ZXCVBN可以检测键盘-我在上面给出了基于模式的密码,并给出了更实际的强度估算值),但最终仅通过分析密码本身并不能总是知道密码的强度。不能仅仅因为您使用的密码强度检查器无法猜测您用来选择密码的方法,而试图猜测您的密码的攻击者就不会猜测,这是不安全的。这种假设被称为“默默无闻的安全性”,在信息安全社区中依赖它被认为是不好的做法。

那么,您应该怎么做呢?随机选择您的密码,最好使用诸如骰子这样的随机性源,它不能被人为的自然偏见削弱。这样,即使您假设攻击者确切知道密码的生成方式,您仍然可以轻松计算出攻击者在正确猜测密码之前必须尝试的猜测次数。

Diceware是一个很好的例子。生成密码的方法。即使他们知道您从中选择密码的确切单词列表,四个随机的Diceware单词平均也需要进行77764/2 =〜1.83万亿次猜测。出于类似的原因,密码管理器生成的密码也很安全。

有关如何安全选择密码的更多信息,我建议Thomas Pornin对“ XKCD#936:简短的复杂密码或长字典密码? ”,其中详细介绍了密码熵以及如何计算随机生成的密码的强度。