一串没人说得清的 160 位数
P-256 是今天 TLS 等协议里最常用的椭圆曲线之一。它和同批 NIST 曲线一样,由一段公开的 160 位「种子」经哈希推出参数,但种子本身从哪来,标准里没写。坊间流传的说法是对某句玩笑话做了哈希,生成它们的密码学家 Jerry Solinas 已于 2023 年去世。同年,Filippo Valsorda 为找出种子来历设了悬赏。
Claude 怎么找到的
Anthropic 前沿红队 10 月 16 日发文说,一名员工只问内部研究模型能否弄清种子怎么来的,没有给「哈希某句话」这条线索。模型注意到部分种子的最高位全是 0,猜测是九十年代常见的伪随机数生成器,写了扫描程序比对输出特征,锁定 C 库的 48 位线性同余生成器,再用 LLL 格基约简从截断输出里恢复内部状态,倒推到 srand48(时间戳) 的初始状态。按 Anthropic 的说法,五条素数域曲线的来源不到半小时就找到了。
P-256 来自 1997 年 8 月 16 日 01:52:34 开始的一次运行,是第 1842 个 20 字节候选;五条曲线的时间戳都落在 1997 年 5 月到 1998 年 4 月之间。团队还解释了 B-233 到 B-571 四条二元域曲线和 ANSI X9.62 几条示例曲线的种子。
复核与悬而未决的部分
Valsorda 10 月 16 日确认悬赏已在 10 月 15 日被领取,他用 Go 重写了生成流程核对结果。他的文章把生成器写作同属 POSIX 48 位家族的 drand48,Anthropic 写的是 lrand48。他还指出,ANSI X9.62 公开的条件不足以复现候选筛选,另有两条未成文的规则,其中一条至今没找到解释。Anthropic 也列出了未解部分:P-256 的第 876 个候选同样能得到合格曲线却被跳过,B-163 的种子和 P-224 至 P-521 的基点仍然无解。
对 P-256 用户意味着什么
Anthropic 明确说这不是密码学破解,也不是 ECDSA 的新漏洞。Valsorda 的估算是,按这种生成方式,当年即便有意挑曲线,也最多只有约 30 位的自由度,远低于 Bernstein 与 Lange 2017 年描述的那类操纵所需的 70 位。现有系统不需要因此更换曲线。悬赏原为 12,288 美元,获奖团队选择捐给 ISRG,按规则翻三倍到 36,864 美元。
via: Anthropic 前沿红队:Claude reveals ECDSA curve origins、Filippo Valsorda:The NIST Elliptic Curves Seeds Bounty Has Been Claimed