加密技术作为区块链技术里极其重要、不可或缺的一部分,为区块链的匿名性、不可篡改和不可伪造等特点保驾护航。如果说共识机制是区分一个公链质量的核心和灵魂,那么加密算法则是一个公链是否值得信赖、是否有基本的安全性的底线。

比起共识算法,加密算法与密码学相关,更难理解,大多数公链采用的加密算法,都是经过反复验证和时间的检验的,几乎均采用保守型技术选型。加密算法一旦因为漏洞而被攻击,那么整条区块链的数据都将受到挑战。

如此重要的加密算法,需要应用在区块链哪些场景中,目前公链又普遍使用什么样的加密算法呢?

区块链使用的最为广泛的加密算法

加密算法一般分为对称加密和非对称加密,在区块链中普遍使用的是非对称加密。非对称加密是指在加密和解密过程中使用两个非对称的密码,分别称为公钥和私钥。

非对称秘钥对具有两个特点:一是用其中一个密钥(公钥或私钥)加密信息后,只有另一个对应的密钥才能解开。二是公钥可向其他人公开,甚至人人可获取,私钥则保密,其他人无法通过该公钥推算出相应的私钥。利用此种算法生成的公钥和私钥,目前所知实际上是无法从公钥反向破解出私钥的。

加密算法在区块链中的意义

在非对称加密中,代表算法有 RSA、ECC/SM2。
RSA:经典的公钥算法,对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。
ECC:椭圆曲线算法。主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。

两者对比之下,各有千秋,但对于追求更高安全性的区块链来说,大多数公链还是会选择椭圆曲线算法。

加密算法的应用场景
非对称加密在区块链中主要应用于信息加密、数字签名和登录认证。即是主要应用在区块链数字货币交易中,防止篡改和伪造信息。

信息加密:信息发送者A利用信息接收者B的公钥将信息加密后再发给B,B即可利用自己的的私钥将信息解密。

数字签名场景:则是由发送者A 采用自己的私钥加密信息后发送给B,B使用A 的公钥对信息解密、从而可确保信息是由A发送的。

登录认证场景:则是由客户端使用私钥加密登录信息后发送给服务器,后者接收后采用该客户端的公钥解密并认证登录信息。