top of page

针对 RSA 的新攻击可在不恢复私钥的情况下伪造签名

9月29日
讀畢需時 12 分鐘

RSA 研究人员在未分解公钥模数、也未恢复其私钥的情况下,耗费 1,380 CPU 核年完成了一次 1024 位签名伪造。

这一成果让针对 RSA 的新攻击有了醒目的新闻标题,但其底层算法可追溯至 2007 年。真正的突破在于,研究人员通过实现将这一理论方法完成了全规模计算。

这一差异很重要,因为该攻击并不能攻破所有 RSA 部署。它针对的是暂时提供原始、未填充 RSA 操作访问的系统。采用标准化编码的现代签名仍不在已演示攻击模型的范围内。

Bruce Schneier 的攻击评估准确概括了这一核心反转:这是一项真实的密码分析成果,但并非提取 RSA 私钥的通用技术。

针对 RSA 的新攻击究竟改变了什么

研究人员将一项此前被忽视的 2007 年算法,转化为针对真实签名目标完成的 1024 位签名伪造。

Laura Shea、Miro Haller、Adam Suhl、Nadia Heninger 和 Emmanuel Thomé 通过 UC San Diego 与 Inria 的合作实现了该攻击。他们针对 1024 位目标的计算于 2026 年 8 月 31 日完成。

该团队于 9 月发布了论文及配套代码。公开材料将这项工作描述为一次在接近特殊数域筛时间内完成的签名伪造。

这一名称指的是攻击的渐近性能。数域筛是一类用于解决高难度数论计算的算法,其中包括大整数分解。

通用数域筛(GNFS)是目前已知分解普通 RSA 模数最快的经典方法。特殊数域筛(SNFS)则会在底层问题具有可利用代数结构时表现得更好。

新的实现实际上将攻击的一部分转入了更快的类别。它并未将 RSA 密码分析变成一个简单或多项式时间的问题。

研究人员称,该计算消耗了 1,380 CPU 核年。通过并行处理,学术计算集群将这部分总工作量压缩为数月的实际耗时。

这依然是一项规模巨大的工作。不过,团队估计,分解同一个 1024 位模数需要 50 万至 100 万 CPU 核年。

这些估算不能直接等同于通用的财务成本。硬件、软件、内存、网络和实现选择都会影响实际运营开支。

但它们仍确立了核心技术结论:在满足所需预言机条件时,伪造 RSA 签名所需的计算量可能远低于分解关联模数。

预言机是指对攻击者选定的输入执行密码操作并返回结果的系统。在这里,攻击者需要暂时访问原始 RSA 签名或解密操作。

这种访问无需永久持续。在完成与公钥绑定的大规模预计算后,攻击者便获得了离线生成更多有效输出的能力。

这种持久性使该结果比普通的签名服务滥用更为重要。攻击者即使失去对原始预言机的访问,仍可保留伪造能力。

团队的研究人员说明称,这种能力在实际效果上类似于窃取秘密密钥。但这并不意味着实际的私有因子已被恢复。

研究人员还发布了其实现和中间数据。这种透明度让其他密码学家能够复现相关假设、审查工程决策,并测试拟议的缓解措施。

因此,完成这次运行本身才是新闻事件。使其成为可能的数学方法已经公开近 19 年。

为什么一项 2007 年算法如今意义重大

尽管没有引入新的数学捷径,这一实现仍改变了特定攻击模型下对 RSA 安全性的估算。

Antoine Joux、David Naccache 和 Emmanuel Thomé 在其2007 年论文中描述了这项底层技术。他们研究了在何种情况下,计算 RSA 数模某些根会比分解该数更容易。

简单来说,RSA 会对合数模数进行幂运算。私钥操作会计算一个根;在不知道秘密密钥的情况下,完成这一计算本应不可行。

2007 年的工作表明,经过选择的预言机响应能够揭示足够的结构,从而支持更快的攻击。其作者描述的结果涵盖从选择性伪造到通用伪造能力。

这一结果从未意味着攻击者可以被动观察一个普通 RSA 公钥后立即伪造签名。它要求反复访问经过精心构造的私钥操作。

直到 2026 年,尚无人公开演示过在 1024 位规模完成整个过程。大型密码分析计算所需的不只是论文中写出的复杂度表达式。

