以下是如何黑客窃取您的密码以及如何创建一个更安全的密码

要创建更好的密码,首先要了解人们是如何破解密码的

Orange word Password on Blue Data Grid.

想出一个好密码可能相当令人疲惫。密码管理器可以帮助解决这个问题。

每年,私人数字安全公司NordPass都会发布一份包含30个国家/地区最流行密码的列表。与往常一样, 2022年的最新列表 也包含令人震惊的简单密码。前五个密码是:“password”、“123456”、“123456789”、“guest”和“qwerty”。

毋庸置疑,这些都是弱密码——但什么才是好密码呢?大多数人都知道一些经验法则:密码应该尽可能长,包含特殊字符,并且不是一个简单的单词。您还应该定期更改密码,为每个用户帐户选择不同的密码,并且永远不要写下来。同时满足所有这些要求似乎几乎是不可能的。而且,一旦您找到了一个好密码,网站可能还不接受它:要么太短,要么包含非法字符,要么就是太长。例如,PayPal不允许密码超过20个字符。这些限制使大多数用户在选择密码时感到非常沮丧。

对于其安全密码要求,许多互联网服务提供商依赖于美国国家标准与技术研究院发布的2003年指南,该指南建议密码应尽可能多地混合使用特殊字符、大写字母和小写字母。前NIST员工比尔·伯尔制定了这些指南,但此后他告诉《华尔街日报》,他对其中许多建议感到后悔。这是因为强迫人们更改密码并要求他们使用特殊字符通常会导致他们选择易于记住(因此不安全)的密码,这些密码遵循特定的方案或模式。例如,“password1”并不比“password”更安全。因此,NIST现在已经修订了其指南,但并非所有提供商都已效仿。很多时候,您被迫在密码中使用特殊字符、数字以及大写和小写字母。


支持科学新闻报道

如果您喜欢这篇文章,请考虑通过以下方式支持我们屡获殊荣的新闻报道 订阅。通过购买订阅,您正在帮助确保关于塑造我们今天世界的发现和想法的具有影响力的故事的未来。


密码是如何被破解的?

要了解如何选择安全密码,您需要了解黑客是如何工作的。最简单的方法是系统地尝试所有可能的密码组合,这被称为暴力破解攻击。幸运的是,以这种方式登录在线提供商(例如电子邮件服务提供商)的情况很少发生。如今,大多数网站都集成了安全机制,可以在多次输入错误的情况下阻止进一步的登录尝试。然后,您必须以另一种方式确认您的身份(例如,通过单击电子邮件中的链接)或等待几分钟才能再次尝试登录。

[阅读更多关于黑客和网络安全的信息]

这就是为什么这种暴力破解攻击通常在所谓的“离线攻击”中进行,在这种攻击中,黑客从网站窃取了登录凭据列表。几乎所有提供商都对密码进行加密,而不是以纯文本形式存储其用户的登录数据。因此,攻击者收到用户名列表和一个加密字符串,该字符串不能用于登录网站。但是,通过一些技巧,黑客仍然可以获得密码。

为了保护登录信息,许多提供商使用所谓的哈希函数来加密其用户的访问数据。这些函数将任何长度的字符串(例如密码)转换为固定长度的代码(“哈希”),例如32个字符。哈希函数的特殊之处在于:它们实际上是不可逆的。虽然很容易计算任何输入的哈希值(至少对于计算机而言),但实际上不可能从哈希值中获取原始输入。因此,当用户登录网站时,他们输入密码,网站会从中计算哈希值,并将其与存储的用户数据(用户名和密码的哈希值)进行匹配。通过这种方式,用户的密码受到保护。

但是,如果攻击者能够捕获用户数据和关联哈希值的列表,仍然有可能进行暴力破解攻击。您可以让计算机创建各种密码,并使用已知的哈希函数将其转换为密文值。然后可以将这些密文值与捕获列表中的哈希值进行比较。如果存在匹配项,那么您很可能找到了相应的密码。(尽管不太可能,但密码仍然可能不正确,因为哈希函数可能会为不同的输入返回相同的哈希值)。攻击者可以花费任意多的时间来执行此操作,因为列表在他们手中,并且他们可以离线处理它。

