【每天一个web3概念】不可不知的密码学
加密算法是大家在公链、钱包等领域最常听到的概念。但是如何确保钱包的安全,如何确保区块的链接?这都需要密码学的帮助。密码技术是区块链系统安全保障的底层技术。在web3常用到的哈希函数、公私钥对就是其中的代表。
哈希算法(Hash Function):也叫哈希函数,简称哈希,它能够实现任意长度的输入,转换成固定长度的输出:h=H(m),意味着你随便输入什么,经过哈希算法,最后得到的都是一串固定长度的字符,一个输入对应一个输出,而它的安全性建立在它的抗碰撞性(Collision-Resistant),即很难找到两个输入拥有同一个输出。
在区块链中,有两个地方用到了哈希函数,一个是Merkle树根哈希,一个是连接区块的区块指针。Merkle树根哈希是给所有的交易求哈希,然后组成一个新的值再求哈希,最后求到只有一个哈希值即Merkle树根哈希。因为无法找到两个输入有同一个输出,这就意味着只要交易的内容变了,那么Merkle树根哈希也会跟着变,所以只要根哈希不变,交易就是正确的。同理,给一个区块数据整体求一个哈希,最后得到的整个哈希值放入到下一个区块头里,只要这个哈希值不变,那么意味着前面的所有区块都没有被篡改,都是正确的。
公私钥对:就是大名鼎鼎的公钥密码算法。
公钥密码算法使用一对相关的密钥来进行加密和解密:一个是公开的“公钥”,另一个是保密的“私钥”。“公钥”可以公开给任何人,用于加密数据。“私钥”必须保密,只有拥有者知道。它用于解密由相对应的公钥加密的数据。
公钥密码算法是基于某些数学问题的复杂性,比如RSA算法(非对称加密的一个流行示例)的安全性基于大数分解的难度。换句话说,你可以将这个过程想象为一个加密和解密的"黑盒"。