《比特币一个虚幻而真实的金融世界全集.com》第23/37页
而客户端出于保护用户匿名性的考虑,并不会将余额打回原地址,而是从私钥池里取出一个新地址并将余额打进去。在缺省设置下,这个地址并不会显示在客户端的界面里。
所以,用户每进行一次交易,私钥池里原有的私钥就被取出一个,同时又有新的私钥补充进去。如果用户对Wallet.dat进行备份之后完成了100次交易,那么私钥池里的原有的全部私钥就都用完了,接下来使用的都是未曾备份的新私钥。使用新私钥完成交易之后,如果用户用原来的备份文件进行恢复,那么所有未备份的新私钥都会丢失,而这些新地址里的比特币也会随之丢失。
/解决方法:增加钱包安全/
就增强钱包的安全性而言,以下几种方法颇为有效:
一是,离线钱包。私钥的功能在于证明自己拥有某个地址里的比特币的所有权,其作用方式是对交易单进行签名,根本不需要放在联网的电脑里。离线钱包应运而生,这是储存比特币最安全可靠的方法。
关于离线钱包的使用方法,网上已有完整的教程,搜索“Armory离线钱包教学”即可找到。其主要原理是,将私钥放置在一台永不联网的电脑里,将钱包存放比特币的地址放置在联网的电脑里。由于联网的电脑没有私钥,所有交易单在联网电脑里下单后,需通过U盘(移动存储设备)拿到离线的电脑上进行私钥签名,再拿回联网的电脑进行全网广播并确认交易。存放私钥的电脑全程都不会接触到网络,所以可以保证私钥的绝对安全。
二是,纸钱包和脑钱包。所谓纸钱包,其实就是把私钥印在纸张上。纸钱包的好处显而易见:实物的纸张远比U盘或硬盘可靠,可以有效躲避黑客的盗取。主要缺点就是使用的时候,需要先用客户端导入私钥。纸钱包主要适合储存大额的、近期不打算使用的比特币。
脑钱包的产生机制则是从比特币地址和公私钥的算法推导出来的。根据比特币的算法,通过任何一个单词或短语都可以产生一对独一无二的公私钥和比特币地址。所以,用户只需要记住随意一句话,便可以通过这句话导出一个专门的比特币地址和私钥。这句话就是所谓的脑钱包。
如果使用得当,纸钱包和脑钱包的安全系数都非常高,但还有要注意的地方。
一是,脑钱包密码的复杂度。因为银行等机构的关系,人们习惯了4~6位的密码。他们想当然地认为脑钱包的密码也只需6位数即可,但他们错了。银行和网站有专门的系统来保护用户资料,不允许黑客多次尝试密码;而比特币的所有地址都在网上公开可查。黑客可以不断试错,直至找到对应的私钥。那么,找到一个6位密码对应的私钥需要多久呢?密码应该使用数字、大小写字母和符号,那么每一个密码的可能性有95种字符(26个大写字母、26个小写字母、10个数字、33个符号),6位密码的组合有A(95,6),即大约8.6亿种可能性。这个数字看起来似乎很大,但实际上一台普通的计算机用2.5分钟就可以遍历全部结果。
从理论上说,8位数以上的包含95种字符的密码应该是安全的,因为按照目前的计算机速度,暴力穷举法对8位以上的密码基本上无能为力。但问题是,人脑很难想出一个完全随机的8位密码。我们能想到的密码总是跟我们日常思维习惯有着千丝万缕的关系,黑客们一般都有一本密码词典,上面记载了各种可能的密码组合。通过这种方法,破解一个8位的普通密码通常只需要几分钟时间。
如果你觉得自己想出来的密码足够复杂、可靠,不妨先来看看以下被黑客破解出来的密码:
k1araj0hns0n
Sh1a-labe0uf
Apr!1221973
Qbesancon321
DG091101%
所以,依靠人脑想出一个可靠的脑钱包密码的难度非常高。相对安全的脑钱包密码的要求是:足够长,40位或以上,防止被暴力穷举法破解;别人不容易猜到;对你来说,很容易记得。
一种比较好的方法是“掺盐”,即在原有用户密码的基础上加入一个随机密码。很多网页都有生成随机密码的功能。用户可以首先生成一个20位的随机密码,将该密码用各种方式保存下来(比如,文本打印、加密压缩并进行云存储等),然后将该密码与原有密码组合在一起,生成一个新的脑钱包密码。这样一来,该账户基本可以说是安全了。即使黑客破解了你的常用密码或者随机密码,他也无法轻易获得你的脑钱包密码。
另一个好方法则是从电子书里选一段你最喜欢的话。比如,我很喜欢林达的《西班牙旅行笔记》,决定用书里第35页的第三段作为我的脑钱包密码,那么我要记得的就是本书第35页第三段这一信息而已,而任何人几乎都无法猜到我这种带有强烈个人特点的脑钱包密码。
二是,找零机制的注意事项。纸钱包和脑钱包在存储比特币方面表现一流,但在支付时却有些麻烦。如果选择用Blockchain客户端,将纸钱包或脑钱包的地址放在上面,那么支付时就可以直接输入私钥并调用这些资金。但对于有强烈安全需求的人来说,一旦一个私钥在网上被输入过,那么这个对应的地址就不再安全了。因此,除非是需要动用钱包里的全部资金,一般来说不推荐在Blockchain客户端导入私钥进行支付。
另一种方法是使用Bitcoin-QT等钱包客户端。导入私钥后,纸钱包或脑钱包里的钱就成了你钱包客户端里的一部分,使用方法跟平常并没有什么区别。但由于之前提过的找零机制的存在,纸钱包或脑钱包导入私钥并完成一次支付后,原来钱包里的比特币余额将全部转移到客户端的另一个隐藏地址。如果需要将其重新放回钱包,还需要再进行一次支付,将余额打回原来的地址。曾经有用户在通过客户端导入脑钱包私钥完成支付后,随手将客户端的Wallet.dat文件删除,导致余额全部消失,损失巨大。
区块链的内容合法问题
在之前的故事里,长人和店主都会将全部区块链信息下载到自己的本地硬盘里并及时更新区块链信息。但区块链里有时不仅存有交易信息,还存在其他一些奇怪的、可能违反当地法律的内容。
这似乎并不算什么问题,但在很多国家,这是一个严肃的法律问题。
比特币交易里是允许嵌入一小段信息的,比如一段话或一段代码,但之前曾有用户将一张儿童的色情图片的代码上传到了区块链里,只要通过一定的解码软件,这段代码就可以转换成图片。
问题来了:在很多国家,在知情的情况下以任何形式保有儿童色情图片都是违法的。比特币当下的属性决定了每一个用户都必须把全部区块链信息都下载到自己的电脑里,那么实质上,每个比特币用户都以某种形式存放了一些违禁内容。设想如果上传的色情内容足够耸人听闻,那么比特币用户很难辩称自己并不知道区块链内有违禁信息。对于立法者来说,这是一个无法回避且必须认真面对的问题。
SHA-256被破解了怎么办
整个比特币的安全核心在于SHA-256安全散列演算法。根据维基百科的定义,SHA-256及其他SHA算法能计算出一个数字信息所对应的长度固定的字符串。输入的信息不同,对应的字符串也极有可能不相同。SHA-256被称作安全算法,主要基于以下两点:第一,由信息摘要反推原输入信息,从计算理论上来说是很困难的。第二,想要找到两组不同的信息对应到相同的信息摘要,从计算理论上来说也是很困难的。任何对输入信息的变动都极有可能导致其产生的信息摘要迥异。
在整个比特币交易过程中,有几个地方会使用到SHA-256算法,其中最重要的莫过于挖矿。一笔交易要经矿工们确认有效后才能放入区块进行全网广播,而区块的产生则是一个寻找随机数以计算特定散列值的过程。矿工们在挖矿时需要依靠强大的算力不断尝试,平均耗时10分钟才能找到该随机数。这个所谓的工作量证明的机制保证了无人可伪造或重复任何交易。
如果SHA-256算法被破解,那么攻击者可以从两组不同的信息推出相同的信息摘要。也就是说,他可在极短的时间内找到该随机数,从而快速产生区块。在这种情况下,基于工作量证明的比特币安全机制也就形同虚设了。
不过,最严重的后果并不太可能发生。首先要说明的是,SHA-256算法目前被公认为最难破解的算法之一,因此也被银行、军队等对安全度要求极高的机构采用。如果SHA-256被破解,那么首当其冲的绝对不是比特币。
而当前网上对于SHA-256算法可能被破解的担忧,主要来自于此前MD5被破解一事。2004年,山东大学教授王小云公布了MD5的破解报告。需要说明的是,这一报告只是证明存在一种可以产生强特定碰撞的方法,但要伪造数字签名则必须能够产生弱特定碰撞。因此,MD5实际上并没有被真正破解,更不用说比MD5安全度更高的SHA-256了。担心SHA-256被破解而引致比特币的毁灭实属杞人忧天。
不过,探讨一下在遥远的将来SHA-256被破解的可能性,也是一件有趣的事情。如果SHA-256真的被破解,姑且不论这事会对银行和军事安全产生什么影响,单就比特币社区而言,会产生什么后果?
事实上,中本聪早已回复过这个问题。2010年6月14日,他在比特币官方论坛的一个帖子里分两种情形进行了讨论:一种是SHA-256被突然宣布破解成功,在这<¨。COM电子书 ZEi8。COm电子书 。COM电子书 。COM电子书¨>种情况下,比特币社区的大部分用户可以决定,在某个区块之前的所有区块属于“诚实”区块并予以承认,在该区块以后重新使用新算法挖矿。另一种情况则是SHA-256没有被突然破解,而只是发现了隐患,因此转换可以逐步进行。使用新算法的客户端将被提前开发,并约定在某一个区块之后开始实行,所有用户将在该区块被开采出来之前更新客户端。