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-1921997-05-18 14:45:34日139139
P-5211997-08-08 01:12:04五1,1361,136
P-2561997-08-16 01:52:34六1,8421,842
P-3841997-08-30 14:50:08六2,6882,688
P-2241998-04-03 12:52:07五7,0267,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/1610/1710/1810/19
PR 總數681719746771
已合併111125128129
已關閉未合併377397406413
開放中193197212229

最新一天總數 +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。步驟:

  1. 存成 claim_check.py 執行,確認與上面相同;把五個種子的時間戳改成一個錯的,確認比對會失敗。
  2. 到 Anthropic 的文章讀它的 15 行程式,與上面對照:差異在哪裡(它怎麼搜尋時間戳?如何判斷一個候選「有效」?)。
  3. 選一則你在乎的 AI 宣稱,寫下「輸入、輸出、誰能在自己的機器上複核」三欄;能複核的與只能相信的分兩行。
  4. 預測類問題先算臨界值(例如星數的臨界衰減率),再問「歷史上實際的衰減率有沒有落在臨界之上」。

🔗 延伸學習

💬 問 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. 依你的了解,約一半有效候選被拒的可能原因有哪些?哪些可以用程式驗證?
 
請回答:每項的結論、證據類別、還缺什麼資料才能下定論。