全世界的网银、支付、网站证书,背后大多站着同一把锁,叫RSA。它用了将近50年,密码学家一直认定,要撬开它只有一条路:把一个几百位的大数拆成两个质数。这条路难到什么程度?美国国家安全局这样的机构,想撬开一把1024位的钥匙,估计也得砸进几千万美元的算力。
现在有人找到了第二条路。
美国加州大学圣迭戈分校的一队研究者,根本没去拆那个大数,直接伪造出了合法的RSA数字签名。他们用的只是一个学术机构的CPU集群,对付的是1024位密钥,花了几个月。
RSA的原理很简单。每个用户手里有一对钥匙,一把公开,一把私藏。用私钥给一段数据盖章,任何人拿公钥都能验证这个章是真的,但谁也造不出这个章,因为私钥藏在一个大数背后,而这个大数拆不开。几十年来,攻击者和防守方都默认,想伪造签名,得先拆数拿到私钥。
拆一把1024位的钥匙,需要大约2⁸⁰次运算,折合50万到100万核年。核年是算力单位,一个CPU核心不停跑一年,算一核年。
这次伪造签名,只用了2⁶⁵次运算,1380核年。运算量不到原来的三万分之一。
美国国家安全局、美国国家标准与技术研究院和欧盟网络与信息安全局都有一条底线:任何密码系统,破解它所需的运算次数不能少于2¹²⁸。新方法把1024位RSA压到了2⁶⁵,2048位压到2⁹⁰,4096位压到2¹¹⁹。三档全部跌破底线。而2048位是目前的主流规格,此前所有人都认为它离被破解还远得看不见边。
这还没到底。研究团队的代码全是手写的,没用AI,也没用GPU加速。论文合著者、加州大学圣迭戈分校教授纳迪娅·赫宁格(Nadia Heninger)说,用上这些工具,安全水平“几乎肯定”还会往下掉。
论文目前是预印本,发布在国际密码学研究协会的论文库里,第一作者是同校的劳拉·谢伊(Laura Shea)。密码学专家、Allurity公司创新负责人卡斯滕·诺尔(Karsten Nohl)说:“如果这个结果能经受住同行评议,那它确实是概念上的突破。我们一直以为,破解RSA和分解大整数一样难。这项研究表明,你可以在不破解密钥的情况下实际破解RSA。”
方法本身来自2007年发明的一种算法变体,叫特殊数域筛法。它借的是密码协议里一种叫“预言机”的性质:攻击者向系统提交大量输入,系统按协议规矩逐一答复,每个答复都泄露一丁点信息。提交的次数多到一定程度,泄露的信息攒够了,就能拼出一个合法签名。
好消息是,攻击只对一种用法有效,叫盲签名,也叫教科书式RSA,也就是数据不经任何处理,直接拿去签。今天绝大多数RSA用的是另一种做法,签之前先往数据里塞一段填充,业内叫PKCS或PSS填充。填充让同一段数据每次签出来都不一样,攻击者从答复里榨不出有用的规律。这类系统眼下不受威胁。
坏消息是,盲签名并没有绝迹。赫宁格说,最有名的例子是Privacy Pass,一种让用户证明自己合法、又不暴露身份的协议。比如在一个网站通过一次人机验证后,系统会发给你一批匿名令牌,之后去别的网站直接出示就行,不用反复点那些找红绿灯的图片。苹果和Cloudflare都在用它。原理正是盲签名:服务器给用户发放令牌,但签发时看不到令牌内容,所以事后也认不出这个人是谁。这个设计恰好给攻击者提供了预言机。
要打穿Privacy Pass,攻击者得向Cloudflare或苹果索要2⁴³个令牌,也就是将近9万亿个。赫宁格说,这个数听着吓人,但和Cloudflare公开说过的一天网络流量在同一个量级。多数Privacy Pass系统会定期更换密钥,能大幅压低攻击者得手的概率,但不能自动把它压到零。
论文作者和其他研究者都强调,这个攻击眼下的现实威胁不大。但RSA的安全余量被砍掉一大截,而且砍的方式此前没人知道。
密码学界早就在给RSA倒计时。量子计算机一旦实用化,RSA的根基会整个塌掉。业内估计,这一天还要3年到20多年才会到来,所以这几年大家忙着造能扛住量子计算的新锁。原本的打算是,在新锁装好之前,旧锁还能安稳站岗几年。这次的结果说明,旧锁不用等量子计算机,普通电脑已经能在它身上撬出裂缝。
~~~~~~
图源:Getty Images
信源:Goodin, Dan. "There's a New Way to Break RSA That's Faster than Anything We've Seen Before." Ars Technica, 24 Sept. 2026
