密码学原理
比特币了利用了密码学中两个功能:哈希(cryptographic hash function)、签名(非对称加密)
一、哈希
collision resistance(抗碰撞性):给定x和y且x!=y,给定一个哈希函数Hash(),可以使Hash(x)=Hash(y)称为hash碰撞,它是不可避免的,因为输入空间总大于输出空间
很难collision resistance保证给定x,找到一个y,能够在x!=y的前提下,使得Hash(x)=Hash(y)
MD5一个很流行哈希函数目前已经知道如何制造碰撞
hiding(单向不可逆):前提是输入空间足够大,分布比较均匀.
给定x和Hash(),可以很容易得到Hash(x),但在已知Hash(x)和Hash()的情况下,无法反推出x的具体取值(除非蛮力破解)
collision resistance + hiding ---->digital commitment(数据保证):把预测结果作为输入x,算出一个哈希值,将哈希值公布,hiding让人们知道哈希值而不知道预测值,最后再将x公布,因为有collision resistance的性质,预测结果是不可篡改的。
Puzzle friendly(不可预测):哈希值计算事先不可预测,想要H(x)落入某个范围,没有什么好办法只能一个一个试
在挖矿过程中保证了工作量证明(POW)机制,挖矿难验证易,比特币系统中采用SHA-256哈希函数
二、签名(非对称加密)
创建一个公私钥对,公钥是公开的,私钥只有自己知道,加密用公钥,解密用私钥
交流:A用B公钥对信息加密,B用自己私钥解密
签名:A用自己私钥给信息加密,大家用A的公钥对这个信息进行验证,防止有人仿冒A