在日常使用助記詞恢復錢包時,有極低的概率會出現錯誤輸入(非備份內,但存在於助記詞詞庫裡的)單詞,且輸入後仍可以使用區塊鏈錢包進行恢復的情況。
以下,我們將對此概率極低的特殊情況進行舉例並做相關科普及解釋:
首先,要想知道即使錯誤輸入,助記詞還是可以使用的原因,我們就需要了解助記詞的創建過程。
創建助記詞:
助記詞是由錢包使用 BIP-39 中定義的標準化過程自動生成的。 錢包從熵源開始, 之後增加校驗和,最終將隨機數映射到單詞列表:
1、創建一個 128 到 256 位的隨機數。
2、提出 SHA256 哈希前幾位(12位助記詞位取前4位),作為此隨機數的校驗和。
3、將校驗和添加到隨機序列的末尾。
4、將序列劃分為包含 11 位的不同部分。
5、將每個包含 11 位部分的值對應到一個已經預先定義 2048 個單詞的字典。
6、生成的有順序的單詞組就是助記詞。
而當輸錯單詞時,例如下面的例子(只有第一位輸錯):
錢包生成的助記詞為:
ribbon voice frame black oppose galaxy divide either tube maximum tired obvious
SHA256散列:00101011 11111111
人為輸錯的助記詞為:
rib voice frame black oppose galaxy divide either tube maximum tired obvious
SHA256散列:00101011 11101010
可以看到兩對SHA256前四位都是一樣的,即校驗和也是相同的。
這是因為兩對助記詞都符合BIP39標準,所以都可以使用區塊鏈錢包進行恢復。
如果從概率上進行簡單解釋:先隨便選一個詞做最後一個助記詞,在助記詞是12位的時候,隨機挑選其他11位助記詞,概率上16次就有可能找到一組對的,而24位助記詞是256次
所以 “輸入錯誤的單詞,卻得到可以使用的助記詞” 是正常的,但並不能因此證明助記詞的安全性不可靠。
儘管助記詞偶爾與 “腦錢包” 混淆,但它們是不一樣的。
主要區別在於腦錢包是由用戶選擇的單詞組成,而助記詞則是由錢包隨機創建並呈現給用戶的。
兩者間重要的區別就是使助記詞更加安全的因素,畢竟人類生成隨機數的能力非常弱。
這就是說即使人為試出了符合BIP39標準的助記詞,也不意味著使用錢包生成的助記詞不安全,這兩種助記詞在安全性上就是不同的,錢包生成的助記詞更加隨機(即安全性更高),而腦錢包(錯誤的助記詞)是不太可能被隨機生成出來並使用的。
錢包通過密碼學安全的方式(比如硬件TRNG )生成的隨機數是真隨機,用戶按習慣自己選擇助記詞無法確保隨機的質量。