Albert

Albert

twitter

助记词越多越安全吗: 12助记词 VS 24助记词

研究了一下 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,再增加助记词的数量并不能提高密码学安全强度。更多的助记词反而会增加保存的难度。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。