按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
确认时间一直停留在目前阶段,那么这确实是一个问题。
2013年,在美国圣何塞召开的比特币大会上,与会者提出了很多解决理念。其中最重要的一个叫作链外交易,即不在区块链内进行交易确认。假如有一家公司能以其一贯良好的信誉赢得用户的信任,从而推出自己的在线钱包软件,那么只要星巴克及其顾客都注册了该公司的账户,顾客们便可以把自己的部分比特币存入该公司账户,并通过在线钱包购买星巴克等企业的商品,将比特币从自己的账户汇入星巴克的账户。由于这种交易实际上只是在该公司的系统内部进行账内金额转移,不涉及区块链的确认,所以交易几乎是在瞬间完成的。这种方法能够解决陌生人之间小额交易的确认问题。
钱包的安全问题
在长人和店主的交易中,两人都使用了比特币钱包客户端。大部分用户都会选择Bitcoin…QT等客户端作为自己的比特币钱包,储存私钥。钱包在比特币使用过程中的作用至关重要。但事实上,比特币的使用风险大多集中在钱包上:
误把钱包文件删除以至于丢失价值数万美元的比特币;
没有正确备份钱包文件,导致一段时间内交易的比特币全部丢失;
电脑中了木马病毒,钱包文件被盗,所有比特币荡然无存。
以上种种问题都是钱包客户端的特性造成的。
/官方钱包客户端的风险/
首先要说明的是,所有的钱包客户端里面都没有比特币。从比特币的特性可知,它其实是流动在网上的一本大账本里面的数字。而比特币钱包里面存放的是用户的私钥,主要用来证明该用户对账本里的某个数字拥有所有权。每当用户要动用自己的比特币财产时,便动用钱包里某个地址的私钥进行签名,以向全网广播,证明地址里的比特币归他所有。
以官方钱包客户端Bitcoin…QT为例。该客户端存放比特币私钥的文件是Wallet。dat,一般Win8系统下的存放路径是C:Users电脑的用户名AppdataRoamingBitCoin(需要注意的是,一般Appdata是隐藏文件夹,需要修改系统设置使隐藏文件可见才能找到)。Wallet。dat的本质是一个私钥池,存放的是这个钱包的所有地址的私钥。有了这个文件,用户才能证明自己对钱包地址里的比特币的所有权。钱包风险其实可以分为以下几种情况。
一是,Wallet。dat文件被偷。这是最常见的钱包风险。如果用户的电脑被黑客入侵,Wallet。dat文件被黑客获取,那么黑客也同样对钱包里的地址拥有支配权。在用户尚未察觉之前,黑客就会把该地址所能支配的比特币统统转移。
二是,Wallet。dat文件丢失。这种情况并不少见。在未做好备份的情况下,误删了Wallet。dat文件,则用户所有的比特币都会丢失。与Wallet。dat被盗不同的是,在这种情况下,这些比特币从此只会在网络上如孤魂野鬼般游荡,不归任何人所有,因为唯一证明所有权的私钥已经永远消失。这些丢失的比特币会使现有的比特币总量变少。
三是,Walllet。dat备份出错。比特币钱包客户端的设置使得Wallet。dat文件的备份成为一个技术活,稍有不慎就会造成严重损失。
在初始状态下,Wallet。dat的私钥池里存有100个私钥。当“生成”一个新地址时,客户端其实并没有真的产生一个新地址和对应的私钥,而只是从私钥池里取出一个使用,同时再生成一个(真正意义上的)新的私钥和地址并放进私钥池里,使未使用的私钥数量保持在100个。
而使问题变得更复杂的是客户端本身的找零机制设置。依照比特币本身的规则,一个地址上的比特币在支付的时候必须全部支出,除向另一个地址支付比特币外,剩余金额再重新支付给原地址(见图3)。
图3 交易示意图
17C的地址里之前有0。189 006 7个比特币,当17C的拥有者发出向18y的地址支付0。1个比特币的指令后,系统会将17C地址里的0。189 006 7个比特币全部取出,并将其中的0。1个比特币转入18y的地址里,剩余的0。089 006 7个比特币重新打回17C。
而客户端出于保护用户匿名性的考虑,并不会将余额打回原地址,而是从私钥池里取出一个新地址并将余额打进去。在缺省设置下,这个地址并不会显示在客户端的界面里。
所以,用户每进行一次交易,私钥池里原有的私钥就被取出一个,同时又有新的私钥补充进去。如果用户对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位的随机密码,将该密码用各种方式保存下来(比如,文本打印、加密压缩并进行云存储等),然后将该密码与原有密码组合在一起,生成一个新的脑钱包密码。这样一来,该账户基