比特幣硬體錢包安全性:從 Coldcard 种子生成漏洞中吸取的教訓

比特幣硬體錢包安全性:從 Coldcard 种子生成漏洞中吸取的教訓

2026/08/09 08:05:06

自訂圖片

Coldcard 种子生成漏洞暴露比特幣錢包安全弱點

2021 年 3 月,Coinkite 的 Coldcard 比特幣硬體錢包進行了一次固件更新,將種子生成從預期的 STM32 硬體隨機數生成器重定向至確定性軟體偽隨機數生成器。該錯誤直至 2026 年 7 月下旬才被發現,當時攻擊者以協調的方式掃掠了超過 1,000 個比特幣地址,移除了約 1,082 至 1,367 BTC,當時價值介於 7,000 萬至 8,800 萬美元之間。Galaxy Research 於 7 月 30 日繪製了最初 41 分鐘內掃掠的 1,196 個地址,並後續識別了其他波次,擴大了觀察到的總數。Block 的工程團隊與獨立研究人員將根本原因追溯至一個預處理器宏檢查,該檢查將 libngu 綁定至 MicroPython 的 Yasmarang 回退機制,而該機制從晶片的唯一 ID 和計時器寄存器初始化,而非新熵。
 
Coinkite 確認該問題影響 Mk2、Mk3、Mk4、Mk5 和 Q 型號,並於次日發布緊急固件,同時指示用戶生成全新的助記詞,因為更新現有固件無法修復已受損的恢復短語。此事件重新引發對硬體錢包如何獲取和驗證熵值、開源審查的實際限制,以及即使在氣隙設備中仍存在的殘餘風險的關注。Coldcard 的助記詞生成缺陷表明,硬體錢包仍依賴於熵源的正確固件整合;一個持續五年的單一配置錯誤,可使有效隨機性遠低於標準 BIP-39 助記詞的 128 位目標,使攻擊者能在離線狀態下重建私鑰,導致大規模盜竊,而一旦助記詞本身薄弱,任何物理隔離都無法阻止。

2021 年固件遷移如何禁用了 Coldcard 的硬體隨機數生成器

在 2021 年 3 月,Coinkite 將 Coldcard 的橢圓曲線運算遷移至 Bitcoin Core 的 libsecp256k1,並引入了 libngu MicroPython 函式庫。種子生成代碼從原本使用板載特定的 ckcc.rng_bytes 調用(該調用正確啟用了 STM32 硬體真隨機數生成器),改為使用 ngu.random.bytes。生產板的配置將 MICROPY_HW_ENABLE_RNG 定義為零,因為 Coinkite 提供了自己的硬體 RNG 封裝。libngu 的預處理器檢查僅測試該宏是否被定義,而非其值是否為非零。因此,編譯成功並綁定至 MicroPython 的軟體 Yasmarang 回退機制。該回退機制僅初始化一次,使用晶片的 32 位唯一 ID 與 SysTick 和 RTC 時間寄存器進行異或運算,隨後產生一個確定性序列,且不再收集任何額外熵。
 
在運行 4.0.1 至 4.1.9 版本的 Mk2 和 Mk3 設備上,所提供的路徑幾乎沒有加密熵。後來,Mk4、Mk5 和 Q 固件混合了安全元件的值,但在哈希後僅保留四個位元組,並用其重新種子化單一 32 位狀態字,導致有效熵僅約 72 位,低於預期的 128 位。預期的硬體 RNG 代碼雖仍存在於二進制文件中,但從錢包生成路徑中從未被觸及。現有的代碼審查確認了 TRNG 實現的存在,但未驗證從種子生成調用點到最終符號的端到端解析。因此,此回歸問題在超過五年時間內未被發現,直至被主動利用後才被迫公開披露。

效果與結果

實際後果是,攻擊者若能限制或取得裝置的 UID、近似開機時間和先前的 RNG 呼叫歷史,即可離線重新生成候選輸出流。每個候選流均可擴展為 BIP-39 种子,推導出地址,並與公開區塊鏈進行比對。對於受影響最嚴重的 Mk3 裝置,Coinkite 評估其有效搜尋空間約為 40 位;Block 的分析則指出,後續型號的條件上限遠低於密碼學安全水平。
 
