Answers:
尽管@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位及更大的半素数(以及依赖它们的算法)。
首先,假设您正在谈论RSA 1024位加密。
通常,该主题过于复杂,无法提供简单的数字。
tl; dr:在单个CPU上破解OpenPGP加密消息是不可行的,即使使用大型计算集群,也可能需要数年的时间。然而,(对于公众而言)未知的数学缺陷可能会在数量级上改变这种情况,就像量子计算机将来可能会在某个时候(从“互联网时代”的角度来看)所做的那样。
稍长的版本:
除了RSA 1024位密钥外,这也适用于较大的密钥。较大的键提供更多的安全性(在计算能力来破解它们的形式),但要记住的安全并没有用钥匙大小线性增加。
信息安全堆栈交换上有一篇不错的文章,“如何估算破解RSA加密所需的时间?” ,其估算值不像“使用Core i7模型xy,您将能够在估计的z小时内破解RSA 1024位密钥”那样,但答案是“个人无法破解RSA 1024位密钥”在合理的时间内具有通常可用的计算能力(即,少数高端机器)。
仅从学术角度考虑了讨论使用更大的计算能力来破坏1024位密钥的问题:
我最近了解到,已经开始为1024位数字分解进行参数选择(这是“聪明”的部分)。筛分在技术上是可行的(在许多大学集群中这将很昂贵,并且需要花费数年的计算时间),但是目前,没人知道如何对1024位整数进行线性缩减。因此,不要指望很快就会有1024位中断。
这可能也适用于具有大量计算能力的大型,资金充足的机构,例如NSA。
事情可能会迅速改变
对于DSA / ElGamal,情况有所不同。与RSA密钥大小相同的DSA密钥可提供更高的安全性,但同时DSA更容易受到不良随机数的影响(与Debian随机数生成器缺陷相比)。目前针对OpenPGP即将推出的椭圆曲线密码术尚不支持针对已知算法的已知攻击,并且通常被认为是安全的,但尤其是在NIST推荐的曲线上还存在一些疑问(NIST因制造随机随机数而失去了很多声誉。数字生成器(一种标准),以及一些实现方法。
为了提高性能,OpenPGP使用混合加密,因此消息使用对称加密和随机对称密钥(在OpenPGP中通常称为“会话密钥”)进行加密。再次使用非对称加密算法(例如)对会话密钥进行加密。RSA。
如果您能够破解消息的对称加密密钥,那么您也可以阅读消息(与破解非对称密钥不同,在非对称密钥中,您可以读取所有加密为此密钥的消息)。
与非常早期的PGP版本不同(PGP使用Zimmermann自己设计的对称加密算法,称为BassOmatic,被认为是损坏的),所有为OpenPGP定义的对称算法都没有已知的相关攻击。
除非有人选择使用无对称加密(这实际上是可能的!),打破使用对称加密算法的消息不应该被认为在暂时可行的。