Claude 揭开 NIST 曲线种子来源:26 年悬案
【导语】26 年没人能说清 NIST 椭圆曲线种子是怎么来的。Claude 用不到半小时找到了答案,这篇文章把破案过程和你能用上的部分讲清楚。
26 年悬案:NSA 给的种子,没人知道怎么来的
2000 年,NIST 把 ECDSA 写进了 FIPS 186-2 数字签名标准。标准里列了一组椭圆曲线,每条曲线都带一个叫 seed(种子)的参数,这个种子的哈希值决定了曲线方程里的系数 b。
麻烦在于,这些种子由美国国家安全局(NSA)提供,却没有任何生成过程的说明。签名算法管的是“这条消息是不是真的由你发出”,种子的来源不明,等于地基没有验收报告。公开种子,别人才能复算,检查参数是不是真按公布的步骤算出来的。
2013 年 Dual_EC_DRBG 事件曝光后,外界对 NSA 参与密码标准的警惕明显上升,这批种子又被翻出来讨论。密码学家 Koblitz 和 Menezes 专门写过一篇《A Riddle WrAPPed in an Enigma》梳理争议,加密圈里还开出了悬赏。
流传最广的猜测来自 NSA 老员工 Jerry SoliNAS 在 2015 年的一段回忆:种子大概是拿一句玩笑话做哈希得到的,大意是“给 Bob 和 Jerry 加薪”。他说写代码的是 Bob Reiter,可两人都记不清细节。Jerry 在 2023 年去世,这条线索就断在这里。
种子到底是什么:一段 20 字节的起始数据
把生成曲线参数的过程想成一台固定程序的机器:投进去的原料就是种子,同样的原料按同样的规则处理,永远得到同样的结果。
原料不公开,操作空间就大了。设计者可以反复挑,一直挑到一条对自己有利的曲线为止。这也是当年怀疑后门的逻辑起点。
NIST P-256 的种子是一个 40 位十六进制数:C49D360886E704936A6678E1139D26B7819F7E90。P-256 也叫 prime256v1 或 secp256r1,是眼下用得最广的一条曲线,HTTPS 证书、数字签名里到处都是它。
破案思路:不猜那句话,改猜 1990 年代的软件
Anthropic 前沿红队在 2026 年 10 月 16 日发布了研究说明。起点是一位员工让内部研究模型 Claude 试着找种子来源,而且没有把“玩笑话哈希”这条线索告诉它。
Claude 换了个方向:如果这些种子是 1990 年代生成的,当年的软件会怎么写?它判断当初用的应该是 C 语言库自带的伪随机数生成器(PRNG)。这类老生成器很弱,输出规律能被识别出来。
它写了一个扫描器,沿着每个种子的比特逐位滑动,测试相邻的数据块是不是某个老式生成器的连续输出,一共试了 34 种生成器和输出切片的组合。
扫描过程里冒出一个特征:部分种子按 5 个 32 位字排列时,10 个种子中有 4 个,全部 20 个字的高位都是 0。这种规律纯属偶然的概率约 1/5810。这是线性同余生成器 lrand48 的签名——它只返回 48 位内部状态里的高 31 位。Claude 自己的判断是,知道要找什么之后,这个模式用眼睛就能看出来。
从 160 位反推出 1997 年的那一秒
素数曲线的种子每个输出保留的比特更少,得先把被截断的内部状态算回来。Claude 把它当成一个标准的格(lattice)问题,用 LLL 格基约简算法求解,对每一个可能的比特窗口都跑了一遍求解器。
结果覆盖了 5 条 NIST 素数曲线和 5 条 ANSI X9.62 曲线,全部符合同一个模式:lrand48() >> 23。每个恢复出来的 48 位状态,都能完整再生该种子的全部 160 位,这种巧合不可能发生。
接下来是逆向推算。lrand48 这类线性同余生成器正着走反着走一样容易,Claude 把状态一步步回退,直到出现 srand48 初始化时的形态,也就是低 16 位等于 0x330E。这个形态每 65,536 步出现一次,单独撞上不算证据,关键是下一步。
10 个素数曲线种子的初始化值,全部是 Unix 时间戳,落在 1997 年 5 月到 1998 年 4 月之间。P-256 对应的时间戳是 871696354,换算过来是 1997 年 8 月 16 日 01:52:34 UTC,它是那一次运行里的第 1842 个候选值。生成器每轮抽 20 字节作为一个候选种子,第一个 20 字节是候选 1,接下来是候选 2,依次往下排。
- P-192、P-224、P-256、P-384、P-521:种子来自 lrand48 加 Unix 时间戳
- 素数曲线种子时间戳范围:1997 年 5 月至 1998 年 4 月
- P-256:候选编号 1842,时间戳 871696354(1997-08-16 01:52:34 UTC)
- 二进制曲线种子:时间戳读出来是 1984 年 2 月,翻倍后落在 1998 年 4 月 17 日
顺手把基点也找到了:FreeLIP 和 20000 这个种子
曲线还有第二个参数叫基点 G,所有 ECDSA 公钥都是它的某个倍数。种子不决定 G,所以基点怎么来的又是一笔糊涂账。
查种子的过程中,Claude 把一部分基点也对上了。1997 年 5 月生成的 6 条曲线——P-192,加上 ANSI X9.62 的 prime192v2、prime192v3、prime239v1、prime239v2、prime239v3——它们的基点来自 FreeLIP 里的随机数生成器。FreeLIP 是 Arjen Lenstra 写的大整数运算软件包,Victor Shoup 的 NTL 库早期版本也带着同一份代码。
生成配方只有四步:用一个小整数给生成器播种;丢掉前 7 个输出;用 26 位输出对素数 p 取模,得到候选 x 坐标;重复第三步,直到 x 落在曲线上。据 Anthropic 说,此前没有任何一个 NIST 曲线的基点被解释过。
- P-192:初始种子 20000
- prime239v1 / v2 / v3:20420 / 20507 / 20509
- prime192v2 / v3:20512 / 20517
还剩三个尾巴没接上
Anthropic 这次没有把话说满,研究里明确列出了没解决的部分。
第一,第 5 个二进制种子 B-163 不符合试过的任何模式,来源仍然不明。第二,P-224、P-256、P-384、P-521 的基点怎么生成的,以及 NIST 二进制曲线的基点,都还没有答案。
第三,被跳过的候选。不是每个候选种子都能生成可用曲线,但研究里看到一些本来可用的曲线被越过了:P-256 的候选 876 同样能得到合格曲线,P-224 的那次运行越过了 3 条,两条 ANSI X9.62 示例曲线背后的运行又越过了 7 条。用什么判据跳过的,有没有别的原因,现在没人知道。
Anthropic 的解释是:被跳过的数量太少,“专门去找弱曲线”这个说法站不住脚,那意味着弱曲线得满地都是。理论上仍然可以通过搜索时间戳,挑出一条有特定性质的曲线,但只有打算把时间戳当成“种子是无害生成”的证据公开时,才需要这么干。数字本身不会告诉你当时跑了多少次。
对普通人有什么用:三件可以马上做的事
结论先说清楚:这不是破解,没有新攻击方式,曲线本身也没有任何变化。Anthropic 的表述很直接——没有需要采取的行动,不用改配置,不用换证书。
如果你想自己验证一遍,官方给了复现代码。核心几步并不复杂。
- 打开 Anthropic 研究页的复现脚本(Python),本地跑一遍,它会重新算出 14 条曲线的种子和 6 条曲线的基点横坐标,输出里会出现一行 matches published Gx: True。
- lrand48 的推进公式是 x = (0x5DEECE66D * x + 0xB) % 2**48,初始化时 srand48(t) 把状态设为 (t << 16) | 0x330E。拿 P-256 的时间戳和 1842 这个编号手算,能还原出那串种子。
- 查自己用了哪些曲线:装了 OpenSSL 的话执行 openssl ecparam -list_curves | grep -i prime256;看服务器证书可以找“公钥算法”一栏,写着 prime256v1 或 secp256r1 的就是 P-256。
更值得记的是方法:AI 怎么给老标准做考古
这次能成,靠的不是算力堆出来的暴力搜索。Claude 真正做对的是换了个提问角度:不去翻那句玩笑话,而是问 1997 年的人会用什么工具。当年软件的性能上限和库的限制,本身就是线索。
可复现是第二个要点。种子来源这种结论,光说“我找到了”没意义,必须有人能独立跑出同样的结果。研究里公开了时间戳、迭代次数、生成器参数,附了完整脚本,连 P-256 被跳过的候选 876 这种细节都写了出来。
还有个细节挺有意思:Claude 的推理记录里留了一段自我怀疑,它先问自己是不是在某个测试环境里,直到用直接计算验证 160 位匹配、确认不可能是巧合,才接受这是个真实发现。
老标准、没写文档的参数、只在旧刊物里留过一句的算法,这类陈旧悬案在各行各业都不少。这次的路径说明,把它们重新过一遍,成本比过去低得多。
顺带一提,悬赏的 36864 美元被 Anthropic 团队领走之后,捐给了互联网安全研究小组(ISRG)。
关注格熊,持续分享最新免费资源!
- 随机文章
- 热门文章
- 热评文章
- Wondershare Recoverit 一款电脑端史上最强力的数据恢复神器
- Windows11升级你需要关注的事项!停在35%的解决方法
- 「PDF24工具箱」一个完全免费、专业的PFD软件,功能非常多
- 微信小号要来了!无需绑定手机号!
- 「微信文件传输助手网页版」由腾讯官方出品,亲测超级方便
- 2021支付宝、微信年账单查询步骤
- 一份好的学习资源就等于领路人,B站百万关注的优质资源合集!免费分享
- Dism++ 一款传说中“老司机”都爱用的系统工具,使用教程
扫描二维码推送至手机访问。
版权声明:本文由格熊发布,如需转载请注明出处。
免责声明:本站收集的内容,都来自网络,版权争议与本站无关。




