3.3 国密算法
区块链是一种以密码技术为基础,以去中心化的方式对大量数据进行组织和维护的数据结构。然而,现有的区块链技术完全使用国际加密算法,无法适应国内的密码安全要求,同时不支持对算法进行选择,不利于国产化等特定要求。要解决上述现有技术的问题,需要将国密算法应用于区块链系统。本节主要介绍经典的国密非对称密码算法SM2和哈希算法SM3。
3.3.1 非对称密码算法SM2
非对称密码算法SM2是国家密码管理局于2010年12月17日发布的,是基于椭圆曲线上点群离散对数难题而设计的算法,相关标准为GM/T 0003—2012《SM2椭圆曲线公钥密码算法》,2016年被纳入中国国家密码标准,标准编号为GB/T 32918—2016。
SM2算法是公开的,替换了商用密码中相对比较老旧的RSA算法。256比特SM2密码强度已经超过了2048比特的RSA密码,在签名的速度上SM2算法要比RSA算法快得多,但是在验证签名的时候正好相反,SM2算法不及RSA算法。SM2算法主要用于数字签名的签名和验证过程。
SM2算法与RSA算法的简单特点对比见表3-3。
表3-3
在完成相同的安全要求情况下,SM2算法比RSA算法更加有优势。256比特SM2算法的安全等级其实是高于2048比特RSA算法的,约为3072比特RSA算法。由于RSA算法设计较早,所以SM2算法理所当然地要比RSA算法性能更优。
3.3.2 哈希算法SM3
哈希算法SM3也是由国家密码管理局于2010年12月17日发布的,是从哈希算法SCH4演进而来的,相关的标准为GM/T 0004—2012《SM3密码杂凑算法》,2016年正式标准化为中国国家密码标准(GB/T 32905—2016)。
在算法上,SM3算法同样是公开的,其输出值的长度是256比特。国家密码管理局表示,SM3算法的特性与SHA256算法相当。SM3算法主要应用在数字签名的签名数据准备过程、随机数的生成和消息的校验等场景。
SM3算法的支持度在不断提高。在加密和解密功能里面广泛使用的OpenSSL库在1.1.1版本中支持了SM2、SM3、SM4算法,支持除了来自软件层面,还有硬件层面。国内一些处理器公司在其生产的处理器中加入了对SM3、SM4算法的硬件支持,这些支持都将对SM3算法的逐步普及提供很大的帮助。