密码破解:时间与成本

信息安全 密码破解
2021-09-03 14:31:50

我经常看到人们提到这样的论点:如果你使用普通的台式电脑,一个(散列的)密码将在 1.000 年内被破解,但如果你使用 100.000 台电脑(僵尸网络),它将在 4 天内被破解。“1.000 年”密码似乎没问题,但 4 天却不行。我认为“时间”模型具有误导性。

我们不应该为密码的强度找到更好的模型吗?我们可以用美元估算成本吗?

什么是密码安全性的好指标?

3个回答

密码强度的技术定义已经存在于熵位方面本质上,它是达到给定密码所需的猜测次数。一个 4 位长的密码有 10,000 个可能的值,因此猜测它只需要 10,000 次或更少。这些以 2 的幂表示;10,000 大约是 2^14,所以我们可以说它有 14 位熵。

14 位的熵并不多;短短几分钟内,浏览器中的 javascript 就可以暴力破解这么短的密码。现代台式计算机可以轻松实现高达 2^48 的攻击,这通常是事实。如果攻击者有定制的硬件,则更多。2012 年,有人在 PC 中安装了 25 块显卡,每秒能够支持 3480 亿次哈希计算。为了安全起见,我们必须假设攻击者随着时间的推移会随着硬件的改进而变得更好。

但是计算哈希并不是全部。除此之外,系统所有者还可以通过使用更好的散列算法、更好的协议(如 PBDKF2 或 bcrypt)、应用盐、限制猜测、自定义硬件等来提高安全性。如果您控制硬件,则速率限制非常有效:iPhone密码只有 2^14 位的强度,但如果输入错误的密码 10 次,机器内置的定制芯片将破坏其嵌入的秘密加密密钥。

在规模的另一端,2^80 位的熵正在接近可想象的攻击极限。今天似乎不太可能有人在家中暴力破解 80 位密码。任何实体都可以暴力破解 128 位密钥似乎几乎是不可想象的。FBI 正在研究的 iPhone 使用具有 256 位熵的加密密钥,在这一点上,我们知道没有办法暴力破解这些密钥。然而,数学和密码学研究的进步,以及硬件(如量子计算)的进步,已经一次又一次地证明,没有什么东西可以被宣布为不可破解的。

防守只是图片的一半。除了上面提到的自定义并行化之外,攻击者还有其他方法可以改进他们的攻击:他们可以使用单词列表和工具,如 John the Ripper,根据用户的语言优先猜测密码,彩虹表很容易下载,碰撞,恶意软件,研究目标、俘虏僵尸网络中的僵尸和其他技术都可以减少搜索空间。这些都取决于你设想的对手的能力和奉献精神。

鉴于进攻和防御都不是静态定义的,因此实施和威胁模型的每种组合都是特定的,并且无法与任何其他安装进行真正的比较。这使得很难根据不同密码实现之间的可比性来分配固定的成本或时间估计值。我们能说的最准确的话是“这个算法有 x 位的强度”、“这个实现将攻击者的努力乘以 60,000”等等。

时间和金钱都因计算机性能而异。在 1995 年,购买一台可以执行与 2016 年平均计算机一样多的 MD5 哈希计算的计算机将花费数千美元。即使购买与 Raspberry Pi 3 功率相同的设备也要花费数千美元。即使在今天,您也可以选择如何花钱以获得最佳投资回报——如果您构建一个基于 GPU 的专用破解设备,一些哈希会破解得更快,而如果您在多台低速机器上横向扩展,其他哈希会更好。

同样,在 AWS 或其他云提供商上租用时间很容易,它们可以提供大量的计算能力,但它们没有固定成本。如果您为大量服务器时间预先支付费用,那么您支付的费用将比您在一个月内建立信用并在随后还清的情况下支付的费用少得多。计算应该使用哪种方法?

对于大规模计算,有时最好忘记现实世界的实现,并进行抽象。一个似乎运作良好的方法是假设每次哈希试验都需要固定长度的时间(例如,每微秒 1 次给出每秒尝试 100 万次哈希,每纳秒 1 次给出每秒 10 亿次哈希),然后计算它会覆盖散列的整个键空间——对于 SHA-256,这是宇宙年龄的几倍(不管使用哪个定义——它是一个很大的键空间!)。不要忘记平均时间会更少——这是最坏的情况。这避免了与计算机能力的联系,并按预期进行扩展,同时保持独立于可变定价或速度变化。

我认为你的建议是一个很好的建议,实际上已经被现实世界的安全研究人员应用了。 最近的 DROWN 攻击计算出只需价值 440 美元的 Amazon EC2 时间即可执行数学分析。

马修提出了一个有趣的问题。我们如何计算成本,因为它们是可变的?值得庆幸的是,这有一个简单的答案,无论是最便宜的。

此类攻击的成本通常会降低。这也与情况有关,应该考虑在内。20 年前,DROWN 攻击的成本要高得多。使用摩尔定律粗略估计,20 年/18 个月 = 13 倍,即 8,192*440=360 万美元。(当时完全在 NSA 的能力范围内,但超出了除了超级富豪之外的大多数人的能力)。

还应注意,不需要确切的数字。即使是 2 倍也能给出成本的一般概念。如果上述攻击花费了 880 美元的 EC2 时间,那真的很重要吗?错误是相对的,估计只需足够准确以传达大致情况。

大多数商界人士已经熟悉用金钱来思考,它自然而然地适用于决策者。如果你告诉他们有人可以以 440 美元破坏你的安全,他们会听的。