在日常使用助记词恢复钱包时,有极低的概率会出现错误输入(非备份内,但存在于助记词词库里的)单词,且输入后仍可以使用区块链钱包进行恢复的情况。
以下,我们将对此概率极低的特殊情况进行举例并做相关科普及解释:
首先,要想知道即使错误输入,助记词还是可以使用的原因,我们就需要了解助记词的创建过程。
创建助记词:
助记词是由钱包使用 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 )生成的随机数是真随机,用户按习惯自己选择助记词无法确保随机的质量。