目前,一枚比特币价值近 22 万人民币。对于刚入圈的新人来说,肯定很关心比特币的安全问题。
那么,比特币安全吗?换句话说,钱包里的比特币,容易被黑客盗走吗?
01.私钥、公钥、地址
就像银行取款、网银转账需要输入密码一样,动用钱包里的比特币也需要密码,这个密码被称之为“私钥”。
与“私钥”对应的是“公钥”,“公钥”就像你的银行账户。每个银行账户都有唯一的账户编号,也就是银行卡号。在比特币网络中,这个银行卡号就是“地址”。别人只要知道你的“银行卡号”(即地址),就可以给你转比特币了。
在银行,开户流程基本是“开设银行账户——给银行卡号——设置银行卡密码——开户成功”。但在区块链世界里,是先设置“密码”(私钥),再开设“银行账户”(公钥),最后给“银行卡号”(地址)。
如果你路上捡到了一张纸条,上面只写着银行卡密码,但没写银行卡号,即便这个银行卡密码是真的,你也无法取走相关账户里的钱。
但在区块链世界,你只要知道了别人的“银行卡密码”(私钥),就可以知道别人的“银行账户”(公钥)和“银行卡号”(地址),可以取走里面的币。
为什么会这样呢?
这是因为在区块链中,私钥通过加密生成公钥,公钥转换一下格式生成地址。也就是说,私钥可以推导出公钥,公钥可以推导出地址。
02.反向推导?没门!
既然“私钥可以推导出公钥,公钥可以推导出地址”,动用账户里的比特币又必须输入“密码(私钥)”,那黑客要窃取你钱包里的比特币,必须、也只需拿到“私钥”即可。
理论上,黑客有2种方法窃取你的私钥:
1、通过地址/公钥,反向推导出私钥。
2、一个一个地去试私钥,也就是暴力破解。
第一种方法并不可行,因为比特币采用的加密算法,“失之毫厘,差之千里!”。输入的内容,稍稍变动哪怕一丁点的东西,加密后输出的结果和之前输出的结果也有天壤之別,而且这些结果没有规律可循。
所以,这种加密算法是“单向的”、“不可逆的”,黑客无法通过输出(地址/公钥)推导出输入(私钥)。
03.暴力破解比特币私钥有多难?
既然第一种方法不可行,那第二种方法如何?在回答这个问题之前,我们先看下私钥是怎么产生的。
假设你抛硬币,正面朝上为1,反面朝上为0,连续抛256次,把每次抛的结果记录下来,再转换成十六进制数,就是一个比特币私钥。
What? 这么简单?这么任性?
没错,比特币的私钥就是通过程序“抛256次硬币”,随机生成的。所以,比特币私钥的本质是256位二进制数。
每次抛硬币,都有正反2面,所以抛256次,一共可以出现「2 x 2 x2 x 2……2 x 2x2」,即256个2相乘,也就是「2的256次方」种结果。所以,比特币的私钥总数,理论上有「2的256次方」个。
注:私钥总数的实际值比上面的理论值略低,因为有一小部分私钥不可用,但对总数影响微乎其微。
「2的256次方」是多大呢?它约等于「10的77次方」。那「10的77次方」又是多大呢?
如果我们居住的这个地球,海洋、岩石、地底下的岩浆全部用沙子来填充的话,整个地球的沙子数量大概是「10的30次方」。也就是说,一个和地球一样大,全部由沙子组成的星球,需要用到「10的30次方」粒沙子。
「10的77次方」比「10的30次方」大「10的47次方」倍,整整47个0。在比一个地球的沙子数量还要多「10的47次方」倍的比特币私钥集里,一个一个地试,破解出某个地址对应的私钥,简直比大海捞针还难。
所以,即便黑客有超级计算机,都无法暴力破解比特币私钥。
这就是为什么很多人说,“比特币第一次通过技术手段,保证了个人的私有财产神圣不可侵犯”。
04.如果比超级计算机还要厉害?
虽然未来的科技如何发展谁都无法准确预测,但如果有一天,人类发明了比超级计算机、量子计算机还要厉害的计算机,比特币私钥不就不安全了吗?
确实,很多人想知道量子计算机到底对比特币的安全性有没有威胁,如果有威胁,比特币有哪些措施可以应对。
鉴于这个问题不是三言两语能解释清楚,后面我们会单独开一篇文章,探讨这个问题,敬请期待。
05.结语
当然,安全问题不仅仅牵涉到技术问题,也牵涉到私钥的保存问题。如果是因为自己私钥保存不当,或是电脑中了病毒,或是使用的钱包软件有漏洞或是有后门,导致私钥被黑客窃走,那钱包里的比特币安全性就无从谈起了。
但是,因为自己的失误导致私钥被盗,这锅不能让比特币背,不是吗?