我在绊脚石上碰巧碰到了布鲁斯·施耐尔(Bruce Schneier)的这篇文章,声称XKCD密码方案实际上已经失效。

现代密码破解者使用了与词典中不同的词:[...]
这就是为什么经常引用的用于生成密码的XKCD方案(将诸如“ correcthorsebatterystaple”之类的单个单词串在一起)不再是一个好建议的原因。密码破解者将使用此技巧。
攻击者会将他有权访问的有关密码创建者的任何个人信息输入密码破解者。一个好的密码破解者将测试通讯簿中的名称和地址,有意义的日期以及它拥有的任何其他个人信息。 [...]如果您的程序曾经将其存储在内存中,则此过程将对其进行抓取。

他的争论似乎是因为众所周知,人们可能会以这种方式构造密码它易于攻击,但优势似乎完全在于指数的力量。我认为他是在暗示人们不是真正地随机选择单词,这也许并不完全是虚假的,因为我已经多次翻卷以获得并非全部副词和形容词。但是,我认为将熵降低2-10倍并不是很重要(如果单词列表加倍到4000,不是那么困难,那么损失就可以弥补)。
另一个关于“如果您的程序曾经将其存储在内存中”虽然有点令人不安……不是所有密码一次或一次都存储在内存中吗?似乎有点过分了;他实际上指的是什么?

评论

在reddit.com/r/technology/comments/1yxgqo / ...上有关于123条评论的讨论。
鼠标悬停时,图像标题显示-“对于那些了解信息理论和安全性并且与不认识的人(可能涉及混合案例)激怒的人,我深表歉意。”这对您有帮助:)

TED演讲对不同的密码创建方案进行了一些有趣的研究,其中包括xkcd:ted.com/talks/…

仅作记录:如果您的密码确实正确,则现在安全性大大降低了!

如果您确实使用了正确的密码,请确保您没有登录到会被静默截断的系统!像correcth这样的密码可能比N#y; f8eR更容易猜测。

#1 楼

圣战
我想您会发现,正确的密码生成方式可能会引发一场圣战,每个小组都认为对方犯了一个非常简单的数学错误或遗漏了这一点。如果您在一个房间里有10位计算机安全专家,并询问他们如何提供好的密码,您将得到11个不同的答案。
误解
关于密码没有一致建议的众多原因之一是这全都归结为威胁建模的问题。您到底想防御什么?
例如:您是否要防御专门针对您并且知道您的密码生成系统的攻击者?或者,您只是某个泄漏数据库中的数百万用户之一?您是在防御基于GPU的密码破解还是仅是弱小的Web服务器?您是否在感染了恶意软件的主机上[1]?
我认为您应该假设攻击者知道您生成密码的确切方法并且仅将您作为目标。[2]在两个示例中,xkcd漫画都假定生成的所有细节都是已知的。
数学
xkcd漫画中的数学是正确的,并且不会改变。
对于密码我需要输入并记住我使用的是python脚本,该脚本生成真正随机的xkcd样式密码。我有2 ^ 11(2048)常见,容易拼写的英语单词词典。我可以将完整的源代码和单词列表的副本提供给攻击者,但仍然会有2 ^ 44个可能的密码。
漫画说:

1000位猜测者/ Sec
对弱远程Web服务的可恶攻击。是的,破解被盗的哈希更快,但这不是普通用户应该担心的。

在易于记忆和难以破解之间取得了很好的平衡。

如果我们尝试更多的功率怎么办?
当然2 ^ 44可以,但是GPU破解速度很快,而且只会越来越快。 Hashcat可以在几天(而不是几年)内破解该大小的弱哈希[3]。另外,我还有数百个密码需要记住。即使是xkcd样式,也要经过几步才能变得很困难。
这是密码管理器进入的地方,我喜欢KeePass,但还有很多其他基本相同的东西。然后,您可以生成一个更长的xkcd密码,您可以记住该密码(例如10个单词)。然后,为每个帐户创建一个唯一的128位真正随机的密码(十六进制或以64为基数的密码)。 128位将足够强大。如果您想变得偏执狂,那就大了,生成256位十六进制密码就没有多余的工作。

[1]如果您位于受到威胁的主机上,这就是存储内存的地方你输了。攻击者可以通过键盘记录/读取内存,键入或使用KeePass之类的程序复制并粘贴它都没关系。攻击者刚刚洪流了一本名为“ Top Passw0rdz 4realz 111!”的词典。
[3]当然,我们都应该使用PBKDF2,等等。。。但是SHA1上仍有很多站点。 (他们是好人)

