想像一下大樂透。假如每次選號,系統都偷偷從同一個小箱子裡抓球,而不是從全台灣各地的彩票中心隨機配發,那中獎機率會怎麼樣?答案很簡單——如果你碰巧知道那個箱子的種子是什麼,基本上等於提前看了答案。
這就是「Ill Bloom」漏洞在錢包世界裡做的事情。Coinspect 團隊發現,某些錢包在生成助記詞(就是那串 12 或 24 個單字,開立錢包時出現的那一串字)時,使用的隨機數生成器不夠隨機。也就是說,助記詞的組合空間實際上比理論上小很多。如果攻擊者知道某個錢包的隨機數來源有問題,他們就能大幅縮小暴力破解的範圍,從幾百億種可能變成幾十萬種,這對電腦來說根本不是什麼大問題。
助記詞的隨機性,到底差在哪裡?
要理解這件事,得先搞清楚助記詞背後的數學。理論上,一組 24 個單字的助記詞,根據 Bitcoin Improvement Proposal 139 的標準,空間大小約是 128 位元,也就是 2^128 種組合。這個數字有多大?大約是 340 undecillion,寫成數字是 340 後面加 36 個零。用白話講,就算你用世界上最快的超級電腦一直猜,猜到你孫子孫子的孫子出生,可能都猜不完。
但「Ill Bloom」漏洞讓事情變了調。當隨機數生成器有缺陷時,它產生的數值其實落在一個遠小於 2^128 的範圍內。根據 Coinspect 的報告,這個漏洞影響了多個區塊鏈上的錢包,雖然還沒看到大規模的實際攻擊案例,但理論上的風險已經存在。
問題在於,很多錢包開發者只是直接用了現成的隨機數函數,而這些函數在某些環境下可能因為時間戳記、硬體隨機數源不足,或者其他因素,導致生成的數字不夠隨機。這就像是銀行金庫的鎖,理論上有幾十億種組合,但實際上鎖匠只要試幾千把鑰匙就能開。
這跟你我有什麼關聯?
如果你最近才有在建立新的錢包,或者打算把資產從交易所轉到冷錢包,那這件事值得你多看一眼。Coinspect 建議受影響的錢包開發者盡快更新,而用戶則應該檢查自己的錢包是否是受影響的軟體。
不過也不必過度恐慌。截至目前為止,還沒有公開報告顯示有人利用這個漏洞進行大規模攻擊。漏洞被發現本身就是一種好事——在攻擊者發現之前,有安全團隊幫你擋住了。
如果我現在要重新建立錢包,我會優先選擇那些有明確安全審核記錄、開源且社群持續維護的錢包,而不是隨手下載一個看起來很順眼的。另外,助記詞做好備份並存在安全的地方,這件事情永遠不會變——不管有沒有漏洞,這都是你的錢包安全的第一道防線。
延伸思考與常見問題
什麼是助記詞(mnemonic phrase)?為什麼它這麼重要? 助記詞是一串由標準詞庫(通常是 2048 個單字)組成的文字,用來生成你的私鑰。擁有這串字等於擁有錢包中所有資產的控制權,所以它通常被稱為「錢包的鑰匙」。
Bloom filter 和「Ill Bloom」漏洞有什麼關係? 這個漏洞的名稱源自 Bloom filter(一種用於高效查詢的數據結構),當隨機數生成器產生的值落在 Bloom filter 中預設的字元範圍時,會導致助記詞的實際組合空間大幅縮小。
Coinspect 是什麼公司?他們怎麼發現這個漏洞的? Coinspect 是一家專注於加密貨幣安全的安全顧問公司,他們在審查多個錢包軟體的隨機數生成邏輯時,發現了這個系統性的漏洞,並主動公開了相關資訊。