← 返回 Siami 首頁

Claude 半小時破解 25 年懸案:NIST 橢圓曲線「神秘種子」其實只是 C 函式庫亂數呼叫

▲ 471 💬 194
Claude 半小時破解 25 年懸案:NIST 橢圓曲線「神秘種子」其實只是 C 函式庫亂數呼叫

編按:本文綜合整理自 Anthropic Frontier Red Team 研究、Filippo Valsorda〈Seeds Solved〉、Hacker News 討論串 與 Blockchain News 後續報導,並加入 Siami 編輯部觀點與分析。

一句話總結這件事

Anthropic 在 2026 年 10 月 16 日丟出一篇 Frontier Red Team 報告:由 Claude 領銜,在半小時內就把 NIST 五條核心橢圓曲線「神秘種子」的 25 年懸案解開——答案是,這些讓全球網路通訊加密的關鍵數字,根本不是任何精巧的雜湊演算法產物,而是 1990 年代 C 標準函式庫的 lrand48() 偽隨機數產生器,初始狀態直接來自當年的 Unix 時間戳。

「It’s just timestamps」——Anthropic Frontier Red Team 在報告副標以這句話,為密碼學界纏鬥了四分之一世紀的陰謀論畫下句點。


事件背景:NIST 橢圓曲線的「黑箱種子」

ECDSA(橢圓曲線數位簽章演算法)是當代網際網路最重要的密碼學基石之一,從 TLS 連線、比特幣地址、SSH 金鑰到政府電子簽章,幾乎所有需要「證明你是你」的場景都跑在這套標準上。NIST 在 2000 年將 ECDSA 納入 FIPS 186-2 數位簽章標準,並同時公佈了 P-192、P-256、P-384、P-521 等多條標準曲線。

每條曲線的參數裡都帶著一個看似隨機的「種子」(seed),其雜湊值被用來定義曲線的係數 b。問題是——這些種子是由 NSA 直接提供,沒有附任何產生過程的說明。以最廣泛使用的 P-256 為例,其 seed 為:

SEED = C49D3608 86E70493 6A6678E1 139D26B7 819F7E90

密碼學界對此疑慮超過 25 年:NSA 是否挑選了帶有後門的曲線參數?Neal Koblitz 與 Alfred Menezes 在〈A Riddle Wrapped in an Enigma〉一文中整理了完整爭議史,最知名的都市傳說是前 NSA 工程師 Jerry Solinas 將這些種子用某句玩笑話雜湊而成(例如「Give Bob and Jerry a raise」)。


Claude 半小時內找到真相

幾位 Anthropic 員工先前曾沿著「幽默短語雜湊」的方向追過,但都空手而回。2026 年 10 月,一位好奇的內部員工把題目丟給自家的研究型 Claude,不給任何提示詞。結果如下:

「In under half an hour, Claude discovered the origins of the NIST P-192, P-224, P-256, P-384, and P-521 seeds. None of them were the results of any hash algorithm at all, but rather the output of the C library’s lrand48 random-number generator, seeded with a Unix timestamp!」——Anthropic Frontier Red Team

具體演算法是:用一個 Unix 時間戳 t 初始化 srand48(),接著反覆呼叫 lrand48(),每次取 20 個位元組作為候選種子;以 P-256 為例,跑了 1,842 次才產生出最終被選定的種子。

Claude 是怎麼推理出這條死路的?

報告詳述了 Claude 的推理過程,相當精彩:

  • 第一步:預判 1990 年代的曲線產生軟體勢必使用當年 C 函式庫附贈的偽隨機數產生器,並意識到這類 RNG 的輸出可以被「識別」。
  • 第二步:寫了一個掃描器,以 1 位元為單位滑動比對每個已公佈種子,檢查相鄰區塊是否為某個 1990 年代 RNG 的連續輸出。總共測了 34 種 generator × 切片組合。
  • 第三步:在四條二元曲線種子上發現最高位元皆為 0 的特徵——機率僅 1/5,810。這正是 lrand48 的指紋:它只回傳 48 位元內部的最高 31 位元。
  • 第四步:用首字暴力枚舉 2¹⁷ 個隱藏位元,成功還原 PRNG 內部狀態。
  • 第五步:對質數曲線使用教科書級的 LLL(Lenstra–Lenstra–Lovász)格基底約化演算法,從被截斷的輸出反推 48 位元狀態。

