AI

Claude 半小时破解 26 年密码学悬案

3 min read

Claude 半小时破解 26 年密码学悬案

你有没有过这种时刻: 盯着屏幕上那一串根本看不懂的十六进制数字, 心里嘀咕--这东西要是藏着秘密, 谁知道啊?

这串数字叫 seed, 长得像这样:

C49D3608 86E70493 6A6678E1 139D26B7 819F7E90

它就是大名鼎鼎的 NIST P-256 椭圆曲线--全世界 HTTPS, 银行 U 盾, TLS 证书, 区块链钱包几乎都建立在它之上--的种子. 从 2000 年被美国 NIST 写进 FIPS 186-2 标准起, 密码学界就有一个悬案: 这一串没有来历, 没有解释, 是美国国安局 NSA 直接交出来的种子, **到底是怎么生成的? **

上周四(2026 年 10 月 16 日), Anthropic 公布了答案: **一个 Claude 内部研究模型, 用不到 30 分钟, 把它解出来了. **

而答案, 比任何阴谋论都更土--这些种子, 居然是 1997 年一台 Unix 工作站, 按下回车的那个瞬间的系统时间戳, 喂给一个 1990 年代 C 语言标准库里最烂的伪随机数生成器 lrand48, 跑出来的第 1842 个候选值.

我读完 Anthropic 团队那份技术博文的第一反应是: 我们这些每天在网上点 HTTPS 小锁的人, 过去 26 年, 原来一直是在信任一行被随手敲出来的 srand48(time(NULL)).

这事为什么让密码学家难受了 26 年

先说背景. 你每次在浏览器地址栏看到的那个小锁, 本质上是椭圆曲线数字签名算法(ECDSA)在干活. 它靠一条椭圆曲线做数学运算, 而这条曲线本身的参数, 要由一个叫 seed 的种子生成. 理论上, seed 应该是一段可复现, 可审计的公开数据--任何人都可以拿同样的 seed, 重新算出同样的曲线, 确认 NSA 没在里面塞后门.

但 NSA 在 1997 年把这些 seed 交出来的时候, 根本没解释它们是怎么来的.

整个密码学界就抓狂了. 最流行的猜测是: NSA 内部某位数学家 Jerry Solinas 写了一段英文句子, 比如Give Bob and Jerry a raise, 然后用 SHA-1 哈希了一下. Solinas 本人在 2010 年代的一次访谈里也承认他记不清了. 这个猜测流传了十几年, 被写进无数教科书.

它还有一个更让人睡不着的推论: **如果 seed 可以被自由选择, 那 NSA 完全可以挑一个只有他们能解的有弱点的曲线--这叫 NOBUS(Nobody But Us)后门. ** 加密学家 Bruce Schneier 在 2013 年的斯诺登事件后写过文章专门分析这种可能性, 2014 年 Bernstein 和 Lange 的一篇经典论文专门列举了 NSA 可以用来挑种子的几种暗门.

于是过去 26 年, 每次有人在 TLS 握手时看到这条 P-256 曲线, 心里都要嘀咕一下: 这串 C49D...7E90 真的只是随机数吗? 还是 NSA 在里面留了个只有他们知道的钥匙?

Anthropic 是怎么干的

转折点发生在 2026 年 10 月. 一位 Anthropic 工程师没给 Claude 任何提示, 只问了一句: 你能告诉我这串 seed 是怎么生成的吗?

Claude 没有去搜 SHA-1, 没有去找历史邮件, 没有去读 Jerry Solinas 的论文. 它换了个角度: **先猜 1990 年代的程序员会用什么工具. **

具体来说:

  1. 先看 seed 长什么样. Claude 把十组 NIST seed 拆成 32 位一块, 发现有四组每块的高位都是 0. 这种模式出现概率只有 1/5810, 但一旦出现, 就是一个强签名--只有一种伪随机数生成器会这样: lrand48, 它只输出 48 位状态里的高 31 位.
  2. 顺着签名把生成器反推回去. Claude 用一种叫 LLL 的经典数论算法(Lenstra-Lenstra-Lovasz 格基约简), 从已知的 20 字节输出, 反推出 lrand48 内部那 48 位的隐藏状态.
  3. 再把状态倒着跑, 直到它变成一个符合 srand48 初始化规则的形式--低 16 位恰好是 0x330E. 这个形态每 65536 步出现一次, 单独看没意义, 但对 10 条素数曲线种子, 每一条都恰好命中了一个 1997 年 5 月到 1998 年 4 月之间的 Unix 时间戳.

这一发现不仅解开了种子来源, 还顺手回答了一个更关键的问题: 那些 base point(椭圆曲线上的原点)是怎么挑的. Claude 发现, P-192 和五条 ANSI X9.62 示例曲线的 base point, 来自另一个 1990 年代库 FreeLIP, 用一组小整数(20000, 20420, 20507, 20509, 20512, 20517)作种子生成.