研究人员必须构建合适的多项式选择、收集关系、处理海量数据集、执行稀疏线性代数,并完成最终重构。微小的低效率都可能在数月工作中被放大。

新团队将这些阶段连接起来,并在 1024 位目标上演示了结果。其大部分实现建立在 CADO-NFS 之上;后者是一套成熟的数域筛计算软件套件。

理论与实现之间的这一区别,是针对 RSA 的新攻击的核心。算法早已为人所知,但其实际常数和工程要求始终存在不确定性。

一次完成的计算将这些未知转化为证据。它表明,伪造与分解之间的计算差距并不只是渐近意义上的好奇现象。

针对已演示的目标,研究人员估计攻击成本接近 2^65 次操作。他们将这一数字与分解相近 1024 位 RSA 模数所需的大约 2^80 工作量进行对比。

对于更大的密钥,他们估计,在易受攻击的预言机模型下,攻击 2048 位 RSA 约需 2^90 工作量,攻击 4096 位 RSA 约需 2^119 工作量。

这些更大规模的攻击尚未完成。它们是基于算法、实测的实现性能和预期扩展行为得出的推测。

这些推测值得关注,因为安全强度衡量的是攻破一个系统所需的预期工作量。NIST 将 S 位安全强度定义为大约 2^S 次基本操作。

不过,这些数字适用于暴露的构造,而非 RSA 密钥的每一种使用方式。协议的编码、访问控制、速率限制和密钥生命周期仍是其有效安全性的一部分。

这一比较同样需要语境。即使低于理想的理论安全边际,2^90 的计算也远比已完成的 1024 位实验困难得多。

研究人员表示,其所需工作量约为 2^80 计算的 1,000 倍。尚无公开团队完成对应的 1024 位分解任务。

因此,这一结果对安全模型的冲击大于对当前生产系统的冲击。设计者不能再假定,对于原始 RSA 操作,分解总能提供最佳攻击成本估计。

这项修正对于硬件安全模块、盲签名协议和专用接口很重要。这些系统有时会暴露 RSA 私钥操作,同时试图限制它可授权的内容。

如果周边协议提供了所需预言机,仅基于 GNFS 的密钥长度估算就可能高估安全性。这一实现为设计者重新审视该分析提供了具体理由。

针对 RSA 的新攻击是伪造,而非密钥恢复

该攻击可在选择输入条件下攻破签名能力,但不会从公开信息中推导出 RSA 私钥。

RSA 密钥包含公钥模数和指数,以及由模数秘密素因子推导出的私有值。传统分解攻击旨在获取这些因子。

恢复这些因子即可让攻击者获得实际私钥。在受协议细节约束的前提下,该密钥可支持受影响 RSA 构造所授权的所有操作。

这种签名伪造技术走的是另一条路径。它利用原始 RSA 预言机的响应来准备数据,以支持后续的根计算。

攻击者首先需要暂时访问执行未填充私钥操作的设备或协议。攻击者提交许多经过特别选择的值,并记录响应。

随后,预计算会使用数域筛变体搜索代数关系。一旦收集到足够多的关系,攻击者便可将其组合起来伪造选定的输出。

大部分高成本计算取决于公钥。完成该阶段后,生成单个伪造结果的成本会大幅降低。

从防御者的视角来看,其结果可能类似于私钥被盗。未经授权的一方可以生成能够通过真实公钥验证的签名。

但其机制和范围依然不同。公钥模数并未被分解,私钥指数也未必被重构。

这一差异会影响事件响应。替换受影响密钥将阻止未来在该公钥下的验证,就如同应对普通密钥泄露一样。

它也会影响漏洞评估。一个不具备所需原始签名接口的系统,并不会仅仅因为使用 RSA 证书就变得易受攻击。

将这项工作称为攻破“RSA 密钥”可能模糊这些边界。它可能让人误以为存在一种仅凭证书或公钥即可发动的被动攻击。

已演示的攻击需要更多条件。它需要一个能交互式提供攻击者选定原始 RSA 结果的来源,并且在该来源消失或密钥轮换前完成足够多的查询。

研究人员的完整论文将这一贡献表述为在接近 SNFS 时间内伪造签名。这一措辞准确指出了结果及其复杂度改进。

它也避免了另一种常见误解。次指数并不意味着多项式时间、瞬时完成或成本低廉。

多项式时间算法会以输入规模的固定幂次增长。次指数算法的增长速度快于多项式算法,但慢于完全指数算法。

