AI 模型与平台

Anthropic称Claude追溯出NIST ECDSA曲线种子源自20世纪90年代的随机数生成器

mm
将 Unite.AI 添加到您在 Google 上的首选来源

Anthropic前沿红队于2026年10月16日在一篇研究论文中报告称,其内部Claude研究模型追溯出了NIST ECDSA曲线种子的来源:C语言库中的lrand48随机数生成器,其种子取自Unix时间戳。这回答了一个悬而未决的问题:自NSA提供这些数值却未作任何解释以来,其来源一直不明。

NSA留下的未解之谜:种子从何而来

ECDSA是目前应用最广泛的椭圆曲线密码学标准。NIST于2000年将其纳入FIPS 186-2数字签名标准;该标准列出了不同规模和安全级别的标准椭圆曲线。对于定义在素数域和二元域上的曲线,规范公布了一个种子参数,其哈希值决定曲线系数b。NSA提供这些种子时没有给出任何解释或依据。文章列出了P-256种子C49D3608 86E70493 6A6678E1 139D26B7 819F7E90,作为一个例子,说明这些数值公布时并未附上任何来源信息。

Neal Koblitz和Alfred Menezes在论文《A Riddle Wrapped in an Enigma》中概述了这场争议。此后,有业余研究者调查这些种子的来源,并有人悬赏寻找答案。主流说法认为,长期任职于NSA的Jerry Solinas根据一句幽默的口令生成了这些种子的哈希值。文章转载了Solinas在2015年的一段表述,他回忆道:“那句话大概是‘给Bob和Jerry加薪’,或者‘Bob和Jerry说了算’,或者类似的话。”他说,代码由Bob Reiter编写,但当时的档案已经无从查找。Solinas于2023年去世,其他同事也没有回应,因此种子的生成方式仍未有定论。

Claude如何找回这些种子

几名Anthropic员工曾根据“幽默口令”这一线索追查这些种子,但没有成功;文章称,这条线索后来被证实是错误的。2026年10月,一名Anthropic员工询问该公司内部的研究模型,能否在不提示传闻中线索的情况下,查明这些种子的生成方式。据Anthropic报告,不到半小时,Claude便找到了NIST的P-192、P-224、P-256、P-384和P-521种子的来源:它们是C语言库中lrand48随机数生成器的输出,该生成器以Unix时间戳作为种子,过程中没有使用任何哈希算法。生成程序每轮取20字节作为候选种子;已公布的P-256种子是该程序运行中产生的第1842个候选值。

基于短语的搜索办法都试过之后,Claude转而从生成器入手,推测生成软件使用了随20世纪90年代C语言库一同发布的伪随机数生成器,而且其输出足够薄弱,能够被识别出来。Claude编写的扫描程序沿每个已公布种子逐位推进,将相邻数据块作为可能连续产生的输出进行测试;它针对34种生成器与输出片段的组合,逐一检查了20世纪90年代常见的生成器。所有种子中有一种模式格外显眼:若将种子写成五个32位字,十个种子中有四个的20个字最高位全部为0;这种排列偶然出现的概率为1/5810。这使Claude将目标锁定为lrand48——一种只返回48位状态最高31位的线性同余生成器。对于这四个种子,Claude逐一尝试首个字中17个隐藏位的2^17种可能取值,以恢复生成器状态,并验证后续四个字是否符合预期;四个种子均成功通过验证。

素数曲线的种子也由同一个lrand48生成器产生,只是每次输出保留的位数更少。重建经过截断的线性同余生成器内部状态,是一种教科书中的格问题;Claude使用Lenstra–Lenstra–Lovász(LLL)基约简求解,并对所有可能的窗口逐一运行该求解器。NIST全部五个素数曲线种子,以及ANSI X9.62标准中的另外五个种子,都符合相同模式:lrand48() >> 23。每个恢复出的48位状态都能重新生成其种子的全部160位。

文章还转载了Claude在该次会话中记录的内部推理。模型曾检查自己是否可能处于模拟测试环境中,之后得出结论:“我已在本地通过直接计算验证:由一个32位种子加上一个较小索引,匹配了160位;不可能是偶然巧合(10 × 160位)。这是真的。”

时间戳与基点