评论


@ Dick99999现代GPU在单张卡上可以有6 GB的内存(尽管它需要2个插槽),并且可以轻松地存储数千个单词的字典。

– Nzall
2014年7月10日在9:07

@NateKerkhofs这是同时令人恐惧和惊奇的。我的第一台(可编程)计算机具有1MHz和64kb的ram,您谈论的是6GB的视频内存...

–PTwr
2014年7月10日13:11



“ 128位真正随机的密码...”真的是随机的吗?还是不是伪随机的?

– DLeh
2014年7月10日15:19

如果除了圣战部分没有其他原因,这应该是公认的答案。

–安德鲁·霍夫曼(Andrew Hoffman)
2014年7月10日在18:27

@Doorknob一旦选择了有意义的组合,大多数熵就会消失。我不会尝试估计您可以选择多少个句子,但这可能接近十亿分之一,而不是2 ^ 44中的一个。

– Dennis Jaheruddin
2014年7月11日在17:17



#2 楼

Schneier写道:



这就是为什么经常引用的用于生成密码的XKCD方案(将诸如“ correcthorsebatterystaple”之类的单个单词串在一起)不再是一个好建议的原因。密码破解者可以使用此技巧。


,但是在他的文章中进一步了解他真正的目的的关键是: >还有一种方案可行。早在2008年,我就描述了“ Schneier方案”


就这样。奥莱·布鲁斯(Ole'Bruce)断言他的计划是“唯一”,最好,获胜者和最终计划。因此,他需要对“竞争者”进行贬低的说法,而不管这些断言是否在科学上都是合理的。

在这种情况下,始终假定密码生成方法是已知的,攻击者。这就是熵计算的重点。见分析。攻击者“掌握了这个技巧”根本没有任何改变(当攻击者知道密码生成方法时,熵计算准确地描述了密码强度;当攻击者不称职并且不知道密码生成方法时,密码强度为只有更高的数量,几乎无法量化)。

关于“内存中的密码”的讽刺之处在于更加不连贯。无论您键入密码还是从密码保险箱或类似密码中复制粘贴密码,密码都一定会进入RAM。

我猜想布鲁斯很醉。

更新:特别要求Schneier在2016年8月2日发生的Reddit AMA中对他的密码短语提出谴责。 Schneier确实说过他的方案“比其他方法为每个记忆字符提供更多的熵”,与构成单词的字符相比,这是正确的。但是,当系统依赖于记忆单词而不是字符时,这也无关紧要,并且允许您组合足够的单词以为整个密码短语生成足够的“熵”。

评论


是的,我认为他的评论与他通常的好建议有些奇怪。他推荐的方案可能还不错,但是没有经过太多实际测试。密码短语方法在比较中相当容易测试,您认为这会吸引他的密码学家。也许他只是浏览了有关破解自然语言密码短语的新闻,却没有看到这些与随机单词密码短语之间的区别。

– PwdRsch
14年7月10日在16:30

您关于他需要贬低比赛的论点失败了,因为在描述了他的方案后,他立即说:“更好的是使用随机的,难以忘怀的字母数字密码(如果站点允许,使用带符号的符号),以及密码管理器(例如Password Safe)创建并存储它们”。

– wfaulk
2014年7月16日15:16



@wfaulk Password Safe是Bruce Schneier的创作,因此他对比赛的争论仍然存在。您的失败声明失败;-)

–AVID♦
14年7月17日在12:08

@AviD:我完全不知道。 😳

– wfaulk
2014年7月21日在23:43

您所缺少的,显然还有Schneier,也是没有“技巧”可以“赶上”的。 Diceware的安全性已经假定攻击者知道该方案,实际上它假定字典本身是已知的。攻击者是否拥有您确切的字典和单词数量都没关系:在太阳爆炸之前,太多的组合需要经过任何组合才能成功进行任何攻击。

–本
17年6月13日在14:32

#3 楼

[披露:我为1Password的制造商AgileBits工作]

我之所以在2011年向“迈向更好的主密码”倡导类似XKCD的方案(在此之前被称为)的原因之一是恰恰是因为其优势并不取决于攻击者知道您使用了哪种方案。如果我可以引述自己


