LOADING STUFF...

Claude半小时翻出密码学界走了二十年的方向

AI快讯41分钟前发布 hackchen
0 0

![封面](https://www.ai-ku.cn/wp-content/uploads/2026/10/7057669b13ebec87.png)

AI解题潮往前翻了一笔二十多年的旧账。

据Anthropic披露,Claude用不到半小时,查明了NIST标准里五条椭圆曲线种子的生成方式。这串数字业界用了二十多年,却没人说得清当初是怎么选出来的。当事人Jerry Solinas自己也记不太清,只隐约提到一个可能是「给Bob和Jerry加薪」的玩笑口令。二十多年来,学界基本都往这个方向猜,密码学工程师Filippo Valsorda甚至发布了悬赏令,高调邀请大家寻找这五组种子的前身。

结果都是无疾而终,直到Claude出手。

按照Anthropic的说法,内部研究模型在接手这个问题时,并没有被告知那条加薪口令的线索。Claude于是自己往下猜,怀疑这些数字也许来自90年代C语言库里的伪随机数生成器,因为这类程序生成的数字看起来杂乱,背后却遵循固定规律,只要认出规律就有机会倒推。

随后Claude写了一个扫描程序,把公开种子的二进制数字一位位挪着检查,测试了34种生成器与输出截取方式的组合。关键发现在这里,四组种子分别拆成五个32位整数后,这20个整数的最高位居然全是0,嫌疑人指向lrand48随机数生成器。

lrand48内部保存一个48位整数,每次调用就把这个整数乘上固定常数,再加上另一个常数,最后只保留低48位作为下一轮状态,输出结果只取其中的高31位,放进32位里剩下的部分就用0来补。

找到机器之后,Claude再借助LLL格基约简算法恢复种子被截取的状态,接着只剩下最初是怎么启动的问题。负责初始化的srand48函数会把输入值放进48位状态的高32位,低16位固定设为0x330E,再沿着递推关系往回算,目标指向Unix时间戳,这些初始化输入集中落在1997年5月到1998年4月。

也就是说,把某个时刻的时间变成整数交给生成器,再按固定方式取出数字,就能重新得到标准里的种子。拿P-256举例,对应时刻是1997年8月16日UTC时间01:52:34,从这个时间出发运行生成器,取第1842组候选,得到的正是那串以C49D开头的种子。另外四组也都能一一对应上。

Anthropic同时表示,这份结果还没有补齐所有历史空白,当年的程序跳过了一些看起来也符合条件的候选曲线,原因仍不明确,B-163的种子和部分曲线基点的生成方式也尚未得到解释。不过新结果也意味着这些曲线并不存在任何潜在的安全漏洞。

这块其实挺有意思的,密码学标准里用了二十年的参数,背后居然藏着一台90年代电脑的时钟,学界集体往「加薪口令」方向走了这么多年,一个AI模型没拿到那条线索,自己摸到了完全不同的答案,还用了格基约简这种偏传统的数学工具去交叉验证。它没有推翻学界二十年的信任,而是给一个「没人说得清」的问题补上了出处。

这大概也是为什么,AI现在解的题已经不太像考试卷,更像是历史考古,去翻那些连当事人都记不清的技术旧账。

信息来源,量子位《Claude半小时解开密码学悬案,学界集体走偏20年》。

© 版权声明

相关文章