最佳密码长度是多少?

当然,越多越好。使用密码管理器,很容易生成和自动完成任何长度的密码。但是,是否必须使密码长数百个字符,还是有一些经验上合理的下限?



这是典型的密码生成器的界面





请注意“长度”滑块:在这里它可以将密码长度从8个字符更改为100个字符,在其他工具中则可以更多。密码的最佳价值是什么?



遭到黑客入侵后,您便拥有了一个不错的密码



要了解什么是好的密码,让我们看看在敌人营地中发生了什么!



创建帐户时,服务会以多种格式之一保存您的密码。该服务可以将密码直接(以纯文本格式)放入数据库中,或使用多种算法之一从中生成哈希值最受欢迎:



  • MD5
  • SHA-1
  • 加密
  • 加密
  • 氩气2


存储散列而不是密码本身 的优点是数据库中没有密码没错,因为您只需要证明自己知道密码即可,但这没关系。登录时,使用相同的算法对输入的密码进行哈希处理,如果结果与数据库中记录的值匹配,则表明您知道密码。而且,如果数据库被黑客入侵,则将无法恢复密码。





储存哈希。



破解密码



密码破解是指攻击者尝试撤消哈希功能并从哈希中恢复密码的情况。好的哈希算法不可能做到这一点。但是没有什么能阻止攻击者试图输入不同的值以希望获得相同的哈希值。如果发生匹配,则密码已从哈希中恢复。





破解密码。



而且这里一个好的算法的选择是很重要的。 SHA-1的设计考虑了快速散列,使攻击者的生活更加轻松。 Bcrypt,Scrypt和Argon2的设计考虑到高计算成本,目的是尽可能减慢破解速度,尤其是在专用计算机上。这是非常重要的方面。



如果仅关注速度,则无法破解密码SHA-1,如下所示:0OVTrv62y2dLJahXjd4FVg81



使用正确配置的Argon2创建的安全密码如下所示:Pa$$w0Rd1992



如您所见,选择正确的哈希算法会将弱密码变成牢不可破的密码。



而且不要忘记它仅取决于您向其注册的服务的实现。而且您不知道实现的质量。您可以提出要求,但是他们要么不会回答您,要么他们将取消订阅“我们对安全性非常重视”。



您是否认为公司认真对待安全性并使用良好的哈希算法?查看受损数据库列表,尤其是其中使用的哈希。在许多情况下,使用MD5,最常用的是SHA-1,在某些地方使用bcrypt。一些以纯文本格式存储的密码。这是要考虑的现实。



而且,我们只知道在受损的数据库中使用了哪些散列,并且使用弱算法的公司很可能也无法保护其基础架构。看一下列表,我相信您会找到熟悉的名字。仅仅因为一家公司看起来大而受人尊敬并不意味着它做的一切正确。



您选择密码



作为用户,您可以做什么?如果密码以纯文本格式存储,则无需执行任何操作。一旦数据库被盗,密码的复杂性就无关紧要了。



使用正确配置的算法,密码的复杂性也不重要,可以是12345asdf



但是,在中间情况下,尤其是在使用SHA-1时,密码复杂性很重要。哈希函数通常不是为密码设计的,但是如果您使用复杂的密码,则可以弥补算法的弱点。





取决于配置。这些算法具有各种安全组件,如果配置正确,则可以防止黑客入侵。



结论:使用强密码,比使用弱密码,可以保护您免受更多黑客的攻击。而且,由于您不知道密码存储的安全性,因此您也无法知道该服务的“足够安全”。因此,当您选择密码仍然很重要时,请假设是最糟糕的情况。



密码唯一性还不够



好的,但是为什么您会考虑使用密码管理器并为每个站点生成唯一的密码?在这种情况下,您将不受证书填充的困扰-在不同服务上检查已知的邮箱和密码对时,希望此人在不同的地方使用此数据。这是一个严重的威胁,因为密码重用是最重要的安全问题之一。通过为每个站点生成唯一的密码,您将受到保护。





凭证填充。



如果数据库被盗,所有内容成为被黑客攻击,那么为什么你还是保护你的密码?



