国家密码局认定的国产密码算法-国密算法,是我国自主研发的一套数据加密处理系列算法,包括非对称算法SM2、SM9;对称算法SM1、SM4、ZUC(祖冲之密码算法);杂凑算法SM3。
国密算法分类
到目前为止的开源算法只有SM2、SM3、SM4,下面我们对这三种算法做一个介绍。
在推出国密算法之前,很多行业应用中,非对称、对称、杂凑算法使用的是国际算法,现在加推的国密算法与国际算法并行使用,存在一个对应关系:
国密算法-国际算法对应关系
SM2算法
SM2是基于ECC的椭圆曲线公钥密码算法,包括椭圆曲线数字签名算法-用于数字签名、椭圆曲线密钥交换协议-用于密钥协商、椭圆曲线公钥加密算法-用于数据加解密。SM2算法主要考虑素域Fp和F2m上的椭圆曲线,可以依据椭圆曲线方程设置不同的初始参数:
Fp-192曲线
Fp-256曲线
SM2椭圆曲线公钥密码算法推荐曲线参数
用户的密钥对公钥PB=(xB,yB)、私钥dB,可以由私钥计算出公钥,但根据离散对数问题,很难从公钥推导出私钥。新推出的SM2算法,无论是复杂度、安全性还是计算速度上都优于流行多年的RSA算法。
SM3算法
SM3算法是一种密码杂凑算法,用于数字签名和验证、消息认证码的生成与验证等。为了保证任意长的输入消息串变化成固定长的输出串,以满足密码应用的安全需求,杂凑算法的输出都不应太短,比如MD5输出128比特杂凑值、SHA-1输出160比特杂凑值,SM3算法经过填充、迭代、压缩,杂凑值输出有256位长度,安全性比MD5、SHA-1更高。
SM4算法
SM4算法是一种分组对称算法,使用模2加和循环移位作为基本运算。密钥长度为128比特,分组数据长度为128比特,加密算法采用32轮非线性迭代结构,解密算法与加密算法结构相同,但是轮密钥与加密算法使用相反,是加密轮密钥的逆序。
DES算法密钥分组和数据分组都为64位,16轮计算,相对而言,SM4算法安全性更高一些。与其它对称算法一样,SM4算法也可以套用ECB、CBC、CFB、OFB、CTR、XTS的加密模式。