對弱輸出進行雜湊或套用 BIP-39 校驗和無法增加可能種子的數量。一旦找到匹配的地址,對應的私鑰便能控制所有後續的派生,從而無需物理接觸設備即可完全盜取資金。因此,攻擊面取決於恢復短語本身,而非目前儲存它的硬體。將受影響的種子還原至已修補的固件或任何其他錢包,僅僅是轉移了相同的弱密鑰。

Galaxy Research 繪製 7 月 30 日的掃盤及後續波段

於 2026 年 7 月 30 日,一名身份不明的運營者在 41 分鐘內抽乾了 1,196 個比特幣地址,移除了價值約 7,020 萬美元的 1,082.65 BTC。Galaxy Research 透過獨特的手續費率 30 sat/vB 以及無漲跌幅輸出的模式,識別出該地址群組,這些模式與正常的鏈上活動明顯不同。該公司後續記錄了另外兩波交易,使累計觀察到的總量增至 4,585 個地址中的 1,367.05 BTC,按當時價格計算約為 8,860 萬美元。Galaxy 警告稱,僅靠鏈上啟發式方法無法從計算上證明每個地址均源自 Coldcard 弱熵,但 Block 的根本原因分析所提供的時間聚類與技術關聯,使此關聯極有可能成立。
 
該公司向調查人員和合規服務報告了約 600 個懷疑由攻擊者控制的地址。目前尚未公開重建任何特定受害者的助記詞,但掃掠的規模表明,一旦已知或近似所需的設備狀態限制,降低的熵值已足以進行實際的離線枚舉。第一波攻擊的速度凸顯了此漏洞無需與實體錢包進行即時互動。一旦能夠生成候選助記詞並與已知有資金的地址進行驗證,攻擊者便只需簽署並廣播交易。
 
Coinkite 發出建議後,後續的交易波浪持續出現,表明並非所有持有者都已完成遷移。Galaxy 指出,交易模式更能夠識別操作者,而非盜竊行為本身,因為合法所有者合併幣種也會產生相同的鏈上簽名。在過去三十天內,沒有任何先前活動具有相同的費用和漲跌幅特徵,這強化了該事件屬於單一活動而非用戶自發行為的歸因。因此,此事件既體現了區塊鏈分析在快速檢測方面的強大能力,也揭示了當底層加密弱點源於離線時,這些工具的局限性。

Coinkite 的緊急應對與固件熱修補

Coinkite 於 2026 年 7 月 31 日發布了首份公開公告,並在隔日經過進一步分析後擴大了範圍。針對所有受影響的型號,已發布修復的固件版本:Mk2 和 Mk3 為 4.2.0,標準版 Mk4 和 Mk5 為 5.6.0,標準版 Q 為 1.5.0Q,相應的 Edge 版本為 6.6.0X 和 6.6.0QX。公司已停止發運存在漏洞的庫存,並銷毀剩餘庫存。官方指引強調,安裝新固件無法修復現有的種子;必須在已修復的設備上生成全新的種子,並在驗證新備份和收款地址後遷移資金。
 
Coinkite 評估受影響的 Mk3 金鑰的有效熵約為 40 位,而修復前的 Mk4、Mk5 和 Q 金鑰約為 72 位。該公告明確排除了使用至少 50 次公平、獨立且私密的骰子擲骰所生成的金鑰,因為僅骰子貢獻就已提供所需的 128 位,並與裝置輸出進行雜湊運算。公司亦承認強大且獨特的 BIP-39 密語可作為額外防禦層,防止攻擊者僅憑恢復的種子詞語訪問資金;然而,公司仍建議全面遷移,因為底層種子仍屬薄弱。
 
