Claude用半小时破了26年悬案,答案是1997年的一个时间戳

源自55位全网作者

08:38

密码学界有桩陈年悬案,最近被AI翻出来结了。

2000年,NIST把P-256等一批椭圆曲线写进数字签名标准。这些曲线如今守着你的HTTPS网页、证书和网银,而它们出自NSA之手,每条曲线还附一串公开的160位"种子"。拿着种子能复算出曲线参数,但种子本身从哪来——官方一直没解释。知乎

这可不是小事:万一设计者暗中试了海量种子、专挑一条带隐藏弱点的曲线,外人光看公开材料永远查不出来。2013年Dual_EC_DRBG后门风波之后,大家对"请相信这组参数"格外过敏。2015年两位重量级密码学家专门写论文追问;2023年,工程师Valsorda干脆为"找到种子来源"设了悬赏。流传最广的猜测是:种子来自某个玩笑短语的哈希,比如"给Bob和Jerry加薪"。可惜关键证人、NSA数学家Solinas在2023年去世,案子眼看要变成永远的口头传说。知乎

Claude用半小时破了26年悬案,答案是1997年的一个时间戳

转折发生在今年10月16日。Anthropic发布研究文章《Claude reveals ECDSA curve origins》:一名员工把问题丢给内部研究版Claude,还特意没提"玩笑短语"那条线索,不到半小时,Claude给出了全新方向。它没有继续猜NSA用了哪句话,而是换了个问题:1997年的工程师,最可能拿什么软件生成一串"随机"字节?知乎IT之家

顺着这个思路,它翻查了34种老式伪随机数生成器,在种子里发现一个可疑指纹:不少32位字的最高位总是0。这恰恰是C语言老库里lrand48的招牌动作——它每次只吐出48位内部状态的高31位。接着Claude用LLL格基约减算法,从被截断的输出反推回内部状态,一路倒推到初始化那一刻:srand48,用一个Unix时间戳播种。知乎知乎

Claude用半小时破了26年悬案,答案是1997年的一个时间戳

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

Claude用半小时破了26年悬案,答案是1997年的一个时间戳

最让人安心的是,这结论不需要你"信AI"。悬赏发起人Valsorda用Go独立重写并复现了整个过程。有网友照配方重算P-256的种子,同样对上了。谁有电脑,谁就能自己验一遍。当然,"半小时"是Anthropic对这次内部任务的自述,别指望打开通用版Claude就能随手复现同款奇迹。知乎

两个澄清,给慌的人:

第一,这不是"破解加密"。找回来的是公开参数的出身,相当于查明了摇号机当年的开机记录,不碰任何人的私钥。你的HTTPS、证书都不用动。比特币走的是另一条曲线secp256k1,跟本案无关。知乎微博

第二,这反而是好消息。此前估算,想挑出一条带后门的曲线,设计者得有约70位的选择自由度;时间线复原后只剩约30位——"海量试种子埋弱点"这个最具体的剧本,基本被排除。悬了26年的后门疑云,大大消散。知乎

当然,案子没全结:P-256明明在第876个候选就出现过合格曲线,为什么偏偏跳到第1842个?几条曲线的基点怎么选出来的?B-163的种子还没找回。微博

Claude用半小时破了26年悬案,答案是1997年的一个时间戳

对写代码的人来说,这案子最有意思的可能不是密码学,而是Claude的破案路径。它没发明新数学,只是把两块现成知识——90年代C库的输出偏差、格基约减算法——拼到了一起。人类研究者被"这一定是某个神秘短语的哈希"的惯性困了二十多年,AI没有这个包袱:它压根不知道这题"应该难"。

这大概就是眼下AI辅助编程最值钱的地方:不是比你打字快,而是肯把一百个你没空试的方向,低成本地全试一遍。而护城河永远是同一条——谁能给出可复算的答案,谁才算破案。

内容由AI生成

精选参考来源

1. Claude 半小时破解 NSA 椭圆曲线种子谜题,意味着什么?

2. Claude 半小时解开困扰学界二十多年的 NIST 曲线密码学谜题,这意味着什么?

3. 【Claude 当起“数字考古学家”:不到 30 分钟揭开困扰密码学界 26 年的 NSA 参数来源之谜】Anthropic 公司昨日(10 月 16 日)发布博文,宣布其内部研究用 Claude 模型用不到 30 分钟,追溯出五条美国国家标准与技术研究院(NIST)标准椭圆曲线的“种子”(seed)来源,为一桩延续约 26 年的密码……

4. 我把 P-256 那串公开种子重新算了一遍,和旧标准上的数对上了。Anthropic 在 10 月 16 日的研究中报告,Claude 找到多个椭圆曲线种子的生成线索:旧 C 库里的 lrand48 随机数发生器,用时间初始化。这条新闻里,我最想看的是作者给出的配方,究竟能不能算回标准上的数字。先说清楚算的是什么。NIST 的历史标准早已公开了 P-256 的种子 s,它是生成曲线参数时用的一项输入。缺的是这串数最初怎么生成的说明。它不是某个用户藏着的签名私钥,公布它也不是在公布谁的密码。我只核对了这一组:用北京时间 1997 年 8 月 16 日 09:52:34 初始化发生器,每组取 20 字节,走到第 1842 组。得到的 40 位十六进制数,和 NIST 存档表中的 s 完全一致。配图里把结果分组排开,可以直接对照。这个计算没有用到任何人的签名或秘密,只是按配方重算一串早就公开的数。当然,拿着配方复算,和不知道配方、要自己找出来,是两种工作。我已经知道发生器、初始化时间和候选次数,照着走就行。这次核对没重现 Claude 寻找答案的过程,也不能拿脚本跑了多久,去证明模型有多快。研究找到的是公共参数的出处,作者没有报告签名被攻破。知道这串公共数字怎么生成,并没有顺带拿到用户私钥。旧发生器、时间初始化都很容易写成醒目的标题,但不能把发现的对象悄悄换成「破解了签名」。还有些来历没解释清楚,B-163 等仍是未解项,部分候选为什么被跳过,作者也不知道。所以这份配方能对上的数,和那些尚未回答的问题,都得留在原来的位置上。我喜欢这类能对数的发现。一串印在旧标准里的数字,沿着时间和程序往回找,真能算出同样的结果。那个第 1842 组候选,比一句「AI 又赢了」让我更想往下看。

0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章