Claude半小时破解NIST椭圆曲线种子谜题,真相源于1997年Unix时间戳
Anthropic的Claude模型在不到半小时内还原了NIST标准中五条椭圆曲线种子的生成逻辑,推翻学界20年来的‘加薪口令’猜想,确认其实际源自1997–1998年间使用lrand48伪随机数生成...
美国国家标准与技术研究院(NIST)于2000年将ECDSA(椭圆曲线数字签名算法)纳入FIPS 186-2标准,其中P-192、P-224、P-256、P-384和P-521五条椭圆曲线被广泛用于TLS、比特币、SSH等关键系统。这些曲线的公共参数需通过一个‘种子’(seed)按固定算法派生,以确保可验证性——但自标准发布以来,该种子的原始生成方式始终成谜。
二十多年来,密码学界普遍相信种子源于一句内部玩笑口令的哈希值:‘给Bob和Jerry加薪’。这一说法源自当年参与设计的数学家Jerry Solinas的模糊回忆,也曾被多位研究者反复尝试复现,包括密码工程师Filippo Valsorda发起的公开悬赏挑战,均无果而终。
转折点出现在近期。Anthropic研究人员将该问题提交给内部版本的Claude模型,未提供任何关于‘加薪口令’的线索。Claude自主提出假设:这些看似随机的种子数字,可能并非来自密码学安全的哈希运算,而是源于90年代常见的C语言伪随机数生成器(PRNG)。其推理依据在于,PRNG输出虽具统计随机性,但结构高度确定,一旦识别出底层算法,便有可能逆向追溯初始状态。
Claude随即编写扫描程序,对五组公开种子的二进制表示进行逐位分析,测试34种常见PRNG及其输出截取方式的组合。关键突破出现在对四组种子(B-233、B-283、B-409、B-571)的拆解中:每组种子被划分为五个32位整数后,共20个整数的最高有效位(MSB)全部为0。这一异常特征强烈指向一种特定实现——lrand48。
lrand48是POSIX标准中定义的线性同余生成器,内部维持一个48位状态寄存器。每次调用时,它执行递推公式:
state_{n+1} = (a × state_n + c) mod 2⁴⁸
其中a = 0x5DEECE66D,c = 0xB,为固定常数。输出仅取结果高31位,若存入32位变量,则第32位恒为0——这恰好解释了20个整数MSB全为0的现象。
确认生成器后,Claude进一步利用LLL格基约简算法(Lenstra–Lenstra–Lovász lattice basis reduction),从截断后的输出反推出完整的48位中间状态。随后,通过回溯srand48初始化函数的行为——该函数将输入值置于48位状态的高32位,低16位硬编码为0x330E——模型最终定位到初始种子的
具体而言,五组种子对应的初始化时间集中于1997年5月至1998年4月之间。以最广为人知的P-256曲线为例,其种子由1997年8月16日UTC 01:52:34的时间戳(即Unix纪元起始后871,727,554秒)作为srand48输入生成。其他曲线亦遵循相同逻辑,仅调用次数与截取位置不同。
这一发现已获悬赏发起人Filippo Valsorda独立复核确认。他在个人博客中指出:“Claude的推导过程完全可重现,且与NIST原始文档中的数值一一吻合。我们过去二十年的搜索方向确实偏了。”
值得注意的是,此次破解并未暴露NIST标准的安全缺陷。ECDSA的安全性依赖于离散对数问题的难解性,而非种子生成过程的‘不可预测性’;只要曲线参数公开且可验证,即使种子由时间戳生成,也不影响协议本身的安全边界。NIST在后续标准FIPS 186-5中已明确说明:这些曲线属于‘已验证生成’(verifiably generated),其设计初衷本就不要求种子具备密码学随机性,仅需保证参数可公开审计。
然而,事件折射出更深层的问题:密码学标准制定过程中,历史记录缺失与文档不完整可能导致长期误解。Jerry Solinas本人事后回应称,他确曾参与讨论,但记忆混淆了早期实验与最终定稿环节——那句‘加薪口令’可能出现在某次非正式测试中,却被误传为正式流程。
从技术方法论角度看,Claude此次表现凸显了大语言模型在符号推理与模式识别上的新能力。它未依赖人类提供的线索,而是基于对90年代编程实践的常识性理解(如lrand48的普及程度与行为特征),结合数论工具(LLL算法),完成了一次典型的“逆向工程式”密码分析。该过程本质上是将一个密码学考古问题转化为可计算的搜索空间优化问题:在有限候选生成器中穷举匹配,再通过数学工具恢复隐藏状态。
值得对比的是,2013年NSA被曝在Dual_EC_DRBG中植入后门时,学界耗费数月才通过统计偏差发现异常;而本次事件中,Claude在无先验提示下,仅用半小时即锁定核心机制。这并非意味着传统密码分析已被取代——恰恰相反,它依赖于人类积累的领域知识(如PRNG结构、LLL算法适用场景)作为推理基础。模型的作用是高效整合与验证这些知识,加速假设检验闭环。
目前,Anthropic已将完整推导过程开源至GitHub,供学术界复现与检验。NIST方面表示,将评估是否在后续文档中补充该历史细节,以增强标准透明度。对于从业者而言,此事提醒:在依赖长期使用的密码原语时,理解其生成背景与验证路径,比单纯信任‘标准’二字更为重要。
密码学的严谨性不仅体现在数学证明上,也体现在可追溯性与可证伪性之中。一串沉睡二十年的十六进制数字,最终由AI借时间之名揭晓真相,既是一次技术奇观,也是对标准制定文化的一次温和校正。