然后,黑客可以选择花费大量的计算精力或计算机内存来破解哈希值。在第一种情况下,人们从一个用户到另一个用户地工作,每次都尝试生成哈希值并与用户的相应哈希值进行比较的所有可能的密码组合。在第二种情况下,人们预先生成所有可能的密码的哈希值,并将它们存储在一个巨大的表中,他们可以将其与用户的数据进行匹配。这两种情况都会造成困难。人们要么需要极其强大的计算机,要么需要巨大的存储空间。

巧妙的技巧破解复杂密码

彩虹表提供了一种折衷方案。基本上,它们提供了一种对密码及其关联的哈希值进行分组的方法,以便您可以存储更少的内容。从表中提取所需内容需要一定的计算量,但远小于单独为每个用户计算哈希值所需的计算量。

这种方法背后的想法如下:一旦您从可能的密码(例如“password”)计算出哈希值,例如“920ECF10”,您可以使用函数f(920ECF10) = kjhsedn将其转换回可能的密码表示形式。这个新密码“kjhsedn”与“password”分配到同一组。然后,您计算“kjhsedn”的哈希值——例如FB107E70——并再次应用f,从而生成一个新的可能的密码,您将其分配到同一组。

哈希函数 (H) 用于计算密码的关联哈希值。例如,“wikipedia”的哈希值为ao4kd。然后,使用另一个函数 (R) 将其转换回对应于密码的字符串。来源: tradoph/Dake的彩虹表 (CC BY-SA 2.5)

重复此过程n次(其中n应尽可能大)以获得包含n个可能密码的组。然后,您选择一个尚未分配的密码,并以相同的方式创建一个包含n个内容的新组。重复此步骤,直到您涵盖了您想要考虑的所有密码可能性(例如,从八个小写字母开始)。在彩虹表中,您仅存储初始密码(在我们的示例中为“password”)和从中生成的第n个密码的哈希值。因此,彩虹表比存储所有密码组合的哈希值要小得多。

现在,如果您想破解被盗列表中的哈希值,则需要做一些数学运算。使用f,您可以将哈希值转换为密码字符串,并再次从中计算哈希值,直到最终找到彩虹表中的哈希值。然后您就知道被盗密码所属的组。通过计算该组中所有字符组合的哈希值,您最终会找到相应的密码。这样,计算量大大低于计算所有字符串的相应哈希值所需的计算量。

为了防止此类攻击,许多网站在哈希函数的输入中添加一个称为“盐”的随机字符串。这些字符在形成哈希值之前添加到用户的密码中。每个用户都会收到不同的盐,这些盐存储在访问数据列表中。因此,当黑客尝试窃取用户数据时,即使该黑客获得了关联的盐,破解密码也变得更加困难。攻击者不必为所有可能的密码创建哈希值并将其与列表进行匹配,而是被迫单独处理每个用户的信息。攻击者必须将特定于用户的盐添加到每个可能的密码中,才能从中计算哈希值。这种额外的保护层也阻止了彩虹表的使用。引入盐会使暴力破解攻击的计算时间增加许多倍。

特殊字符并不总是有帮助

暴力破解攻击效率低下。然而,对于今天的计算机来说,它们并非特别具有挑战性。毕竟,计算机有时每秒可以计算数百万个密码。如果您选择了一个仅由小写字母组成的六位密码(例如“qwerty”),则计算机必须检查266,即308,915,776个组合。(六个字母中的每一个都有26种可能性)。计算机只需要几秒钟即可计算出该密码。

通过选择更长的密码并扩大字符选择范围,所有可能的密码组合空间也迅速增长。对于由26个大写字母、26个小写字母、10个数字和32个特殊字符组成的八字符组合(例如“p4$sW0Rd”),黑客现在将不得不筛选(26 + 26 + 10 + 32)8 = 6.10 x 1015个可能的组合空间。这大约是“qwerty”情况下的2000万倍,理论上需要花费2000万倍的时间。