Diceware的妙处在于,即使假设攻击者知道所使用的系统,我们也知道它的安全性
。安全性
来自掷骰子的真正随机性。鉴于观察到的密码破解者的速度[反对
1Password主密码]


XKCD漫画无法有效传达的内容是,单词的选择必须是(随机)随机的。如果您要求人类随机选择单词,则会对具体名词产生严重的偏见。这样的偏见可以并且将会被利用。

您想要多少强度

在理想的世界中,我们希望密码的强度与我们的钥匙一样强用它保护。说128位。但是,尽管有了这些技术,人类仍无法实现这一目标。因此,让我们现实地看一下攻击以及我们微不足道的小脑子能做什么。

使用原始的Diceware单词列表7776个条目,您使用的每个单词大约可获得12.9位。因此,如果您至少需要64位密码,那么五个字就可以了。粗略估计,对于恒定数量的美元,测试密码的速度比测试AES密钥的速度慢2 ^ 13倍。

请注意,测试密码比测试密钥要慢得多。如果使用正确的密码哈希方案,则可以将大多数攻击者的每秒猜测速度降低到100000以下。因此,尽管我们可能永远不想使用50位密钥,但使用50位密码仍然有意义。 ,那么我们可以使用更长的单词列表。 Windows的1Password中的“强密码生成器”使用17679个英语单词的列表,包括4至8个字母(包括禁忌单词和涉及撇号或连字符的单词)。每个字大约有14位。因此,其中四个给您56位,五个给您70位。

再次,您确实需要注意破解速度。 1997年的Deep Crack每秒可以运行920亿次DES测试。假设高端专用PC每秒可以完成100万次猜测,而散列密码可以每秒完成100万次猜测,那么今天的密码比1997年的DES密钥难破解大约16位。

因此,让我们看一下双核3.8GHz处理器对Stack Exchange的估计:每秒6.7亿个密钥。如果我们假设硬件成本为5000美元,那么每秒很容易超过100亿个密钥。因此,在类似的硬件成本下,密钥破解仍比密码破解快2 ^ 13倍。

修改后的密码强度目标

根据我的估计,测试一个经过良好加密的密码比测试一个AES密钥要贵2 ^ 13倍,我们应该考虑将经过合理哈希处理的密码比其在破解方面的实际熵强13位。 。如果我们想要达到90位的“有效强度”,那么应该达到77位的密码强度。这可以通过使用原始列表中的六个单词的Diceware密码(77.5位)和84.6位(从17679个单词的列表中抽取六个单词)来实现。

我不希望大多数人使用密码那么长。我希望人们会使用4或5个字长的东西。但是如果您真的担心NSA会输入密码,那么假设您使用了不错的密码哈希方案,那么六个单词就足够了。

仅是非常粗略的估计值

我没有花很多时间研究成本和基准。我的估计中有很多事情需要讨论。我试图保持保守(对我提倡的方案感到悲观)。我也一直对“哈希密码”含糊不清。同样,对于1Password中的密码哈希,我非常保守。 (对于我们的新数据格式,攻击者的每秒猜测猜测保持在20,000以下,对于我们较旧的数据格式,多GPU机器的每秒猜测达到300,000猜测。在我的估计中,我选择了每秒100万个猜测第二个代表“合理加密的密码”。)

更多历史记录

“类似XKCD”密码的总体思想至少可以追溯到从1980年代初期开始的S / Key一次性密码。这些使用了2048个一到四个字母词的列表。六个字的S / Key密码可为您提供66位密码。我不知道使用从列表中随机选择单词作为密码短语的想法是否早于S / Key。

1995年,Arnold Reinhold提出了Diceware。我不知道他当时是否知道S / Key。在为PGP开发密码短语的背景下提出了Diceware。也是在大多数计算机上都使用适合密码的随机数生成器之前。因此,实际上涉及掷骰子。 (尽管我信任使用的计算机上的CSPRNG,但我仍然喜欢“滚动新密码”。)

2011年6月,我对Diceware的“转向更好的主密码”重新产生了兴趣。修改。这导致了我15分钟的成名。 XKCD漫画问世后,我制作了一个极客版,其中涉及了一些数学知识。

2011年7月,Randall Monroe选择了类似Diceware的方案,并出版了他现在著名的漫画。因为我不是这个想法的发明者,所以我完全不介意被漫画赶上舞台。确实,正如我在后续文章


