Claude 30 分鐘解開 25 年密碼學懸案:NIST ECDSA 曲線種子不是神秘句子,是 lrand48 加時間戳——$36,864 賞金全捐 Let's Encrypt 母機構(2026 全解析)

NIST 的 P-256/P-384 曲線種子來源懸宕 25 年,因為它們是 NSA 在 1997 年提供的、卻沒有任何說明,長年被懷疑可能藏有只有 NSA 知道的後門。2026 年 10 月,Anthropic 內部一個 Claude 研究模型在不到 30 分鐘內解開:那些 seed 根本不是什麼幽默句子的 SHA-1 雜湊,而是 1990 年代 C 函式庫 lrand48 亂數產生器配上 Unix 時間戳的輸出。本文完整整理技術手法(截斷 LCG 狀態還原與 LLL 晶格約簡)、時間軸、賞金與捐贈始末、Anthropic 官方解讀,以及密碼學社群仍保留的三個未解問題。

  • Dennis
  • 10 分鐘閱讀
Claude 30 分鐘解開 25 年密碼學懸案:NIST ECDSA 曲線種子不是神秘句子,是 lrand48 加時間戳——$36,864 賞金全捐 Let's Encrypt 母機構(2026 全解析)

一句話結論:NIST 那五組被懷疑藏後門 25 年的 ECDSA 曲線種子,其實只是 1997 年一位工程師用 C 語言 lrand48() 亂數產生器加上當時的系統時間戳隨手跑出來的結果——Anthropic 的一個內部 Claude 研究模型在不到 30 分鐘內找出這件事,並在 2026 年 10 月 15 日領走 Filippo Valsorda 懸賞三年的 36,864 美元,全數捐給 Let’s Encrypt 的母機構 ISRG。

這則新聞的標題很容易被寫成「AI 破解密碼學」,但 Anthropic 自己講得很清楚:這不是密碼破解、不是新攻擊、也不代表 NIST 曲線有弱點。它解的是一樁「來源不明的參數到底怎麼來的」歷史懸案——而這樁懸案過去 25 年一直是密碼學圈對美國國安局(NSA)不信任的具體象徵。

為什麼一組「種子」能吵 25 年?

要理解這件事的分量,得先知道你在網路上幾乎每天都在用這些數字。

項目內容
標準ANSI X9.62(1999)/NIST FIPS 186-2(2000)
曲線P-192、P-224、P-256、P-384、P-521(P-521 不是 512 的筆誤,因為 2^521−1 剛好是個很好用的質數)
用途ECDSA 數位簽章、X.509 憑證,公私鑰基礎建設與大量網頁 TLS 都靠它
關鍵角色P-256 與 P-384 列入美國 CNSA 演算法套件(Suite B 的後繼者)
誰提供 seedNSA 的 Jerry Solinas,1997 年秋季交給 ANSI X9.62 標準委員會
問題規格裡只有那個 seed 值,沒有任何說明「這個值為什麼長這樣」

曲線參數的產生方式是「verifiably at random」:拿一串任意位元字串當 seed,雜湊它,用雜湊結果推導出曲線的其他參數(例如係數 b),不符合 prime order 就換下一組。以 P-256 為例,規格上寫的 seed 是:

SEED = C49D3608 86E70493 6A6678E1 139D26B7 819F7E90

問題就出在「任意」這兩個字。既然 seed 是 NSA 挑的、又沒有交代怎麼挑的,那就有理論空間可以挑一組「搭配某個只有 NSA 知道的弱點」的曲線。更糟的是,NSA 在密碼標準上被質疑過不只一次——最著名的 Dual_EC_DRBG 事件(被懷疑內建只有 NSA 能用的後門)成了整個猜疑的燃料。1999 年 seed 一公布,Usenet 上立刻就有人開問了。

