猜了二十六年,答案写在时钟上
猜了二十六年,答案写在时钟上
2026-10-17 · 人工智能

Anthropic 在 10 月 16 日挂出一篇研究笔记,标题很平:Claude reveals ECDSA curve origins。内容是,公司内部一个研究模型用不到半个小时,把一桩挂了二十六年的悬案解了。
悬案关于五条椭圆曲线的「种子」。
先把话说简单。1997 年秋天,NSA 的数学家 Jerry Solinas 把一组「种子」交给了 ANSI X9.62 委员会,那会儿这个委员会正在写 ECDSA 签名规范。种子可以理解成出题的原料——原料扔进一台固定程序的机器,出来就是曲线的系数 b。2000 年,NIST 把这套东西写进 FIPS 186-2,成为美国数字签名标准的一部分。原料公开印在标准里,谁都能抄;它从哪儿来,一个字没说。
给的人不解释,收的人也没敢多问。
比如 P-256 那条曲线上的种子,长这样:C49D3608 86E70493 6A6678E1 139D26B7 819F7E90。今天它全世界都在用,每天替无数个签名背书。可没人知道它最初是从哪儿捞出来的。
于是密码学界开始猜。Neal Koblitz 和 Alfred Menezes 专门写过一篇文章梳理这场争论,题目叫《谜中之谜》。2013 年 Dual_EC_DRBG 事件之后,猜的人更多了——那一次是真挖出了后门,于是大家回头看这几条曲线,眼神就变了。有人开始悬赏,谁找出来给钱。
最像样的那个说法,就来自 Solinas 本人。他 2015 年说,种子应该是某个幽默短语的哈希值,大意是「给鲍勃和杰瑞加薪」,或者「鲍勃和杰瑞说了算」。他还说代码其实是 Bob Reiter 写的,Reiter 自己也记不清了;更早的档案找不到了,「如果还在,八成躺在约柜旁边的一块硬盘上」。
Anthropic 的几位员工按这条线索找过,没找到。
2026 年 10 月,一个好奇的员工把这道题丢给了公司内部的研究模型,没给任何提示。半个小时内,它回来了。
答案是:这些种子不是哈希。它们就是一台 1997 年的随机数生成器吐出来的东西——C 语言库里的 lrand48,起始输入是一个 Unix 时间戳。说白了,是当年某台机器上的时钟读数。程序每轮吐 20 个字节,第一个 20 字节是候选 1,第二个是候选 2,以此类推。P-256 用的那个种子,是第 1842 个候选。
那台机器上的时钟,指向 1997 年 8 月 16 日 01 时 52 分 34 秒。
它是怎么找出来的,我看了两遍才大概理明白。它先赌了一件事:90 年代的人图省事,会用手边现成的伪随机数生成器;而那种老生成器弱得很,输出能认出来。顺着这个思路,它写了个扫描器,沿着每个种子一个比特一个比特地滑,试了 34 种老生成器和输出切片的组合,发现有些种子的每个 32 位字最高位都是 0——这个巧合自然出现的概率大约是五千八百一十分之一。这个特征正好对上 lrand48,因为它只吐内部状态的一部分。接着它用格基约减把生成器的隐藏状态反推出来,再让生成器倒着跑,一直跑回起点,那是一个时间戳。
五条素数域曲线的种子,时间戳落在 1997 年 5 月到 1998 年 4 月之间。其中六条曲线的基点,用的是 Arjen Lenstra 那个 FreeLIP 库里的生成器。
也有没解开的:B-163 的种子,以及 P-224、P-256、P-384、P-521 的基点。另有四条二元域曲线的种子,倒推出来是 1984 年 2 月,看着不对;把时间戳乘二,就落回 1998 年 4 月 17 日——大概是程序把时钟值取了一半。
Anthropic 在正文最前面写了一段话,我照抄:
「这不该被当成任何形式的密码学破解、新攻击或弱点。恰恰相反,这让我们更有信心,这些曲线是在没有任何后门或蓄意弱点的情况下被选出来的。没有需要采取的行动,也没有什么要改变的做法。多数研究者本来就信任这些曲线。各位,好好享受吧。」
他们还说,这是一段长达多年的猜测终于合上的一章。
我不懂椭圆曲线,但这段我看懂了,而且觉得挺动人。真想埋后门的话,得在一大堆候选里挑出那个有特殊性质的;而这一串种子是从某台机器的表上直接读出来的,挑的余地小得可怜。所以最无聊的那个解释,恰好是最好的解释。
顺便说一句钱。据多家加密媒体报道,这桩悬赏最后由密码学家 Filippo Valsorda 挂出的 36,864 美元结掉,Anthropic 领了这笔钱,转手捐给了互联网安全研究组。
我想的其实是另一件事。
Solinas 2015 年说那个短语是「给鲍勃和杰瑞加薪」的时候,语气里是有点得意的——一个只有当事人知道的内部笑话,藏在标准里二十年。他 2023 年去世,没等到答案。三年后答案来了,不但不是笑话,连「人写下它」这个环节都很薄:程序自己挑了个时间,随手取了个数。
一个二十六年的谜,谜底是「有人看了一眼表」。
这大概是整件事里我最喜欢的地方。我们总觉得难问题的背后一定藏着深意,要么是天才的巧思,要么是坏人的算计。可现实里更多的情形是,当年那个人赶着下班。
Anthropic 说,做这件事的是一个好奇的员工。我现在挺想知道他是谁。他大概只是某天下午想起了这个悬案,随手把问题贴给手边的模型,然后起身去接水。
回来的时候,二十六年的账已经结了。