比特幣助記詞可以自己挑 12 個單字嗎?

比特幣助記詞可以自己挑 12 個單字嗎?的文章封面插畫

平常設定密碼時,人們常把熟悉的詞重新排列,再加上一點只有自己知道的變化。第一次建立比特幣錢包,看到系統交出 12 或 24 個助記詞,很自然會想到:如果改成自己熟悉、又看似冷門的單字,是否更好記也同樣安全?

不過,常見助記詞的用途不是讓人創作一句祕密口令。以廣泛使用的 BIP39 格式為例,這些單字是電腦產生的隨機資料經過編碼後,轉成方便抄寫的形式。自行挑詞會把原本龐大的可能範圍,縮成充滿人類習慣的少數組合。

助記詞把亂數翻成可抄寫的單字

BIP39 使用一份包含 2,048 個詞的固定清單。生成器先取得 128 到 256 位元的隨機資料,附上一小段由雜湊計算出的校驗碼,再每 11 位元選出一個清單中的詞。128 位元會形成常見的 12 詞組合,256 位元則會形成 24 詞組合。

因此,單字本身沒有各自承載特殊力量。安全性來自生成前那份資料有多難預測,以及生成過程有沒有偏差。清單完全公開也不構成問題;真正困難的部分,是在極大的組合空間裡猜中正確順序。

人類選擇的結果通常沒有這麼分散。我們偏好有意義的詞、熟悉的排列、鍵盤或故事順序,也可能避開看起來奇怪的組合。即使每個詞都來自正確清單,攻擊者仍可優先測試這些常見模式,不必從所有可能性平均開始。

校驗碼能抓錯字,不能衡量難猜程度

校驗碼會依前面的隨機資料計算,用來辨認某些抄錄或輸入錯誤。任意挑出的 12 個詞很可能無法通過格式檢查;調整最後一個詞後,也可能得到軟體願意接受的組合。

可是,「有效」只表示單字、順序與校驗關係符合格式。它沒有證明前面的選擇足夠隨機。若整組詞來自生日、歌詞、固定句型或少量自訂規則,即使校驗碼正確,猜測範圍仍可能很小。校驗碼也不負責修復錯誤,更不會替外洩的內容恢復祕密性。

這個差別很像行李箱的編號貼紙:貼紙可協助發現拿錯箱子,卻無法讓一個容易猜中的鎖碼突然變強。格式檢查處理的是資料一致性;防猜測能力取決於生成時留下多少不可預測性。

猜中一組詞,等於取得整棵鑰匙樹的起點

相容的確定性錢包會從助記詞推導出種子,再延伸出一系列私鑰地址。這讓一份備份能恢復許多收付款紀錄,也使錯誤的生成方式影響範圍遠大於單一密碼。若別人猜中完整詞序與相關設定,往往可以在自己的裝置上重建同一組控制權。

安全模型因此把產生工作交給具備足夠隨機來源的生成器,讓人負責精確備份,而非用直覺設計內容。隨機產生也不會消除裝置遭入侵、備份外洩或軟體不相容等風險;它只處理這篇文章的核心問題:避免祕密在誕生時就落入容易預測的狹小範圍。

所以,助記詞看起來像一句由人閱讀的短語,底層角色卻更接近隨機資料的可抄寫表示。自己選的詞可以很有意義,也可能通過校驗;這兩件事都無法取代隨機性。理解「格式正確」與「難以猜中」的差距,才能看清 12 或 24 個單字真正保護的是什麼。