整个现代互联网的安全底座上,曾趴着一只若隐若现的幽灵。

支撑全球数字证书、移动通信与身份握手的 NIST 椭圆曲线标准(FIPS 186-2),核心参数源头整整二十六年无人知晓。学界长年怀疑美国国家安全局(NSA)在其中预埋了数学后门;已故 NSA 密码学家 Jerry Solinas 则声称那是调侃同事的幽默短语哈希。

直到 Anthropic 研究团队(包含 John Wood、Nicholas Carlini、Steve Weis 等人)用 Claude 解开逆向谜题,正式兑现独立研究员 Filippo Valsorda 悬赏三年的奖金,真相才浮出水面。基础赏金连同配捐共 36,864 美元全额捐给了 Let's Encrypt 运营方 ISRG。

没有精密的数学陷阱,也没有传世暗号。所谓的核心机密,只是 1997 年工程师随手调用 C 语言标准库中的弱伪随机数函数 lrand48,塞进去了当天的 UNIX 时间戳。

NIST 椭圆曲线种子生成逆向流程 输入源 UNIX 时间戳 871696354 1997-08-16 01:52:34 UTC 弱伪随机序列 srand48(时间戳) 循环调用 lrand48() >> 23 每次提取 1 字节 ANSI X9.62 连取 20 字节 作为种子输入 SHA-1 哈希衍生 多轮条件筛选 工业标准产物 第1842个候选 P-256 诞生 载入 FIPS 186-2 沿用至今近30年 说明:整个流程只受时间戳与循环计数驱动,数学操作极简,未见额外的人工干预痕迹。

半小时逆向:AI 抓住了三十年前的统计破绽

人类密码学家耗费数年穷举英语短语字典,被记忆带偏了方向。Claude 的切入点截然不同,它直接按 1990 年代的工程习惯推测当年开发者的动作。

在逐比特扫描公开种子时,模型抓到了一个统计缺陷:十个标准种子中,有四个在拆分为三十二位整数时最高位全部为零。这种分布在密码学哈希中出现的概率仅有 1/5810。

种子拆分后最高位罕见连零,暴露伪随机算法特征
种子拆分后最高位罕见连零,暴露伪随机算法特征

这是典型的线性同余生成器(LCG)特征。C 语言自带的 lrand48 只返回内部状态的高三十一位,最高位永远留空。顺着这一规律,研究团队利用格基约减算法(LLL)在三十步内逐一推导出了内部截断状态。

状态回溯到了一个固定初值,真相就此定格:

曲线名称对应 UNIX 时间戳生成时刻(UTC)候选序列位次
P-1928639517111997-05-18 10:35:11早期轮次
P-2248916053351998-04-03 12:08:55早期轮次
P-2568716963541997-08-16 01:52:34第 1842 次迭代
P-3848729355721997-08-30 10:06:12早期轮次
P-5218710323361997-08-08 09:25:36早期轮次

以支撑全球流量半壁江山的 P-256 为例,它诞生于 1997 年 8 月 16 日那个周六的凌晨。机器跑到了第 1842 个候选,摇出了二十字节哈希输入 C49D360886E704936A6678E1139D26B7819F7E90,随后被写进标准文档。

随手读取的系统时间戳,被误认为精密密码学后门(示意图)
随手读取的系统时间戳,被误认为精密密码学后门(示意图)

业余反成免罪符:30 比特自由度困不住阴谋

在常规安全认知里,随机数发生器越弱,系统越危险。但在公开标准参数的选取中,逻辑恰恰相反。

密码学家 Daniel J. Bernstein(DJB)曾指出,若想在椭圆曲线中人为构造特定的代数缺陷弱曲线,攻击者至少需要 70 比特的自由度来实施定向碰撞搜索。

生成自由度对比:假想后门与现实约束 DJB 假想后门所需碰撞空间 约 70 bit 自由度 攻击者需遍历的微调空间(寻找特定脆弱曲线) 1997 年实际时间戳与候选自由度上限 上限仅约 30 bit 现实锁定范围 结论:即使允许当年设计者任意挑选 1997-1998 年的时间戳与候选者,其空间也远不足以塞入后门。

Anthropic 逆向出的代码逻辑彻底封死了后门假说。生成器直接捆绑了物理时间戳,即使当年设计者在 1997 到 1998 年间任意挑选生成时刻,并在候选序列里人工挑拣,满打满算也只有约 30 比特的自由度。

三十比特的搜索空间,根本塞不下预谋已久的数学后门。

最简陋的工具链,反倒成了洗清蓄意投毒嫌疑最有力的证据。

ECDSA 曲线种子生成机制:传闻与真实还原对照 三十年行业猜想与传闻 输入源:幽默短语哈希(如加工资调侃) 生成方式:多轮安全哈希算法映射 安全隐患:怀疑 NSA 特别构造数学后门 结论:参数出处不明,工业界信任分裂 Claude 逆向发现的真实机制 输入源:1997-1998 年系统 Unix 时间戳 生成方式:弱伪随机数发生器 lrand48 迭代 后门空间:算法极为简陋,大幅排除预埋漏洞 结论:无预谋后门,纯粹是历史工程惯性

迟来的清白,挽不回失去的信任

后门疑案告破,并不等于 NIST 曲线完美无瑕。

在生成 P-256 的序列中,第 876 个候选参数在数学上同样符合素数阶条件,但程序跳过了它,一路跑到了第 1842 个候选才落定。这究竟是由于二十八年前测试脚本的微小实现缺陷,还是机器并发运算导致的偶然跳步,已无可考证。它仍然留下了未完全解释的人工裁量痕迹。

更关键的是,工程界抛弃 NIST 曲线的理由,从不仅限于后门猜忌。

复杂老旧曲线难防侧信道泄漏,工业界转向简明架构
复杂老旧曲线难防侧信道泄漏,工业界转向简明架构

NIST 曲线在工程实现上极其苛刻,极易因分支预测或异常点处理不当诱发侧信道泄漏。以 Curve25519 为代表的新一代曲线,天生支持常数时间运算,全流程无缝可钻。

《吕氏春秋》有言:疑人之贼,视其行步,窃斧也;颜色,窃斧也。

斯诺登曝光 Dual_EC_DRBG 的真实后门在前,行业对权威机构失掉信任在后。大家猜忌了三十年的庞大阴谋,剥开到底层只是一行粗糙代码;但这种澄清无法让工业界开历史倒车。老系统可以松一口气,新系统该迁往现代曲线与抗量子算法,一步也不会慢下来。