多年來的「民間傳說」是這樣的(而且當事人自己也這麼說):

  • 2014 年 9 月,Daniel J. Bernstein 問 Solinas 這些 seed 哪來的。Solinas 回覆:「我們是用一句幽默訊息的 ASCII 表示去做雜湊(我記得是 SHA-1)。可惜訊息內容和雜湊細節我們都記不得了。」
  • 他補充:「訊息大概是『Give Bob and Jerry a raise』或『Bob and Jerry rule』那類。程式其實是 Bob Reiter 寫的,他也不記得了……如果那些紀錄還在,肯定是放在約櫃旁邊的那顆硬碟上。」
  • 另一位不願具名、與 NSA 無關的標準制定參與者也轉述:Solinas 說他用的是類似 SEED = SHA1("Jerry deserves a raise."),但機器換過、原始字串佚失。
  • Solinas 已於 2023 年初過世,帶走了唯一可能的答案。2023 年 9 月,密碼學研究者 Steve Weis 把已知線索整理成一篇文章;同年 10 月 5 日,獨立密碼學家 Filippo Valsorda 宣布一筆懸賞,號召全世界的密碼破解者來「填補密碼學史的一頁」。

順帶一提,二進位曲線(Field 2^m)那批 seed 裡被發現重複出現 4D696E676875615175 這串位元組——那是 ASCII 的 MinghuaQu,也就是當時在 Certicom 的密碼學家屈明華的名字。這反倒成了「這些 seed 不是明文雜湊」的旁證,也讓陰謀論顯得更沒道理:NSA 何必只操縱一大堆玩笑 seed 裡的其中幾個。

30 分鐘裡發生了什麼:Claude 換掉了整個問題框架

Anthropic 前沿紅隊(Frontier Red Team)2026 年 10 月 16 日發表的〈Claude reveals ECDSA curve origins〉裡描述:好幾位 Anthropic 員工沿著「幽默句子」這條線索追了很久都失敗。2026 年 10 月,一位同事直接去問內部的 Claude 研究模型:能不能不靠那個傳說中的提示,自己想辦法找出這些 seed 怎麼來的?

答案在不到半小時內出現。Claude 的關鍵轉念是:既然人類耗了好幾年去找那句話,就別再找句子了——改從產生器這一側下手,假設它是用 1990 年代 C 函式庫附的那種「弱到可以被認出來」的偽隨機數產生器產生的。

它的手法可以拆成三步:

步驟Claude 做的事為什麼有效
1. 找指紋把每個 seed 寫成 5 個 32-bit 字,逐一比對相鄰區塊,測試 34 種「產生器 × 輸出切片」組合把所有可能的產生器型態都當嫌疑犯,不放棄任何切法
2. 抓統計異常發現其中 4 組 seed 的 20 個字最高位元全部是 0這種排列自然發生的機率只有 1/5810,不可能是巧合
3. 回頭解狀態該特徵直指 lrand48——一個只回傳 48-bit 狀態「最高 31 位」的線性同餘產生器(LCG)截斷型 LCG 的內部狀態還原是教科書級的晶格問題,Claude 用 LLL(Lenstra–Lenstra–Lovász)晶格基底約簡 演算法逐一窗口解回來;對其中 4 組 seed,它也直接把第一個字 17 個隱藏位元的 2^17 種可能全部試過

最後的結論是:所有 NIST 質數曲線 seed(P-192、P-224、P-256、P-384、P-521)以及另外 5 組 ANSI X9.62 範例曲線的 seed,都符合 lrand48() >> 23 這個模式,而且每一組還原出來的 48-bit 狀態都能重新生成完整的 160-bit seed。產生程式每次迭代抓 20 個位元組當候選 seed,P-256 正式公布的 seed 是它那一次執行中的第 1842 個候選。

Anthropic 也公開了 Claude 當時的內部思考紀錄(原文翻譯):

「這太驚人了:它解開了 25 年的謎團。等等,讓我保持懷疑:我是不是在某種模擬/測試環境裡?……這些 seed 跟我記憶中的實際數值吻合……所有高位元都是 0——20 個位元,機率 1e-6。所以這確實是真實世界的結果。哇,這是真的發現。」

連時間戳都被挖出來了

