12字助记词真的安全吗?让程序员告诉你真相
众所周知,区块链1.0时代以比特币为代表,如果说区块链是一个账本,比特币地址就是其中的账号。加密货币领域技术KOL——Iven on Tech在他的每日直播中,曾引用了BRD的一篇文章内容解释了12字助记词的安全性问题。
在比特币地址里,公钥(public keys)跟私钥(private keys)是成对的,公钥可以算出比特币地址,因此可以作为拥有这个比特币地址的凭证。而私钥,可以推导出它的公钥以及地址,但反过来,地址则不能逆推出私钥,这是比特币所使用的密码学的逻辑基础。如果比特币的私钥不慎丢失,则没有方法可以重置。
地址可以随便公开,别人可以通过地址给你转账。而私钥则为自己所有,用于将钱转出去时使用,不能公开。简单点来说,公钥相当于一张银行卡的卡号,私钥相当于银行卡的密码。2013年,有一位英国用户因为不小心丢弃了存有其私密密钥的硬盘,导致里面的7500个比特币无法使用,当时的市值$750万美元。除非私密密钥被找到,否则这些比特币将永远"躺"在区块链里,不再流通。
如果别人知道了你的私钥,就能推导出其地址及公钥,拿走里面的存款。这在比特币里实际上并不神秘。私钥就是一堆预设范围内的庞大数字,用于计算比特币地址的公式都有详细记录,所有的地址及其包含资金的记录都是公开的,任何人都可以下载检验。 从技术角度来说,你可以简单地选择一个数字,计算与之对应的比特币地址,如果有人正在使用该地址,那么恭喜你,这笔钱就是你的!
BUT 但是!
比特币地址如此安全的原因在于它们隐藏在如浩瀚宇宙天文数字般庞大的的数字海洋中,无论你花费了多少时间和精力去破解地址,你随机猜测别人的私钥的机会基本上接近零。
一个典型的比特币地址长这样:
1G1W1DbeUeH2AKKicqMNuhEuaoqPDNuXDF.
它由34个字符组成,包含大小写字母、数字,代表的是一个庞大的数字,将它翻译成数字是这样子的:
4,036,794,190,046,444,310,490,975,774,115,813,708,619,807,673,368,708,224,110.
普通人是很难想象如此庞大的数字。要知道这串数字的庞大程度,我们可以通过一些想象练习来了解这串数字。全世界可能存在的比特币地址总数量可以表示为2^160个。
想象一个象棋棋盘,每一个格子代表一把密钥及其对应的比特币地址,如果这个棋盘包含了全世界可能存在的比特币地址总数,也就是2^160个,那么这个棋盘的每条边长将为2^80英寸。
2^80英寸是多长?如果大家熟悉光年(长度单位,用来计量光在宇宙真空中沿直线传播一年时间的距离,Light years)这个概念的话,那就相当于3,245,772光年那么长。这就意味着,如果你在一艘宇宙飞船上以光年速度破解比特币地址,也要花上300多万年才能破解一列的地址。
在宇宙飞船上一秒,你可能已经检验了棋盘上11,802,852,677个格子。118亿个地址听起来好像非常之多,但这只是300多万年中的一秒。可想这里数字之庞大浩瀚!
另外,要快速破解尽可能多的地址,需要投入什么资源呢?所有计算能力的都来自比特币网络本身,它使用了地球上最强大和高度专业化的计算机。比特币网络的速度比全球排名前500的超级计算机速度总和还要快10万倍。假设我们已经说服所有这些硬件拥有者愿意将设备借给我们进行实验。
今天的比特币网络每秒可以在棋盘上搜索大约4,000,000万亿个格子。这肯定比我们的宇宙小飞船要快得多!在这个速度下,我们需要多长时间才能检查棋盘上的一个完整列?答案是大约3.5天至超过300万年之间!不过大家还要明白一点,要检验完一个完整列,在电费的开销方面将高达$750万美金。再者,从这些地址里能收获多少比特币?答案是零。
为什么会这样呢?目前全世界包含比特币的地址约有500万个,也就是在这个可容纳2^160个地址浩瀚巨大的棋盘上只蕴含了500万个目标,这是多么多么大的差距!假设每3.5天我们可以完成一个完整列,那么每年可以完成约100个列,依此计算,还要花上2^51年才能挖扫金子。而2^51年是什么概念?就是2,250,000,000,000,000或者说2.25千万亿年。要知道现存的宇宙也才13,800,000,000或者说138亿年。
由此可见,12字助记词的安全性有多高。
私钥的生成方式是完全随机的,由于长得太难看,没有可读性,而私钥的备份在电脑上复制起来容易,手抄下来就比较麻烦,但私钥保存在联网的电脑上毕竟不安全,有被其他人看到的风险,于是有了助记词工具,利用某种算法可以将64位私钥转换成十多个常见的英文单词,这些单词都来源于一个固定词库,根据一定算法得来。随机生成这样的字符串就会有16^64种可能,即2^256,这个数字已经超过了宇宙中原子的个数,想要逐一遍历可能的私钥,幻想能碰到一个有效的且有币的私钥,可以说是不可能,就算是量子计算机也没用。
就如零知空间小编在上文提到的,目前已存在的比特币私钥仅有500万个,在理想的随机生成方式下(用密码学安全的随机数生成器),如果要碰到你所生成的私钥恰好跟别人的私钥一样这种情况,这种概率几乎为零。
因此,助记词就等于私钥,私钥就是钱,别人获取了你的助记词等于获取了私钥所对应的一切财富。
参考文章来自BRD:
Why the Large Bitcoin Collider poses no threat to Bitcoin
由零智空间编译。