xChar
·a year ago

研究了一下12个助记词和24个助记词的区别,BIP39定义了助记词的生成算法,其中生成12个助记词的种子随机数(随机熵)是128位,密码学安全强度为为2^128,而24个助记词的种子随机数是256位,密码学安全强度为2^256。

或者从另一个角度看,从2048个单词库中选择24个助记词的组合是2048^24(与2^256接近),而选择12个助记词的组合是2028^12(与2^128接近),因此理论上讲24个助记词更难暴力碰撞,安全性更高。

但是有一个著名的理论叫生日悖论,是指如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%, 对于60或者更多的人,这种概率要大于99%。

生日悖论对密码学的影响是巨大的。具体来说,当哈希函数的输出长度为n位时,当元素数量达到2^(n/2)时,存在两个元素的哈希值相同的概率大约为50%。也就是说,256位哈希函数的密码学安全强度为其bit位数的一半,即 2^128,这个刚好是12个助记词的密码学安全强度,而目前大多数公链在交易签名之前使用的哈希函数是256位。

如果攻击者能够找到两个不同的输入数据,它们的哈希值相同,那么攻击者就可以利用这个漏洞在交易签名环节进行碰撞攻击,比如拿已经上链的转帐交易,碰撞哈希值(对原交易做一些修改,比如修改转帐的接收地址)制造假的交易。

也就是说,这里最薄弱的环节不在助记词或者私钥,而在于交易签名的哈希算法部分(或者说二者是难度差不多);攻击者与其去碰撞助记词,不如碰撞交易的哈希值(当然这2种都几乎不可能)。

所以并不是助记词越多越安全,12个助记词刚好是足够的,其密码学安全强度是2^128,再增加助记词的数量并不能提高密码学安全强度。更多的助记词反而会增加保存的难度。

Loading comments...