遷移說明強調冷靜且按順序進行驗證:確認固定韌體版本、生成新的助記詞、記錄並核對備份與指紋、發送一小筆測試交易,然後再轉移剩餘資金,並在確認前保留舊備份。僅使用 Mk2 或 Mk3 裝置的用戶,獲得了專門的單一裝置程序,該程序在舊助記詞與新助記詞之間交替進行。Coinkite 亦指出,TAPSIGNER、OPENDIME 和 SATSCARD 產品使用獨立的代碼庫,因此不受影響。此回應展現了開源韌體模型的優勢——能夠快速修補漏洞,同時也體現了向分散的用戶群體傳達緊迫性的實際困難,這些用戶可能早在數年前就生成了助記詞,之後便將裝置置於離線狀態。

熵估計:為何 40 位或 72 位無法達成 BIP-39 目標

一個標準的12詞BIP-39助記詞旨在提供128位的安全性。當底層熵源在Mk3設備上降至約40位,或在後續型號上降至72位時,組合空間便能透過現代計算資源進行搜尋。Block的分析顯示,一旦MicroPython Yasmarang備用方案由固定或受限值初始化,便會產生完全確定的流。在Mk4及後續設備上,安全元件的貢獻僅減至單一狀態字的32位重新種子;後續輸出仍維持在最多2^32個流的範圍內,針對任何固定的先前狀態和呼叫歷史。
 
該輸出的確定性雜湊無法擴大其家族範圍。因此,獲得或近似必要初始化參數的攻擊者可以離線列舉候選項,推導出相應的地址,並與公開的 UTXO 集合進行比對。成本主要來自地址推導,而非純粹的隨機猜測,但在觀察到的盜竊規模下,此方法仍屬可行。Coinkite 的初步數據與獨立評估一致,表明殘餘熵不足以長期安全地自行保管較大餘額。
 
這個差距並非理論上的;7 月 30 日的掃描及後續波浪提供了實證,證明減少的空間已被利用。即使對於後續型號的較高 72 位估計值,其保證金仍遠低於使用者選擇硬體錢包以避免軟體錢包熵失敗所期望的安全水準。因此,此事件為未來硬體錢包的設計提供了一個具體的校準點:任何可能在建置時靜默回退至由非密碼學裝置狀態啟動的軟體 PRNG 的路徑,都必須在建置階段即被拒絕,而非事後審查。
 

擲骰子和密碼短語作為部分緩解措施

Coinkite 的建議明確區分了那些通過設備專用介面輸入了至少 50 次公平、獨立、私密的骰子擲骰結果的種子。在這些情況下,僅憑骰子的熵值就已達到或超過 128 位的目標,並在最終顯示種子詞之前與設備的弱輸出結合。只要擲骰結果從未被記錄或觀察,所產生的種子即被視為不受 RNG 缺陷影響。少於 50 次擲骰,或對擲骰次數或隱私性有任何疑慮,則該種子將被歸類為有風險。
 
一個強大且獨特的 BIP-39 密語會建立一個獨立錢包,僅靠助記詞無法訪問;攻擊者必須同時恢復該密語。短小、常見或重複使用的密語不符合條件。即使存在強大的密語,Coinkite 仍建議最終遷移,因為底層助記詞在密碼學上仍較弱,且一旦密語洩露,便會成為單一故障點。這些緩解措施體現了分層防禦的價值,但也顯示其不完整性。擲骰子需要嚴格的物理操作流程,但許多用戶從未執行過。
 
密碼短語需要仔細地單獨備份並精確回憶;一個打字錯誤就會產生一個不同的、空的錢包。這兩種措施都無法恢復固件未能提供的熵,也無法保護繼續依賴相同弱化隨機數路徑的高級設備功能。因此,僅依賴設備默認種子生成的用戶面臨了縮小搜索空間的全部影響,而那些已採用補充熵或密碼短語的用戶則獲得了時間,但並未獲得永久性的安全。

多重簽名設定與共享風險的界限

當多重簽名共識中的每個密鑰均在受影響的 Coldcard 上生成時,攻擊者只要恢復了弱種子,即可花費整個策略。若為 2-of-3 的配置,且三個種子中有兩個來自有漏洞的固件,一旦這兩個種子被獲知,攻擊者仍可達到花費門檻。唯有保留至少一個不受影響集合之外的強密鑰的配置,才能確保安全性。Liana 及其他基於 miniscript 的錢包引入了額外的路徑考量:若主要路徑僅需弱 Coldcard 密鑰即可滿足,則該路徑立即可被花費;而由時間鎖保護的恢復路徑,僅在鎖定有效期間受到保護。花費 SegWit 錢包時,首次交易會公開完整描述符,若所有密鑰均為弱密鑰,則可能導致所有地址被重建。
 