中所说的那样,我用非技术性的术语说了将近2000个单词,兰德尔(Randall)
能够将梦露总结为漫画这只是显示了数学的力量...


但是关于漫画的解释方式有一件事确实令我担心。对我和已经了解该方案的人们来说,很明显,必须通过可靠统一的随机过程来选择单词。从脑海中“随意”选择单词并不是一个可靠的统一过程。

评论


很高兴您以历史的角度提及Diceware,同时也承认XKCD为密码短语所做的出色营销工作。关于您的修改方案,在任何地方都可以解释为什么这些单词列表中没有包含3或2个字母单词?参见blog.agilebits.com/2013/04/16/…。是否是因为“ off”和“ line”之类的词也可能离线受到1个词的攻击?请参阅我对Raestloz帖子的评论。原始的Diceware列表包含许多1、2和3个字母词。

– Dick99999
2014年7月11日9:09



很好的问题!当时我的想法(可能是错误的)是我还希望密码短语的长度最小。我想确保如果有人使用了三个单词的密码短语,则其长度至少应超过12个字符。我注意到S / Key也允许1、2和3个字母的单词。

–杰弗里·戈德堡(Jeffrey Goldberg)
2014年7月11日19:36



我迅速检查了单词列表,列出了我的SimThrow密码生成器和测试仪使用的单词。原始的Diceware列表至少包含1400种此类冲突,例如“ any”,“ how”和“ anyhow”。如果不使用分隔符,则可能会将4个单词的句子降为3个单词。碰撞数很高,因为该列表包含所有字母和2个字母的组合。因此,看来您做出了不包含2个字母单词的正确选择。 Diceware建议最小句子长度为17。我的生成器会同时估算基于单词和字符的恢复时间,以应对仅允许使用短密码(20)的网站。

– Dick99999
2014年7月12日7:07



我还检查了以下单词表。 S /键:> 93次碰撞,扩展名的美国:> 190,我的荷兰列表:>750。处理此问题的方法是建议在短语的单词之间包含分隔符。

– Dick99999
2014年7月14日10:44



当心,掷骰子并不是完全随机的。 forbes.com/sites/davidewalt/2012/09/06/…和insidescience.org/blog/2012/09/12/…

–wberry
2014年7月23日14:57

#4 楼

XKCD密码方案与以往一样好。安全性并不是源于它的未知性,而是源于它是从大型搜索空间生成令人难忘的密码的好方法。但是,如果您选择使用而不是随机生成的单词,则会失去这种优势-人类不擅长随机。注意:如果窃取密码的恶意软件一旦出现在您的计算机上,它将清除RAM和硬盘驱动器中的所有文本内容,从而对您的帐户进行直接攻击。

评论


+1我不认为XKCD技术已经死了-饼干“继续”不是“招数”。您可以从内到外了解该技术,但是如果它足够随机,那么它就不会变得更容易破解。

–马特·里昂
2014年7月10日在7:15

@PiTheNumber如果您使用的单词或字典太少,那么您根本就不会使用xkcd技术。但没有,即使在xkcd漫画中也很明显,如果您告诉所有人“嘿,我使用的是正确的卧式电池主食风格密码”,您不会失去自己的优势-即使输入密码,验证/熵位数也高于大多数普通密码方法是已知的。

– Peteris
2014年7月10日在10:06

前提是您也不要使用XKCD的随机数生成器(我不会链接,每个人都知道)。

–史蒂夫·杰索普(Steve Jessop)
2014年7月10日在11:56

@PiTheNumber '11字母真正随机密码'的概念无关紧要,因为它不是密码短语的合理替代。密码短语是可记忆的密码的替代方法,它们的安全性与xkcd所描述的一样弱。当然,如果您使用存储在密码管理器中的密码,则完全可以使用随机密码,但是在那种情况下,它实际上并不是您要使用或看到的“您的密码”,而是类似“自动生成的随机密钥令牌” ssh键。

– Peteris
2014年7月10日12:07



@PiTheNumber单词不是人为选择的,而是随机选择的。从中选择单词的字典本身就是人为选择的,但这是另一回事。没有“最可能的”-xkcd漫画中的数学是正确的。

–吉尔斯'所以-不再是邪恶的'
2014年7月10日在18:10

#5 楼

