孤本网
/ 0 阅读
0

Anthropic披露Claude半小时查明NIST椭圆曲线种子源自1997年lrand48生成器

一句话结论

Claude查明NIST五条椭圆曲线种子由1997年lrand48生成器基于Unix时间戳生成,排除了加薪口令假说。

关键要点

  • Claude在不到半小时内确认五条NIST椭圆曲线(P-192、P-224、P-256、P-384、P-521)的种子由lrand48伪随机数生成器产生,初始化时间集中在1997年5月至1998年4月。
  • Claude测试了34种伪随机数生成器与输出截取方式的组合,发现四组种子拆成五个32位整数后,20个整数的最高位全为0,指向lrand48的高31位输出特征。
  • 以P-256为例,初始化时刻为1997年8月16日UTC 01:52:34,取第1842组候选结果得到以C49D开头的种子,其余四组一一对应。
  • 密码学工程师Filippo Valsorda此前发布悬赏邀请寻找种子前身,学界长期基于Jerry Solinas回忆的加薪口令方向猜测,均无果。
  • 该结果已由悬赏发起人独立复核,确认五条曲线不存在潜在安全漏洞,但B-163种子及部分曲线基点生成方式尚未解释。

背景与事实

椭圆曲线数字签名算法(ECDSA)允许接收方验证数据是否由声称的签署者签发以及签署后是否被篡改。2000年,美国国家标准与技术研究院(NIST)将其纳入FIPS 186-2数字签名标准。使用ECDSA前需选定公共数学参数,包括P-192、P-224、P-256、P-384和P-521五条曲线,而争议聚焦于生成这些曲线参数的种子来源。

种子可理解为生成曲线参数的起始材料:拿到种子后,按标准规定的步骤运算即可验证参数一致性。然而二十多年来,这些种子的选取方式一直无人能说清。当年提供种子的Jerry Solinas记忆模糊,仅大致记得团队曾把一句可能是加薪的玩笑口令转换成数字,再叠加计数器。密码学工程师Filippo Valsorda据此发布悬赏,邀请业界寻找种子前身,但长期无果。

据Anthropic披露,Claude在不到半小时内解开了这一悬案。员工将问题交给内部研究模型时,并未告知加薪口令的线索。Claude自行猜测这些数字可能来自20世纪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开头的种子;其余四组也能一一对应。

影响分析

这是分析判断,非来源事实。对中文开发者与从业者而言,此次事件表明大型语言模型在密码学溯源类问题中具备实质性推理能力,能够结合历史代码库特征、数值模式识别与格基约简算法定位生成过程。这意味着在密码学参数审计、旧系统兼容性验证等场景中,AI可作为辅助工具快速排除错误假设,节省人工排查时间。但需要注意的是,该结果仅覆盖五条NIST曲线种子的来源,B-163种子及部分曲线基点的生成方式仍未解释,相关安全结论不能无条件推广至所有曲线族或参数集。

适用边界

该结论在以下条件下不成立或场景不适用:第一,结论仅适用于P-192、P-224、P-256、P-384、P-521五条曲线的种子溯源,不涉及B-163或其他非NIST标准曲线的种子生成方式;第二,Claude的分析未解释当年程序为何跳过部分符合条件的候选曲线,这些被跳过曲线的参数来源仍属未知;第三,该结果不改变ECDSA算法本身的安全性评估,仅澄清了种子选取的历史过程;第四,对于已部署依赖这些曲线的系统,无需因此次溯源结果更改密钥生成或签名流程。

孤本观察

这是编辑判断,基于本文事实。此次事件的戏剧性在于,学界二十年围绕“加薪口令”的猜测方向被Claude彻底推翻,而正确答案竟来自1997年一台电脑的时钟值,提示密码学参数审计中历史工程实践的非标准化痕迹可能被长期低估。

常见问题

Claude查明NIST椭圆曲线种子使用了什么具体的生成器和初始化时间?

种子由1997年的lrand48生成器生成,初始化时间集中在1997年5月至1998年4月。

如何确认种子源自lrand48而非其他生成器?

测试34种组合后,发现拆成的20个32位整数最高位全为0,符合lrand48输出高31位特征。

P-256曲线种子的具体初始化时刻和选取依据是什么?

初始化时刻为1997年8月16日UTC 01:52:34,取第1842组候选结果得到以C49D开头的种子。

此次溯源结果是否解释了所有NIST曲线的问题?

否,结论仅覆盖五条曲线种子来源,B-163种子及部分曲线基点生成方式尚未解释。

已部署依赖这些曲线的系统需要更改密钥生成流程吗?

无需更改,该结果仅澄清种子选取历史,不改变ECDSA算法安全性,也不影响现有系统流程。

来源:量子位