比特币的所有权是通过数字密钥、比特币地址和数字签名来确立的。数字密钥实际上并不是存储在网络中,而是由用户生成并存储在一个文件或简单的数据库中,称为钱包。
在比特币系统中,我们用公钥加密创建一个密钥对,用于控制比特币的获取。密钥对包括一个私钥,和由其衍生出的唯一的公钥。公钥用于接收比特币,而私钥用于比特币支付时的交易签名。
支付比特币时,比特币的当前所有者需要在交易中提交其公钥和签名(每次交易的签名都不同,但均从同一个私钥生成)。比特币网络中的所有人都可以通过所提交的公钥和签名进行验证,并确认该交易是否有效,即确认支付者在该时刻对所交易的比特币拥有所有权。
比特币钱包是私钥的容器,只包含私钥而不是比特币。每一个用户有一个包含多个私钥的钱包,钱包中包含成对的私钥和公钥。用户用这些私钥来签名交易,从而证明它们拥有交易的输出(也就是其中的比特币)。
根据私钥的存放方式,将钱包种类划分如下:
1、冷钱包
冷钱包是非常安全的,但是成本较高,易用性差。像传统的Armory,一般要找一台不联网的电脑专门用于安装Armory离线端,成本不小,如果要发送交易,则需要用优盘在离线电脑和在线电脑之间来回导交易信息、签名数据,很是麻烦,而且U盘还存在传播木马病毒的风险。
冷钱包也不是绝对安全的,硬件损坏、丢失,都可能造成比特币的损失,要做好备份。
2、本地钱包和在线钱包
本地钱包的是装在自己的电脑或手机上,在线钱包则是将私钥加密后放在服务器上。
个人的电脑有可能被植入木马,黑客可能盗取你的钱包文件,记录你的钱包口令;而钱包服务器也有可能被黑客攻陷,加密私钥存在被破解的风险。服务器安全防护做的比个人电脑要好一些,但也更容易引起黑客的注意。从安全性上来讲,这两类钱包差不多。
在线钱包原理是,钱包在浏览器端使用用户的口令对私钥进行加密,加密之后传到服务器上保存,当需要使用时,从服务器上下载下来,在浏览器端进行解密。服务器上保存的是加密后的私钥,这就是在线钱包“不保存用户私钥”的由来,准确地说,应该是“不保存用户明文私钥”。
要加强本地钱包和在线钱包的安全性,最好设置一个较复杂的密码,并且,千万不要忘记。
本地钱包和在线钱包使用都比较方便,易用性强,在线钱包由于不受客户端限制,易用性比本地钱包好一点。
3、多重签名钱包
多重签名钱包原理是这样的:取一个多重签名地址作为钱包地址,如果要动用这个地址上的币,必须有2个(或多个)私钥同时签名才可以。打个比方,就是一把锁,需要2把不同的钥匙一起用,才能打开。这样一来,我一把钥匙自己掌握(也可能是加密后托服务器保管,参看在线钱包),另一把交给服务器,如果只有一把钥匙被盗,黑客没有我本地的私钥。这样应该是多了一重安全。
多重签名机制看起来是更安全,但易用性受到很大的影响,用户需要理解一些技术细节,还要保护好本地私钥和未来地址的私钥,学习和使用成本高了不少。另外,Armory也做了纯客户端的多重签名钱包。