*从一条椭圆曲线,到1997年8月16日的第1842次运行

先说素材。下面所有内容来自 IT 之家 10 月 17 日的报道,报道转述的是 Anthropic 10 月 16 日发布的博文。那份博文原文我没有读到,只能就报道引用的部分讲。

困扰密码学界二十六年的一个谜题,被一个 AI 用不到半小时翻了出来。

这话听着像标题党。往下看,它其实是一份很土的技术报告。

椭圆曲线在坐标平面上的形状
椭圆曲线在坐标平面上的形状

一、悬了二十六年的那个「种子」

事情得从 2000 年说起。

那一年,一组椭圆曲线被纳入美国数字签名标准。这些曲线用在 ECDSA 里,你用手机验证一条数字信息是不是真的、有没有被人动过,背后可能就是它们在算。

问题出在种子。

种子是生成椭圆曲线参数时用的一段起始数据。公开出来,别人才能照着复算,核对参数是不是从这个种子老老实实长出来的。

顺便分清两个东西。椭圆曲线的参数是公开的,谁都能查到;种子是用来生成这些参数的那段起始数据。参数公开,不等于种子的来历清楚。

可这五条曲线的种子,是美国国家安全局 NSA 提供的。

只给了种子,生成过程一个字没说明。

猜测就这么悬着:里面是不是藏了后门?是不是有人先挑了一组对自己有利的参数,再倒推着造出种子?

为什么大家这么在意种子?

因为只要种子公布,别人就能按同样的规则复算一遍,核对参数到底是不是从这颗种子长出来的。规则像一台固定程序的机器,种子是投进去的原料,同样的原料过同样的机器,出来的必须是同一个结果。

可当年只给了结果,没说原料,也没给机器的说明书。

这个问号一挂,就是二十多年。

档案库里一排排塞满卷宗的文件架
档案库里一排排塞满卷宗的文件架

二、它没灵光一现,它去翻了旧账

很多人以为 AI 解这种问题靠的是突然想通。

这次不是。

Claude 走的路子很土。它去排查上世纪 90 年代常见的软件工具。那个年代写代码,随机数从哪来?一个很常见的来源,是 C 语言库里的伪随机数生成器 lrand48。

接着是三件事。

识别位模式。从模式里恢复生成器的状态。再反向推算。

生成时间就这么被追进了一个很窄的区间,1997 年到 1998 年。

关键在输入。Unix 时间戳。

当年程序员随手写的一行初始化,二十多年后成了指纹。

九十年代的工作站与绿屏终端
九十年代的工作站与绿屏终端

三、第1842个候选值

结果细到了什么程度。

P-192、P-224、P-256、P-384、P-521,这五条曲线的种子,都能由 1997 年至 1998 年的 Unix 时间戳初始化生成。

P-256 最具体。

它的标准种子,对应 1997 年 8 月 16 日一次运行里的第 1842 个候选值。

不是「大概那几年」,也不是「应该在这个范围」。

是某一天,某一次跑,数到第 1842 个。

团队已经把复现代码公开了。别人可以自己跑一遍,对得上就是真对得上。

成箱堆放的打孔卡,在仓库里排成一片方阵
成箱堆放的打孔卡,在仓库里排成一片方阵

四、别传歪:这不是破解

这里最容易传走样。

Anthropic 自己强调了三件事。这不是破解 ECDSA。没有发现新的攻击方式。用户无需因此采取任何措施。

那这个结果到底改变了什么?

它降低了参数被刻意植入后门的疑虑。种子既然能对上 1997 到 1998 年的普通时间戳,那条「有人精心设计过」的路,就窄了一大截。

更像一次考古,不是一次破案。

考古挖出来的是:原来当年是这么回事。

钥匙与暗锁
钥匙与暗锁

五、还有几件事没讲完

故事没有圆满收尾。

B-163 的种子从哪来,还没解释。部分曲线基点的生成方式,还没解释。

还有一点挺吊人胃口:当年为什么跳过了某些本来能用的候选曲线。

这些问题的答案,都还空着。

二十六年的疑问被照亮了一大片,边角还在暗处。

我倒觉得这才是这件事最有意思的地方。AI 没给一个「全部都清楚了」的痛快答案,它给的是一个能复算、能检验、能继续往下追的起点。

剩下那些没解开的,也许下一个半小时就能翻出来,也许还要再等二十六年。

你觉得那几条没讲清的部分,是当年随手为之,还是真有人刻意留了一手?

一条路伸向远处
一条路伸向远处