助记词可以破解吗 私钥助记词碰撞是否可行
最近经常有人说给我们提供一个地址,让我们定性破解对方私钥。我可以明确告诉你,因为现在物理硬件的限制,定向暴力破解单个地址的可能性几乎为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开头的比特币大额地址 。在真正的量子计算机诞生之前,这或许是破解私钥的唯一最快方法了。
你可能感兴趣的文章
-
助记词24个单词比12个单词对比、转换、安全性分析
随着区块链钱包的发展和分层确定性(HD)钱包技术的普及,越来越多的用户开始熟悉了一个叫“助记词”的概念,很多人都已经习惯了从一开始使用一个钱包的时候,就先抄好单词…
2024-07-11 -
如何安全的存放助记词?私钥与助记词的差别
助记词和私钥是常见名词和常用工具,私钥是掌握与管理加密钱包的关键要素,助记词是由 12 到 24 个易记的单词组成,它是加密钱包的另一种备份方式,本文小编给大家介绍了如…
2024-06-20 -
虚拟币钱包中的私钥、助记词、密码分别是什么
对于虚拟币,若想保存就需要使用虚拟币钱包,比如bitpie、imtoken等,在使用钱包的过程中有几个名词你必须清楚,必须、必须、必须,如果在不清楚的情况下就贸然使用钱包,…
2023-12-19 -
助记词和私钥用什么保存才不会丢失?
私钥保存的常见错误是将私钥保存在云盘、云笔记、邮箱中,或者用手机拍照保存,这都是非常危险的容易泄露私钥的方式,那么,助记词和私钥用什么保存才不会丢失?助记词和私…
2023-12-05 -
如何恢复丢失的助记词? 恢复丢失的助记词的三种常用方法
助记词(Mnemonic Phrase)是一种用于恢复或迁移加密货币钱包的方法,它由12个或24个单词组成,如果你不幸丢失了你的助记词,你是否还有机会恢复你的钱包呢?在这篇文章中…
2023-10-18 -
一文搞清楚比特币助记词是什么
比特币助记词在加密货币市场中并不少见,因为当投资者创建他们的第一个加密钱包或相关帐户时经常会遇到它,简单的介绍还不能够了解比特币助记词是什么?接下来小编带大家一…
2023-09-15 -
私钥和助记词都丢了怎么办?怎样保存私钥和助记词?
钱包的安全一直是大家都在讨论的一个话题,对于钱包而言,保证私匙和助记词的安全性至关重要,所以使用钱包的第一要点就是,安全地备份好自己的私钥/助记词,但用户总会担心…
2023-09-07 -
导入钱包助记词怎么填写? 导入钱包助记词格式错误怎么办?
币圈投资者在更换设备时,需要将原来的钱包助记词导入到新设备中来进行管理自己的数字货币资产,但往往有一些投资者可能会遇到输入助记词不正确的提示,因此对于很多投资者…
2023-08-31 -
助记词被别人知道了怎么办?助记词泄露钱包还能继续用吗?
在投资者进行注册钱包时,会自动生成助记词,通缩来说助记词就相当于钱包的一个重要密码,也可以说助记词是数字货币资产的一种保险柜,如果一旦出现助记词被别人知道的情况…
2023-08-29 -
钱包助记词怎么输入?钱包助记词输入格式全解
目前不少投资者会将自己的数字货币资产放在钱包中,主要是为了保障数字货币的安全,投资者在创建钱包账户时,会遇到12个英文单词,该钱包软件都会提示你记牢这些助记词,因…
2023-08-21