Ulord深度学习4:区块链技术中的密码学
Ulord深度学习第四课主要讲的是区块链技术中的密码学。
1、密码技术主要要解决以下3个问题:
(1)怎样保证交易记录不被篡改?
(2)怎样证明交易双方的身份?
(3)怎样尽可能的保护交易双方的隐私?
2、Hash函数是密码技术的一个重要方法
Hash函数能把任意长度的输入变换为固定长度的输出,是单向密码体制。Hash函数必须具备正向快速、逆向困难、输入敏感、避免冲突的特点。常用的Hash函数有SHA256和RIPEMD160。
下面是使用SHA256函数 就把上面的字符串变成了下面的一串数字,即哈希值。
SHA256和RIPEMD160主要用在:
(1)生成钱包地址;
(2)在传输文件中,用SHA256计算出文件内容对应的哈希值(称为数字摘要),接收方对收到的文件重新计算哈希值,与数字摘要进行核对,如果不一致,说明文件内容已被篡改;
(3)SHA256还用在POW过程中,作为衡量工作量的一个手段。
3、加解密算法
加密算法用对称和非对称加密两种,对称加密执行速度快,但是泄露风险高;非对称加密速度慢,但是安全性更高。
非对称密码算法得出一对私钥和公钥,公钥公开,私钥则需要秘密保管。通常,我们用其中一个加密,就必须用另一个进行解密。
A给B传输文件,A有自己的公钥和私钥,B也有B的公钥和私钥,A和B的私钥都是自己私人持有的,这里有几种情形:
(1)A用B的公钥对文件进行加密,B用B的私钥进行解密,这样防止了文件被盗读,信息泄露;
(2)A用A自己的私钥对文件进行加密,所有知道A的公钥的人都可以解密这个文件,这个只能证明这个文章是A签发的,作为一个文件内容可信性的一个证明;
(3)A用自己的私钥对文件进行加密,再用B的公钥进行了加密,这样情况下,B要用B的私钥解开文件,再用A的公钥进行解密,这个过程,既确保了A对文件内容的归属性,又防止了信息泄露。
4、数字签名和数字证书
(1)数字签名类似于在合同上签字,用于证实内容的完整性和来源。
A给B传送文件,A首先给文件生成一个摘要,并用A的私钥对摘要进行加密,把文件和摘要密文一起发给B,B对文件生成摘要(称为D),再用A的公钥对摘要密文进行解密(称为DX),如若D=DX说明文件是A签发的并没有被篡改。
(2)数字证书是用来证明某个公钥是谁的。
由证书授权认证中心数字签名认证,公钥拥有者及公钥内容。这个我们经常在网上银行里面会用到,有银行的数字证书。
5、Merkle树(默克尔树)
默克尔树是一个二叉树或多叉树,树的叶子是数据块的哈希值,其他节点是其对应子节点串联字符串的哈希值。
它主要应用有:
(1)在大量数据的比对,如果根节点哈希值相同,则数据相同;
(2)默克尔树可以快速定位不同点,因为只要中间有一个节点不同,则这个节点到根节点都会不同;
(3)用于零知识证明(例如,如果B拥有默克尔树,如果A有L1、L2、L3、L4数据,可以生成这些数据的默克尔树,从而证明A拥有这些数据)。