Anthropic 报告称,Claude 将十条 NIST 与 ANSI 椭圆曲线 seed 追溯到 lrand48。这是 1990 年代 C 环境常见的伪随机数生成器,初始状态来自 Unix 时间戳。公开代码可以精确复现标准中的 160-bit 数值,核心机制因此具备很强的可验证性。但这个发现仍要拆成三个问题:这些数字怎样生成、1997 至 1998 年究竟是谁运行了程序、为什么选中了特定候选。三者的证据等级不同,AI 辅助科研的归因也应保持这种边界。
Claude 究竟发现了什么
Anthropic 原文从一个持续多年的来源问题切入。FIPS 186-2 公布了推荐椭圆曲线及 160-bit seed,包括 P-256 的 C49D...7E90,却没有说明 seed 从哪里来。曲线生成包含可选择参数,来源空白因此长期引发是否存在隐蔽筛选条件的猜测。
按照 Anthropic 的记录,内部研究模型放弃了流传多年的幽默口令哈希假说,转向查找当时伪随机数生成器留下的输出特征。它识别出符合 lrand48 的高位模式,恢复被截断的内部状态,再将线性生成器倒推到 srand48 的初始化形式。十条 prime-curve seed 对应的 Unix 时间集中在 1997 年 5 月至 1998 年 4 月。
以 P-256 为例,生成配方非常具体:
- 使用 1997-08-16 01:52:34 UTC 的 Unix 时间初始化
lrand48; - 连续生成 20-byte 候选;
- 取第 1842 个候选;
- 得到与标准完全一致的
C49D360886E704936A6678E1139D26B7819F7E90。
我在本地独立运行了 Anthropic 页面给出的精简复现代码,P-256 输出逐位一致。这验证了生成配方与公开参数之间的计算恒等关系,但还不能单独识别原始操作者,也没有恢复当年的原始程序。
五级证据栈
最稳妥的报告方式,是把可能独立失败的 Claim 分层。
| 层级 | Claim | 当前证据 |
|---|---|---|
| 1. 公开工件 | 标准中的 seed 是特定 160-bit 数值 | NIST FIPS 186-2 与 ANSI/NIST 曲线规格 |
| 2. 可复算机制 | 时间戳初始化的 lrand48 能重建该数值 |
公开代码与精确输出匹配 |
| 3. 跨曲线模式 | 十条 prime-curve seed 共享同一生成模式 | Anthropic 报告的状态恢复与时间戳匹配 |
| 4. 历史归因 | 原始曲线团队确实采用了这套流程 | 高度吻合的间接证据,缺少原始源码、日志或同期签名记录 |
| 5. 意图与安全含义 | 当年的选择完全善意且不存在有意筛选 | 怀疑空间显著缩小,但没有直接证明人的意图 |
第一、二层今天可以由第三方直接检查。第三层原则上同样可计算验证,但仍需要外部团队完整重跑十条 seed 的状态恢复与工具实现。第四层属于历史推断,第五层还混合了密码分析和人的意图判断。
这一区分也决定如何归因。一个标题很容易把全部成果归给最显眼的 Claude。实际研究系统还包括公开标准、此前定义问题的密码学家、赏金与业余调查者、选择研究问题的 Anthropic 员工、执行搜索与写代码的模型,以及完成人工校验和发布的研究团队。
160-bit 精确匹配为何是强证据
核心结果远强于相似性判断。一套候选流程能逐位重建完整公开 seed。Anthropic 还报告,五条 NIST prime curve 和五条 ANSI X9.62 示例曲线出现相同模式,恢复的内部状态都能倒推到合理的历史时间戳。
精确重建极大压缩了偶然巧合空间,也解释了 seed 中可见的位模式。lrand48 是线性生成器,内部状态只有 48 bit,因此可以通过枚举或格算法补回被截断的状态位。
但计算复现回答的是机制问题:这套流程能否产生这些工件。历史来源还要回答更强的问题:归档标准中的参数是否确实由这份程序和这套操作流程生成。最强的缺失证据包括当年源码、构建产物、运行日志、磁盘镜像或同期说明。
精确输出属于高等级计算证据,同时仍是不完整的档案证据。
这不是 ECDSA 破解
Anthropic 明确表示,这项结果没有构成 ECDSA 攻击,也没有发现曲线弱点。这里重建的弱 PRNG 用于几十年前生成公开的曲线选择 seed,和每次签名必须保密、不可预测的 nonce 不是一回事。
新发现确实降低了一类担忧。简单、可复算的时间戳流程,比来源完全不明的 seed 留给隐蔽操纵的空间更小。与此同时,原文保留了多项开放问题:
- B-163 的 seed 尚未解释;
- P-224、P-256、P-384 与 P-521 的 base point 来源尚未解释;
- 生成过程中跳过了若干看起来也可用的曲线候选;
- 数字本身无法说明当时一共运行了多少轮;
- 理论上仍可搜索时间戳,以挑选带有某种目标属性的结果。
Anthropic 认为有意选择弱曲线的可能性很低,因为被跳过的候选不多;若能轻易找到弱曲线,弱点就要普遍到足以在小样本中出现。这个判断属于安全分析,不能替代对当事人意图的档案证据。
现实动作也应保持克制:这项发布没有要求用户轮换 ECDSA 密钥或弃用相关曲线。是否继续采用某项标准,应依据当前密码分析与实现指南,而不是只看来源故事。
Base point 结果说明为何要按 Claim 报告
Claude 还把六条曲线的 base point 匹配到 Arjen Lenstra 的 FreeLIP 大整数库所用生成器。公开复现代码从小整数 seed 出发,丢弃前七个输出,再构造候选 x 坐标,最终匹配标准点。
这是另一项结果。前面的 seed 用于确定曲线系数,base point G 是独立参数。部分 base point 能被 FreeLIP 配方重建,几条重要 NIST 曲线的 base point 仍无法解释。如果把文章概括为 Claude 解释了 NIST 曲线的全部起源,就会越过证据边界。
合理的拆分方式如下:
- 十条 prime curve 的 seed 生成:可复算模式;
- 四条 binary curve:存在时钟减半的合理解释;
- B-163:未解决;
- 六个 base point:可复算的 FreeLIP 模式;
- 其他 base point:未解决;
- 原始操作者与筛选政策:历史上仍未确认。
按 Claim 保持颗粒度,可以阻止一项强结果把确定性外溢到相邻问题。
AI 辅助发现的报告协议
这项研究更深的价值,是给模型提出并检验非常规假设的科研流程提供了样板。
分开保存发现与验证
记录模型版本、Prompt、工具、生成代码、失败假设与时间。随后建立一份只接受公开输入、输出确定结果的独立验证器。思维轨迹可以解释发现过程,验证器必须能脱离思维轨迹成立。
把工作归给正确主体
分别说明模型提出了什么、写了什么代码,人类选择和检查了什么,前人研究提供了什么。归因属于技术准确性,因为它直接展示潜在失效点。
把计算与历史分开
确定性匹配可以达到很高证据等级,却仍然无法恢复人的意图。档案缺口应被明确标记,而不是用一个连贯故事自动补齐。
要求真实的独立重跑
发布代码意味着具备可复现条件。只有另一个主体实际重跑完整分析、核对每条曲线并审查实现,才能称为独立复现。
在摘要中保留负空间
未解释参数、跳过候选、档案缺失和外部复核状态应进入核心结论。它们共同定义 Claim 能达到的最大强度。
这套协议延续了站内AI 辅助密码学发现的验证阶梯。这次案例增加了一个重要提醒:计算结果可以非常确定,历史结论仍然保持不完整。
常见问题
Claude 破解了 ECDSA 或 NIST 曲线吗?
没有。它重建了公开曲线 seed 和部分 base point 的可能生成过程,没有提供签名伪造或私钥攻击。
时间戳驱动的 lrand48 能证明曲线没有后门吗?
它让任意隐蔽筛选变得更难成立,也提高了透明度;它不能证明原始设计者的意图,更不能排除所有可能的筛选策略。
任何人都能复现 P-256 结果吗?
可以。Anthropic 发布了短代码,通过一个时间戳和候选序号重建 P-256 seed,可直接与标准参数逐位比较。
为什么历史归因弱于代码复现?
代码证明一种流程能够产生目标工件。历史归因还需要证明原团队确实采用该流程,通常需要同期源码、日志、档案或当事人证词。
还有什么没有解释?
B-163 seed、若干 NIST base point、跳过候选的筛选标准以及运行总次数,在 Anthropic 报告中仍未解决。