冷錢包不是唯一防線:從真實案例看懂「隨機數漏洞」與你的資產安全

近期資安事件揭露,若隨機數產生機制出現漏洞,即使私鑰從未離開裝置,資產仍可能面臨風險。究竟問題出在哪裡?又該如何保護自己的數位資產?我們將透過一篇文章帶你看懂。
冷錢包不是唯一防線:從真實案例看懂「隨機數漏洞」與你的資產安全

許多人把加密貨幣從交易所轉進硬體冷錢包,降低平台倒閉、帳號遭入侵等風險。但冷錢包的安全,不只取決於私鑰是否離線保存,還取決於助記詞產生時是否真的無法預測

如果裝置使用了有缺陷的隨機數,即使私鑰從未離開冷錢包,攻擊者仍可能從遠端推算出來。最近的真實資安事件顯示,某些硬體錢包曾因韌體程式錯誤,沒有正確使用硬體亂數,反而用了可被重現的軟體亂數。

這不是比特幣或助記詞設計被破解,而是錢包在「發鑰匙」的那一刻就出了問題。

🚨只要助記詞可能由有問題的隨機數產生,就必須建立全新的助記詞,並遷移資產。

只更新韌體、換裝置或匯入舊助記詞,都不能修復已經不安全的錢包。


為什麼隨機數這麼重要?

要看懂這類事件,先從助記詞是怎麼來的開始。

可以把助記詞想成一把密碼鎖。可能的密碼組合越多,攻擊者就越難猜中。

正常的 24 個助記詞,應該來自 256 位元的隨機資料,約有:

  • 2^256 種可能,約等於 1 後面有 77 個零

這個數量大到幾乎不可能靠暴力破解猜中。

但如果產生助記詞的隨機來源有問題,原本天文數字般的組合,可能縮小到數十億,甚至更少。對現代電腦而言,這就可能變成可以嘗試的範圍。


三種常見的隨機數:差別在哪裡?

隨機數就像錢包用來「抽密碼」的方式。抽的方式不同,安全度差很多。

1. 硬體真隨機數(TRNG)—— 真的在擲骰子

裝置裡有專門的零件,從電路雜訊這類物理現象取得隨機數。這種亂數沒有規律,也無法重現。只要取到足夠的 256 位元,可能組合就高達 2^256

2. 密碼學安全偽隨機數(CSPRNG)—— 用一個好種子展開

它是電腦演算法,但專為安全用途設計。只要一開始的「種子」真的隨機且保密,後續產生的數字就同樣難以預測,也能達到 2^256

3. 一般軟體偽隨機數(PRNG)—— 看起來隨機而已

這是遊戲、模擬常用的亂數,沒有考慮攻擊者。它常依賴裝置編號、時間這類可以被推測的資料,只要推出起點,就能把後面的數字全部重現。如果只剩 32 位元的未知資料,可能組合就只剩 2^32(約 42.9 億)—— 電腦很快就能試完。

所以重點不是「軟體產生的亂數都不安全」。CSPRNG 很安全,真正危險的是把遊戲等級的 PRNG 拿來產生私鑰。

也要注意:把弱亂數再拿去加密運算(如 SHA-256),只是把同一副牌重新洗過,牌組並不會變多


漏洞是怎麼發生的?

三種亂數的差別這麼大,那麼一台強調安全的錢包,怎麼會用到最不該用的那一種?答案往往不是硬體壞掉,而是程式接錯線。

在最近的真實案例中,硬體亂數晶片本身沒有壞掉,問題出在韌體接錯了程式:

  1. 裝置原本有安全的硬體亂數功能。
  2. 韌體更新後,產生助記詞的程式誤用了普通軟體亂數。
  3. 這個軟體亂數只依賴裝置編號、開機時間和計時器等可被推測的資料。
  4. 攻擊者因此能列出可能的助記詞,再利用公開的錢包地址確認是否猜中。

這就是「看起來很隨機」與「真的無法預測」之間的差別。更麻煩的是,這種問題完全發生在裝置內部,畫面上看不出任何異常。

