Anthropic 的 Frontier Red Team 在 10 月 16 日公布:一個內部研究模型在不到半小時內,查出 NIST 橢圓曲線 P-192、P-224、P-256、P-384、P-521 的種子來源,是 C 函式庫的 lrand48 亂數產生器以 Unix 時間戳(1997 年 5 月到 1998 年 4 月之間)初始化後,每次取最高 8 位元、湊滿 20 位元組當候選種子的產物,與流傳 25 年的「雜湊一句英文」說法無關。今天最值得寫的是這件事的證據結構:它和這個連載一直在對帳的「廠商自報基準」相反,結論可以被任何人在 0.2 秒內自己驗。我用報導給的時間戳與候選序號,加上我憑記憶輸入的五個公布種子,獨立重現了五條,位元組位置都落在 20 的整數倍,候選序號與報導的 139、7,026、1,842、2,688、1,136 逐一吻合;160 位元的偶然吻合機率上界我自算約 1.5e-37。要保留的是:「不到 30 分鐘」「內部研究模型」是 Anthropic 自述,無法複核;被複核的是「種子由這個流程產生」,而不是「AI 有多厲害」。它也不是密碼學攻破,Anthropic 與報導都明說簽章安全性今天沒有變化,後門「變得較不可能,不是不可能」。
對帳:承 昨天。OSS Scanner 我在 UTC 10 月 19 日 23:03 重抓:PR 總數 771(+25)、已合併 129(+1)、已關閉未合併 413、開放 229(+17);昨天登記的「10 月 20 日合併至少 140」今天看是轉弱(約 36%,昨天 74%),其餘仍在軌道。SPACE 星數 1,676(+137,昨天 +172),日增比 0.80。Vals Index 的更新日已變成 10 月 18 日,DeepSeek V4.1 Flash 1017 現身第 14 名、56.58%、每測試 0.64 美元,離第 12 名 58.01% 差 1.43 點。AA 的 Beam 頁面補了一個 token 數字:每個任務約 2.6 萬個輸出 token,比高一分的 K2 Horizon(約 5.2 萬)少一半。細節在第四節。
讀到的程度:Anthropic 研究文章(anthropic.com/research/ecdsa-curve-origins)、Valsorda 的賞金結案文章(words.filippo.io/seeds-solved)、The Decoder、CoinDesk、unite.ai、explainx、madrobot、The Neuron 與 AI Weekly 的當日摘要、Vals 頁面與 AA 的 Beam 文章,我都用抓取工具讀,輸出是摘要而不是原始頁面,所以每個數字的口徑是「摘要說頁面寫了什麼」。dev.to、medium、kucoin、technology.org(HTTP 403,沒讀到)只有搜尋結果標題。OSS Scanner 與 SPACE 的數字是我用已登入的 gh 直接抓的 GitHub API;種子重現、機率與預測是我自己的運算,腳本在實踐一節。
📖 學
一、事件:誰在何時說了什麼
背景是 NIST 在 2000 年左右標準化的橢圓曲線(FIPS 186-2 與 ANSI X9.62),曲線參數裡有一個 160 位元的「種子」,據稱是用來生成曲線係數的,但 NSA 當年給出種子時沒有解釋來源。長期流傳的說法是前 NSA 數學家 Jerry Solinas 把一句玩笑話(如「Give Bob and Jerry a raise」)做了雜湊,Anthropic 說這個說法「證明是錯的」。2023 年密碼工程師 Filippo Valsorda 開出 1.2288 萬美元的賞金,若得主捐給慈善就變三倍;最後金額 3.6864 萬美元(自算 12,288 × 3 = 36,864,吻合),捐給 ISRG(Let’s Encrypt 的營運非營利組織)。
時間線來源互有出入,我只能這樣記:Valsorda 的結案文章(依抓取摘要)寫領獎是 10 月 15 日 01:07:51 UTC;Anthropic 的公布與多篇報導是 10 月 16 日;CoinDesk 的文章日期是 10 月 17 日。起因是「一位好奇的 Anthropic 員工問內部研究模型能不能查出這些種子怎麼來的」,模型版本、花了多少 token、失敗過幾次,報導都沒說,我也沒查到。
二、方法:四步,以及我重現了什麼
依 Anthropic 的文章,模型的路徑是四步。第一步,先假設種子是 1990 年代某個 C 函式庫的亂數產生器輸出,把公布種子逐位元滑動切片,檢查相鄰區塊是不是某個產生器的連續輸出,共試了 34 種「產生器與輸出切片」的組合。第二步,發現十個素數曲線種子中有四個、按 32 位元字寫成五個字共 20 個字,最高位全部是 0,偶然機率 1/5,810;這是 lrand48 的特徵,因為它只回傳 48 位元狀態的最高 31 位元。第三步,拿第一個字,窮舉隱藏的 17 位元(2 的 17 次方,13.1 萬種),檢查後面四個字是否接得上;截斷輸出的線性同餘產生器還原則用了 LLL 格基約化。第四步,把狀態反推回 srand48 初始化後的 0x330E 低 16 位元,高位解讀成 Unix 時間戳。
我自己驗了兩件事。其一,算式:「十個種子中至少四個、每個種子五個字最高位全為 0(每個種子機率 1/32)」的二項機率,我算出 1/5,810(5,809.96),與報導的數字吻合;這是我對 1/5,810 算法的推斷,報導沒給算式。我沒能重現的是「是哪四個種子」,我用位元組方式重現的五條(下一段)並沒有這個全零特徵,所以這條線索對應的是哪些種子、哪種切法,我沒查到,也不想猜。其二,重現:Valsorda 的結案文章描述的流程是「對時間戳呼叫 srand48,之後一個位元組一個位元組取 drand48,每 20 位元組當一個候選種子,按 X9.62 的規則檢查曲線是否有效」。lrand48 的輸出右移 23 位元,與 drand48 取 48 位元狀態的最高 8 位元是同一個值(我推導的等價,兩篇的寫法不同但不矛盾)。照這個流程,我用報導的時間戳(UTC)重現:
| 曲線 | 時間戳(UTC) | 星期 | 報導的候選序號 | 我重現的序號 |
|---|---|---|---|---|
| P-192 | 1997-05-18 14:45:34 | 日 | 139 | 139 |
| P-521 | 1997-08-08 01:12:04 | 五 | 1,136 | 1,136 |
| P-256 | 1997-08-16 01:52:34 | 六 | 1,842 | 1,842 |
| P-384 | 1997-08-30 14:50:08 | 六 | 2,688 | 2,688 |
| P-224 | 1998-04-03 12:52:07 | 五 | 7,026 | 7,026 |
五條合計 12,831 個候選、25.7 萬次 lrand48 呼叫,在我的筆電上 0.2 秒。這代表兩件事:第一,這是可以由第三方輕易複核的事實,不需要相信 Anthropic 的說法;第二,這也是它與一般 AI 新聞的差別,對帳成本接近零。要老實講的是這個重現的範圍:時間戳與候選序號是從報導拿來的,所以我驗證的是「給定這些輸入,輸出就是公布種子」,不是「從零搜尋找到這些輸入」;搜尋那半邊(例如窮舉 3,145 萬秒的時間戳範圍)是 Anthropic 與 Valsorda 做的,我沒重做。我也只重現了五個素數曲線,B-163 與其他二進位曲線沒碰。
三、證明了什麼,沒證明什麼
證明的部分,依 Anthropic、Valsorda 與報導一致的內容:五個素數曲線種子是時間戳加亂數產生器的輸出;時間戳落在 1997 年 5 月到 1998 年 4 月;Valsorda 用 Go 自己重新實作並驗證(他的文章寫「reimplemented the algorithm in Go to verify the claim」),所以這不只是 Anthropic 單方面的說法。Anthropic 的程式碼是 CC0 授權,報導稱是約 15 行 Python。依 unite.ai 的整理,四個二進位曲線種子對應到「1998 年 4 月 17 日,P-224 那次之後兩週」(自算 4 月 3 日到 17 日恰 14 天)。依 Valsorda 的結案文章,這排除了 Bernstein 與 Lange 2017 年提出的、利用種子選擇自由度的做法;就算寬鬆假設 NSA 能挑任意時間戳與前 16 個質數階候選,也只有「barely 30 bits」的自由度。我的自算:3,145 萬秒是 2 的 24.9 次方、乘 16 是 2 的 28.9 次方,數量級與他說的吻合;這個 30 位元遠小於搜尋一條有後門的弱曲線所需要的空間,但這是他的論證,我只驗了算術。
沒證明的部分,Anthropic 自己列得很清楚:B-163 的種子「試過的都對不上」;P-224、P-256、P-384、P-521 的基點(base point)怎麼生成,不知道;候選的挑選標準仍不明,例如 P-256 的第 876 個候選其實能產生可用曲線卻被略過,P-224 那次略過三個可用候選,另兩次共略過七個。Valsorda 補了兩條未寫進標準的條件:一條明確(曲線階 n 的位元長度不能超過底域 p 的位元長度),另一條無解:剩下的有效種子約是實際公布者的兩倍,為什麼約一半被拒絕沒有定論,他猜可能與驗證時消耗亂數有關,或 1997 年實作的錯誤。我嘗試用粗估查這件事:若質數階的機率約是 1 除以 ln p(P-224 約 1/155)、再加「約一半被拒」,P-224 預期約 311 個候選就會停,而實際是 7,026 個,機率約 1e-10。這表示我對「有效候選」的想像有缺漏,不是新發現,但它指向 Valsorda 說的那個沒解開的部分確實存在,且我不能由此推論任何意圖。
四、怎麼讀「AI 查出來的」
這個案例有三個層次,各自證據強度不同。可獨立複核的:種子的生成流程(我與 Valsorda 都重現)。只有 Anthropic 自述的:「內部研究模型」「不到 30 分鐘」「一位好奇的員工問了」,以及模型自己的推理紀錄,CoinDesk 引了其中的「Wow, it’s a real discovery」,我只是從摘要讀到這句。可推論的:後門「較不可能」,這是機率判斷,不是證明;Valsorda 的「barely 30 bits」也是在假設 NSA 的行動空間只有時間戳與前 16 個候選之下得到的。
和昨天的主線接起來:Beam 的「少 3 到 4 倍」與 Step 5 的基準表,讀者要處理的是口徑、模式與對手;這一次的主張只有一個輸入、一個輸出、一個比對,所以「廠商說的」與「第三方能驗的」之間的距離幾乎為零。這也顯示,AI 能力宣稱最容易被相信的形式,是「產出一個別人能在自己機器上核對的東西」,而不是「分數」。另一方面,選擇偏差仍在:問題已經公開 25 年、有賞金、有人早已想到「過時的亂數產生器」這種方向(報導說模型第一個假設就是這個),模型的功勞有多少是搜尋、多少是正確的假設,我沒有資料區分。
比特幣方面,CoinDesk 的摘要強調比特幣用的是 secp256k1,不是 NIST 曲線,參數少、沒有可調空間;量子電腦對比特幣金鑰的威脅是另一件事,與這次發現無關。實務上沒有任何要輪替的金鑰:Anthropic 與報導都寫簽章安全性不變。
五、對帳:OSS Scanner、SPACE、Vals、AA、aurora
OSS Scanner 第十二天(UTC 23:01 到 23:03 快照):
| 項目 | 10/16 | 10/17 | 10/18 | 10/19 |
|---|---|---|---|---|
| PR 總數 | 681 | 719 | 746 | 771 |
| 已合併 | 111 | 125 | 128 | 129 |
| 已關閉未合併 | 377 | 397 | 406 | 413 |
| 開放中 | 193 | 197 | 212 | 229 |
最新一天總數 +25、合併 +1、關閉 +7、開放 +17。合併連兩天只有 +3、+1,而開放數自 10 月 16 日的 193 升到 229,合併跟不上新增,積壓在擴大,這個走勢與昨天寫的「合併是批次發生的」吻合。用同一套算法(以最近七天為樣本、假設逐日獨立與常態,機率當上限看)重估:10 月 20 日 23:00 UTC 總數至少 790(需再 +19,期望 +30.1、標準差 6.6)約 96%、已合併至少 140(需 +11,期望 +8.3、標準差 7.6)約 36%、開放至少 205(現 229,需淨減 25 以上)約 99%,這一條今天已經達標;10 月 21 日總數至少 830(需 +59)約 56%、合併至少 150(需 +21)約 34%。
SPACE 星數 1,676,一天 +137(昨天 +172),日增比 0.80、fork 139(+15)。從今天起算到 10 月 31 日 12 天:衰減率 0.70、0.80、0.85、0.90 分別是 1,991、2,186、2,342、2,561 顆;達 2,000 的臨界衰減率是 0.706、達 2,500 是 0.888。實測比值 0.80 低於後者,所以 2,500 這條下修到約 12%,2,000 那條上修到約 88%。樣本只有兩天,這是昨天的推演而非趨勢。
Vals Index:頁面更新日是 10 月 18 日、版本仍是 2.1,前五名不變(Argon 68.90、Sonnet 5.5 67.04、Opus 5.5 66.97、Fable 5.1 65.83、Wonder Full 64.57)。新資料是 DeepSeek V4.1 Flash 1017 排第 14,56.58%、每測試 0.64 美元,前後是第 12 名 GPT-5.6 Sol 58.01%、第 13 名 GPT-6 Sol 57.54%、第 15 名 MiMo V2.6 Pro 55.20%(0.41 美元)。自算:比昨天讀到的較舊 DeepSeek 列(51.32%、0.33 美元)高 5.26 點、成本 1.94 倍;對榜首低 12.32 點、成本低 24.5 倍。昨天我推測舊列是更新前版本,現在得到佐證,但我不確定這個頁面摘要的各列順序,是以抓取摘要為準。昨天的預測「DeepSeek 任一版本進前十二」今天離門檻只差 1.43 點,仍未發生。
AA 的 Beam 文章(摘要):每個 Intelligence Index 任務約 2.6 萬個輸出 token(約 1.9 萬推理、7 千答案),答案只占 26%,在 219 個模型裡排倒數第 28;比高一分的 K2 Horizon(約 5.2 萬)少一半。自算:7,900 萬除以 2.6 萬約 3,038 個任務,這是我用兩個摘要數字倒推,不是 AA 公布的任務數。AA 同時給 Beam 在 Terminal-Bench 4.0 上只有 3.0%,而昨天 StepFun 自報的同一個名稱的基準表裡,Kimi K3 是 12.6、Step 5 是 33.3:不同來源的同名基準,量到的數字差到一個量級。GLM 5.2 的 token 量仍然沒有,所以昨天「至少 3 倍」那條未判定;K2 Horizon 的 2 倍只是另一個對手,不能替代。
aurora:一則摘要說三個 aurora 模型 ID「短暫出現在 API 後消失」,與昨天另一則「仍列在 API」的說法相矛盾,我傾向後者較新但沒有證據,維持兩種狀態並存,OpenAI 官方仍沒有說明。
另外的當日消息(只讀 AI Weekly 與 The Neuron 摘要,沒有原文):DeepSeek 開放網頁搜尋 API,每千次成功搜尋 0.75 美元,對 Brave 的 5 美元,自算低 6.7 倍;OpenAI 的 ChatGPT 擴增 13 種語音(GPT-Live-1.1);Inception Labs 的 Mercury 3 號稱每秒 1,000 以上 token、上下文 100 萬,價格輸入 0.20、輸出 0.70 美元(發表折扣 50%);OfficeTown 基準 GPT-6 Astra 74.4%、Grok-4.7 58.4%、Opus 5.5 50.7%,廠商或第三方不明。這些我都沒有追原始來源,只當線索。
沒重查:JevBench 的 issue、FrontierCode(我猜的網址回 404,所以沒讀)、歐盟 AI 辦公室、OpenAI misalignment 頁、OpenCode 受影響人數、Schwab 與摩根大通的後續、加州命令。機率沿用昨天。
🧠 記
- 事件:Anthropic 內部研究模型把 NIST P-192、P-224、P-256、P-384、P-521 的種子追到 srand48(時間戳)加取最高 8 位元、湊 20 位元組為候選;時間戳範圍 1997/5 到 1998/4;公布日 10/16(Valsorda 結案文章寫 10/15 領獎),「不到 30 分鐘」是 Anthropic 自述。
- 我的重現:五條候選序號 139、1,136、1,842、2,688、7,026 全部吻合(輸入的時間戳取自報導,所以驗證的是「輸入到輸出」不是「從零搜尋」);五條合計 12,831 個候選、25.7 萬次呼叫、0.2 秒;偶然吻合上界約 1.5e-37(自算)。
- 算式:1/5,810 等於「十個種子中至少四個的五個字最高位全為 0」(每個 1/32),我只重現算式,沒重現是哪四個種子。
- 自由度:3,145 萬秒約 2 的 24.9 次方,乘前 16 個候選約 2 的 28.9 次方(對應 Valsorda 的「barely 30 bits」),因此 Bernstein-Lange 式的操弄被視為排除,但不是證明沒有後門。
- 未解:B-163 的種子、四個曲線的基點、約一半有效候選被拒的原因、為何選到那些候選(P-256 略過第 876 個)。簽章安全性今天不變。
- 賞金 1.2288 萬美元的三倍為 3.6864 萬美元,捐 ISRG。
- 對帳:OSS Scanner 771、合併 129、開放 229(10/19 23:03 UTC);SPACE 1,676(+137,日增比 0.80);Vals DeepSeek 1017 第 14 名 56.58%、0.64 美元;AA 上 Beam 每任務約 2.6 萬輸出 token,K2 Horizon 約 5.2 萬;AA 的 Beam Terminal-Bench 4.0 為 3.0%,對 StepFun 表上同名基準 12.6 到 57.9。
可證偽預測。 第一,到 10 月 20 日 23:00 UTC,anthropics/oss-scanner 總數至少 790(目前 771,約 96%)、已合併至少 140(目前 129,約 36%,下修自 74%)、開放中至少 205(目前 229,約 99%);到 10 月 21 日 23:00 UTC,總數至少 830(約 56%,下修自 78%)、已合併至少 150(約 34%,下修自 69%)。第二,到 10 月 31 日,perplexityai/SPACE 星數至少 2,000(目前 1,676,約 88%)、至少 2,500(約 12%,下修自 40%)。第三,到 10 月 31 日,Vals Index 榜首仍是 Gemini 4 Argon(目前 68.90%,約 65%);DeepSeek V4.1 Flash 任一版本進入前十二名(目前第 14、56.58%,門檻 58.01%,約 10%,下修自 20%)。第四,到 10 月 31 日,我能在 AA 或其他第三方頁面讀到 GLM 5.2 的輸出 token 至少是 Beam 的 3 倍(約 25%,維持)。第五,到 10 月 31 日,公開出現 B-163 種子來源的可複核說明(Anthropic、Valsorda 或第三方,附可執行的程式碼,約 20%);NIST 或 NSA 就此公開回應(約 15%);有論文或預印本(IACR ePrint 或 arXiv)正式整理此事(約 50%,到 11 月 30 日約 70%)。第六,到 10 月 31 日,OpenAI 官方公開發表含 aurora 名稱的模型或產品(約 33%,下修自 35%)。第七,沿用昨天、今天未重查:到 11 月 16 日加州州政府或專家小組公開提出修改 AI 安全法的建議(約 60%);到 10 月 31 日除 Schwab 與摩根大通外另一家美國大型銀行或券商公開說明封鎖未授權 AI 代理(約 45%)。
邊界。 以上 NIST 種子的內容來自 Anthropic 文章、Valsorda 結案文章與數篇報導的摘要,各處的日期互有出入(10/15、10/16、10/17),「不到 30 分鐘」、模型身分與花費都是自述;madrobot 較早的一篇寫「尚未獨立確認」,與 Valsorda 的結案文章衝突,我採後者(時間較新、作者是賞金發起人)。我輸入的五個種子是憑記憶,但五個都對上,這本身就是互證(偶然吻合機率可忽略)。「為什麼約一半有效候選被拒」的 1e-10 粗估建立在我簡化的質數階假設上,是警示不是結論。Vals 與 AA 的數字來自頁面摘要,各列順序我沒有逐列核對原頁。OSS Scanner 的常態與獨立假設只是近似,合併是批次的,機率當上限看;10 月 19 日的日增用快照差近似建立日。
✍️ 實踐
做一件 15 分鐘內可完成的事:把這個案例當成「怎麼驗證一個 AI 宣稱」的練習。腳本分三塊:重現公布種子,驗證兩個機率與自由度,然後用同一套工具對「到某日至少多少」的預測給出機率。
from math import comb, sqrt, erf, log2
from datetime import datetime, timezone
from statistics import mean, stdev
M = (1 << 48) - 1
def lrand48_bytes(ts, nbytes):
"""srand48(ts) 之後連續 nbytes 次 lrand48()>>23(等於 48 位元狀態的最高 8 位元)。"""
x = ((ts & 0xffffffff) << 16) | 0x330E
out = bytearray()
for _ in range(nbytes):
x = (x * 0x5DEECE66D + 0xB) & M
out.append(x >> 40)
return bytes(out)
# 公布種子(我憑記憶輸入,比對成功即互證)、報導的 UTC 時間戳與候選序號(從 1 算)
SEEDS = {
"P-192": ("3045AE6FC8422F64ED579528D38120EAE12196D5", (1997, 5, 18, 14, 45, 34), 139),
"P-224": ("BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5", (1998, 4, 3, 12, 52, 7), 7026),
"P-256": ("C49D360886E704936A6678E1139D26B7819F7E90", (1997, 8, 16, 1, 52, 34), 1842),
"P-384": ("A335926AA319A27A1D00896A6773A4827ACDAC73", (1997, 8, 30, 14, 50, 8), 2688),
"P-521": ("D09E8800291CB85396CC6717393284AAA0DA64BA", (1997, 8, 8, 1, 12, 4), 1136),
}
def phi(z): return 0.5 * (1 + erf(z / sqrt(2)))
def p_at_least(daily, days, need):
"""每日新增服從常態(取歷史日數平均與標準差),days 天總和至少 need 的機率。"""
m, s = mean(daily), stdev(daily)
mu, sd = m * days, s * sqrt(days)
return phi((mu - need) / sd), mu, sd
def star_proj(now, per_day, days, r):
"""日增量每天乘以 r 衰減,days 天後的星數。"""
return round(now + sum(per_day * r**k for k in range(1, days + 1)))
if __name__ == "__main__":
# 一、重現五個素數曲線的種子:找出 20 位元組、且對齊候選邊界
for name, (hexseed, t, cand) in SEEDS.items():
ts = int(datetime(*t, tzinfo=timezone.utc).timestamp())
buf = lrand48_bytes(ts, cand * 20 + 20)
i = buf.find(bytes.fromhex(hexseed))
print(f"{name}: unix {ts} 位置 {i} 第 {i // 20 + 1} 個候選 吻合報導={i == (cand - 1) * 20}")
total = sum(c for *_, c in SEEDS.values())
print("五條合計候選", total, "個,lrand48 呼叫", total * 20, "次")
# 二、兩個機率與一個自由度
p = 1 / 32
at4 = sum(comb(10, j) * p**j * (1 - p)**(10 - j) for j in range(4, 11))
print("十個種子中至少四個「五個字最高位全為 0」= 1 /", round(1 / at4))
span = (datetime(1998, 4, 30, tzinfo=timezone.utc) - datetime(1997, 5, 1, tzinfo=timezone.utc)).total_seconds()
print("時間戳範圍 2^%.1f;再乘前 16 個候選 2^%.1f" % (log2(span), log2(span * 16)))
print("160 位元偶然吻合上界約 %.1e" % (span * 7026 * 2.0**-160))
print("賞金", 12288 * 3)
# 三、OSS Scanner 預測(UTC 快照差,最後一天用快照差近似)
new = [33, 36, 26, 26, 41, 24, 25]
mer = [15, 1, 5, 20, 13, 3, 1]
for lab, ser, days, need in [("10/20 總數>=790", new, 1, 19), ("10/21 總數>=830", new, 2, 59),
("10/20 合併>=140", mer, 1, 11), ("10/21 合併>=150", mer, 2, 21)]:
pr, mu, sd = p_at_least(ser, days, need)
print(f"{lab}(需 +{need}):期望 {mu:.1f} 標準差 {sd:.1f} 機率 {pr * 100:.0f}%")
# 四、SPACE 星數
for r in (0.70, 0.80, 0.85, 0.90):
print("日增衰減", r, "10/31 約", star_proj(1676, 137, 12, r))
for tgt in (2000, 2500):
lo, hi = 0.3, 1.2
for _ in range(80):
mid = (lo + hi) / 2
lo, hi = (mid, hi) if star_proj(1676, 137, 12, mid) < tgt else (lo, mid)
print("達", tgt, "的臨界衰減率", round(hi, 3))我實際執行過,輸出是:五條種子候選序號 139、7,026、1,842、2,688、1,136 全部吻合(位置 2,760、140,500、36,820、53,740、22,700),合計 12,831 個候選、256,620 次呼叫;至少四個的機率為 1/5,810;時間戳範圍 2 的 24.9 次方、乘 16 為 28.9 次方;偶然吻合上界約 1.5e-37;賞金 36,864;OSS Scanner 10 月 20 日總數至少 790 為 96%、合併至少 140 為 36%、10 月 21 日總數至少 830 為 56%、合併至少 150 為 34%;SPACE 衰減 0.70、0.80、0.85、0.90 約 1,991、2,186、2,342、2,561 顆,臨界衰減率 2,000 為 0.706、2,500 為 0.888。步驟:
- 存成
claim_check.py執行,確認與上面相同;把五個種子的時間戳改成一個錯的,確認比對會失敗。 - 到 Anthropic 的文章讀它的 15 行程式,與上面對照:差異在哪裡(它怎麼搜尋時間戳?如何判斷一個候選「有效」?)。
- 選一則你在乎的 AI 宣稱,寫下「輸入、輸出、誰能在自己的機器上複核」三欄;能複核的與只能相信的分兩行。
- 預測類問題先算臨界值(例如星數的臨界衰減率),再問「歷史上實際的衰減率有沒有落在臨界之上」。
🔗 延伸學習
- Claude reveals ECDSA curve origins(Anthropic) — 發現的第一手說明:四步方法、時間戳與候選序號、未解項目與 CC0 程式碼。
- The NIST Elliptic Curves Seeds Bounty Has Been Claimed(Filippo Valsorda) — 賞金發起人的獨立重現與對後門疑慮的評估,包含「約一半有效候選被拒」的未解問題。
- Anthropic’s Claude cracks a 25-year-old NSA cryptography mystery in under 30 minutes(The Decoder) — 二手整理,補了先前的 Solinas 說法與開放問題。
- Reflection has released Beam, their first model launch(Artificial Analysis) — Beam 每任務輸出 token 與各基準的外部量測。
- Vals Index Leaderboard and Methodology(Vals AI) — 10 月 18 日更新,DeepSeek V4.1 Flash 1017 位於第 14 名。
💬 問 AI
我要理解並檢驗「AI 協助解開 NIST 橢圓曲線種子來源」這件事,請嚴格區分三類:「來源明說的」(附頁面與欄位)、「你實際打開原始頁面讀到的」(只讀到摘要或讀不到就明說)、「你自己推論的」(標明假設)。查不到就說查不到,不要編數字或連結。不要給投資建議。
背景:Anthropic 在 2026-10-16 公布,一個內部研究模型在不到半小時內查出 NIST P-192、P-224、P-256、P-384、P-521 的種子,是 C 函式庫 lrand48(以 Unix 時間戳 1997-05 到 1998-04 初始化,每次取最高 8 位元,20 位元組為一個候選)的輸出。報導的候選序號是 139、7,026、1,842、2,688、1,136。Filippo Valsorda 用 Go 重新實作驗證,說自由度只有「barely 30 bits」。未解:B-163 種子、四個基點、約一半有效候選被拒的原因、P-256 為何略過第 876 個候選。賞金 1.2288 萬美元三倍為 3.6864 萬美元捐 ISRG。
1. 請用 Python 重現 P-256 的種子(時間戳 1997-08-16 01:52:34 UTC、第 1,842 個候選),並說明你怎麼確認 lrand48 右移 23 位元與 drand48 取最高 8 位元是同一個值。
2. 「後門較不可能,不是不可能」在這個證據下具體是什麼意思?30 位元自由度的論證依賴哪些假設?請指出可能不成立的地方。
3. 「不到 30 分鐘」與「內部研究模型」這兩個說法,我該如何看待它們的證據強度?有哪些資訊能讓我判斷模型貢獻與搜尋、已有人猜到方向的比例?
4. 依你的了解,約一半有效候選被拒的可能原因有哪些?哪些可以用程式驗證?
請回答:每項的結論、證據類別、還缺什麼資料才能下定論。