国密算法主要分三种:分组密码算法、公钥密码算法、摘要算法。
分组密码算法
私钥加密算法,因加密和解密使用同一密钥,又称对称加密算法。
分组密码算法将明文数据按固定长度进行分组,然后在同一密钥控制下逐组进行加密,从而将各个明文分组变换成一个等长的密文分组的密码。其中二进制明文分组的长度称为该分组密码的分组规模。
常用的对称加密算法,国际算法有3DES、AES,国密算法主要是SM4。
SM4算法的分组长度为128比特,密钥长度为128比特。加密算法和密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法结构相同,至少轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
如果报文传输时将密钥一并传输,则存在密码泄露的风险。
公钥密码算法
公钥加密算法,存在一对密钥,公钥和私钥,加解密使用不同密钥。即非对称加密算法。
非对称加密算法,国际算法主要使用RSA,国密算法为SM2。
SM2算法是一种椭圆曲线公钥密码算法,210位的SM2密钥强度与2048位的RSA强度相当。该算法于2010年12月在国家密码管理局网站正式对外公布。
公钥算法的特点:
- 公钥可以公开,私钥仅自己持有;
- 用公钥加密的数据,只能用对应的私钥解密;用私钥加密的数据,只能用对应的公钥解密;
- 反之,如果可以用公钥解密,则必然是对应的私钥加的密;如果可以用私钥解密,则必然是对应的公钥加的密;
- 公钥与私钥是相对的,本身并没有限制必须哪一个是公钥或私钥。
摘要算法
摘要算法主要用来校验数据的完整性,
国际算法主要有MD5、SHA-1及其变体,国密算法为SM3。
SM3算法适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法。对应给定的长度为k(k<264)的消息,SM3密码杂凑算法经过填充、迭代压缩和选裁,生成杂凑值。SM3对于任意长度的报文的输入,仅预处理过的消息分组长度为512比特,最终产生一个32字节的哈希值。
公钥算法的缺点
公钥算法的效率较低,比常用的私钥算法慢很多。所以公钥算法不适用为大量的原始信息进行加密。为了兼顾安全性和效率,可以使用公钥算法和私钥算法结合的方式。
即原始信息使用对称算法SM4加密,而SM4的密钥使用非对称算法SM2进行加密。将SM2加密后的SM4密钥与SM4加密后的数据密文一并传输。
接收方收到报文后先对SM4密钥进行SM2解密,再使用解密出的SM4密钥对数据密文进行SM4解密。
版权归原作者 Mr清奇 所有, 如有侵权,请联系我们删除。