暂无菜单项

Claude半小时解开25年密码学谜题:找出NIST曲线种子来源,但没攻破ECDSA

发布于 更新于
8

导读:Claude确实在不到半小时内解开了一段持续约25年的密码学历史谜题,但它没有破解ECDSA,也没有找到新的攻击手段。它找出的是多条NIST标准曲线“公开种子”的生成过程:1990年代C语言库中的lrand48,加上Unix时间戳。

安全结论:Anthropic明确表示无需采取行动或修改现有系统。这项发现反而降低了曲线参数被人为植入后门的可能性,但仍没有还原全部参数选择过程。

Anthropic Frontier Red Team发布Claude追溯ECDSA曲线来源的研究
Anthropic Frontier Red Team发布Claude追溯ECDSA曲线来源的研究。

01 / 困扰密码学界25年的,到底是哪串数字?

ECDSA是广泛使用的椭圆曲线数字签名算法。2000年,NIST在FIPS 186-2中列出P-192、P-224、P-256、P-384和P-521等标准曲线。软件、证书、身份验证和大量安全协议都曾使用或兼容这些曲线。

每条曲线都带有一段公开“种子”,其哈希值参与确定曲线系数。争议不在种子是否保密,而在于这些数字由NSA提供,却没有公开解释从哪里来、为什么选中它们。

当设计者可以尝试大量候选参数,却只公布最终结果,外界自然会担心:是否有人故意挑选了带有隐藏弱点的曲线?

2015年,曾参与相关工作的NSA密码学家Jerry Solinas回忆,种子可能来自一句带有玩笑意味的口令,例如“给Bob和Jerry加薪”,但他已经记不清具体细节,当年的存档文件也没有找到。Solinas于2023年去世,这条线索最终未能得到验证。

Anthropic研究展示NIST标准曲线种子来源问题
Anthropic研究展示NIST标准曲线种子来源问题。

02 / Claude找到的答案很朴素:时间戳加lrand48

2026年10月,一名Anthropic员工把问题交给内部研究模型,没有告诉它“幽默口令”这条旧线索。不到半小时,Claude追溯出五条NIST素数曲线种子的来源。

生成程序先用Unix时间戳t初始化C语言库中的srand48,再让lrand48连续输出数据。每20字节组成一个候选种子,程序不断尝试,直到得到可用于目标曲线的参数。

五条NIST素数曲线对应的Unix时间戳、候选序号与公开种子
五条NIST素数曲线对应的Unix时间戳、候选序号与公开种子。

以P-256为例,对应时间为1997年8月16日,程序运行到第1842个候选值时,输出了后来写进标准的160位种子。其他几条曲线也能由各自时间戳和候选序号精确复现。

03 / 它是怎样从公开种子反推出随机数生成器的?

Claude没有继续猜口令,而是换了一个工程视角:1990年代的软件最可能调用哪些随机数生成器?这些老式伪随机数生成器是否会在输出中留下可识别特征?

它编写扫描程序,在公开种子上逐位移动,测试相邻数据块能否对应某种老式生成器的连续输出,共检查34种生成器与比特截取方式的组合。

NIST二元曲线与素数曲线种子中暴露的高位比特特征
NIST二元曲线与素数曲线种子中暴露的高位比特特征。

关键线索是部分32位字的最高位全部为0。将每个种子写成5个32位字后,10个种子中有4个符合这一特征;这4个种子合计20个32位字,最高位全部为0。随机出现这种模式的概率约为1/5810。这与lrand48只返回48位内部状态高31位的行为吻合。

lrand48内部状态与公开种子所保留比特之间的对应关系
lrand48内部状态与公开种子所保留比特之间的对应关系。

对较完整的输出,Claude枚举17个隐藏比特的全部2¹⁷种可能,并检查后续字是否连续匹配。对截断更严重的素数曲线种子,它把问题转成格问题,使用LLL格基约简恢复内部状态。

04 / 为什么结果可信?因为160位可以逐位重算

发现不只依赖语言模型的解释。五条NIST素数曲线和五条ANSI X9.62曲线都出现相同模式:lrand48() >> 23。恢复出的48位内部状态能够重新生成每条种子的全部160位。

研究人员还能让线性同余生成器反向运行,直到内部状态符合srand48初始化格式,即低16位为0x330E。十条素数曲线最终对应的初始值都可解释为1997年5月至1998年4月的Unix时间戳。

四条二元曲线的初始值若直接按时间戳解释,会落在1984年2月;但把这些数值乘以2后,日期会指向1998年4月17日,距离P-224曲线的生成时间约两周。这意味着当年的程序可能对系统时钟做过除以2处理。