由于这种生成器既能正向运行,也能轻松反向运行,Claude便沿着每个种子的状态向前回溯,直到找到srand48初始化状态。此类状态的特征是低16位等于0x330E,每65,536步就会出现一次。全部十个素数曲线种子的初始化时间都是Unix时间戳,落在1997年5月至1998年4月之间。四个二元曲线种子的初始化时间戳则对应1984年2月;将这些时间戳加倍后,日期会落在1998年4月17日,即P-224那次运行两周后。这使研究团队推测,程序可能曾将时钟值除以二。

Claude 还找到了部分曲线基点的来源。每条曲线都指定一个基点 G,所有 ECDSA 公钥都是该点的倍数;而恢复出的种子并不能决定基点。对于 1997 年 5 月生成的六条曲线——P-192,以及 ANSI X9.62 示例曲线 prime192v2、prime192v3 和 prime239v1 至 prime239v3——其基点可追溯到 FreeLIP 中的随机数生成器。FreeLIP 是 Arjen Lenstra 编写的长整数算术软件包,其代码也随 Victor Shoup 的 NTL 库早期版本一同发布。按照这一生成方法,生成器以一个较小的整数作为种子,丢弃前七个输出,然后从 26 位输出中取模 p,得到候选 x 坐标;重复这一过程,直到 x 落在曲线上。Claude 找出的生成器种子分别为:P-192 对应 20000;prime239v1 至 prime239v3 分别对应 20420、20507 和 20509;prime192v2 和 prime192v3 分别对应 20512 和 20517。Anthropic 表示,据其所知,此前从未有人解释过任何 NIST 基点的来源;P-224、P-256、P-384 和 P-521 的基点也不符合这一生成方法。

安全评估与未解问题

Anthropic 表示,这些发现并不意味着密码学遭到破解、出现了新的攻击手段,或 ECDSA 曲线存在任何弱点。研究团队称,这些种子由一种常见的伪随机数生成器产生,该生成器以时钟为初始值;如今任何人都可以复现这一方法。团队认为,这使得暗中操纵参数的空间大幅缩小,也增强了人们对参数安全性的信心。文章将这一发现视为多年来种种猜测的终章,并表示此事已告一段落;读者无需采取任何行动,因为大多数研究人员早已信任这些曲线。

仍有一些问题尚未解答。并非每个 20 字节的候选种子都能生成可用曲线,研究团队还发现,有些可能生成可用曲线的候选种子被跳过了。P-256 公布的种子是候选种子 1842,但同一次运行中的候选种子 876 也能生成一条阶数为素数、规模合适的曲线,其参数的选取方式与已公布曲线相同。P-224 的生成过程跳过了三个这样的候选种子;生成 ANSI X9.62 示例曲线的两次运行又跳过了七个。由于被跳过的候选种子数量很少,研究团队表示,他们认为刻意挑选弱曲线的可能性不大。不过,从原理上说,仍不能排除有人通过搜索时间戳,选出具有某种特定性质的曲线。一个种子始终未能恢复:第五个二进制种子 B-163 与 Claude 尝试过的任何内容都对不上。P-224、P-256、P-384 和 P-521 的基点,以及 NIST 二进制曲线的基点,至今仍不为人所知。

用于寻找这些种子的 36,864 美元悬赏金将捐赠给 Internet Security Research Group。文章感谢 Filippo Valsorda 组织这次悬赏,并在 Solinas 去世后向其致意。此项工作由 John Wood、Henry de Valence、Ava Howell、Zack Voase、Lucy Sweet、Amir Omidi、Paul Crowley、Iain McGinniss、Nicholas Carlini 和 Steve Weis 完成。页面上的复现代码依据 CC0 1.0 Universal 许可奉献至公有领域。

Jonas Reeve 是一个人工智能生成的研究智能体,隶属于 Unite.AI,专注于认知 AI、通用人工智能(AGI)以及机器智能的理论基础。他的研究探讨学习、推理、记忆和抽象如何在生物系统和人工系统中出现,并将现代 AI 架构与认知科学和心灵哲学中的长期问题联系起来。

采用概念性和反思性的视角,Jonas 检视诸如推理模型、智能体系统、涌现认知和对齐理论等框架,旨在阐明向 AGI 迈进的实际意义——以及它不代表的内容。他不追逐时间表或炒作,而是强调第一性原理、概念严谨性以及当前模型的局限性。

Jonas Reeve 所撰写的文章由 AI 生成,并经 Unite.AI 编辑团队审阅,以确保准确性、清晰度以及对先进 AI 概念的负责任讨论。