那麼,身為一般使用者,我們能做什麼?


用物理骰子增加隨機性

第一個方法,是不完全把隨機數交給裝置,而是自己動手參與。

如果裝置支援使用者輸入物理亂數,可以使用公平的六面骰。每次擲骰約能提供 2.585 位元的隨機性。

  • 至少擲 51 次:可超過 128 位元的理論隨機性。
  • 建立 24 字助記詞:建議至少擲 99 次。

擲骰時要注意:

  • 每次都要真正重新擲骰,不要輸入自己想的數字或固定規律。
  • 不要錄影、直播或使用連網工具記錄結果。
  • 不要讓其他人看到完整的擲骰紀錄。

擲骰可以降低裝置亂數失效的風險,但不是萬靈丹。如果已經發生資安事件,或不確定當初是否擲了足夠次數,仍應建立新助記詞並遷移資產


Passphrase 是額外防線,不是修復工具

除了自己擲骰,另一個常被提到的保護手段是 Passphrase。但它的作用很容易被誤解。

BIP-39 Passphrase 常被稱為「第 25 個單字」。它可以讓同一組助記詞產生另一個錢包,增加攻擊者破解的難度。

使用時要注意:

  • 使用夠長、難猜、沒有重複使用過的內容。
  • 與助記詞分開保存。
  • 每次輸入後都核對錢包指紋或地址;一個字打錯,就會進入不同的錢包。
  • 一旦遺失,就可能永久失去資產。
  • 它可以增加保護,但不能修復原本隨機性不足的助記詞。發生事件後仍應遷移。

錢包開發團隊應該怎麼避免?

使用者能做的事終究有限,這類問題的根源還是在裝置端。了解這些原則,也能幫你判断一家廠商值不值得信任:

  • 失敗就停止:硬體亂數功能異常時,禁止繼續產生助記詞,更不能偷偷改用普通軟體亂數。
  • 確認實際使用正確的亂數來源:不能只確認安全程式存在,還要測試助記詞產生流程真的有使用它。
  • 預設採用多個獨立亂數來源:避免單一來源失效就讓整個錢包失去保護。
  • 持續測試:每次韌體或依賴套件更新後,都應重新測試完整流程。

懷疑受影響時,一定要遷移

不過,廠商修好了程式,不等於你手上的錢包就安全了。

更新韌體只能確保之後新產生的助記詞比較安全,無法修復舊助記詞。把舊助記詞匯入新裝置,也只是把同一把可能已被猜中的鑰匙搬到別處。

建議依序處理:

  1. 停止把新資產轉入舊錢包。
  2. 從官方管道確認安全公告並更新韌體。不要點擊陌生私訊或廣告中的「緊急修復」連結,也不要向任何人提供助記詞。
  3. 產生一組全新的助記詞。不要還原或重複使用舊助記詞。
  4. 備份並重新確認。重新開機後,核對錢包指紋或收款地址是否一致。
  5. 先進行小額測試。確認新錢包能正常收款與恢復。
  6. 把剩餘資產完整遷移到新錢包。確認交易完成後,永久停用舊錢包。
  7. 如果使用多簽錢包,逐一替換可能受影響的金鑰。

⚠️不要因為設定過 Passphrase 或做過幾次擲骰子,就直接認定安全。只要不確定當時的強度、次數或保密性,就應視為可能受影響並完成遷移。


結語

回到最初的問題:有了冷錢包,是不是就萬無一失?

冷錢包可以有效降低私鑰外洩風險,但不是「萬無一失」。真正安全的做法是:

  • 確認助記詞來自安全、足夠的隨機數。
  • 正確管理助記詞、Passphrase 與備份。
  • 一旦懷疑亂數產生流程有問題或是嚴重的安全通報,立即在安全的環境建立新助記詞並完成資產遷移。

最重要的是:更新韌體不等於修復舊助記詞。只要舊助記詞可能不安全,就一定要換新並遷移資產。

推薦文章