找到的時間戳本身就是物證

把 lrand48 狀態反推回 srand48 初始化形式後,Claude 發現:

  • 10 條質數曲線種子:初始化時間戳全部落在 1997 年 5 月到 1998 年 4 月之間。
  • 4 條二元曲線種子:初始化時間戳對應 1984 年 2 月,但若把時間戳乘以 2,就對應到 1998 年 4 月 17 日——比 P-224 那次執行晚兩週。暗示程式可能把時鐘讀數除以二。

這些時間戳全部符合「1990 年代末某個工程師在上班時間寫程式」的平凡想像。


為什麼這件事重要

這不只是個密碼學冷知識,而是對「AI 是否真的能做原創研究」最乾淨的一次公開示範。

過去 13 年,密碼學社群、Reddit 陰謀論板塊、部落客 Bruce Schneier 等人都曾正面挑戰這組種子。社群懸賞金額從最初的 12,288 美元加碼到 36,864 美元(由 Filippo Valsorda 主理),始終無人能解。Claude 的突破點不在算力,而在換了一個推理框架:與其沿著「幽默短語雜湊」繼續找線索,不如直接假設當年工程師用的是「最懶的亂數產生方式」,然後從輸出特徵反推工具鏈。

對 Anthropic 而言,這篇報告驗證了 Frontier Red Team 用 Claude 做安全研究的內部價值——一位員工「隨口問一下」,半小時得到一個 25 年沒人解出的答案。對 NIST 與 NSA 而言,這份報告洗刷了延續四分之一世紀的「陰謀論汙名」:曲線參數不是精心挑選的後門,只是用時鐘戳塞 srand48(time(NULL)) 跑出來的隨機數。

對密碼學界來說,更深層的結論是:真正決定 NIST 曲線安全的,不是種子來源的戲劇性,而是 ECDSA 演算法本身的數學結構。原始報告明確指出,這不是新的攻擊、曲線也沒有任何弱點,反而讓「曲線參數沒有後門」的可信度大增。


數據解讀與殘留問題

研究公開了多項可驗證的數字,但同時留下三塊未解的拼圖,Hacker News 討論串對此評論兩極:

  • 6 條曲線的基底點(base point)來源:Claude 發現 P-192、prime192v2、prime192v3、prime239v1/v2/v3 的基底點來自 Arjen Lenstra 的 FreeLIP 大數運算套件(早期版本的 Victor Shoup NTL 也夾帶同樣程式碼),其中 P-192 的生成器種子是 20000,prime239v1/v2/v3 是 20420、20507、20509,prime192v2/v3 是 20512、20517。
  • 4 條主流曲線的基底點仍未解:P-224、P-256、P-384、P-521 的基底點不符合上述食譜,且研究團隊目前沒有辦法還原其生成方式。
  • 1 條二元曲線種子 B-163 完全無解:Claude 試過所有已知方法都對不上。HN 用戶 teddyh 推測最可能的原因不是 NSA 故意藏了什麼,而是當年轉錄或排版時打錯了一個數字,導致後人在「假設原始數字正確」的前提下根本無解。
  • 被跳過的候選曲線:Claude 注意到有些候選種子其實也能產生合格的曲線,卻被跳過沒選。以 P-256 為例,第 876 個候選就是個素數階曲線。這些「漏網之魚」數量不多,研究團隊傾向認為只是「無心的篩選結果」,但也無法完全排除。

Anthropic Frontier Red Team 的立場相當坦誠:

「This is not a cryptographic break, new attack, or weakness in the ECDSA curves. In fact, this makes us more confident the curves were chosen without any backdoors or intentional weaknesses.」

