原标题:技术科普 | 国密算法在Ultrain区块链中的运用
密码学是区块链的基础,区块链中大量采用了密码学算法,包括对称加密、非对称加密、单向散列算法、数字签名等技术。
为了实现密码学技术的自主可控,中国也定义了自己的国密标准,2020年央行颁布的《金融分布式账本技术安全规范》中,明确要求国内的区块链技术必须支持国密算法。Ultrain区块链现已完成对国密算法的支持,符合央行安全规范的全部要求。
本文首先介绍了对称加密、非对称加密和数字签名的基本概念,然后重点讲述了非对称加密算法中的椭圆曲线密码技术,最后阐述了国密算法在Ultrain区块链中的运用。针对openssl国密算法签名验签性能低下的问题,Ultrain对算法实现进行了优化,实现了3~4倍的性能提升,相关的优化代码已经提交到openssl Github
(https://github.com/openssl/openssl/issues/11992)。
01
对称加密与非对称加密
1.1 对称加密
对称加密(symmetric cryptography)是指在加密和解密时使用相同密钥的方式。对称密钥有很多别名,如公共密钥密码,传统密码,私钥密码,共享密钥密码等。图1和图2分别是对称密码加密,解密过程,加密和解密使用相同的密钥,所以称为对称加密。
图1. 对称密码加密
图2. 对称密码解密
1.2 非对称加密
非对称加密(asymmetric cryptography)在加密和解密时使用不同密钥,非对称加密也称为公钥加密(public-key cryptography)。它们通常是一对密钥: 公钥(public key)和私钥(private key), 公钥加密后的密文,私钥可以解密;私钥加密后的密文,公钥可以解密。公钥是由私钥推导出来的,且公钥是公开的。非对称加密解决了对称加密过程中,加密密钥的分发问题。一般公钥用于加密,私钥用于解密。当私钥用于加密时,本质就是数字签名(digital signature),即用公钥解密可以验证信息确实为私钥加密结果。公钥密码目前主要有如下几种:
RSA(Ron Rivest, Adi Shamir和Leonard Adleman的姓氏的首字母组成),该算法利用大质因数分解的困难度。
EIGamal,由Taher EIGamal设计,与RSA不同,它是利用mod N下求离散对数的困难度。
Rabin,由M.O.Rabin设计的公钥算法。Rabin方式求平方根的困难度
椭圆曲线密码(Elliptic Curve Cryptography, ECC),
今天我们重点讲解的密码学算法,它是通过将椭圆曲线上的特定点进行特殊的乘法运算来实现的,它利用了这种乘法算法的逆运算非常困难这一特性。
公钥密钥算法较对称加密算法运算慢,所以ÿ