跳转至内容

密码学/暴力攻击

来自维基教科书,开放书籍,开放世界

暴力攻击是针对密码的一种攻击方式,它通过尝试所有可能的密钥来破解密码。从统计学上讲,如果密钥最初是随机选择的,那么大约尝试了一半的可能密钥后,明文就会变得可用。正如我们在基本设计原则中所讨论的,一个基本假设是,密码是已知的。自从 A. Kerckhoffs 首次发表以来,密码学的一个基本准则一直是安全性只能依赖于密钥。正如 Claude E. Shannon 几十年后所说,“敌人知道系统”。在实践中,这是一个很好的建议。

截至 2002 年,密钥长度为 64 位或更少的对称密码容易受到暴力攻击。DES 是一种广受尊敬的对称算法,它使用 56 位密钥,在 1990 年代后期被 EFF 项目破解。他们甚至写了一本书来描述他们的攻击——《破解 DES》,O'Reilly 和 Assoc. EFF 是一个非营利性的网络空间公民权利组织;许多人认为,像美国国家安全局这样的资金雄厚的组织可以使用暴力破解成功攻击 64 位密钥的对称密钥密码。这肯定是真实的,因为它已经公开进行了。[需要引用] 许多观察者建议对称密钥算法的最小密钥长度为 128 位,即使这样,选择安全的算法也很重要。例如,许多算法可以有效地缩短密钥长度,直到可以使用暴力攻击进行计算。AES 推荐用于至少到 2030 年。

非对称算法的情况要复杂得多,这取决于具体的算法。因此,目前 RSA 算法可以破解的密钥长度至少为 768 位(自 2009 年以来公开破解),但对于大多数椭圆曲线非对称算法来说,目前可破解的密钥长度被认为要短得多,可能只有 128 位左右。一条使用椭圆曲线加密算法的 109 位密钥加密的消息在 2003 年初被公开通过暴力破解密钥搜索破解。

截至 2015 年,椭圆曲线算法建议的最小密钥长度为 224 位,RSA 等其他非对称密钥算法建议的最小密钥长度为 2048 位(依赖于复杂数学问题的安全性的非对称密钥算法总是需要更大的密钥空间,因为存在破解它们的捷径,与直接暴力破解相比)。[1]

常见的暴力攻击

[编辑 | 编辑源代码]

“暴力攻击”一词实际上是一个总称,指的是所有穷举所有可能(或可能)组合的攻击,或其任何衍生形式。

字典攻击

[编辑 | 编辑源代码]

字典攻击是一种常见的密码破解技术,它主要依赖于普通计算机用户选择的弱密码。例如,如果攻击者通过各种恶意数据库操作和在线商店的教育搜索获得了哈希密码文件,那么他就可以编写一个程序,对字典中的每个单词(例如,任何或所有语言和常见的派生密码)进行一次哈希,并将这些哈希与他获得的真实密码哈希进行比较。如果哈希匹配,他就获得了密码。

预计算字典攻击

[编辑 | 编辑源代码]

对于任何大量的密码哈希(例如在线数据库会产生的哈希),简单的字典攻击方法很快变得过于耗时。因此,攻击者开发了预计算方法。在这种攻击中,攻击者已经对他的所有字典进行了哈希,他只需要比较哈希即可。此外,由于许多用户会选择相同的密码,因此他的任务变得更容易。为了防止这种攻击,数据库管理员必须在哈希之前将唯一的 32 位盐附加到用户的密码,从而使预计算失效。

本书的破解哈希算法章节将更详细地介绍专门针对哈希密码文件的攻击。

对暴力攻击的应对

[编辑 | 编辑源代码]

有很多方法可以减轻暴力攻击。例如

  • 在尝试所有可能的密钥时,频繁更改密钥需要攻击者重新开始,假设他不知道密钥已更改,或者在从头开始再次进行攻击之前完成尝试所有可能的密钥。
  • 系统可以依赖于在猜测密钥的次数过多后进行超时或锁定系统。超时系统可以简单地阻止进一步访问,锁定用户帐户,联系帐户所有者,甚至销毁明文信息。
  • 两步验证是一种要求第二个密钥才能进入系统的方法。这会使暴力攻击变得复杂,因为攻击者不仅要猜测一个密钥,还要猜测第二个可能同样复杂的密钥。这种方法最常见的实现是要求进一步身份验证“你第一只狗的名字是什么?”。未来出现了一种新的趋势,系统利用基于时间的密钥进行两步验证,该密钥通过电子邮件或短信发送,而访问帐户或特定电子设备则用作第二个密钥。

本书的安全密码章节将更详细地介绍专门针对哈希密码文件的缓解措施和其他应对措施。

  1. Damien Giry. "加密密钥长度建议".
华夏公益教科书