編按:本文綜合整理自 Anthropic 官方研究、Hacker News 討論串(item 50122800)、Filippo Valsorda 的 $12k 種子懸賞頁 與 Steve Weis 的 2013 年個人調查,並加入 Siami 編輯部觀點與分析。
三十年懸案:NIST 橢圓曲線的種子從何而來
ECDSA(橢圓曲線數位簽章演算法)是目前全球最廣泛使用的密碼學標準之一,從 TLS、HTTPS、SSH 到比特幣、以太坊都離不開它。1999 年,美國國家標準與技術研究院(NIST)在 FIPS 186-2 數位簽章標準中收錄了一組「標準橢圓曲線」——也就是後來大家熟知的 NIST P-192、P-224、P-256、P-384、P-521。
這組曲線本身沒問題,但每條曲線都帶有一個「seed」(種子)參數——一個 20 位元組的十六進位亂數——用來產生曲線的係數 b。問題是,這些 seed 是由美國國家安全局(NSA)提供給 NIST 的,而且從來沒有公開過生成方法。
以 P-256 為例,seed 是
C49D3608 86E70493 6A6678E1 139D26B7 819F7E90——但沒有人知道這串數字是怎麼來的。
這件事困擾了密碼學界超過二十年。支持者認為這只是當年 NSA 員工 Jerry Solinas 隨手用某個 hash 函式產生的幽默短語編碼,反對者則懷疑這是 NSA 精心設計的後門——畢竟如果他們能預測 seed,就能事先算出曲線的弱點。
Claude 半小時內解開:seed 其實是 srand48(time(NULL))
2026 年 10 月,一位好奇的 Anthropic 員工把這道謎題丟給內部研究型 Claude 模型,沒有給任何提示,只問:「這些 seed 是怎麼產生的?」
不到半小時,Claude 就給出了答案:
這些 seed 不是任何 hash 演算法的輸出,而是 1990 年代 C 語言標準函式庫裡
lrand48()這個偽隨機數生成器的產物,並且是用 Unix timestamp 當作 seed。
具體機制是這樣的:NSA 員工寫了一個小腳本,用 srand48(time) 初始化 PRNG,每次迭代取出 20 個 bytes 作為候選 seed,直到某個候選通過 NIST 的曲線檢驗。P-256 的 seed 就是第 1842 個候選;P-224 是第 7026 個。
Claude 的解題思路
- 先掃既有線索(hash 短語假設)→ 失敗;
- 換個角度:既然是 1990 年代的程式碼,當年 C 函式庫的 PRNG 非常弱(線性同餘生成器,輸出只取高 31 位元);
- 撰寫掃描器:沿著每個公開 seed 滑動,嘗試把相鄰區塊當作 1990 年代 PRNG 的連續輸出;
- 發現規律:NIST P-256 等 seed 的前幾個 bit 全是 0,這是
lrand48()的指紋(機率 1/5810); - 用 LLL 演算法還原內部狀態 → 拼回 48-bit state;
- 把 PRNG 倒推回去:找到符合
srand48()初始化形式(低 16 bit = 0x330E)的狀態; - 得到 timestamp:所有 NIST 主要曲線的時間戳都落在 1997 年 5 月到 1998 年 4 月之間。
Anthropic 在論文中完整公開了這 13 個 timestamp,例如 P-256 對應 1997-08-16 01:52:34,P-224 對應 1998-04-03 12:52:07。任何人都可以重現。
為什麼這件事重要
這項研究在密碼學史上具有指標意義。
長期以來,NIST 橢圓曲線 seed 是陰謀論的最大溫床。從 2007 年的 SafeCurves 批評到 Bernstein 的連續質疑,每次出現大規模監控醜聞時,這些 seed 都會被拿出來懷疑是不是 NSA 預埋的後門。Jerry Solinas 因此被稱為「網路邪惡迷因」和「NSA 怪人的 Yo La Tengo」(取自一首歌名)。
Claude 的發現不僅證明了 seed 是「無聊的 Unix timestamp」,更揭露了一個尷尬事實:當年 NSA 員工其實是用 1990 年代最普通的 C 函式庫亂數——而不是什麼頂級密碼學黑科技。如果 NSA 真的要埋後門,他們會假裝 seed 是這樣產生的嗎?沒有人知道。但 Anthropic 的數學證明,讓「無心插柳」的解釋變得最有說服力。
數據解讀與質疑
對於這項發現,社群與專家提出了三類質疑,Anthropic 也老實承認了一些未解的懸案。
- fidotron(HN)的質疑:確認生成方法不等於確認選擇方法。NSA 仍可能在多個 timestamp 產出的曲線中「挑選」特定性質的曲線,再公開該 timestamp 作為「清白證據」。這個質疑無法被數學排除——只能說概率極低,因為要挑到弱曲線必須讓弱曲線在候選中很常見。
- 跳過的候選:P-256 跳過了 1841 個候選,其中至少一個(#876)也通過曲線檢驗;P-224 跳過 3 個、ANSI 範例曲線跳過 7 個。Anthropic 表示這可能只是當年程式碼的 bug 或隨機選擇。
- 未解的部分:第 5 個二元曲線 seed B-163 完全對不上任何已知 PRNG——可能是當年文件傳輸過程中有人按錯數字。P-224、P-256、P-384、P-521 的 base point(G 點)也仍不知道怎麼選的,雖然 Anthropic 順手解開了 P-192 與 ANSI 五條範例曲線的 base point 來源(是 Arjen Lenstra 的 FreeLIP 庫)。
- LLL 演算法:Claude 用教科書等級的格基約簡(lattice basis reduction)還原截斷後的 LCGR 內部狀態,這個方法在 1982 年就被 Lenstra–Lenstra–Lovász 發明,數十年來一直是密碼分析標配。
研究團隊包含 John Wood、Henry de Valence、Ava Howell、Zack Voase、Lucy Sweet、Amir Omidi、Paul Crowley、Iain McGinniss、Nicholas Carlini、Steve Weis。$36,864 等值的懸賞金(已從原 $12,288 三倍加碼)將全數捐給 Internet Security Research Group。
Siami 觀點:AI 正在改寫密碼學的研究節奏
這不是 Claude 第一次破解密碼學謎題。2026 年 7 月,Anthropic 旗下的 Claude Mythos Preview 在 HAWK 與 7 輪 AES-128 上找到新攻擊,把後量子密碼學的研發速度提升約 60 倍;而這次 NIST 種子懸案,則是純粹的「密碼學考古」。
兩件事放在一起看,AI 在密碼學領域的角色已經從「攻擊輔助」擴展到「歷史偵探」。Claude 用的全是教科書方法(LCGR + LLL),但人類專家花 13 年沒做完的事,AI 在半小時內就完成了。Steve Weis(也就是當年寫了那篇個人調查的工程師)對結果的回應只有一句:「13 years of tinfoil hats for srand48(time(NULL))」(13 年的錫箔帽,竟然是為了 srand48(time(NULL)))。
這件事給密碼學界、給整個安全社群最重要的提醒是:
- 不要用「沒人知道怎麼來的」當作神秘感:公開演算法、可重現的程式碼、可審查的隨機性來源,才能換來真正的信任。
- 歷史標準需要持續審查:即使 ECDSA 沒事,後量子時代的 ML-KEM、ML-DSA、SLH-DSA 也需要被同樣的「逆向考古」檢驗。
- AI 的耐心是新的稀缺資源:Claude 不會疲倦、不會放棄,會把所有候選、所有時間戳都跑一遍。這對密碼分析、漏洞研究、學術文獻回顧都是結構性的能力提升。
而 Jerry Solinas——當年被貼上「NSA 怪人」標籤的工程師——於 2023 年過世,沒有活著看到謎底揭曉。Anthropic 在文章最後向他致敬,感謝他以幽默態度承受多年的陰謀論指控。
延伸閱讀:Filippo Valsorda 親自解釋這次解法的 「Seeds solved」技術文章 · Bruce Schneier 早在 2023 年就討論過這份懸賞 · 原始 1990 年代爭議的 Koblitz–Menezes 論文「A Riddle Wrapped in an Enigma」。
網友熱門留言 (5)