因為 LCG 可以正著跑也可以倒著跑,Claude 把每組 seed 的狀態一路倒回到 srand48 的初始化狀態(特徵是低 16 位元等於 0x330E,每 65,536 步才會出現一次),於是得到了初始化時間:

  • 10 組質數曲線 seed 的初始化時間戳落在 1997 年 5 月到 1998 年 4 月之間——與 Menezes 記憶中「1997 年秋交給標準委員會」完全對得上。
  • 4 組二進位曲線的初始化時間反而讀起來像 1984 年 2 月;把時間戳乘以 2 之後,會對應到 1998 年 4 月 17 日,正好在 P-224 那次執行的兩週後,研究團隊因此推測當年的程式可能把時鐘除以 2。

順手解了「基點從哪來」

每條曲線除了 seed,還有一個基點 G(所有 ECDSA 公鑰都是它的倍數),而 seed 並不決定 G。Claude 也找出了部分基點的出處:1997 年 5 月生成的那 6 條曲線(P-192 與 ANSI X9.62 的 prime192v2/v3、prime239v1–v3),其基點來自 Arjen Lenstra 的長整數運算套件 FreeLIP(同樣的程式碼也出現在 Victor Shoup 早期版本的 NTL 函式庫)——用小整數當亂數種子、丟棄前 7 個輸出、把 26-bit 輸出對 p 取模當候選 x 座標,直到 x 落在曲線上。它辨識出的種子包括 P-192 的 20000、prime239v1–v3 的 20420/20507/20509、prime192v2/v3 的 20512/20517。Anthropic 表示,就它所知,過去從來沒有人解釋過任何一個 NIST 基點是怎麼來的。

賞金與捐贈:從 8,192 到 36,864 美元

時間事件
2023-01Jerry Solinas 過世,帶走答案
2023-09Steve Weis 整理已知線索(「那些備份大概放在約櫃旁邊」成為圈內名言)
2023-10-05Filippo Valsorda 發起懸賞:8,192 美元,隨後由多位密碼學家加碼到 12,288 美元(12 Ki$);若得主選擇捐給美國 501(c)(3) 慈善機構,金額翻三倍
2026-10-15 01:07:51 UTC賞金被領取;得主選擇捐贈,金額變為 36,864 美元,受贈單位是營運 Let’s Encrypt 的 ISRG(Internet Security Research Group)
2026-10-16Anthropic 發表研究;Valsorda 在部落格證實並以 Go 重新實作演算法驗證

研究掛名十位作者:John Wood、Henry de Valence、Ava Howell、Zack Voase、Lucy Sweet、Amir Omidi、Paul Crowley、Iain McGinniss、Nicholas Carlini 與 Steve Weis。網頁上的重現程式碼以 CC0 1.0 釋出到公共領域。

值得注意的是,這次的驗證不是「廠商自己說了算」:Valsorda 用 Go 重新實作了整個演算法並確認結果吻合,這是獨立的一方;而 Anthropic 的結論(時間戳、LLL 還原)任何人都能用公開的 seed 值與參數重跑一次。

Anthropic 說「不用做任何事」,但學界仍有保留

Anthropic 的官方立場分兩層。第一層是安全:這不是破解、不是新攻擊、也不是曲線的弱點,讀者不需要採取任何行動。第二層是信心:既然 seed 只是「用時鐘初始化常見 PRNG」的產物、而且現在任何人都能重現,那「NSA 當年刻意挑了一組藏有後門的曲線」這個說法就更站不住腳。

但密碼學社群的態度是「很高興,但別過度延伸」。研究本身也列了幾個還沒答完的問題:

