Lobsters | 📄 原文链接 | 2026-10-18 收录

NIST 椭圆曲线种子之谜破解:只是把时间戳喂给了 drand48

来源:words.filippo.io — 2026-10-16

📋 概述

Filippo Valsorda 三年前设的悬赏被 Anthropic 的十人团队领走了:NIST 那五条椭圆曲线(P-192、P-224、P-256、P-384、P-521)的参数种子,既不是某句「咸湿英文句子」的 SHA-1 哈希,也不是什么藏了后门的神秘常数,而是 1997–98 年间用 POSIX 标准随机数生成器 drand48 产生的——把当时的 UNIX 时间戳喂给 srand48(),然后一次一个字节地取数,每凑满 20 字节就按 ANSI X9.62 去试生成曲线,不合法就丢弃重来。Filippo 用 Go 重新实现了算法并复核了结论,同时指出官方流程里还有两条从未写进文档的筛选条件:一是曲线阶 n 的位长大于基域 p 的位长就丢弃;二是有大约一半同样合法的种子最终没被发布,原因至今不明。这个结果直接排除了 2017 年 Bernstein 与 Lange 提出的「在选种子上留 70 比特自由度、定向挑弱曲线」的可能性,也让 NIST 曲线的可信度叙事正式补齐。团队把赏金捐给了运营 Let's Encrypt 的 ISRG,金额被翻三倍到 36,864 美元。

🔑 核心要点

💡 金句

即使 NSA 当年可以任意挑选 1997–98 年间的任何一个时间戳,并从前 16 个素数阶候选里任选(这已经宽松地覆盖了那些无法解释的丢弃),他们也只剩大约 30 比特的自由度。不足以定向瞄准假想中的一小类弱曲线,也不足以嵌入任何一种 NOBUS 后门。
← 返回 Lobsters 首页