Claude 解开椭圆曲线 25 年悬案:NIST 种子来自 1990 年代 C 库随机数

Anthropic 公布一项研究结果:其内部研究模型 Claude 在不到半小时内找出了 NIST ECDSA 标准曲线「种子」(seed)的来源。这些种子由美国国家安全局在 2000 年前后提交给 NIST、写进 FIPS 186-2,却从未说明如何生成——椭圆曲线密码学社区为此争议了二十多年,Neal Koblitz 与 Alfred Menezes 写过《谜中之谜》梳理这段历史,也有人悬赏寻找答案。Claude 给出的结果与流传最广的传言(某个幽默口令的哈希)完全不同:P-192、P-224、P-256、P-384、P-521 五条素数曲线的种子没有任何哈希运算参与,而是 1990 年代 C 标准库随机数生成器 lrand48 的输出。
推导路径是「先想生成软件当年怎么写」。Claude 猜生成程序用了 1990 年代 C 库自带的线性同余伪随机数生成器,写了一个扫描器沿每条已发布种子逐位滑动,判断相邻片段是否是同代生成器的连续输出,共覆盖 34 种生成器与输出切片组合。它随后注意到部分种子最高位恒为 0——十条种子中有四条的全部 20 个 32 位字最高位都是 0,随机出现这种模式的概率约为 1/5810,这正是只返回 48 位状态中高 31 位的 lrand48 的特征。恢复被截断的状态被化归为教科书式的格问题,用 LLL 基约减求解;十条素数曲线种子统一呈现 lrand48()> >23 的截断模式,再把内部状态向前回退到 srand48 的初始化形态(低 16 位为 0x330E),得到的十个时间戳落在 1997 年 5 月至 1998 年 4 月之间。
Anthropic 明确说明这不是密码学破解、也不构成 ECDSA 曲线的弱点,结论反而让「曲线被刻意埋后门」的猜测更不可能成立:种子由任何人都能复现的普通伪随机数生成器加系统时钟产生,可被颠覆的空间小得多;P-256 需要生成器跑到第 1842 次迭代才吐出标准种子。上述推导过程、迭代次数与时间戳区间均出自 Anthropic 官方研究页(含 Claude 当时的推理记录),本轮未取得第三方独立复现或同行评议。
原文链接:Anthropic 官方研究页