事实是您不知道数据库是否已被黑客入侵,并且继续使用该服务。然后,黑客将有权访问您在此站点上所有以后的活动。您可以稍后添加银行卡详细信息,他们会知道的。一个强大的密码意味着黑客将无法登录你的账户下,并不能危及未来的行动。





入侵后使用服务。



如何使用熵评估密码强度



密码的强度以熵为特征,熵是密码中包含的随机量的数字表示。由于我们在谈论大量数字,因此1 099 511 627 776 (2^40)我们更容易地说“ 40位熵”。而且,由于破解密码是对选项的枚举,因此密码越多,破解所需的时间就越多。



对于随机字符生成的密码管理器,熵通过以下公式计算:log2(< > ^ <>)



长度很明显,但是不同字符的数量是多少?这取决于密码中包含的字符类。





例如,由10个随机的大写和小写字母组成的密码具有一定log2(52 ^ 10) = 57 的熵。



要计算特定的熵(它在给定类的一个符号中的量),可以使用等式log2(n ^ m) = m * log2(n)。我们得到:<> * log2(< >)其中第二部分是比熵。让我们使用以下公式重新计算上一张表:





要计算密码的强度,您需要获取密码中包含的字符类,获取这些类的熵值并乘以长度。对于上面的示例,我们获得了10个大写和小写密码5.7 * 10 = 57 。但是,如果将长度增加到14,则熵将跳到79.8位。如果保留10个字符,但添加一类特殊字符,则总熵将为64位。



上面的公式使您可以快速计算密码的熵,但是有一个陷阱。仅当符号彼此独立时,该公式才是正确的。这仅适用于生成的密码。组合H8QavhV2gu满足此条件,并具有5​​7位熵。



但是,如果您使用更容易记住的密码,例如Pa$$word11,则在相同数量的符号的情况下,它们的熵会低得多。饼干并不一定要经过所有可能的组合;他只需要对字典中的单词进行一些更改即可。



因此,所有将长度乘以特定熵的计算仅对生成的密码有效



熵指南



密码的熵越多,破解它的难度就越大。但是多少熵就足够了?通常,大约有16个字符会出现在眼睛后面,这样的密码具有95-102位的熵,具体取决于字符类。最低门槛是多少? 80位? 60吗甚至102位太小?



有一种算法可以在速度上与不良散列算法相媲美,但是要研究得更好:这是AES。



它已在所有政府和军事组织中使用,这意味着其耐用性已足够。而且它运行很快。因此,如果无法破解具有一定熵的AES密钥,那么具有错误(但未破解)哈希的密码将是有益的。



美国国家标准技术研究院已经确定了在可预见的将来足够的密钥大小。那里建议在“ 2019-2030及更高版本”期间使用AES-128顾名思义,我们正在谈论的是128位熵。





另一个建议建议使密钥的大小至少为112位:



为了提供满足联邦政府需要的加密强度,今天至少需要112位(例如,用于加密或签名数据)。


要使用大写和小写字母及数字获得128位的熵,您需要输入密码length 22 ((5.95 * 22 = 131 )



其他注意事项



为什么不使用特殊字符?我尽量不要使用它们,因为它们打破了单词的界限。也就是说,需要单击三下才能选择一个特殊字符,而不是两次,如果我不小心将其余的密码插入字段,则会导致错误。



如果只使用字母和数字,则双击该密码将突出显示整个密码。



如果有长度限制怎么办?在某些站点上,密码最长不能超过22个字符。有时密码只能很短,例如,不能超过5位数字。然后剩下的就是尽可能长地使用密码。



对于使用密码的站点,也有一些准则,长度限制显然与这些准则相抵触。这是怎么 美国国家标准技术研究院:



您必须支持密码,密码长度至少为64个字符。鼓励用户使用任何字符(包括空格)帮助他们记住任何长度的容易记住的秘密。


请记住,网站的密码保护范围从可怕到出色,并且它们不会告诉您真正的情况。如果允许的最大密码长度是小的,那么它看起来是这样的网站是上规模的不好收场。



结论



即使您不在不同的地方使用相同的密码,密码也应该很安全。密码的强度由熵来衡量,您需要争取128位的值。为此,长度为22个字符的密码(包括大写和小写字母和数字)已足够。



如果服务被黑,并且使用了弱但未黑的哈希算法,这将为您提供保护。



All Articles