密码学界有桩陈年悬案,最近被AI翻出来结了。
2000年,NIST把P-256等一批椭圆曲线写进数字签名标准。这些曲线如今守着你的HTTPS网页、证书和网银,而它们出自NSA之手,每条曲线还附一串公开的160位"种子"。拿着种子能复算出曲线参数,但种子本身从哪来——官方一直没解释。知乎
这可不是小事:万一设计者暗中试了海量种子、专挑一条带隐藏弱点的曲线,外人光看公开材料永远查不出来。2013年Dual_EC_DRBG后门风波之后,大家对"请相信这组参数"格外过敏。2015年两位重量级密码学家专门写论文追问;2023年,工程师Valsorda干脆为"找到种子来源"设了悬赏。流传最广的猜测是:种子来自某个玩笑短语的哈希,比如"给Bob和Jerry加薪"。可惜关键证人、NSA数学家Solinas在2023年去世,案子眼看要变成永远的口头传说。知乎

转折发生在今年10月16日。Anthropic发布研究文章《Claude reveals ECDSA curve origins》:一名员工把问题丢给内部研究版Claude,还特意没提"玩笑短语"那条线索,不到半小时,Claude给出了全新方向。它没有继续猜NSA用了哪句话,而是换了个问题:1997年的工程师,最可能拿什么软件生成一串"随机"字节?知乎IT之家
顺着这个思路,它翻查了34种老式伪随机数生成器,在种子里发现一个可疑指纹:不少32位字的最高位总是0。这恰恰是C语言老库里lrand48的招牌动作——它每次只吐出48位内部状态的高31位。接着Claude用LLL格基约减算法,从被截断的输出反推回内部状态,一路倒推到初始化那一刻:srand48,用一个Unix时间戳播种。知乎知乎

以P-256为例:拿1997年8月16日的一个时间戳初始化,跑到第1842个候选,得到的160位种子与标准里印着的那串逐位一致。不是"长得像",是完全吻合。知乎微博

最让人安心的是,这结论不需要你"信AI"。悬赏发起人Valsorda用Go独立重写并复现了整个过程。有网友照配方重算P-256的种子,同样对上了。谁有电脑,谁就能自己验一遍。当然,"半小时"是Anthropic对这次内部任务的自述,别指望打开通用版Claude就能随手复现同款奇迹。知乎
两个澄清,给慌的人:
第一,这不是"破解加密"。找回来的是公开参数的出身,相当于查明了摇号机当年的开机记录,不碰任何人的私钥。你的HTTPS、证书都不用动。比特币走的是另一条曲线secp256k1,跟本案无关。知乎微博
第二,这反而是好消息。此前估算,想挑出一条带后门的曲线,设计者得有约70位的选择自由度;时间线复原后只剩约30位——"海量试种子埋弱点"这个最具体的剧本,基本被排除。悬了26年的后门疑云,大大消散。知乎
当然,案子没全结:P-256明明在第876个候选就出现过合格曲线,为什么偏偏跳到第1842个?几条曲线的基点怎么选出来的?B-163的种子还没找回。微博

对写代码的人来说,这案子最有意思的可能不是密码学,而是Claude的破案路径。它没发明新数学,只是把两块现成知识——90年代C库的输出偏差、格基约减算法——拼到了一起。人类研究者被"这一定是某个神秘短语的哈希"的惯性困了二十多年,AI没有这个包袱:它压根不知道这题"应该难"。
这大概就是眼下AI辅助编程最值钱的地方:不是比你打字快,而是肯把一百个你没空试的方向,低成本地全试一遍。而护城河永远是同一条——谁能给出可复算的答案,谁才算破案。