比特币中的密码学原理
加密货币 ( crypto-currecy ),其中一种加密货币比特币用到了密码学中的两种技术:哈希和签名
哈希有三个重要的性质,被称为 cryptographic hash function:collision resistance,hiding,puzzle friendly
- collision(这里指哈希碰撞) resistance :例如x≠y H(x)=H(y) 两个不同的输入,输出却是相等的,这就称哈希碰撞。它是不可避免的,因为输入空间总大于输出空间。给出x,很难找到y,除非蛮力求解 ( brute-force )。
该性质的作用:对一个 message 求 digest
比如message取m m的哈希值是H(m)=digest 如果有人想篡改m值而H(m)不变,则无法做到。
哈希碰撞无法人为制造,无法验证,是根据实践经验得来的。 - hiding 哈希函数的计算过程是单向的,不可逆的。(从H(x)无法推导出x) hiding性质前提是输入空间足够大,分布比较均匀。如果不是足够大,一般在x后面拼接一个随机数,如H(x||nonce)。
该性质的作用:和collision resistance 结合在一起,用来实现 digital commitment(又称为digital equivalent of a sealed envelope) - puzzle friendly 指哈希值的预算事先是不可预测的。假如哈希值是00…0XX…X,一样事先无法知道哪个值更容易算出这个结果,还是要一个一个带入。
签名
- 比特币中账户管理
在第三方中心化系统中,账户开通依赖于第三方。但去中心化的比特币系统中,很明显不能进行“申请账户”。在比特币系统中,申请账户是用户自己来处理的,即自己创建一个公钥-私钥对。(关于公私钥请自行了解非对称加密体系和对称加密体系)
公钥和私钥的应用保证了“签名”的应用。当在比特币网络中进行转账时,通过“签名”可以明确是由哪个账户转出的,从而防止不良分子对其他账户比特币的盗取。
在发布交易时,通过自己私钥签名,其他人可以根据公钥进行验证,从而保证该交易由自己发起。也就是说,只有拥有私钥,才能将该账户中的比特币转走。
【注意:比特币系统中,很难通过生成大量公私钥对来获取他人私钥】
评论