因此,专家根据包含所选字符组合的空间大小对密码的安全性进行分类。并且因为这是计算机科学的一个子领域,所以人们不考虑十进制表示的空间大小(“空间包含数万亿个组合”),而是以二进制表示,它仅由0和1组成(“空间的大小包含32个1和0的组合”)。

此值称为密码的熵,并以单位“比特”衡量。例如,四位数的PIN码包含在大小为104的空间中,这在二进制表示中对应于10011100010000,因此熵为14位。十进制表示中的数字N与其熵(二进制长度)之间的关系由log2N的整数部分给出。(如果log2N产生一个小数,则必须向上舍入到下一个整数。)因此,“qwerty”的熵为log2(308,915,776) ≈ 28.2,即29位。另一方面,“p4$sW0Rd”的熵为log2(6.10 x 1015) ≈ 52.4,即53位。

但仅仅寻找高熵是不够的。实际上,“p4$sW0Rd”或“qwerty”等密码的熵比理论计算的熵差得多。这是因为黑客通常不进行纯粹的暴力破解攻击。相反,他们使用“字典”。密码字典不仅包含一种语言的常用词,还包含从被盗数据中导出的流行密码组合数据集。例如,NordPass使用此类列表来确定不同国家/地区年度最流行的密码。与此同时,有许多易于访问的程序,例如 John the Ripper ,用于执行此类字典攻击。

黑客将常用名称和单词与字符和数字字符串组合在一起。他们 还进行流行的替换,例如将A变成4。“如果你用3替换E……,不要认为这很聪明,因为它不是,” 计算机科学家迈克·庞德在YouTube频道Computerphile上的一个视频中说。攻击可以很容易地利用现有的计算能力破解这种类型的替换。

密码管理器提供最佳保护

那么,最安全的密码是什么样的呢?为了充分利用熵,应该从所有可能性的空间中选择一个随机字符串。对于一个包含特殊字符、数字以及小写和大写字母的八字符密码,这样的选择可能是“MA9^Wc7f”。但是记住这样一个密码将是很困难的——特别是如果您应该为您的每个其他帐户选择一个不同的(且同样强大的)密码。

密码管理器,即生成随机字符串并存储个人密码的程序,为这个问题提供了一个解决方案。当然,在选择提供商时应格外小心,并检查使用了哪些安全机制。密码是如何加密的?程序使用的随机生成器有多好?

一旦您找到了值得信赖的提供商,您仍然需要记住一个用于访问所有登录数据的“主密码”。仍然需要一个安全密码——但只需要一个。您应该能够很好地记住它,以便随时访问密码管理器,从而访问您的所有帐户。 一种流行的策略是“correct-horse-battery-staple”方法:选择由特殊字符分隔的四到五个单词的序列。由于字符很多,熵非常大——特别是如果您决定在单词中间放置另一个特殊字符,例如:“bat%tery”。这可以防止直接的字典攻击。

如果您随机选择单词,密码的安全性会提高。为此,您可以使用“diceware方法”。例如:您连续掷骰子五次,得到五个从1到6的数字。然后在 diceware单词列表中查找相应的单词。该列表包含数千个单词,这些单词按介于1到6之间的五个骰子数字编号。这样,您就可以获得一个易于记住且无法通过字典或暴力破解攻击直接破解的密码。

密码的终结?

与此同时,人们越来越努力地想要彻底摆脱密码。 多年来,这一直是一个反复出现的主题, 但在2023年5月,科技巨头谷歌迈出了第一步:允许用户使用仅需生物特征数据的通行密钥登录。另一种选择是在经过身份验证的设备上接收代码(例如通过短信发送到手机),然后在网站上输入该代码。特定于用户的数据(例如,生物特征)本地存储在用户的设备上——因此谷歌等提供商无法直接访问它。 微软、苹果和其他主要公司在2022年宣布,他们也在关注安全的密码替代方案

在我们可以不再需要记住密码的那一天到来之前(如果那一天真的会到来),密码管理器可能提供最强的保护。即使您有一个复杂的系统,可以为每个用户帐户生成不同的密码,但仅仅因为您可以记住该模式,就意味着它可能不够复杂。

本文最初发表在《Spektrum der Wissenschaft》上,并经许可转载。

© . All rights reserved.