例如,如果我要注册一个新网站并提示输入密码,我的浏览器可能会生成一个复杂的密码,看起来uv^2<YGYy}#Vj}=f
可能无法破解但也无法记住。
为什么使用这样的密码而不是AllThatIsGoldDoesNotGlitterNotAllWhoWanderAreLost
使用更少的字符但更长的密码?绝对长度(49 个字符)也应该使它不可能破解,但因为它是一个可识别的短语,它也更容易记住。
例如,如果我要注册一个新网站并提示输入密码,我的浏览器可能会生成一个复杂的密码,看起来uv^2<YGYy}#Vj}=f
可能无法破解但也无法记住。
为什么使用这样的密码而不是AllThatIsGoldDoesNotGlitterNotAllWhoWanderAreLost
使用更少的字符但更长的密码?绝对长度(49 个字符)也应该使它不可能破解,但因为它是一个可识别的短语,它也更容易记住。
您说您希望浏览器建议一个可识别的(我认为是连贯的)短语。你有没有想过浏览器会如何实现它?浏览器不能保留一长串这样的短语,因为要使列表更加安全,它必须大得离谱。如果浏览器试图使用某种人工智能来现场创建一个连贯的短语,它必须确保该算法没有也不会产生任何类型的偏见。我不确定这项任务有多难,但它可能不值得付出努力。出于显而易见的原因,从互联网上提取这句话也是许多人无法接受的。
更实用的替代方法是生成xkcd 风格的密码短语。但是,对于您拥有帐户的所有不同网站,这些可能不会像您想要的那样令人难忘,特别是当您拥有数十个时。
从长远来看,唯一可行的解决方案是依靠密码管理器。对于密码管理器来说,复杂的密码不是问题。这就是浏览器所做的。建议具有足够熵以抵抗各种密码猜测攻击的复杂密码。然后将它们保存在浏览器内置的密码管理器中。
如果我们谈论由密码生成器生成的密码,密码:
a-zA-Z0-9!@#$%^&*()
)当向一个人建议密码方法时,是的,一个短语提供了长度,同时增加了记住它的机会。
但是,当向其他人建议特定短语作为向所有人提供服务时,您会引入许多问题(就像密码管理器中的情况一样):
具有广泛字符空间的真正随机生成的字符串提供了一个不易猜到的密码,即使每个人都知道它是如何生成的。而且由于密码管理器会记住并为您输入密码,因此无需记忆或易于输入。
可识别的短语往往具有低熵,因此针对它们的字典攻击与针对可识别密码的攻击方式相同。
但是在Diceware中已经实现了一种非常相似的方法。最初那只是一个包含 6**5=7776 个容易发音的单词的单词列表。每个旁边是一个五位数的数字,您将掷骰子 5 次并查找相应的单词。这为每个单词提供了大约 13 位的熵,因此对于大多数应用程序来说,5 或 6 个单词的短语就足够了。
Diceware 从未真正流行起来,我认为这是施罗德在他的回答中列出的原因。特别是,网站已经强制规定了密码复杂性规则,这些规则将特殊字符的使用优先于实际随机性。其中大部分都认为Pre$iden!
是一个好的密码,但是 reject SymptomUndertookSubprimeSelectorNuzzleReveal
,虽然前者对于字典攻击没有问题,而后者有 77 位的熵。
我想质疑你的假设。
绝对长度(49 个字符)也应该使它不可能破解,但因为它是一个可识别的短语,它也更容易记住。
长密码不会让人无法破解。
一个长的随机密码很难破解,但只要知道列表,就很容易破解短列表中的长密码。请注意,在您的示例中,您使用的密码短语是实际已知的句子,甚至不是随机的单词列表,因此列表几乎必然很短,特别是如果您想要高度易记的句子(著名的引语等) .
如果您删除对密码短语的要求,使其真正有意义/令人难忘,作为大型词典中单词的随机组合(如著名的正确马电池主食),那么它确实变得难以破解。这就是diceware的原理。
这是一个常见错误:密码中没有熵。生成密码的方式存在熵。abcdef
没有位熵6*log2(26)
。生成随机6 个小写字母密码的密码生成工具提供了一些熵。6*log2(26)
同样,AllThatIsGoldDoesNotGlitterNotAllWhoWanderAreLost
也不能有49*log2(52)
熵位,如果攻击者能够确定如何,如果产生(然后它有log2(number of phrases in the tool)
熵位)。
那个密码真的好记吗?
如果您要生成一个可在任何地方使用的单一密码,则可能,但现在已知这是一个非常糟糕的主意。如果浏览器为您创建帐户的一百个网站生成一百个这样的短语,您真的会记住其中的每一个吗?这就是我们现在使用密码管理器的全部原因,它不仅可以为您创建而且最重要的是记住所有这些密码。
所以前提是有缺陷的。此外,您还必须面对密码长度有限的网站、需要多类字符(小写、大写、数字、符号)的网站,这使得大多数句子无法使用。