ARTICLE / 安全
Claude 半小时破解 NIST 椭圆曲线种子悬案:红队基础设施挖出密码学 25 年谜底
一个悬置 25 年以上的密码学悬案,答案不是阴谋,是时间戳。Anthropic 前沿红队(Frontier Red Team)10 月 16 日发布研究:让 Claude 追查 NIST 标准椭圆曲线种子参数的来源,不到半小时,P-192、P-224、P-256、P-384、P-521 五条曲线的种子全部找到出处——它们不是任何短语哈希的结果,而是 C 标准库 lrand48 随机数生成器用 Unix 时间戳做种子的输出。
对密码学工程和红队两个圈子的读者,这件事各有值得记住的东西:前者是"曲线无后门"的证据落地,后者是一个可复用的悬案攻坚打法。
悬案本身:NSA 给的种子没有解释
ECDSA 是使用最广的椭圆曲线密码标准,2000 年被 NIST 采纳进 FIPS 186-2。素域曲线和二进制曲线的规范里公布了一个"种子"参数,其哈希值用于定义曲线系数 b。这些种子由 NSA 提供,没有任何解释。以 P-256 为例,种子是 SEED = C49D3608 86E70493 6A6678E1 139D26B7 819F7E90,来源一栏空白。
Koblitz 和 Menezes 为这个争议写过一篇综述,标题借了丘吉尔的名句——“一个谜团包裹在谜语里”。社区流传最好的说法来自 NSA 老员工 Jerry Solinas 2015 年的回忆:种子是对一句幽默短语做哈希生成的,短语大意是"给 Bob 和 Jerry 涨工资"或"Bob 和 Jerry 最厉害",可能还带计数器。但没人能复现。Jerry 2023 年去世,当年的同事也不再回应,线索断了。Filippo Valsorda 后来为这个悬案设了赏金。
Anthropic 内部几个员工曾顺着"短语哈希"的提示追过,全部失败——因为提示本身就是错的。
Claude 换了个问题问
2026 年 10 月,一个好奇的 Anthropic 员工没给任何提示,直接问内部研究模型:这些种子可能是怎么生成的。Claude 的切入角度不是"猜短语",而是"猜生成软件":90 年代生成这些参数的程序大概率用 C 标准库自带的伪随机数生成器,而这些老 PRNG 弱到其输出可以被识别。识别出是哪个 PRNG,就有可能恢复它的初始化状态。
第一步是写扫描器:沿每条公布的种子逐比特滑动,测试相邻块是否是某台 90 年代生成器的连续输出,覆盖 34 种生成器与输出切片组合。突破口来自一个肉眼可见的异常——部分种子的最高位全是零。写成 5 个 32 位字的话,十条曲线里有四条的全部 20 个字最高位都是 0,随机出现的概率是 1/5810。这是 lrand48 的签名:它只返回 48 位状态的最高 31 位。恢复状态时,Claude 对第一个字穷举 2^17 个隐藏位取值,验证后续四个字是否吻合——四条种子全部成立。
素域曲线的种子来自同一个生成器但保留了更少的位,恢复截断线性同余生成器的内部状态是教科书级的格问题,用 LLL 基归约算法可解。五条 NIST 素域种子加五条 ANSI X9.62 种子呈现同一模式:lrand48() » 23。每个恢复出的 48 位状态都能重新生成全部 160 位种子——这不是巧合能解释的。这个生成器可以反向步进,Claude 把每条状态回退到能被 srand48 初始化的形式(低 16 位等于 0x330E),结果十条素域种子的初始化值全是 1997 年 5 月到 1998 年 4 月之间的 Unix 时间戳。
顺带还解了一部分基点来源:P-192 和五条 ANSI 曲线的基点来自 FreeLIP 大整数运算包的随机数生成器,配方是"小整数做种子、丢弃七个输出、26 位输出模 p 生成候选 x 坐标、循环直到落在曲线上",生成器种子分别是 20000、20420、20507、20509、20512、20517。据 Anthropic 所知,此前没有任何 NIST 基点被解释过。P-224、P-256、P-384、P-521 的基点选法仍未解释。
对密码学的意义:排除后门疑虑,不是发现弱点
官方措辞克制但明确:这不是一次密码学破译,不是新攻击,不是曲线弱点;恰恰相反,它让"曲线被故意埋了后门"的猜想的可信度大幅下降。多年来人们怀疑的根源正是"种子来源不给任何说明"——现在证明生成方式简单到任何人都能复现:一个以时钟做种的常见 PRNG。简单意味着留给暗箱操纵的空间小。Anthropic 的结论是读者无需采取任何行动,可以放心继续使用这些曲线。
研究也留了未解的部分:种子序列里存在被跳过的可用曲线(P-256 的公布种子是第 1842 个候选,但第 876 个候选同样给出同尺寸同参数选择方式的素数阶曲线),不知道当年用了什么筛选标准,也无从判断是有意为之;第五条二进制曲线 B-163 的种子对不上任何已试方法;以及上面提到的四条曲线基点来源。36,864 美元赏金将捐给互联网安全研究组织 ISRG。
红队视角的三点可迁移经验
第一,换问题比换算力有用。社区 25 年卡在"短语哈希"这个错误提示上,Anthropic 内部员工照着提示也失败了。突破来自把问题从"哈希了什么"换成"什么软件生成的"——从产物特征反推工具链,这是逆向分析的常规思路,但要用在"没人觉得这是逆向问题"的地方。
第二,弱 PRNG 的输出有指纹。lrand48 只吐 31 位这个特征,在 20 个字的最高位上留下了 1/5810 概率的统计签名。红队做目标侦察时,同样是"从可观测输出反推内部状态"的路数:截断线性同余生成器的状态恢复是 LLL 的标准应用,任何把老 PRNG 输出直接暴露给外部的系统都值得多看一眼。
第三,把模型的自我怀疑记录下来。论文披露了 Claude 发现结果时的内部思考原文:它先怀疑自己是不是在模拟/测试环境里,再对照记忆里的真实种子值,用"20 个最高位全零、概率 10^-6"说服自己是真实发现,还反过来质疑"这么明显为什么 25 年没人发现",最后靠"160 位匹配来自 32 位种子加小索引、十组无巧合可能"完成自证。这段思考过程的公开价值不亚于结论本身——长程自主研究里,防止模型把真实发现当成幻觉(或把幻觉当成真实发现)的元认知机制,是可以被设计和审计的。
顺带一提,这项工作由 Frontier Red Team 署名,而不是常规研究团队——红队基础设施正在被用于"能力探索 + 公共利益"的双重用途。同一时期 Anthropic 还发布了用 Claude 设计更高效量子电路的研究(与哈佛团队合作、出自 STEM Fellows 项目),在八个来自化学、优化、物理模拟和数论的电路上,部分设计比已发表最优结果好一个数量级以上。前沿模型的自主研究能力边界,正在超出攻防本身。
本文面向授权安全研究与防御建设,未经授权对任何系统实施文中技术属违法行为。