区块链 > 区块链技术 > 助记词撞库

助记词可以破解吗 私钥助记词碰撞是否可行

2024-07-15 16:28:37 佚名
简介最近经常有人说给我们提供一个地址,让我们定性破解对方私钥,我可以明确告诉你,因为现在物理硬件的限制,定向暴力破解单个地址的可能性几乎为0

最近经常有人说给我们提供一个地址,让我们定性破解对方私钥。我可以明确告诉你,因为现在物理硬件的限制,定向暴力破解单个地址的可能性几乎为0。

助记词会不会被试出来

最近经常有人会考虑助记词的安全性,会不会有两个一样的助记词与地址,这种可能性也有,但极低。就算一样也可以进行区分,到时候官方会给处理。

答:不会。

现在应用最广的BIP39助记词标准,助记词字典里有2048个单词。

现行助记词标准一般有12词和24词两种

12词组合的可能性是2048^12 = 5.44e39 , 24 词组合可能性是 2048^24 = 2.96e79

10^79 这个数量级接近宇宙里所有原子的数目,所以暴力破解是不可能的。

别说用你的电脑24小时算,就算你用超级计算机从宇宙诞生到现在一刻不停地算都算不出来。

BIP39 规定了助记词和种子生成规则。这些单词取自一个固定词库,词汇生成有一定规矩和顺序,词库共有 2048 个单词。不是随便输入 24 个单词就能生成加密货币地址的,也不能随意选择自己喜欢的词,或者随意组合词汇。而两个人选到一模一样(词汇一样+顺序一样)的 24 个词的概率有多大呢?可以说这几乎是不可能事件,2048 的 24 次方之一,仿若在宇宙中找一颗原子那么困难。

实际上哪怕 12 个词也足够安全了,只是多多益善,词汇越多,意味着种子中的熵越多,能被暴力解码的难度更大,更安全。

可在 Ian Coleman 的助记词生成网站 (BIP39 - Mnemonic Code)来尝试一下,多产生几组词试试,感受一下。

上个内容很多人说没有详细公布算法。那么下面我们就再详细计算下这种碰撞成功的几率 ,目前碰撞空间大概在 2的136次方级别。

目前在一台最顶级的AWS GPU计算节点上面我们测试的碰撞效率是这样的:

AWS p2.8xlarge 32 vCores Xeon v4, 8x K80 GPUs (50% each) ~80-88M/s

每秒钟大概碰撞8000w次;目前最顶峰的时候,算力到了1G的级别,这样计算下来:

2^136 / 2^30 = 2 ^106

2^106 级别的碰撞效率还是遥遥无期啊;

比特币地址的生成,主要花费在ECDSA、SHA256, RIPEMD 这三个算法的操作之上,但其实用GPU计算,这三个步骤花费的时间是很少的,在整个碰撞过程中,其实大部分时间是耗费在bloomfilter上面的;

而bloomfilter的原理,采用的是多级HASHMAP,常理来看,这已经是判断一个元素是否存在某集合的极限效率了;

但是有一点我们不要忘记,比特币的地址采用base58编码,他的地址空间是有规律的,简单来说,就是所有比特币地址的前缀分布,是有规律可循的,他应该在base58的编码范围内成正态分布;而bloomfilter的HASHMAP是没有这种条件优化的,

所以说bloomfilter的算法我们可以改进,提升效率。

我们分析了截至2018-12以前的所有比特币地址,简便起见,提取了所有的P2PKH地址(共 377059211个地址),取其前4个字符地址前缀;执行:

sort 4prefix.addr|uniq -c|sort -nr

得到了所有地址前缀的分布列表,差不多是个正态分布。

列举一下最常用的地址前缀TOP10:

23600 1bit

23086 1btc

21895 13vs

21329 1gbx

21267 1gbt

21267 1gba

21210 1gbb

21206 1gbf

21196 1gbu

21189 1gbr

最常见的是1bit和1btc这两个前缀,各比第三名多出了10000个左右,这多出来20000个地址应该是Geek们自己生成的虚荣地址。

所有的比特币P2PKH地址,4字母前缀共有42877种组合。

好了,这就是我们可以优化的地方,把bloomfilter的第一级HASHMAP,采用这些前缀组合先来一把过滤,再去执行常规的Bloomfilter,碰撞效率会再提高一个数量级。

我们在自己机器上实验了一下,在GTX750Ti 显卡上面,最终效率可以达到 10M/s。

瓶颈现在又变成了genaddress环节,我估计在一块RX580卡上面,可以达到和AWS顶配GPU一样的效率;

不过,效率提升亿倍,也不过是 2^90 的碰撞范围,还是遥遥无期啊。

所以我们进入更深入的分析

早期在http://bitcointalk.org论坛上,Laszlo Hanyecz曾经有过一个想法,就是随着硬件性能的发展,最终碰撞比特币私钥的收益会不会超过挖矿的收益?

中本聪当时的回答是,要达到这个碰撞算力很远很远。

我们来仔细分析一下:

比特币的地址生成是很容易硬件ASIC化的,如果用这种前缀过滤法,也不需要多少内存,所以可以近似认为:如果硬件化,比特币私钥碰撞的效率和挖矿效率是差不多的。

目前比特币全网算力在40EH左右,就是2^62 ,这已经是相当于400w台蚂蚁S9的机器同时24X365 运行了;消耗的电力估计已经超过了上海市的居民用电,比特币矿机的能源消耗,完全可以说是抵得上一个小型国家的能源消耗了。

如果私钥碰撞达到2^62 级别,那么毛估估,碰撞几率就能减小到 ? 60 级别了;

而且另外一个无法预测的情况就是,将来人们的安全意识加强,一般一个地址只要用过就会丢弃掉,所以最终bloomfilter的条目变化会非常频繁,还要考虑一个数量级的损耗。

目前测算,随着手续费用的提高,即使多次减半,将来挖矿的收益估计很长期稳定1-10btc/block级别,在如果将来以1年时间碰撞一个私钥的概率期望测算的话,一年大概是2^30 秒,碰撞效率要提高到 2^90 级别,所以扫U很快达到 破解私钥得利 > 挖矿得利的效果;

而且,即使到了这一天,把RIPEMD替换成一种碰撞空间更大的算法就OK了。

这样看来,定性攻破某个地址的私钥的可能性还是微乎其微,不太现实。而同时随机攻破几千万有币地址的各个币种,是不是概率就增加了一个量级的单位。于是我们就开发出了超速版和扫U程序,可以确保在几年内碰到一个1开头的比特币大额地址 。在真正的量子计算机诞生之前,这或许是破解私钥的唯一最快方法了。

本站提醒:投资有风险,入市须谨慎,本内容不作为投资理财建议。

相关文章