就像其他人所说的那样,当用户选择自己不使用工具的多个单词时,布鲁斯·施耐尔(Bruce Schneier)描述的攻击是有效的。 Schneier通常会写信给普通大众,这不太可能理解自我选择的“随机”单词和程序选择的随机单词之间的区别。

即使您使用脚本,我也会补充一点或其他工具从词典中随机选择单词,则必须使用它给您的第一个序列。如果您决定“我不喜欢那个”,然后再次运行直到您喜欢它,它不再是随机密码,而是人为选择的。

即使您使用了脚本,即使您没有通过选择自己喜欢的多个序列来破坏随机性,攻击者仍然有可能利用您的PRNG(伪随机数生成器)。如果攻击者可以了解您创建密码的时间,使用的PRNG以及有关PRNG的其他信息(例如大约在同一时间使用PRNG产生的网络流量),则可以减少随机密码短语的有效熵。

也许有些深奥,但是如果您的PRNG可被利用,则2 ^ 44的数字将无法完全实现。 (如果您假设“没有人会尝试利用我的PRNG”,那么为什么还要关心使用真正安全的密码短语?)

评论


+1有趣的角度。在加密密钥的上下文中利用PRNG是显而易见的-有趣的是,这似乎是事后才想到的。我想典型的密码太糟糕了,以至于PRNG相比之下感觉很安全。据推测,如果攻击者可以窃取哈希密码列表,那么找到pwdChangedTime或等效名称将是微不足道的吗?终止密码老化实践的另一个原因?

–DeveloperInDevelopment
14年7月10日在21:34

快速装回信封。如果您在生成密码后的一分钟内更新了密码,而PRNG中唯一的熵源是系统时间,那么您可能正在考虑将密码缩减至2 ^ 35,以获得纳秒级分辨率。听起来合理吗?

–DeveloperInDevelopment
2014年7月10日在21:53



假设我拒绝一个短语是因为我不喜欢一个单词,并且做了1000次。然后我把字典缩了1000个字。那个简化字典中的选择仍然是随机的吗?如果还是这样,那么从减少了7776个单词的Diceware词典中提取的4个单词的句子仍然会给出(7776-1000)^ 4 = 2.1E15 / 50.9可能性/熵位,低于3.7E15 / 51.7可能性/熵位字典。我无法判断随机发生器的影响。我使用来自www.random.org的那个

– Dick99999
2014年7月11日下午6:49

@ Dick99999我不认为这实际上与选择一个密码时要排除的选项数量有关。这是关于如果显示给您的话将排除哪些短语的模式。攻击者可能会猜测用户会偏爱较短的单词,更容易在QWERTY键盘上键入的单词以及没有大写字母或标点符号的单词。这种策略可以大大缩小密码短语的探索空间。基本上,这只是猜测最喜欢的运动队,生日和孩子的名字的问题。

–wberry
2014年7月11日15:25



@wberry我不认为数学可以解决这个问题。假设您在找到自己喜欢的密码之前拒绝了1000个密码。然后可以合理估计您只喜欢1/1000的可能密码空间。现在,假设攻击者能够完全猜测出您最喜欢的空间的1/1000-这样就将可能性的数量从2 ^ 44减少到2 ^ 34,这很重要,但并没有那么多,以至于多余的单词无法弥补损失。另外,如果您限制拒绝,那么甚至没有必要。

–马里奥·卡内罗(Mario Carneiro)
14年7月16日在3:03

#6 楼

这取决于。您需要了解的一件事是,这不是默默无闻的安全性:漫画中使用的熵值假定攻击者已经知道您正在使用此方法。如果攻击者不知道您是如何生成密码的,则熵会大量上升。

XKCD方法的窍门是您实际上需要使用随机数生成器和单词表:切勿自己挑选单词,甚至不要“随意”(用引号表示,因为人类实际上在随机挑选事物方面确实很糟糕,这就是为什么您不应该这样做)。 Diceware有工具可以帮助您做到这一点,甚至可以通过使用普通骰子将随机元素排除在计算机的控制范围之外。

