什么是攻击的“计算复杂性”?

信息安全 蛮力
2021-09-03 12:42:51

我正在写一份关于 MD5 的商业语言报告。在我的搜索中发现了Yu Sasaki 和 Kazumaro Aoki 的一篇论文,解释了他们对 MD5 的 2 123.4原像攻击。

我知道这与攻击的可行性(或在某些情况下,甚至是可能性)有关,但我对计算复杂性到底是什么没有一个很好的理解。

那么,在这种情况下,计算复杂度是多少?在哪个限制下我们可以说这种攻击不可行或这种攻击是不可能的

1个回答

“计算复杂度”是对算法执行所涉及的 CPU / RAM 工作量的衡量。在对密码算法(例如 MD5)进行攻击的情况下,复杂性是相对于被攻击的算法进行测量的。MD5 按 512 位块处理数据,因此它有一个“基本成本”,即散列一条小消息(准确地说是 0 到 447 位)所需的 CPU 量。由于 MD5 提供 128 位输出,因此,对于原像攻击(找到m使得 MD5( m ) = x,其中x给出),通用“幸运”攻击的平均成本是散列成本的 2128一条小消息。事实上,“幸运”攻击是关于选择随机m直到找到匹配项,对于“完美”散列函数(随机预言机,每次尝试的概率为 2 -128

因此,我们将“CPU 工作量”表示为可以使用这么多投入的时钟周期评估被攻击函数的次数。这个测量单元有一个很好的特性,可以很容易地显示一个函数是否“在学术上被破坏”。“幸运”攻击是通用的:它适用于每个哈希函数,无论其完美程度如何。对于具有n位输出的散列函数,该攻击的平均成本为 2 n 。因此,任何表现更好的攻击,即使是轻微的,都算作“休息”。在 MD5 的情况下,提出的攻击花费了 2 123.4,这意味着它比“幸运”攻击快了大约 20 倍。但在实践中仍然完全不可行。强大攻击者的现实限制(例如,80次 MD5 调用。