Taproot 將資訊揭露限制在所使用的路徑上,縮小了影響範圍,但仍會暴露參與該路徑的弱密鑰。實際的教訓是,即使在多重簽名方案中,硬體多樣性和獨立的熵源依然至關重要。依賴相同型號和固件版本的多個裝置,反而會集中風險而非分散風險。混合使用 Coldcard 密鑰與其他廠商的密鑰,或使用骰子生成的種子的用戶,仍保留了部分保護;而那些標準化使用單一易受攻擊產品線的用戶則發現,一旦熵故障被利用,門檻配額並無法提供防禦。因此,此事件強化了長期以來對異質密鑰來源的建議,並證明此建議並非僅屬理論。

開源審查失敗與 AI 在發現中的作用

Coldcard 固件長期以開源授權發布,允許獨立審查。然而,RNG 集成錯誤仍跨越多個發行週期並逃過外部審查。現有的評審確認二進位檔中存在預期的硬體-RNG 實作,但未確認錢包生成的呼叫點實際上是否達到該實作,而非使用 MicroPython 回退機制。預處理器防護使用了 #ifndef 而非值檢查,導致零定義被靜默通過。Coinkite 指出,即使公司自身最近進行的 AI 協助程式碼審查也未能發現此問題,而發現此弱點的攻擊者或研究人員可能受益於類似工具。因此,此事件突顯了原始碼存在與跨子模組邊界驗證執行時行為之間的持續差距。
 
五年延遲也說明了檢測靜默熵故障的困難性。與會立即導致崩潰或無效簽名的緩衝區溢出或簽名漏洞不同,弱 PRNG 會持續產生看似合理的種子,並通過內部一致性檢查。只有在後期對區塊鏈進行離線枚舉時,才會暴露出此缺陷。未來的審查流程需要明確的端到端熵審計,強制構建系統拒絕任何備用路徑,並在受控條件下測量輸出的統計品質。開源仍然是建立信任的必要條件,但 Coldcard 的案例表明,若未針對最關鍵的安全代碼路徑進行目標驗證,開源並非充分條件。

遷移實際操作與匆忙轉帳的風險

Coinkite 多次強調,倉促遷移可能產生新的損失途徑,其風險超過原風險。用戶被指示在設備上驗證固件版本、僅在更新後生成新助記詞、離線記錄備份和指紋、在設備螢幕上確認收款地址,並在轉移大部分資金前先轉移一小筆測試數量。單一設備用戶需額外執行交替使用舊助記詞和新助記詞的步驟,並在最終確認前保留兩份備份。操作順序中的任何錯誤、任何輸入錯誤的地址,或任何過早刪除舊備份,都可能導致資金永久遺失。
 
公司還警告不要將受影響的助記詞恢復到新設備或軟體錢包中,因為此弱點會隨著助記詞本身傳播。受影響錢包的數量與持續的資金轉移造成了時間壓力,與需要謹慎程序的需求產生衝突。許多長期持有者多年前已生成助記詞,將設備離線存儲,僅保留紙本備份。重構生成時使用的精確固件版本並非總是一帆風順。因此,該建議在緊迫性與謹慎性之間取得平衡,敦促立即處理未受保護的助記詞,同時強調必須執行驗證步驟以防止自損。速度與安全之間的張力是任何大規模助記詞遷移的固有特徵,未來在硬體錢包事件中仍將再次出現。

硬件錢包在 Coldcard 事件後

Coldcard 的漏洞出現於此前軟體和硬體環境中多次出現熵值薄弱的事件之後,其中包括 Ill Bloom 的研究,該研究將另一個軟體錢包 PRNG 問題與超過 500 萬美元的多鏈損失聯繫起來。硬體錢包長期被宣傳為解決軟體熵失敗和惡意軟體的最終方案。2026 年的事件表明,防護邊界僅與實現熵路徑的固件一樣堅固。依賴不同安全元件、不同隨機數架構或不同審查流程的競爭對手尚未被牽涉,但整個市場現在必須面對類似整合錯誤可能出現在其他地方的可能性。對獨立熵值測量工具、RNG 呼叫圖的正式驗證,以及標準化擲骰子或外部熵介面的需求很可能會增加。
 