整个过程, 从一句这串 seed 怎么来的, 到全部解出来, 不到 30 分钟.

最让人松一口气的部分

Filippo Valsorda, 著名密码学家, Let's Encrypt 核心贡献者, 三年前立了一份 36,864 美元的悬赏, 公开求谁来解 NIST 椭圆曲线种子之谜. 悬赏页面长期挂着, 整个圈子把它当成一个不大不小的玩笑.

Anthropic 团队这次解出来之后, 认领了这份悬赏, 然后把钱捐给了互联网安全研究组(ISRG).

但更重要的是: 这次发现几乎排除了 NSA 后门的可能性.

原因是这样的. 如果 NSA 想在 P-256 这种曲线上塞后门, 他必须从一大堆候选 seed 里挑出那个恰好有数学弱点的--这种购物需要巨大的自由度. 但现在我们知道, P-256 的种子就是一台 1997 年的工作站, 用 srand48(time(NULL)) 初始化, 跑出来的第 1842 个候选.

换算一下, NSA 拥有的自由度: 最多只有 Unix 时间戳的精度(秒)x 第几个候选这两个变量. 即使按最宽容的估计, 他们也只在 30 比特左右的自由空间里打转.

30 比特不够用来藏任何有意义的后门.

Anthropic 也在公告里明说: 这次发现既不是 ECDSA 的漏洞, 也不是攻击--相反, 它让曲线被故意挑成有弱点的版本这个阴谋论几乎站不住脚.

也就是说, 我们过去 26 年在小锁里信任的那串十六进制, 只是因为 1997 年某个 NSA 程序员随手写了个 srand48(time(NULL)).

这事其实还有几个没解开的尾巴

Claude 没把谜题全解完. 还有几个事依然没被讲清楚:

  • P-256 的种子是候选 1842, 但候选 876 其实也满足 ANSI X9.62 的生成条件--**为什么偏偏跳过了 876? **
  • P-224, P-256, P-384, P-521 这四条曲线的 base point(基点)依然没解释清楚. Claude 解释了 P-192 和 ANSI X9.62 的示例曲线, 但 NIST 这五条素数曲线的基点选择标准依然是黑盒.
  • 二进制曲线 B-163 的种子没找到来源.

Anthropic 把这些悬而未决的部分也写在了原博客里, 附带可复现的代码. 这种我解出来了, 但还有这些没解的态度, 比任何AI 解决一切的通稿都更让人尊重.

我们这些普通用户, 到底应该关心什么?

我身边有朋友读完 Anthropic 公告, 第一反应是: 所以我用 HTTPS 是不是更安全了?

严格的回答是: **没有更安全, 但也不需要更不安全. ** ECDSA 的安全性建立在椭圆曲线离散对数问题的困难性上, 跟种子是怎么挑的没直接关系. **就算 seed 是从 lrand48 跑出来的, 也不意味着曲线本身有任何数学弱点. **

但这件事的意义, 远大于一串十六进制数字:

  1. **AI 第一次以一种不可忽视的方式, 参与了审计密码学基础设施这个本来只属于少数专家的领域. ** Claude 没有给出漂亮论文, 它只是用一种工程师都会的换个角度想的方式, 在半小时里做了过去 26 年整个密码学界都没做到的事.
  2. 后门阴谋论的实证排除. 我们过去 26 年都活在一个也许 NSA 偷偷在我们的小锁里藏了钥匙的怀疑里, 现在第一次有了清晰的反证: 他们没有, 因为他们做不到.
  3. 可复现性是这次发现最硬的部分. Anthropic 公开了全部代码, Filippo Valsorda 当天就用 Go 重写了一遍验证. 这意味着任何对密码学有怀疑的研究者, 下一次再有 NIST 公布的曲线, 他们可以在 30 分钟内自己跑一遍 Claude 的方法.

也许, 这才是 AI 真正改变基础科学的方式: **不是给你一个答案, 而是把一个原本只有少数人才能玩的游戏, 变成了任何一个工程师都能在工位上玩. **

一句话总结

1997 年某个 NSA 程序员按下回车的瞬间是几号几点几分, 用一台 1990 年代的 Unix 工作站, 一个最普通的 lrand48(time(NULL)), 跑出了一条保护全世界互联网的椭圆曲线.

Claude 用 30 分钟, 把这件事查了出来.

你下次在浏览器地址栏看到那个小锁的时候, 至少可以多一分笃定: 这串 C49D3608 86E70493 6A6678E1 139D26B7 819F7E90, 真的只是一串随机数.

不是后门. 不是阴谋. 只是 1997 年某个普通下午的回车键.


参考资料

文章分类

标签