比特币本身没有币。比特币其实是一个巨大的账本,记录着人们的交易记录。矿工“挖矿”的行为其实是记账。那么,什么是比特币钱包?硬钱包为什么更安全呢?
一、什么是比特币钱包?硬钱包为什么更安全?
比特币地址 + 密钥=比特币钱包。所以一旦丢失你的密钥,你就无法从网络的大账本里面,重新找回属于你自己的比特币。
硬钱包也叫冷钱包。相对应的是热钱包。咱们可以这样理解,和网络接触越多,钱包越热。和网络接触越少,钱包越冷。硬钱包就是线下Offline存储密钥的一种方式。把硬钱包从电脑上拔掉后,黑客无法侵入你的钱包。
二、比特币密码学的基础
之前我们提到过比特币使用的并不是什么新技术,只是对于老的技术比如:P2P网络,分布式系统,密码学,共识算法的重新而又巧妙地应用。
在钱包和交易生成验证的过程中,都需要使用到密码学的计算。这里我们先介绍一下比特币中会使用到的几种密码学技术。
1.单向散列函数(hash算法)
在介绍单向散列函数之前,我们先了解一下什么情况下需要使用到单向散列函数。
如果你需要从国外的网站上下载一个软件,但是因为种种原因,国外的网络太慢了,下载几个G的数据几乎是不可能的。刚好国内有镜像网站,可以从国内下载数据。但是如何保证国内的镜像不是被篡改过后的呢?这个时候就需要单向散列函数了。一般来说网站会提供MD5或者SHA的值作为验证值。
单向散列函数有一个输入和输出。输入称为消息,输出称为散列值。
散列值的长度跟消息的长度无关,不论多少大小的长度的消息,都会计算出固定长度的散列值。
hash算法有下面几个特点:
1. 能够根据任意长度的消息计算出固定长度的散列值。
2. 计算速度要快。
3. 消息不同,散列值也不同。
这就意味着,如果仅仅是一点点的变动都会引起整个散列值的巨大变化。
因为散列值的大小是固定的,所以有可能会出现不同的消息产生相同散列值的情况。这种情况叫做碰撞。
难以发现碰撞的性质被称为抗碰撞性。当给定某条消息的散列值时,必须保证很难找到和该消息具有相同散列值的另一条消息。
4. 单向散列函数必须具有单向性。所谓单向性是指无法通过散列值来反推出消息的性质。
比特币使用的散列算法是SHA256,他是安全散列算法SHA(Secure Hash Algorithm)系列算法的一种(另外还有SHA-1、SHA-224、SHA-384 和 SHA-512 等变体),SHA是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的,主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。
RIPEMD(RACE Integrity Primitives Evaluation Message Digest,RACE原始完整性校验消息摘要),是Hans Dobbertin等3人在md4,md5的基础上,于1996年提出来的。
2.非对称加密算法
非对称加密算法也叫公钥密码算法,通过生成的公私钥来对明文密文进行加密解密。
三、总结
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。