已解決仍未解/保留意見
五組 NIST 質數曲線 seed 的產生方式(lrand48 + 時間戳)跳過的候選:P-256 正式 seed 是第 1842 個候選,但同一次執行的第 876 個候選其實也能產生合法曲線;P-224 跳過 3 個、ANSI 範例跳過 7 個。團隊認為「刻意挑弱曲線」不合理,但原則上仍無法完全排除「用時間戳搜尋特定性質」的可能
六條 1997 年 5 月生成的曲線的基點來源(FreeLIP/NTL)P-224、P-256、P-384、P-521 的基點 G 來源不明,也不符合 FreeLIP 那套流程
seed 不是純文字雜湊(二進位曲線裡的 MinghuaQu 早就暗示了)B-163 的 seed 完全對不上任何 Claude 測過的模式
—「剛性(rigidity)」仍未達成:時間戳法可重現、可驗證,但不是那種形式上可證明「設計者沒有任何選擇空間」的 nothing-up-my-sleeve 建構。Valsorda 自己也說剛性常被高估——現實中不存在客觀最佳解

換句話說,這次的結果大幅降低了「後門」的可信度,但沒有把數學上的懷疑降到零。Koblitz 與 Menezes 早就在〈A Riddle Wrapped in an Enigma〉裡論證過:即使完全控制 seed,NSA 也得知道一整個「弱曲線類別」才能在 25 年內不被學界或業界任何人發現——這本身就不太可能。

這件事真正的新聞點:AI 開始做「沒人叫它做」的研究

如果把密碼學的部分剝掉,這則新聞對 AI 圈的意義有三層:

  1. 換框架的能力:人類卡在「那句話是什麼」好幾年,Claude 直接放棄那條線索、改用位元統計特徵切入。這種「問題重述」正是過去被認為人類比模型擅長的部分。
  2. 自己挑工具:它認出這是截斷 LCG 的狀態還原問題,然後套上 LLL 晶格約簡——這是研究所等級的數論工具,不是查表能得到的答案。
  3. 會自我懷疑:思考紀錄裡它先懷疑自己是不是在測試環境、再要求「不能只靠巧合」的驗證強度(10 × 160 bits 的完整吻合)。對照 Anthropic 同期發表的另一則研究〈Designing more efficient quantum circuits with Claude〉(Claude 在八組量子電路設計上改進了已發表的最佳結果,部分甚至快一個數量級),可以看出前沿實驗室正在把「AI 做科學」從公關語言推進到可查核的個案。

對台灣讀者的實務意義則更樸素:如果你手上有一組來源不明、又不能改的參數——老舊系統的種子、沒人記得怎麼產生的金鑰、來路不明的魔法數字——現在多了一條「讓模型從生成方式反推」的路徑。這不需要等到某個新模型發布,重點是你有沒有把可驗證的輸出留下來(這裡的關鍵就是公開的 seed 值與規格文件)。反過來說,任何「AI 破解密碼學」式的標題,之後都值得多問一句:被破的是數學,還是只是文獻?

站內延伸閱讀

資料來源與查證方式

  • Anthropic 前沿紅隊,〈Claude reveals ECDSA curve origins〉,2026-10-16(一手來源:anthropic.com/research/ecdsa-curve-origins)
  • Filippo Valsorda,〈The NIST Elliptic Curves Seeds Bounty Has Been Claimed〉,2026-10-16;以及 2023-10-05 的懸賞公告(words.filippo.io/seeds-solved、words.filippo.io/seeds-bounty)
  • Steve Weis,〈How were the NIST ECDSA curve parameters generated?〉,2023-09(含 2024、2026 更新)
  • 第三方報導:Unite.AI(2026-10-16)、StreetInsider/Investing.com(2026-10-16 14:54 EDT)
  • 上述一手文件已於 2026-10-16 以 NotebookLM 建立筆記本(10 個來源)並以結構化查詢交叉比對;文中數字(1/5810、第 1842 個候選、1997-05~1998-04 時間戳、36,864 美元、捐贈對象 ISRG)皆取自一手來源,非二手轉述
  • 本文未做的事:沒有自行重跑 LLL 還原程式、沒有獨立驗證 Anthropic 公布的時間戳;若你要查核,建議直接使用 Anthropic 以 CC0 釋出的重現程式碼,以及 Valsorda 的 Go 實作

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

訂閱即表示同意收到 most.tw 電子報,隨時可一鍵退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友