自托管支持者面臨著類似的挑戰。此事件已引發公眾討論,長期持倉者是否應考慮將部分資產分散存儲,包括使用受監管的產品。同時,固件的快速發布和技術披露的透明度,再次證明了開放式硬體生態系統的優勢——它們能在數小時內而非數月內作出回應。整體影響是對風險進行更現實的評估,而非完全拋棄硬體錢包。將設備視為層級化安全模型中的一環(該模型包含外部熵、密碼短語和多重簽名多樣性)的用戶,其保護強度高於將任何單一產品視為絕對保障的用戶。

未來硬體錢包設計的經驗教訓

建置系統必須在用於產生種子的精確呼叫點強制要求經過驗證的硬體 RNG;靜默回退至以裝置元資料為種子的軟體 PRNG 是不可接受的。預處理器檢查應測試熵功能的啟用狀態,而非僅檢查定義。安全元件的貢獻應保留完整熵值,而非在重新種子化弱狀態機前被截斷為 32 位。在真實開機條件下測量所產生種子統計品質的端到端測試,應成為標準的發布準則。
 
文件必須明確指出,種子生成時的固件版本(而非當前安裝的版本)決定暴露風險。最終,用戶界面應顯示熵源狀態,並鼓勵或要求為高價值錢包補充使用骰子或外部熵源。這些設計改進雖屬漸進式,但本可防止 Coldcard 的回退問題,並降低其他產品出現類似故障的機率。

現有 Coldcard 用戶的實際步驟

在 Mk2 或 Mk3 固件 4.0.1–4.1.9 版本,或 Mk4、Mk5 或 Q 固件於 7 月 31 日修復版本之前生成種子的使用者,除非能確認至少 50 次私有骰子擲骰或使用強大的唯一密碼短語,否則應將種子視為已受損。請從 Coinkite 官方下載頁面安裝相應的修復固件,在更新後的設備上生成新的種子,離線驗證備份與指紋,確認設備螢幕上的收款地址,發送一小筆測試交易,然後才遷移剩餘餘額。
 
請保留舊備份,直到新錢包顯示完整的已確認數量。即使用戶從未在受影響的裝置上生成助記詞,但將受影響的助記詞匯入其他錢包,仍必須進行遷移,因為弱點存在於助記詞本身。多重簽名參與者應根據每個密鑰的生成裝置和固件獨立評估。官方公告與技術背景資料仍為型號特定說明的權威參考依據。

比特幣自託管實踐的更廣泛影響

Coldcard 場景強調,自持保管是一個持續的過程,而非一次性購買硬體設備。熵品質、固件來源、備份驗證和密鑰多樣性都需定期重新審視。鏈上分析能迅速偵測大規模濫用行為,但個別持有者仍須負責任監控官方渠道並根據建議採取行動。獨立硬體錢包固件的安全審計市場很可能擴大,同時對允許用戶在不暴露其助記詞的情況下測量自身助記詞有效熵的工具需求也將上升。
 
同時,此事件並未否定離線密鑰儲存的核心價值;它僅表明,在密鑰生成時,離線邊界必須由經過驗證的加密強度來補充。那些結合了修補硬體、額外熵、密碼短語和多重簽名安排的持有者,相比僅依賴單一層級的人,能以更高的保障掌控自己的密鑰。
 
KuCoin 正慶祝成立 9 週年,推出專屬平台活動,提供獨家獎勵、交易活動與限時優惠。不要錯過參與並享受這家交易所邁入第九年成長與創新成果的機會。立即前往官方活動頁面:
 

自訂圖片

常見問題

哪些 Coldcard 固件版本受到種子生成缺陷的影響?