SNFS 和 GNFS 都属于次指数类别。该攻击更快,是因为其常数和结构更有利,而不是因为它消除了困难计算。

完成的实验使用的是 CPU,而非 GPU。研究人员还表示,他们没有使用人工智能来优化代码。

他们认为 GPU 和进一步的实现工作可以提升性能。这是合理的研究方向,但并非本次实验测得的结果。

因此,关于 GPU 可带来显著加速的说法仍属推测。数域筛工作负载包含多个阶段,每个阶段对专用硬件的响应都不同。

已演示的基准是团队实际实现所耗费的 1,380 CPU 核年。任何更低的未来数字都应来自可复现的代码和已完成的测量。

这正是本文的核心张力:该工作对基于分解的假设构成了有意义的突破,但它并非通用的 RSA 密钥恢复方法。

实际风险范围有限,但并非为零

普通的带填充 RSA 签名并非已被证实的攻击目标,但原始签名接口应立即接受审查。

现代 RSA 签名通常不会直接将私钥指数应用于不受限制的消息。它们会先使用定义明确的签名方案对消息摘要进行编码。

RSASSA-PSS 会在 RSA 运算前加入随机化格式。PKCS #1 v1.5 则采用带有标识符和填充的结构化确定性编码。

这些编码可防止攻击者选择任意原始整数进行签名。这一限制阻断了新实现所需的预言机行为。

研究团队表示,其攻击似乎无法针对采用 PSS 或 PKCS #1 v1.5 的常见 RSA 签名实现。Schneier 也得出了相同的实际结论。

这意味着传统证书、TLS 身份验证签名、已签名软件和令牌不会自动暴露。管理员应先验证实际使用的算法和接口,再得出结论。

仅凭密钥长度无法判断是否存在漏洞。通过原始签名 API 使用的 2048 位密钥,与同一密钥被限制为经验证的 PSS 签名时,面临的暴露程度不同。

最明确需要审查的对象,是允许执行原始私钥操作的硬件安全模块接口。应用有时会请求此类访问权限,以在模块外实现自定义协议。

这种灵活性可能削弱模块原本应提供的安全边界。私钥虽从未离开设备,但可用的操作仍可能成为签名预言机。

盲签名需要更细致的分析,因为其目的就是对签名者不可见的内容进行签名。客户端会转换消息、获得签名,随后移除盲化因子。

这种设计支持隐私保护型身份验证和数字现金应用。但它也形成了一种接口:客户端能够影响由私钥处理的值。

现代盲 RSA 协议增加了编码和验证要求。现行的盲签名标准会围绕客户端准备的消息使用 RSA-PSS 编码。

不过,签名服务器仍会对经盲化处理的代表值执行 RSA 私钥运算。新论文分析了此类接口如何在签发过程中暴露所需的原始预言机。

Privacy Pass 是一个经常被引用的用例。它使客户端能够获得匿名令牌,服务可对其进行验证,同时不会将签发与后续兑换关联起来。

Apple 和 Cloudflare 曾在隐私服务及挑战绕过系统中使用与 Privacy Pass 相关的技术。这并不能证明每一种部署都可被利用。

针对在线服务的成功攻击,需要正确的构造、稳定的公钥,以及足够多被接受的预言机查询。运营控制措施可能改变这一计算。

研究人员估计,攻击一个 2048 位盲 RSA 密钥需要约 2^43 次预言机查询,以及规模大得多的离线计算。

这一查询量超过八万亿次。对单个用户而言极为庞大,但大型分布式服务处理的总流量可达到相近的聚合规模。

速率限制可以约束与单一账户、设备、网络或凭证相关的请求。滥用检测也可识别异常重复的签发模式。

密钥轮换会缩短可收集响应的时间窗口。如果服务在攻击者收集到足够多响应之前更换 RSA 密钥,先前的查询无法直接转移到新密钥。

因此,较短的密钥周期会提高攻击者的运营成本。它们不会改变数学原理,也不能完全替代协议层面的防御。

研究人员建议,零知识证明可作为更强的中期应对方案。这类证明能够在不泄露隐藏消息的情况下约束客户端输入。

更长的 RSA 密钥同样会提高攻击成本,但论文质疑它们在这一预言机模型下的安全裕度。作者估计,即使密钥达到 4096 位,强度也不足 128 位。

