Claude 揭示 ECDSA 曲线的起源
“这只是时间戳”: 作为最流行的密码标准之一的起源的几十年之谜终于得到了解释。我们追踪了这个长期悬而未决的问题以解决关于 ECDSA 的担忧,ECDSA 是我们最广泛使用的加密标准之一。读者应该将此视为一个有趣的结尾章节,也是多年猜测的终结。无须采取任何行动或不同方式处理。大多数研究人员已经信任这些曲线。请欣赏。ECDSA 是最广泛使用的椭圆曲线密码学标准。它于 2000 年被 NIST 采纳,作为 FIPS 186-2 数字签名标准的一部分,该标准列出了不同大小和安全级别的标准椭圆曲线。针对素数和二进制域的曲线,规范发布了一项 "种子" 参数,其哈希值用于定义曲线的系数 b。这些种子的来源一直是一个长期悬而未决的问题,因为它们是在未解释或证明的情况下由 NSA 提供。例如,NIST P-256 曲线的种子为 SEED = C49D3608 86E70493 6A6678E1 139D26B7 819F7E90,但没有任何来自何处的信息。Neal Koblitz 和 Alfred Menezes 写了一篇关于这一争论的精彩总结,题为“包装在谜团中的谜”,讨论了种子值的历史和关注点。这个谜团导致了对种子起源的业余调查,并为任何能找到它们的人悬赏。最好的故事是,长期在 NSA 工作的 Jerry Solinas 使用一个幽默的密码短语的哈希生成了这些种子:"我相信这是一个计数器而不是多个哈希,但我不知道细节。消息的内容类似于‘给 Bob 和 Jerry 加薪’或‘Bob 和 Jerry 统治’或类似的东西。实际上写这段代码的是 Bob Reiter,他也不记得细节。我们也未能找到那么久之前的档案。如果他们存在,毫无疑问它们就保存在靠近约柜的硬盘上。(Jerry Solinas, 2015) 不幸的是,Jerry 在 2023 年去世,当时的其他同事也没有回应,这让这些种子最初是如何衍生的问题仍然悬而未决。Claude 找到了种子 一些 Anthropic 员工在跟踪这个幽默短语的线索时未能找到种子,结果证明是错误的。在 2026 年 10 月,一位好奇的 Anthropic 员工询问内部研究模型是否可以在不指向线索的情况下弄清楚这些种子的生成方式。在不到半小时的时间里,Claude 发现了 NIST P-192、P-224、P-256、P-384 和 P-521 种子的起源。它们都不是任何哈希算法的结果,而是使用 Unix 时间戳作为种子的 C 库 lrand48 随机数生成器的输出!所使用的算法将从使用 Unix 时间戳 (t) 初始化的随机数生成器 (RNG) 中采样字节,进行一定次数的迭代 (n)。每次迭代会抽取 20 个字节作为候选种子。因此,前 20 个字节是候选 1,接下来的 20 个字节是候选 2,以此类推。例如,P-256 需要 1842 次迭代才能输出标准化的种子。 这意味着什么 这并不是一个密码学的破解、新攻击或 ECDSA 曲线的弱点。事实上,这使我们更加确信这些曲线是在没有任何后门或故意弱点的情况下选择的。多年来,人们一直对 NIST 曲线参数的来源感到怀疑。它们被提交给 NIST 时并没有提到选择它们的方式,这让人们怀疑它们是否可能是故意选择以具有后门。这些发现大大降低了这一可能性。种子的生成方式非常简单:从时钟初始化的常见伪随机数生成器,任何人现在都可以重复。这大大减少了颠覆的空间,我们可以确信这些参数是安全的。 如何发现的 针对这个短语的搜索,基于传闻,结果都是空的。Claude 尝试了一种不同的角度:预测生成曲线的软件是如何工作的。Claude 推测这个软件使用的是1990年代随 C 库一起发布的伪随机数生成器(PRNG)。这些旧的 PRNG 太弱,以至于它们的输出可以被识别。识别这些输出将揭示使用了哪个 PRNG,并可能允许恢复其初始化状态。Claude 编写了一个扫描器,一次滑过每个发布的种子,逐位测试相邻的块是否是1990年代老旧生成器的连续输出。扫描覆盖了生成器和输出切片的34种组合。此时,Claude 注意到某些种子的高位位模式:它们都是零。作为五个 32 位字的表示,十个种子中的四个在所有 20 个字中的高位都为 0。这只是偶然发生的概率为 1/5810。这是线性同余生成器 lrand48 的一个特征,它只返回 48 位中最高的 31 位。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