针对范围广泛的攻击-这类攻击者可以得到列表来自网站的密码,并且对列表中的密码一无所知-这比以往任何时候都强大。就像您说的那样,它的优势来自于指数的力量(以及一个不错的单词列表)。他的攻击假设您已成为对您有很多了解的攻击者的特定攻击目标。乍一看,这似乎并不特别令人担忧,因为刻板印象坚定的攻击者是幕后的情报人员,我们大多数人不必为此担心很多:它们太多了,每个人只能负担得起这么多人。但这要归功于复杂恶意软件的出现,这实际上比最初看起来要麻烦得多。即使攻击者没有恶意软件安装,它也可以照顾您,因此您仍然面对极端确定的攻击者。实际上,比人类更具决心,尽管远没有创造力。

恶意软件会收集有关您的信息,从而使您觉得很重要的单词在单词列表中具有很高的优先级。这样做是因为大多数人会自己选择“随机”字词,但这样做实际上会使他们偏向于对他们最重要的字词:它可能仍然“感觉”随机,但有些字词更有可能比别人来。因此,将这些单词赋予较高的优先级通常会导致命中率相对较高,这就是Schneier所说的“技巧”。

但是,您仍然可以使用真正的随机性来阻止Schneier的进攻。要注意的是,这需要纪律:关于在密码短语中使用哪些单词的所有决定(除了选择一个好的单词列表之外)都必须完全由您掌握。这是Diceware之类的东西可以为您提供帮助的地方。

评论


@Gilles:如果攻击者知道该方法,则熵降低的原因是它更改了密码的整个结构。如果您不知道该方法,那么“正确的电池钉”看起来像是2个符号字母中的216个符号:换句话说,就是216位。如果您知道这是四个英文单词(并且知道XKCD的单词表),那么它看起来像是2048个符号字母表中的4个符号。 2048 ^ 4很大,但是小于2 ^ 216,这是一个真正长度的真正随机位字符串将具有多少个熵字节。但是XKCD的声明已经说明了这一点:2048 ^ 4 = 2 ^ 44。

–最傻的
2014年7月10日在18:27

假设攻击者认为密码是遵循统一分布的比特串,那是完全不现实的攻击者模型。知道该方法仅能解释少量的熵。

–吉尔斯'所以-不再是邪恶的'
2014年7月10日在18:58

熵不是在字符串上定义的,而是在生成字符串的方法上定义的。 XKCD描述了一种生成字符串的方法,该字符串具有44位熵。该方法的域包含27个字符长的字符串以及其他长度的字符串-但是从安全性的角度来看,字符串的长度并不有趣,而仅从可用性的角度来看。

–吉尔斯'所以-不再是邪恶的'
2014年7月10日19:28

您为什么知道密码的长度,却不知道英文单词出现在密码中的可能性比一般单词高呢?同样,您的攻击者模型是完全不现实的。攻击者不要走“嘿,我会生成所有可能的27个字母的密码”。它们更像是“嘿,我将按照可能性的降序生成所有可能的密码”。

–吉尔斯'所以-不再是邪恶的'
2014年7月10日19:51



@Giles实际上,字符串和方法都是相关的。您声称《 The Spooniest》的开篇段落是错误的,但提出的论点似乎在重述。如果您不知道密码的生成方式,那么熵的确会大大增加-27个字符(上,下,位,标点符号)的〜166位。您的意思是,攻击者可以使用有关密码生成方式的知识来减少这种情况。似乎您是从相反的角度争论同样的事情。同样,不知道长度会增加熵。

–DeveloperInDevelopment
2014年7月10日在20:06

#7 楼

如果单词选择是随机的,则强度数学非常简单:假设攻击者知道词典中的单词数,则(词典中的单词数)^(句子中的单词数)。因此,一个5词的短语使用了一个已知的(被攻击者!)7776词的Diceware词典:具有7776 ^ 5 = 2.8E19或64位的熵。

其中一项没有提到方案:在整个词组中的随机位置仅添加1个(随机)字符,则强度增加约10位,请参阅Diceware,可选内容。

以上数学方法也不解释单词之间的分隔符。那可以再增加5位。

评论


XKCD漫画的要点(或其中至少一项)是,在随机位置添加一个随机字符会增加记忆密码的难度,而不是增加破解密码的难度。

–马克
2014年7月10日在7:41

我认为,一般而言,该名称适用于记忆,而不适用于库的主密码。我认为“易于输入”是主要优势。我遇到越来越多的情况,密码管理器无法填写密码(应用程序,WifI访客网络),我必须输入密码。

– Dick99999
2014年7月10日7:49



@Mark-所有密码中的额外随机(或仅非字典)字符可能相同,这意味着您不会忘记它。至少在其他几个密码被盗用之前,您将获得额外的熵,此时密码仍然是xkcd-strength ...