这并不意味着攻击者如今可以伪造 4096 位签名。2^119 的估计仍远超已完成的 1024 位计算。

但这意味着协议设计者不应将增大密钥长度视为唯一的长期答案。存在漏洞的接口会以更高成本保留同样的结构性问题。

对大多数组织而言,正确的应对措施是开展盘点,而非紧急停用。安全团队应定位 RSA 密钥,并识别所有获准执行的私钥操作。

他们应区分加密、常规签名、盲签名、证书签发、令牌签名和自定义 HSM 调用。每条路径暴露的攻击面各不相同。

团队应确认应用请求的是具名签名机制,而不是通用模幂运算。它们还应在接受已签名对象之前拒绝格式错误的编码。

现行 NIST 密钥管理指南已将 1024 位 RSA 视为不符合现代保护要求的过时方案。这项实验为淘汰仍在运行的部署增加了另一项理由。

采用原始签名服务的 1024 位 RSA 应立即修复。标准的 2048 位 PSS 部署不会面临同样的即时风险发现,尽管更广泛的迁移规划仍然重要。

防御者接下来应关注什么

接下来的三个信号是独立复现、针对具体协议的分析,以及真实实现中可量化的变化。

首先,密码学家应独立复现这项 1024 位计算,并审查论文的扩展性估算。复现可以检验报告的成本是否涵盖了所有实质性阶段。

它也可能揭示会强化或削弱预测结果的实现瓶颈。若可复现的成本更低,对暴露的原始签名接口的担忧将会加剧。

若成本显著更高,也不会抹去这一概念性结果。它会缩小实际运营威胁,并降低大密钥估算的紧迫性。

其次,标准组织和协议设计者应发布针对盲 RSA 构造的分析。当盲化会改变签名者所处理的内容时,泛泛谈论“填充”并不充分。

关键问题在于,具体协议是否会向攻击者提供论文假定的预言机响应。查询认证和密钥轮换必须纳入这项评估。

Privacy Pass 部署尤其值得关注,因为它兼具隐私目标、重复令牌签发和广泛分布的客户端。公开设计审查可以将理论上的暴露与可实际触达的攻击区分开来。

若协议修订要求采用更强的输入证明,将强化研究人员的警告。若能令人信服地证明常见部署拒绝提供所需预言机,则会缩小该结果的实际适用范围。

第三,防御者应关注 HSM 厂商和密码学库。文档、API 默认设置、审计规则和弃用通知能够反映行业如何解读这一发现。

HSM 可以保护密钥材料,同时仍暴露危险操作。厂商可能会限制原始 RSA 调用、增加查询控制,或建议使用特定机制的接口。

库维护者也可能收紧底层 API。弃用原始私钥指数运算,可降低开发者意外构造暴露签名预言机的可能性。

这些信号都不要求立即弃用所有 RSA 证书。已被演示的攻击无法通过被动观察触及标准化的带填充签名。

RSA 还面临来自具备密码学相关能力的量子计算机这一独立的长期问题。后量子迁移计划已经为组织提供了减少对传统算法依赖的机会。

NIST 于 2024 年标准化了首批后量子签名算法。由于证书、硬件、协议和运营工具必须协同改变,迁移仍将耗时多年。

这项新攻击支持密码敏捷性规划,即系统能够在不重新设计整个产品的情况下替换算法。它并不意味着应跳过兼容性测试,或紧急更换未受影响的系统。

安全负责人现在应提出四个具体问题:是否仍有服务使用 1024 位 RSA、暴露原始私钥操作、实现盲 RSA,或在异常长的时间内保留同一把密钥?

任何一个“是”都应触发协议审查、日志分析和迁移时间表。它不应引发一种缺乏依据的说法,即私钥已经被提取。

针对 RSA 的新攻击之所以重要,是因为它将一个长期的理论警告变成了已完成的计算。其实际边界同样重要。

应将这一结果视为对密码学假设和接口设计的测试。验证系统暴露了哪些操作,然后在决定应对措施前跟踪复现结果和针对具体协议的发现。

 
 

免费开始使用

一款本地优先的AI助手

为了获得更好的人工智能体验,

remio 目前仅支持Windows 10+ (x64)和M-Chip Mac 。

你的 AI 工作伙伴

和 remio 一起高效工作

规划、创作、交付

一站式完成

bottom of page