80 位密码是否足以满足所有实际用途?

信息安全 密码
2021-08-24 02:01:51

我知道询问多少位熵构成一个强密码就像询问一段字符串的长度。但是假设美国国家安全局对你不感兴趣,而且任何人花费十年来强制你的电子邮件是不值得的,那么 80 位就足够了吗?

4个回答

简短回答:越多越好,但就目前(2014 年)而言,这可能就足够了。

入侵您的 Gmail 和破解离线密码之间有一个重要的区别。如果您想通过猜测密码来破解 Gmail 帐户,您每秒最多只能尝试几次。谷歌将在太短的时间内阻止对单个帐户的数千次登录尝试。

但是,如果我们谈论的是 Windows 登录,那么它会存储在本地。Windows 在硬盘驱动器的某处有一个带有散列密码的数据库(用外行的话来说:加密密码)。这意味着有权访问硬盘的人可以提取散列密码并开始破解他们的计算机的速度,这可能是每秒数百万次尝试。

或者当数据库被黑客入侵(参见:LinkedIn)时,通常会获得散列密码,人们可以像使用 Windows 登录一样在本地开始破解。这是密码强度真正变得重要的地方。

编辑:像emoryJS。评论说,您应该假设所有服务都在某个时候被黑客入侵,因此虽然现在您可能无法非常快速地暴力破解您的 Gmail 密码,但它可能会在任何一天发生变化。并不是每家公司都承认(或知道)他们被黑客入侵了。我仍然认为使用合理的密码是可以的(如果黑客无法在 5 分钟内破解它,他们将继续使用他们获得的其他 9000 万个密码中的一个),但没有任何服务是绝对安全的,这是一个有效的观点.


关于密码强度

(行话:您可以将“熵”视为“真正的随机数据”。)

那么80位就够了吗?考虑以下 80 位密码:1111111111。看起来不是很强大......这个 160 位的密码怎么样:“马电池订书钉”(20 字节乘以 8)。更好,但它实际上是 3 个字而不是 160 位。如果英语中有 10'000 种可能性,那么您可以用 3 个单词组成 1 万亿个组合,这很多,但远不及 160 位熵1 quindecillion可能性。最后,0MxLrTm8Z1怎么样?这是由一个安全的随机数生成器生成的。它有 10 个字符,存储空间为 80 位。但它真正包含多少熵?它只有字母数字(az AZ 0-9)或 62 种可能性,仅产生 8.39*10^17 种可能性或 59.5 位熵。

因此,拥有 10 个字符的密码并不意味着您需要破解 80 位熵才能找到原始密码。要将 80 位存储在可打印字符(您可以在键盘上键入的字符)中,其中包括特殊字符,例如*&$@,您需要 13 个字符长的密码。

前瞻性思维

另一个问题是计算机变得越来越快。80 位目前是安全的,但如果您在 2014 年使用现在安全的密码加密文件,则可能在 2017 年 36 个月*过去后被破解,计算机的速度大约提高了 4 倍。

虽然在 1993 年 6 个字符的密码直接从字典中获取)可能是合理的安全性,但在 2014 年,我们争论 10 个随机字符是否足够。

* 细心的读者会注意到这是摩尔定律的两倍(更细心的读者会注意到摩尔定律是关于芯片上的晶体管,而不是计算机的速度)。

密码使用

最后,我们要考虑一些实际问题:您如何管理密码?如果我告诉您 80 位可能就足够了(我刚刚这样做了),您是否要记住一个包含许多奇怪字符的随机 13 个字符的密码,然后将它用于您拥有的每个帐户?

密码管理器是否是一个好主意是另一个话题,但使用不同的密码比记住一个强大的主密码要好。最好在任何地方都使用强大且唯一的密码,但如果不写下来或使用密码管理器,这是不可行的,这会带来其他风险。我将把这些考虑留给一个专门的问题。

任何安全策略的弱点始终是人类的可预测性。您能想到并记住的任何聪明密码都将与人们使用的许多其他聪明密码非常相似。我们并不像我们认为的那样独特。人们基本上以易于理解和可预测的方式思考和记忆事物。

我在密码方面使用的一些基本原则。

  1. 使用密码管理器。我们的大脑根本不具备存储多个安全密码的能力。如果你能记住你的密码,那么它们就太简单了。
  2. 切勿将相同的密码用于一项以上的服务。这非常重要,但几乎总是被忽略。使用密码管理器可以轻松实现此主体,没有密码管理器几乎是不可能的。
  3. 您的身份仅与您最弱的密码一样安全。无论您认为您的电子邮件或社交媒体帐户多么不重要或平凡,它仍然需要安全,因为它通常可用于访问您更机密的服务。
  4. 如果可以避免,请不要使用密码提示。如果服务要求它,请使用随机且无法识别个人身份的东西。话虽如此,只有在您拥有强大的密码管理策略时才这样做。您永远不必使用密码恢复,因为您永远不应该丢失密码。
  5. 使用可能的最大密码长度。同样,这需要使用密码管理器。大多数服务现在支持至少 16 个字符。全部使用它们。
  6. 锁定和加密您的所有移动设备。您的个人信息(无论多么平凡)对网络犯罪分子都很有价值。