–DeveloperInDevelopment
2014年7月10日在11:28

@imsotiredicantsleep-这是一个非常有趣的建议。一直在寻找解决方案,以使这种增强技术更易于使用。由于攻击者可以从有关随机字符和位置的知识中受益,因此可以通过模糊性将其称为安全性。我认为这是一个小小的折衷,在易用性和安全性之间。

– Dick99999
2014年7月10日在18:22

@ Dick99999绝对是个权衡。但是,在常量组件被破坏之前,它将击败幼稚的字典攻击,并显着减慢更复杂的字典攻击。我不同意它的安全性,因为我可以告诉您,我正在使用该技术而不会失去可能值给我的熵。主要缺点是,一旦知道常数部分,便会牺牲本来可以随机分配的密码不动产。

–DeveloperInDevelopment
2014年7月10日在18:42

#8 楼

我也想添加一个肯定的答案,但由于其他原因。 [一般]由于长度限制,这不是一个好建议:


Skype,ING,eBay等网站,在我国Binckbank和KPN都限制密码为20个字符。 (该银行限制为15,但是使用了2个因素的授权)
对于简短的3000-8000个单词的字典,平均长度为4.5个字符/单词,只能使用3-4个单词的短语。
使用大型词典时,平均可能为6-7:仅3个字
如果网站坚持使用密码中的符号和数字,则该短语只能使用18个字符。

这些长度只能防止在线攻击。对于离线攻击,取决于3-4个字的词组能否提供足够的保护,取决于应用程序站点使用的密钥派生和哈希函数,迭代次数和破解硬件。

评论


限制密码长度的站点通常可以很好地表明其密码存储系统非常不安全。逃跑。总而言之,IMO(对于安全性和易记性)的密码强度要求往往比有用的要求更为严格。

–罗安
2014年7月10日13:33

将Suntrust添加到密码列表中(最多15个字符)。我不知道该行业发生了什么。

–安德鲁·霍夫曼(Andrew Hoffman)
2014年7月10日14:27

另一方面,在智能手机上键入“ correcthorsebatterystaple”要比在小写字母,大写字母,数字和标点符号之间切换要容易得多。

–龙
2014年7月11日在10:31

较低的密码限制不仅仅意味着不安全的密码存储方法,还意味着密码以明文形式存储或被加密(不散列)。 @Ángel我所有与Microsoft相关的帐户的密码都比那更长,所以我叫BS。早在NTLM之前,Windows密码iirc限制为16个字符。那早于XP,几乎没有关系。

–辛尼泽
2014年7月14日在5:29



@Zenexer关于Microsoft帐户:Microsoft联机帐户(live.com,Office 365等)限制为16个字符(允许使用字母,数字和一些符号)。

–stefan.schwetschke
2014年7月15日14:29

#9 楼

不,我不这样认为。

xkcd漫画中的实际建议是使用助记符,只要您能记住它们,它们便容易记住并生成密码。这些都是任何地方的基本密码建议,并且永远都是正确的(即使引用的Schneier方法使用了这两个基本事实)。确实,漫画使用了常见的英语单词,但是您不必一定要实现,漫画也不暗示您应该这样做。

当然,最安全的密码是完全随机的字符串,例如MD5字符串的外观,您可能可以使用密码管理器来存储所有这些密码,但是接下来将使用什么密码?那个经理? ¯\(ツ)/¯

评论


“当然,最安全的密码是完全随机的字符串”否,请进行比较en.wikipedia.org/wiki/Password_strength#Random_passwords

– Dick99999
2014年7月10日在8:59

不,这不是xkcd的建议,我建议您再次阅读-以及此处相关问题的分析(以上链接)。

–AVID♦
2014年7月10日在10:33

您的签名“¯\(ツ)/¯”是一个很好的密码:简短,易于记忆,很难破解,很难在日志中检测为密码。

– dan
2014年7月10日在21:56

@Daniel Azuelos,...琐碎地添加到常用字符串列表中...

–DeveloperInDevelopment
2014年7月10日在22:05

@Raestloz讲一种不使用ASCII范围内的字符的语言的人将不会使用ASCII密码。您是否认为亚洲所有这些人都使用两个键盘,一个用于日常打字,一个用于密码?与DOS等已有30年历史的操作系统不同,所有现代OS都可以很好地处理Unicode和其他字符集/页面,并且任何网站都应该支持它们(只要开发人员每次都不使用随机字符集对表单进行编码,或让浏览器选择)。密码只是一些对人类有意义的东西。

