破解 25 年 NSA 加密疑云:P-256 曲线种子不是军方后门,只是时钟随机数
全世界的浏览器和手机芯片里,都埋着一个谁也说不清来源的神秘数字。 它叫 P-256 曲线的种子。 长度 160 位,由一串十六进制字符组成。 每天全球几百亿次网页加密访问,底层都在靠它做数字签名。 但这串数字从哪里来的? 2000 年,美国国家安全局把它塞进标准文档的时候,连半句解释都没给。 密码学界整整紧张了 25 年。 大家最担心的事情只有一个: 军方是不是在数字里动了手脚,悄悄埋下了后门? 后来,当年参与制定的工程师 Jerry Solinas 在 2015 年出来打圆场。 他说大家别瞎猜了,没搞什么阴谋。 当时写代码的同事 Bob Reiter 随手拿了一句办公室玩笑话,比如给鲍勃和杰里涨工资。 然后拿哈希算法算出了这串数字,只是具体的底稿找不到了。 这番话把全世界的密码学家带进了一条长达十年的死胡同。 无数人用超级计算机去穷举英文笑话、流行语录、人名组合,试图撞出同样的哈希值。 密码学家 Filippo Valsorda 甚至在网上发起了公开悬赏。 奖金一路累积到 36,864 美元,谁能还原出这个种子的来源,钱就归谁。 整整 25 年,谁也没撞出来。 直到最近,Anthropic 的研究员决定让内部的 Claude 模型试一试。 他们给了 Claude 这串原始数字,同时交代了一句: 忘掉那个办公室笑话的传闻,你自己从头看。 Claude 花了多长时间? 不到半小时。 它不仅找到了来源,而且彻底把答案翻了个底朝天。 根本没有英文笑话,也根本没用哈希算法。 这串数字,是当年 NSA 工程师直接用 C 语言自带的随机数函数,拿系统时间戳随手跑出来的。 Claude 是怎么抓到破绽的? 它没去猜文字,它把自己当成一个 1997 年的程序员。 在那个年代写 C 语言代码,想图省事生成一串伪随机数,最顺手的方法是什么? 调用系统库自带的 lrand48。 这是一种很老、很弱的线性同余随机数生成器。 它的数学结构相当原始,每一步只是简单的乘法和加法取模。 Claude 写了一个检测程序,把种子的二进制切片拿去对照 90 年代常见算法的特征。 结果一眼扫过去,破绽就露出来了。 把 160 位的种子切成 32 位的块,好几个种子的最高位全是零。 如果真是均匀随机的数字,发生这种事的概率低于五千分之一。 为什么最高位会是零? 因为老版 C 语言的 lrand48 生成器,内部虽然是 48 位状态,吐出来的数字却只有 31 位。 它的第 32 位永远锁死为零。 这就等于在数字表面盖了一个带年代的防伪钢印。 顺着这个线索往下查,麻烦接踵而至。 当时生成这些曲线的时候,工程师只截取了随机数的一部分位,剩下的位全被扔掉了。 缺少了一大半信息,怎么反推当时的内部状态? 在密码学里,这是一个经典的格密码问题。 Claude 直接调出了数学界著名的 LLL 格基规约算法。 它通过已知的那些碎片,把高维格空间里的向量基底一步步缩小。 仅仅用了几分钟,就精确还原出了那个 48 位的内部状态。 既然内部状态拿到手了,接下来就好办了。 线性同余生成器往前算很简单,倒着往回倒推同样很容易。 Claude 把状态一步一步往回倒退,寻找这个随机数发生器刚启动时的初始状态。 在 C 语言的 srand48 规范里,初始状态的后 16 位有一个固定的常数标记。 当 Claude 倒退到这个标记的时候,前面那个 32 位的输入种子跳了出来。 那根本不是什么秘密短语。 那是一个 Unix 时间戳。 它精确记录了这台电脑当时的时钟。 P-256 曲线的诞生时刻,被定格在 1997 年 8 月 16 日凌晨 1 点 52 分 34 秒。 工程师敲下回车,程序开始运行。 当跑到第 1,842 次迭代时,生成出来的数字正好满足标准要求。 工程师把它复制出来,直接交了差。 整整五套标准曲线,每一个都严丝合缝地对应上了 1997 年到 1998 年的真实工作时间。 在 Anthropic 公布的内部思考日志里,最戏剧性的一幕出现了。 当算出来的结果和官方数字一个字符不差地对上时,Claude 突然开始怀疑自己。 它在后台逻辑里写道: 等等,我是不是处在某种模拟测试环境里? 这个答案太简单了,如果是真的,为什么全世界顶尖专家找了 25 年都没发现? 随后它自己做了一遍概率验算: 从一个 32 位的时间戳和一个几千的小计数器,撞出 160 位的完全匹配,偶合概率接近于零。 这是真实的历史。 折腾了四分之一世纪的悬案,最后被证明不是精妙绝伦的数学陷阱,只是一个工程师不想费脑子。 这下全网的密码学团队反而松了一口气。 为什么? 如果军方想在算法里预埋后门,必须拥有巨大的搜索空间,反复挑选出那条有致命缺陷的特殊曲线。 但现在证据摆在眼前,工程师只是随手读了电脑的时间,跑了个基础循环,挑了第一个能用的参数。 他的搜索自由度只有区区 32 位的时间戳。 在这么狭窄的空间里,根本不可能精心设计出一套后门。 困扰了整个互联网 25 年的阴谋论,到这一刻彻底烟消云散。 那笔 36,864 美元的悬赏金,也被转交给了支持全网免费加密证书的非营利机构。 折腾了 25 年的技术谜案,背后没有深不可测的算计。 只是当年那个写代码的人,赶着下班而已。
引用 / CITATIONS
No citations exported.
同领域解读 / SOFTWARE & ENGINEERING
导出 / EXPORT
订阅 · SUBSCRIBE
每周一封独立、不受审查的科技与 AI 深度评论,周一发出。带出处,可核查。