已经声明(对于一个相当权威的来源,请参阅您可以记住的密码短语 - 但即使是 NSA 也无法猜测拦截) ,NSA 能够(至少)“每秒一万亿次猜测”在PGP 密码短语的上下文。PGP 密码短语的检查成本故意很高,并且它们可能已经升级了它们的功能,但我们仍然可以将其用作某种基线,因为任何合理设计的系统都不可能超过几个数量级。

每秒一万亿次猜测对应于每秒 2 40次猜测。

因此,具有真正80 位熵的密码在 2 (80-40) = 2 40秒内是安全的。

2 40秒大约是 35,000 年。

平均而言,我们希望对手在一半的时间内正确猜出密码。这仍然是 15,000 多年的尝试。

即使考虑到计算机技术的进步,并假设您只需要您的密码在几千年内保持安全,我们因此可以合理地指出,一个 80 位的熵密码应该足以抵御强大的对手的集中离线攻击几百年到几千年。

很有可能他们很快就会厌倦等待,转而尝试其他更有可能成功的方法

还要记住真实熵与保存密码字节所需的存储量之间的差异。例如,我的密码管理器(Linux 上的 KeePassX)坚持密码的“位数”等于密码中的字符数乘以八。这导致了这样的荒谬,例如银行卡的四位数 PIN 号称具有 32 位强度(43 亿个可能值)而不是更准确的值 13-14 位强度(因为 13 位允许编码 8192 可能值,您需要大约 13.3 位来编码 10000 个值)。

获得 80 位真实熵的一种方法是使用Diceware方法生成一个 6 位或 7 位(每个 12.9 位,分别为 77 位和 90 位)字密码短语通过使用EFF词表之一(每个词的前三个字符中唯一的词表),这可以用 18 或 21 个字符表示;这与真正随机的单字母数字密码(小写 az,数字 0-9)相比相当有利,后者需要 17 个字符来编码 80 位熵(因为 log 2 26 17 ≈ 80,或 26 17 ≈ 2 80 ),并且可能更容易记住,因为可以记住单词并仅键入每个单词的前三个字母。

是的,特别是考虑到非 NSA 类型攻击者的“实际目的”。

对于在线密码,可以对密码进行攻击的速度是有限的。此外,通常存在安全漏洞(客户服务是设计上最大的安全漏洞),这些漏洞通常比您的密码更容易受到攻击。如果您可以通过几分钟的社会工程让 CS 授予您访问权限,为什么还要浪费数十万美元来破解您的 80 位密码
是的,有人窃取服务器上的密码数据库可能会用暴力破解您的密码,但这不太可能发生在 80 位密码中,他们宁愿对拥有 20 位密码的 1000 万其他用户进行操作,然后停在那里。此外,您没有什么可失去的,因为它是一个随机密码,不会在其他地方使用。这是毫无价值的。
入侵者此时已经拥有对服务器的 root 访问权限,因此无论他们在受感染的系统上能做什么,他们都会这样做。除此之外,他们对您的密码无能为力。

对于 Windows 密码,80 位也足够了。当然,有人可以进行蛮力攻击,但就像 NTLM 一样蹩脚,即使是著名的 25 GPU 3480 亿 NTLM 每秒的机器也需要 110.000 年才能进行详尽的搜索。
另一方面,您可以将硬盘插入另一台计算机并读取文件系统,而无需知道密码。大约需要 5 秒钟,如果您有 SATA-USB 适配器,您甚至不需要打开机箱。攻击者可能会做什么?

另一方面,对于全盘加密,通常不存储密钥(或密码),而是使用复杂的密钥派生方案来派生解密密钥表的解密密钥。这限制了攻击发生的速度。Truecrypt 曾经使用 2,000 次迭代,而 Veracrypt 目前使用 320,000 次左右的迭代。这是一个合理的假设,即所有全盘加密系统都使用多次迭代(尽管有些会使用更多,有些会更少 - 我假设 Bitlocker 处于较低端)。
您需要读取和解密至少 2 个扇区(经过几千次迭代)以验证密码是否匹配,这一事实进一步延迟了大规模并行攻击。因此,对于普通的非 NSA 攻击者来说,随机的 80 位密码是一个不可忽视的障碍。

256 位密码会给您带来更高的安全性吗?当然可以,但是您每次还必须按三倍的键。这是“实用”部分从另一个角度进入方程式的地方。有人攻击你是否可行,这不仅关系到系统是否对你每天使用的实用性也很重要。