– phyrfox
2014年7月11日在13:27



#10 楼

拥有正确的环境很重要。 xkcd漫画将Tr0ub4dor&3(假设为28位熵)(尽管我将其计算为34.6)与correcthorsebatterystaple(假定为44位熵)进行了比较(一个4字的diceware代码为51.7位……但其中一个不是diceware。简单的10万字拼写字典,我估计它是66.4位。)

首先,让我们更容易理解它。有94个可打印字符。一个字符的密码具有log₂(94) = 6.55个熵位。两个字符具有log₂(94²) = 13.10个熵位。您可以将密码方案的最终熵除以6.55,以确定以字符为单位的纯随机密码的等效复杂度。

因此:


28位的熵≈4.3个字符的密码(非常糟糕!)
44位的熵≈6.7个字符的密码(也很糟糕)
66.4位的熵≈10.1个字符的密码(2016年还可以) >
信任xkcd的数字,您会明白为什么Schneier担心。这似乎有点夸大其词,因为大多数攻击者在十个左右的字符后仍会放弃[需要引证]-一个大型集群要花10年才能破解MD5散列密码,尽管这显然需要一个好攻击者才能知道您的方案中,绝对字符长度不是问题。

方案的总复杂性是最重要的。您必须假设最坏的情况(攻击者知道您的确切方案)。最好另外确保您的密码是11个以上的字符(如果允许),但这是次要的优先级(并且免费提供密码)。



用四个单词和密码创建密码短语

这是我的密码创建建议(带有熵估计值):


做出4分以上的毫无意义的“句子”每个4个字符以上的单词(100,000⁴)
这些单词中的任何一个都无法以任何方式与您或彼此连接

用例,空格和至少两个符号或标点符号(32²)
至少一个单词应未通过拼写检查(例如leetspeak,外来单词,每个64个)
包括至少一个其他“错误” (拼写/语法/语法,熵未知)
在两个词之间,添加传统的“随机” 7+字符密码(92⁷)

这应该至少是log₂(100000⁴ × 32 × 3 × 64 × 92⁵) = 112位的熵(非常强,≈17个字符)。我跳过了大写字母(我假设只有第一个字符是大写)和一个符号(我假设它以.!?结尾,所以第二个符号的复杂度为3),并且我还假定“ random”不是相当随机,并将代码计算为等效的五个字符(严格遵守上述公式将使您在大约20个字符的情况下获得128位以上的熵)。



值得重复一遍:

人类在产生随机性方面非常糟糕。

几乎没有人为产生的“随机”字符密码,甚至无法达到真正的随机性。代码中将包含与人的键盘,喜欢的数字和/或假设某个晦涩的单词是不可猜想的假设有关的模式。

我设计此方案的目的是要防止人们固有的缺乏随机性;假设词汇量有限(例如,基本英语中的2600个单词),相关单词的使用(仅对三个单词进行计数就会被惩罚),并且密码仅限于六个字母数字的熵,则log₂(2600³ × 62⁶)本身仍然很强大,只有70位(≈10.6)字符)。

不要让这句话变淡!本节的目的是证明此方案对人类选择的有限熵具有一定的抵抗力,而不是鼓励较差的选择。

唯一真正的麻烦来自将引号或歌词作为四个词的人。如果可以猜出引号或歌词(例如通过查看您的Facebook喜欢),或者在30秒钟(MD5)到17天(PBKDF2)的破解时间中具有大约6个随机字符的熵,这些通行短语将被轻易击败。 。



您可以使用我的熵表来计算密码短语的熵。除非您是开发人员,否则密码会短暂地存在于内存中。

评论


还应注意,非ASCII字符就像银弹,可以自动击败大多数攻击。由于长度和含混不清,•••••••••(九个项目符号字符)的密码令人尴尬地安全(并且看起来与未掩盖的一样!),但实际上仅依靠这一点是一个可怕的想法。事实。将非ASCII字符放入密码+ 4字和复杂性火箭中(进行计算,使用其unicode值),尽管可能会牺牲便携性(如果您使用朋友的智能手机呢?)

–亚当·卡兹(Adam Katz)
16-3-6在2:55