困扰密码圈 25 年的 NIST 曲线“种子”之谜,Anthropic 称 Claude 不到半小时解开:答案是“只是时间戳”
大家猜了这么多年的 NSA 秘密短语,原来只是 1997 年的一个 Unix 时间戳。
发生了什么
NIST P-256 等椭圆曲线的“种子”参数由 NSA 提供,一直没有来源说明,这是长期被怀疑藏有后门的原因之一。Anthropic 10 月 16 日发文称,一名员工让内部研究模型尝试推断种子的来源,Claude 不到半小时就发现:这些种子不是任何哈希的结果,而是 C 库的 lrand48 随机数生成器用 Unix 时间戳初始化后输出的(例如 P-256 对应 1997-08-16 01:52:34 UTC,是第 1842 个候选)。密码学家 Filippo Valsorda 用 Go 重新实现了算法,独立验证了结论;他组织的这项悬赏已于 10 月 15 日被 Anthropic 团队认领;团队选择把奖金捐给 Let’s Encrypt 的运营方 ISRG,按悬赏规则捐赠后金额翻三倍,为 36,864 美元。Anthropic 强调:这不是破解,也不是新漏洞,反而让“故意埋后门”的说法更难成立。仍有问题没解开:B-163 的种子、P-256 等曲线的基点来源,以及为什么有些可用的候选被跳过。
INSIGHTS
难得的“AI 真的做出发现”的正面新闻,而且结论可以独立复现;同时也给“AI 研究”提了个醒,真正的贡献在于提出了别人没试过的思路。
给构建者的启发
lrand48 是 48 位线性同余生成器,只输出高 31 位,所以输出中有很容易识别的“最高位为 0”特征。截断位数更多的种子用 LLL 格基约化恢复内部状态,再把状态往回推,得到 srand48 的初始值,也就是时间戳。博文附有可运行的复现代码(CC0)。
现实检验
复现代码公开;密码学家 Filippo Valsorda 独立实现并确认。“不到半小时”是 Anthropic 自己的说法。