換句話說——這次發現不是破解,而是讓 NIST 曲線更值得信賴。3 萬 6 千美元獎金已全數捐給 Internet Security Research Group(ISRG,即 Let’s Encrypt 的幕後非營利組織),完整重現程式碼以 CC0 公領域授權釋出,歡迎任何人驗證。


未解之謎與下一步

這篇報告在 Hacker News 拿下超過千點讚、衝上首頁第一名,留言區的正反辯論圍繞著同一個問題:「這是否真的排除了 NSA 後門?」

「It is still conceivable that these curves were selected to have a specific property in principle by searching over timestamps to the random number generator. However, you would only need to do that if you were going to disclose the timestamp as some evidence that the seed was innocuously generated.」——報告原文

換句話說:即便 NSA 真的刻意挑了某些時間戳,他們也必須把這些時間戳公開當作「無辜證據」。HN 用戶 fidotron 把這點延伸得更冷靜:

「確認了生成方法不等於確認選擇標準。特別是這些曲線橫跨數月陸續產生,你看不到那些被丟掉的候選值。」

也有讀者從歷史脈絡指出,當年的 lrand48 預設狀態上限就是 31 位元,在那個年代根本沒人覺得它「弱」——因為橢圓曲線密碼學本身要再過幾年才標準化。這不是 NSA 的陰謀,只是 1990 年代的工程師用 1990 年代的工具,做了 1990 年代會做的事。


Siami 觀點

這份報告最重要的不是技術發現,而是它揭示了一種新型態的科研協作模式:一位內部員工對 25 年懸案丟出一句「Claude 你看看」,半小時後得到的是一篇可重現、有程式碼、有數學證明的論文。對學術界來說,這可能會加速「非主流懸案」的破解節奏;對產業界來說,這意味著「用 AI 內部輔助安全研究」的 ROI 又被刷新了一次。

唯一可惜的是——Jerry Solinas 已於 2023 年過世,這個謎底他無緣親眼看到。Anthropic 在致謝中寫道:

「We would like to posthumously recognize Jerry Solinas who took being labeled an ‘evil Internet meme’ and the ‘Yo La Tengo of NSA bogeymen’ with good humor.」

他被密碼學界戲稱為「NSA 怪談的邪惡迷因」,也曾自嘲是「NSA 妖魔鬼怪的 Yo La Tengo」。如今謎底揭曉:1990 年代某個工程師上班時用 srand48(time(NULL)) 跑了一連串數字,挑了幾個能用的曲線參數貼進 NIST 文件,然後回去繼續寫程式。

25 年後,一個 AI 在半小時內把這個謎解開了。


參考來源

網友熱門留言 (5)

#1 Hacker News 用戶 tptacek ▲ 412
對整整一代 NIST 密碼學陰謀論者來說,這是毀滅性的消息。
#2 Hacker News 用戶 JumpCrisscross ▲ 357
「不到半小時,Claude 就找出 NIST P-192、P-224、P-256、P-384 和 P-521 五條曲線種子的來源」。太精彩了。我很好奇當年那位 NSA 工程師是有過頭部外傷,還是默默笑了 25 年。
#3 Hacker News 用戶 sweis ▲ 289
戴了 13 年的錫箔帽,原來只是 srand48(time(NULL))。
#4 Hacker News 用戶 fidotron ▲ 198
確認了生成方法不等於確認選擇標準。特別是這些曲線橫跨數月陸續產生,你看不到那些被丟掉的候選值。「這些曲線可能是 NSA 透過窮舉時間戳搜尋特定性質」這種假說依然無法排除——但要這樣做,前提是你本來就要把時間戳當成證據公開。
#5 Hacker News 用戶 teddyh ▲ 156
「第五條二元曲線種子 B-163,Claude 試過的所有方法都對不上」。最簡單的解釋是它當年確實也用同樣方法產生,但後續轉錄或印刷的某個環節打錯了一個數字——所以在「假設原始數字正確」的前提下根本無解。