国密
为了保障商用密码的安全性,国家密码局制定了一系列密码标准,包括:SM1(SCB2)
、SM2
、SM3
、SM4
、SM7
、SM9
、祖冲之密码算法(ZUC
) 等。
SM1
、SM4
、SM7
、祖冲之密码(ZUC
)是对称算法。
SM2
、SM9
是非对称算法。
SM3
是哈希算法。
SM1
、SM7
算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
基本上能接触和使用的就是SM2
、SM3
、SM4
,其他的就比较少。
相关的实现可以查看:SM2、3、4
SM1
对称密码
SM1
算法是分组密码算法,分组长度为128
位,密钥长度都为128
比特,算法安全保密强度及相关软硬件实现性能与AES
相当,算法不公开,仅以IP
核的形式存在于芯片中。
采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。
在调用SM1的功能时,需要接入支持相应算法的硬件密码设备。 软件需要按照 《智能IC卡及智能密码钥匙密码应用接口规范》 的接口规范调用算法,原则上可以支持所有提供该接口的国密硬件。
SM2
椭圆曲线公钥密码算法
SM2
算法就是ECC
椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA
、ECDH
等国际标准,而是采取了更为安全的机制。
另外,SM2
推荐了一条256
位的曲线作为标准曲线。
SM2算法主要是有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。 最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数问题从sP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。
SM2算法在很多方面都优于RSA算法,RSA和SM2的大体对比:
对比 | RSA | SM2 | |||
---|---|---|---|---|---|
计算结构 | 基于特殊的可逆模幂运算 | 基于有限域上的椭圆曲线 | |||
计算复杂度 | 亚指数级 | 完全指数级 | |||
相同安全性能所需公钥位数 | 较多 | 较少(160位的SM2等于1024位的RSA) | |||
密钥生成速度 | 慢 | 快(据说快百倍以上) | |||
加解密速度 | 中等 | 较快 | |||
安全性难度 | 基于大整数分解难题(IFP) | 基于椭圆曲线上的离散对数难题(ECDLP) |
SM3
杂凑算法
SM3
杂凑函数算法,此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。
此算法对输入长度小于2
的64
次方的比特消息,经过填充和迭代压缩,生成长度为256
比特的杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数所构成。
SM4
对称算法
SM4
对称算法是一个分组算法,广泛应用于无线局域网、有线局域网以及移动通信系统中的数据加密。
该算法的分组长度为128
比特,密钥长度为128
比特。加密算法与密钥扩展算法都采用32
轮非线性迭代结构。
解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。