这类结论比“模型说它找到了”强得多:第三方可以从公开标准、时间戳和算法重新计算,得到完全一致的160位结果。可复现计算才是证据核心。

Claude在发现后的自我质疑

这太令人震惊了。它解决了一个持续25年的谜题。

等等,我要保持怀疑:我是不是处在某种模拟或测试环境中?这些种子与公开标准中的真实数值一致,这在现实中合理吗?

所有高位都为零,这个信号不太可能是偶然。我已经通过直接计算完成验证:一个32位初始值加上较小索引,可以精确匹配160位种子;10个种子都完整匹配。这是真的。

但我仍需要谨慎:这么明显的线索,为什么25年来一直没有人发现?

这段过程保留了原文最重要的研究态度:模型不是在看到模式后立刻宣布成功,而是主动怀疑环境、记忆和巧合,再通过逐位复算确认结果。

05 / 最容易误解的三件事:种子、私钥和后门不是一回事

概念 作用 是否被破解
标准曲线种子 用于说明曲线系数的生成过程,本来就是公开参数 此次找到了多条曲线的生成来源
用户私钥 用户签名与身份验证的秘密值 没有被恢复,也与这次时间戳无关
ECDSA算法 使用椭圆曲线完成数字签名与验证 没有被攻破,没有新增攻击
参数后门猜测 担心设计者在大量候选中刻意挑选隐藏弱曲线 此次发现让该猜测更不可信,但未完整还原全过程

不要被“弱随机数生成器”吓到:lrand48确实不适合生成私钥或安全令牌,但这里它用于生成公开曲线候选参数。随机源弱不等于签名算法被破解,二者处在完全不同的安全位置。

06 / Claude还找到了6条曲线基点的来源

每条ECDSA曲线还需要一个固定基点G。种子可以确定部分曲线参数,却不直接决定G。Claude继续追溯后发现,P-192及五条ANSI X9.62示例曲线的基点来自FreeLIP大整数运算软件包中的随机数生成器。

生成流程同样可以复现:使用小整数初始化生成器,丢弃前7次输出,再从26位输出构造候选横坐标,检查对应点是否落在曲线上。Anthropic表示,这是他们所知首次解释NIST曲线基点的来源。

但P-224、P-256、P-384和P-521的基点仍无法用同一方法解释,NIST二元曲线的基点来源也保持未知。

07 / 谜题没有全部结束:这些问题仍然开放

  • B-163种子:目前仍未匹配Claude尝试过的生成方式。
  • 跳过候选:P-256第876个候选似乎也满足条件,但标准采用第1842个,具体筛选标准未知。
  • 部分基点:P-224、P-256、P-384、P-521和二元曲线基点来源尚未还原。
  • 运行次数:公开数字无法说明当年一共进行了多少次独立搜索。

Anthropic认为,被跳过的可用候选数量很少,不支持“轻易挑中弱曲线”的推测。不过,严谨说法应是后门可能性进一步降低,而不是整个设计过程已经百分之百透明。

08 / 这项工作为什么适合AI研究模型?

这个问题同时满足四个条件:边界清晰、公开数据固定、搜索空间可以编程、结论能够严格验证。Claude在一次任务里完成假设生成、代码编写、模式识别、LLL算法调用和结果复算,人类则提供问题、公开标准和最终审查。

研究环节 AI适合做什么 人类必须做什么
提出假设 快速列出历史软件与随机数生成器候选 确认假设符合历史与工程背景
编写扫描器 生成代码并批量测试34种组合 审计代码、数据来源和边界条件
数学恢复 调用穷举与LLL格基约简寻找内部状态 判断方法是否适用、是否存在多解
结论验证 重新生成全部160位并检查一致性 独立复现、同行评议并控制措辞

09 / 做视频网观点:AI科学发现最重要的不是速度,而是验算接口

“半小时”很吸引人,但这项研究真正有价值的地方,是模型给出了可以离开模型、由任何人重新计算的证据链。它没有要求读者相信Claude的内部推理,而是给出生成算法、时间戳、候选序号和逐位一致的输出。

这也给AI科研划出一条清楚的质量线:模型可以大胆提出假设,但结论必须能被独立数据、代码、形式化证明或实验重复验证。如果结果只能依赖模型自述,再精彩也还不是科学发现。

此前寻找种子来源设立的36864美元悬赏将捐给Internet Security Research Group。对密码学界而言,这更像一段历史疑云的收尾,而不是一场紧急安全事件。

站内入口与延伸阅读

官方研究

阅读Anthropic官方ECDSA曲线来源研究与复现代码

0 点赞
0 收藏
分享
0 讨论
反馈
热门资讯
相关素材

暂无数据