運行版本 4.0.1 至 4.1.9(含)的 Mk2 和 Mk3 裝置所產生的助記詞,有效熵約為 40 位。在標準版本 5.6.0 之前或 Edge 版本 6.6.0X 之前的 Mk4 和 Mk5 裝置,以及在標準版本 1.5.0Q 之前或 Edge 版本 6.6.0QX 之前的 Q 裝置,所產生的助記詞約有 72 位熵。風險取決於建立助記詞時的固件版本,而非目前安裝的版本。已修復的版本可修正新助記詞的生成,但無法修復現有的弱助記詞。官方下載頁面列出了每個型號和發布軌跡的修正版本。在這些範圍之外生成助記詞的使用者,或使用至少 50 次私有骰子擲骰的使用者,不屬於主要風險類別。
 

更新現有 Coldcard 的固件會保護已生成的助記詞嗎?

不,漏洞存在於用於生成助記詞的熵值中。安裝固定韌體僅改變未來助記詞的生成路徑。將受影響的恢復短語還原至已修復的韌體或任何其他錢包,僅會將相同的弱密鑰繼續傳遞下去。唯一可靠的解決方法是在固定韌體上生成全新的助記詞,並在完整驗證新備份和收款地址後遷移資金。Coinkite 的公告明確指出這一點,並提供針對多設備和單設備情境的逐步遷移程序。
 

使用擲骰子生成的助記詞是否仍然安全?

透過裝置官方介面輸入至少 50 次公平、獨立、私密的骰子擲骰結果,即可單憑骰子貢獻獲得足夠的熵。裝置會將這些擲骰結果與其自身的(弱)輸出進行雜湊,因此只要擲骰結果從未被觀察或記錄,最終的種子便能達到或超過 128 位的目標。少於 50 次擲骰,或對擲骰次數或私密性存在任何不確定性,都會使種子重回高風險類別。骰子擲骰無法保護繼續依賴相同隨機數路徑的進階裝置功能,但能保護種子詞本身免受此特定缺陷影響。
 

BIP-39 密語如何改變風險狀況?

一個強大且獨特的 BIP-39 密語會建立一個獨立的錢包,無法僅憑助記詞推導出來。即使攻擊者僅恢復了弱勢助記詞,若未發現密語,仍無法存取受密語保護的資金。簡短、常見、有規律或重複使用的密語無法提供有效的保護。即使使用強大的密語,Coinkite 仍建議最終進行遷移,因為底層助記詞在密碼學上仍存在缺陷,而密語本身成為一個關鍵秘密,必須單獨備份,且絕不可在不可信的裝置上輸入。密語與裝置的 PIN 碼無關。
 

如果部分密鑰來自受影響的 Coldcards,多重簽名用戶應該怎麼做?

根據產生該金鑰的裝置和固件評估每個金鑰。若受影響的金鑰數量達到或超過任何路徑的支出閾值,則該路徑將立即面臨風險。包含兩個弱勢 Coldcard 金鑰的 2-of-3 組合,可能被恢復這兩個助記詞的攻擊者花費。由主動時間鎖保護的恢復路徑,在鎖定到期前仍較為安全。使用者應在固定固件或未受影響的裝置上產生替代金鑰,建立新的多重簽名政策,並在驗證新描述符和地址後遷移資金。異質化的金鑰來源可降低單一固件缺陷導致整個多簽群組受損的機率。
 

攻擊是否仍在進行?持倉者應如何監控後續的掃蕩?

Galaxy Research 觀察到在 7 月 30 日的首次掃描後出現了多波活動,並報告稱用戶遷移期間活動持續進行。透過公共探索者和分析服務,可以監控具有特定手續費率和漲跌幅行為的鏈上模式,但個別持有者不能僅依賴事後檢測。最有效的保護方式是立即遷移任何未受保護的助記詞。官方 Coinkite 頻道和可信的研究帳戶仍是獲取有關額外波次或新識別地址群組更新的主要資訊來源。
 
免責聲明:本內容僅供資訊參考,不構成投資建議。加密貨幣投資存在風險,請自行進行研究(DYOR)。
 

免責聲明: 本頁面經由 AI 技術翻譯,旨在方便您的閱讀。欲獲取最準確資訊,請以原始英文版本為準。