簡介
- 一個韌體錯誤導致 Coldcard 錢包從軟體偽隨機生成器生成種子,而非內建於硬體晶片來執行此工作。
- 此錯誤有效地將舊型號的搜尋空間從 128 位元縮小到約 40 位元。
- 以下是這一切的意義,以及它如何導致超過 1.3 億美元的比特幣被盜。
有人一直在清空那些本不應該被觸及的比特幣錢包。
這些幣存放在 Coldcard 設備上——來自加拿大製造商 Coinkite 的硬體錢包,這種錢包從不連接網際網路。沒有釣魚連結,沒有惡意軟體,沒有被盜的筆記型電腦。攻擊者只是推斷出了私鑰。
Galaxy Research 現已追蹤到超過 1,596 枚比特幣在三個已確認的攻擊波次中被盜,另有一個疑似第四波攻擊,若計入則總數將升至約 2,055 枚比特幣——按當前價格計算約為 1.3 億美元。其中一次掃蕩在 41 分鐘內轉移了 7,000 萬美元。Coinkite 表示至少有 15 個不同的攻擊者參與其中。
該公司於 8 月 1 日發布了一份技術背景說明,解釋了問題所在。這是一份異常坦誠的文件,簡而言之,錢包在八年間一直在擲出灌鉛的骰子,而無人察覺。
零仍然是某種東西
2021 年,Coinkite 將 Coldcard 的加密技術遷移到 libsecp256k1,這是比特幣核心所使用的相同函式庫。這是個明智的決定。但整合過程卻出了問題。
遷移悄然將種子生成從 Coldcard 自家的硬體隨機數生成器轉移到 MicroPython 的軟體備援方案——一個名為 Yasmarang 的小型演算法,專為沒有隨機晶片的設備而存在。
🚨COLDCARD 駭客攻擊損失超過 1 億美元
高置信度:1,596 枚比特幣已從約 7,300 個地址被盜,涉及 3 個已確認的攻擊波次,另有 14 起較小事件。
若加上疑似(但未確認)的事件,總數將膨脹至 1.3 億美元(2,000 枚比特幣)。
更多詳情請見下方討論串 👇 pic.twitter.com/RAl3ib67qa
— Galaxy Research (@glxyresearch) 2026 年 8 月 3 日
Coldcard 有一個隨機晶片。只是它不再被呼叫了。
原因小到幾乎令人難以置信。一個建置守衛使用了 #ifndef,它檢查的是某個設定是否存在,而不是它是否被開啟。Coinkite 已將該設定定義為零,表示「關閉」。因為零仍然算作已定義,所以安全檢查通過,建置完成。兩個版本的函數具有相同的簽名,因此看起來沒有問題。
「COLDCARD 上的大部分隨機性來自一個我不知道實際上存在於原始碼庫中的 PRNG,」Coinkite 寫道,指的是偽隨機數生成器——一種產生看似隨機但遵循固定配方從起始值生成的數字的軟體。
以相同的起始值餵入配方,你會得到相同的輸出。每次都是如此。
在執行韌體 4.0.1 至 4.1.9 的 Mk2 和 Mk3 裝置上,該起始值來自晶片的序號及其時鐘。Coinkite 估計由此產生的搜尋空間約為 40 位元。較新的型號混入了一些安全元素熵,將其提升到大約 72 位元。
兩者都不是 128,這是目標。
差距比看起來更重要。位元是指數。128 位元的搜尋空間包含的組合比可觀測宇宙中的原子還多,而且沒有人會去搜尋它。40 位元大約是一兆——這是一個像樣的筆記型電腦可以處理的數字。每失去一個位元,工作量就會減半。
Block 的工程團隊,發布了他們自己的分析,將較新裝置的有效安全元素搜尋空間定為 2^32 個候選項,平均約 2^31 次嘗試。他們對較舊主機板的評估更直接:對於已知的裝置 ID、計時器狀態和呼叫歷史,錢包生成是確定性的。
而確定性與隨機性相反,這對密碼學至關重要。
不是「弱」。是可預測的。
Coinkite 懷疑它是被機器發現的。「我們必須假設有人使用 AI 審查了我們之前版本的韌體,並偶然發現了這個問題,」該公司寫道,並補充說他們最近在相同的程式碼上運行了一個最好的可用 AI 模型,但沒有發現任何問題。「攻擊者和防禦者擁有相同的 AI 工具,但今天它沒有幫助我們,只幫助了壞人。」
所有受影響型號的修復韌體已發布。它不會修復現有的種子;那些錢包必須重新生成並轉移資金。Decrypt 已經報導了在這樣的漏洞利用之後隔離存儲如何改變,並追蹤損失攀升超過1.14 億美元。
熵到底是什麼
熵是衡量攻擊者不知道多少的度量。
換句話說,它基本上就是不確定性,以位元計數。一個位元等於一次硬幣翻轉:有兩種結果,猜測者有一半的時間猜對。十個位元是1,024種結果。每個位元使猜測者的工作量加倍。
比特幣錢包是一個保密的非常大的數字。人們發送硬幣的地址是從它數學推導出來的,而且推導是單向的——你可以從密鑰到地址,但永遠不能返回。
所以每個錢包的安全性取決於一個問題:攻擊者必須嘗試多少個數字?
如果數字是用128位元的熵挑選的,答案是「超過物理學允許的」。如果是用40位元挑選的,答案是「給我一些時間」。
這正是使量子計算威脅值得爭論的屬性——量子機器會攻擊連接密鑰和地址的數學。Coldcard的漏洞從不需要這樣做。它使密鑰在數學介入之前就可猜測。
這就是詞彙變得模糊的地方。偽隨機生成器產生的輸出通過隨機性的統計測試,所以基本上沒有什麼電子表格會標記。該輸出仍然完全由其種子值決定。它看起來隨機但實際上不是。
統計隨機性和密碼學上的不可預測性是不同的屬性,而Coldcard的輸出會順利通過第一個測試,同時完全失敗第二個。
真正的隨機性必須來自物理噪聲:電路中的電氣抖動、熱波動、放射性衰變。這就是Coldcard上硬體晶片的用途。那就是構建標誌斷開的晶片。
然後Luke Dashjr提出了骰子
當用戶爭先恐後地重新生成種子時,許多人採取了明顯的低技術修復。Coldcards允許你擲實體骰子並將結果作為熵輸入。Coinkite自己的指導將使用至少50次獨立、私密的骰子擲出的種子視為不受該漏洞影響。
這聽起來可能很愚蠢,但該公司實際上銷售一袋「100個可愛的小骰子」以使整個過程對你更容易。
7月31日,比特幣核心開發者Luke Dashjr 發布警告:「不少人建議或使用骰子來減輕Coldcard漏洞的影響。請注意,普通骰子並非設計用於加密安全。如果你打算這樣做,可能應該購買精確的賭場骰子。即便如此,還需要另一個熵來源。」
比特幣推特對此並不冷靜。
「哈哈,現在連骰子都不能滾了,」一位用戶寫道。「自我保管完了……」另一位問他是否應該僱用患有帕金森氏症的人來擲骰子。(不太友善。)
我應該僱用患有帕金森氏症的人來擲骰子嗎?
— Murern (@Bitcoin_Murern) 2026年7月31日
可能最有用的回覆帶來了算術。開發者Justin Sharp計算了壞骰子確切會讓你損失多少:
「過度殺傷。完美的d6每次擲出提供2.585位元。一個明顯偏差的骰子,例如一個面出現的機率是20%而不是16.7%,仍然提供約2.55位元。在99次擲骰中,這相當於約256位元和約252位元熵之間的差異。」
256位元中的4位元。這就是一個明顯不公平的骰子的全部懲罰。
Dashjr說便宜骰子有可測量的偏差並沒有錯——注塑成型的點數從每個面移除略微不同數量的塑膠,這正是賭場使用填充式精密骰子的原因。他對物理學是對的,但對風險的評估是錯的。從256位元中損失4位元讓你剩下252位元。Coldcard的漏洞讓用戶只剩下40位元。
然而,他的建議中隱藏著一個更尖銳的論點,而這與製造公差無關。這是關於不要信任任何單一來源。Coldcard的失敗不在於其熵有輕微偏差——而在於一個組件默默地停止貢獻,而沒有什麼捕捉到這一點。
該怎麼做
如果你在受影響的Coldcard上生成了種子,而沒有使用骰子擲骰(真的)或強BIP-39密碼短語,那麼該種子已受到危害。
更新韌體,生成新種子,驗證指紋,發送測試交易,然後轉移所有內容。Coinkite的公告逐型號說明了流程。匯出的種子會帶著缺陷——將壞種子移到不同的錢包應用程式並不能解決任何問題。
對其他人來說,重點不在於硬體錢包有缺陷或骰子是陷阱。
而是「隨機」是一種聲明,而聲明需要被檢驗。Coldcard 的原始碼一直以來都是公開的。預期的硬體隨機數生成器就明擺在二進位檔案中。審查者確認了它的存在,卻從未確認種子生成器是否真的呼叫了它。
八年的審計檢查了正確的程式碼。卻沒有人檢查它是否真的被執行。







