破解 1024 位 OpenPGP 加密电子邮件需要多长时间?

kel*_*mat 9 security pgp gnupg openpgp

对于 WPA,有计算器可以确定破解密码所需的时间,但我没有发现 OpenPGP 的任何内容。

破解 1024 位 OpenPGP 加密电子邮件需要多长时间(取决于 CPU 能力)?

我也对 2048 和 4096 等其他键大小感兴趣。

Jen*_*rat 20

首先,我假设您说的是 RSA 1024 位加密。

通常,该主题过于复杂,无法提供一个简单的数字。

tl;dr:在单个 CPU 上破解 OpenPGP 加密消息是不可行的,即使使用大型计算集群也可能需要数年时间。然而,未知的(对公众而言)数学缺陷可能会在数量级上改变这一点,就像量子计算机在未来的某个时候(从“互联网时代”的角度来看很远)那样。

稍长的版本:

破解非对称加密(RSA 1024 位密钥)

除了 RSA 1024 位密钥外,这也适用于较大的密钥大小。较大的键提供更多的安全性(在计算能力来破解它们的形式),但要记住的安全并没有用钥匙大小线性增加。

Information Security Stack Exchange 上有一篇不错的帖子,“如何估计破解 RSA 加密所需的时间?” ,它并没有像“使用 Core i7 模型 xy,你将能够在估计的 z 小时内破解 RSA 1024 位密钥”这样的估计完成,但答案同意“个人无法破解 RSA 1024 位密钥”在合理的时间内具有通常可用的计算能力(即少数高端机器)。

讨论用更多的计算能力破解 1024 位密钥只是从学术角度考虑的:

我最近了解到 1024 位数字分解的参数选择已经开始(这是“脑力”部分);筛选在技术上是可行的(在许多大学集群上它会很昂贵并且需要数年的计算时间),但目前没有人知道如何对 1024 位整数进行线性归约部分。所以不要指望很快就会出现 1024 位的中断。

这可能也适用于像 NSA 这样拥有大量计算能力的大型、资金充足的机构。

事情可能会迅速改变,如果

  • 有人发现了一个数学缺陷,这将 RSA 的复杂性降低了几个数量级(像 NSA 这样的一些机构雇佣了大量伟大的数学家),或者
  • 量子计算机终于可以工作并变得足够强大并能够运行某些算法。预计在未来几年内不会发生。

对于 DSA/ElGamal,情况略有不同。与 RSA 密钥大小相同的 DSA 密钥可提供更高的安全性,但同时 DSA 更容易受到不良随机数的影响(与Debian 随机数生成器缺陷相比)。即将用于 OpenPGP 的椭圆曲线密码术目前尚无已知的针对所支持算法的攻击,并且通常被认为是安全的,但存在一些疑问,尤其是在 NIST 推荐的曲线上(NIST 已经失去了一些声誉,因为它制造了破坏随机数字生成器一个标准),以及一些实现的吹毛求疵。

破解对称加密

出于性能考虑,OpenPGP 使用混合加密,因此消息使用对称加密和随机对称密钥(在 OpenPGP 中,通常称为“会话密钥”)进行加密。该会话密钥再次使用非对称加密算法进行加密,例如。RSA。

如果您能够破解消息的对称加密密钥,您还可以读取该消息(与破解非对称密钥不同,您可以读取所有加密到该密钥的消息)。

与PGP 的早期版本(使用由 Zimmermann 自己设计的称为BassOmatic的对称加密算法,该算法被认为已损坏)不同,为 OpenPGP 定义的所有对称算法都没有相关的已知攻击。

除非有人选择使用对称加密(这实际上是可能的!),打破使用对称加密算法的消息不应该被认为在暂时可行的。


小智 7

虽然@Jens Erat 的回答相当全面,但我研究了破解 RSA(OpenPGP 背后的算法),所以我想说:

我会打破常规并首先给出 TL;DR:你不可能打破那个关键。如果我们现实地看待这一点,您将无法分解 1024 位整数。最好的办法是尝试破坏安全链的其他部分(例如接收者检查电子邮件的桌面)。

抛开现实主义,让我们考虑可能的策略:

  • 盲目猜测/蛮力。对于 1024 位半质数,这几乎不可能奏效。随机尝试猜测彩票号码会更好地利用您的时间。

  • 生成彩虹表。通过将 2^1024 以下的每个素数与其他素数相乘,将结果存储在表中,从而消除因式分解中的猜测。然后你所要做的就是查找正确的对。可以想象,这也是不可能的。这将涉及 x! 对 x 个素数。通过素数计数函数,你看到了大约 2.95 * 10^307 个素数——为了比较,估计可观测宇宙中的原子数量在 10^83 的数量级上,所以即使我们可以让每个原子以我们的计算机可以索引的方式存储两个素数及其乘积是不可能的。

  • 使用通用数字字段筛选器。GNFS 是分解大型半素数的最佳选择。Kleinjung 和他的团队使用它来分解 768 位半质数 RSA-768。不幸的是,他的团队花了三年多的时间才完成了这项工作,而且这比您希望考虑的数字小几个数量级。即使您花费数百万美元(每天)以满负荷出租顶级超级计算机,也几乎不可能计算出这个数字。GNFS 的第一步是找到足够的“关系”来解决子问题,这可能需要很长时间。

你最后的手段是使用量子计算机,它可以让你在可行的时间内分解数字。不幸的是,这些尚未开发到任何有用的程度。所以现在,我们不能分解 1024 位和更大的半素数(以及依赖它们的算法)。