国密商用密码算法基础知识

1.SM2

  1. SM2是一种基于椭圆曲线密码算法,主要包括公钥加密数字签名两部分。SM2的安全性基于椭圆曲线离散对数难题,对于给定的椭圆曲线,其离散对数问题的难度远超过同等长度的RSA。因此,SM2相比RSA,可以在提供相同安全级别的情况下,使用更短的密钥长度,从而节省存储和计算资源。

  2. 在SM2中,公钥和私钥的长度通常都是256位。具体来说:

    • 私钥:私钥是一个256位的随机数,也就是32字节。这个随机数是在椭圆曲线的阶数范围内随机选择的。

    • 公钥:公钥是由私钥生成的,它是椭圆曲线上的一个点,包括x和y两个坐标,每个坐标都是256位,也就是32字节。所以,公钥的总长度是512位,也就是64字节

    需要注意的是,虽然私钥只有256位,但由于椭圆曲线离散对数问题的复杂性,破解SM2的私钥需要的计算量与破解相同长度的RSA私钥所需的计算量相比,要大得多。因此,SM2可以提供相当高的安全性。

image-20231230180112004

  1. SM2为非对称加密算法(加解密密钥不一致),即公钥加密私钥解密,公钥可公开私钥不可公开。SM2不仅可以用来加密数据,SM2还可以用来数字签名,使用私钥对数据进行签名,公钥验证签名。
  2. SM2为非对称加密算法,因此每次加密相同的明文也会得到不同得密文数据。
  3. 与SM2同类型得其他常见非对称密码算法还有如RSAElGamal

2.SM3

  1. SM3是一种密码散列函数,类似于MD5和SHA-1,SHA-2。SM3的输出是一个256位的散列值,适用于数字签名和验证、消息认证码以及随机数生成等密码应用中。SM3的安全性主要来自于其抗碰撞性,即对于任意的输入,都很难找到两个不同的输入,使得它们的散列值相同。
  2. HASH算法特性,对于相同的输入一定会得到相同的摘要,如果不同说明消息已经被篡改。
  3. 由于HASH特性,SM3只可用来签名校验,不可用于加密需要恢复为明文的数据块,SM3单向不可逆

image-20231230181921771

3.SM4

  1. SM4是一种分组密码,也就是对输入数据进行分组后,每组进行独立的加密或解密。SM4的分组长度和密钥长度都是128位。SM4使用了复杂的非线性变换和线性变换,以实现高效的混淆和扩散效果。SM4的安全性主要来自于其抗线性和差分攻击的能力。
  2. SM4为对称加密算法(加解密密钥一致),还有其他的对称密码算法如AES,DES,3DES,RC4
  3. SM4密钥长度为128位16个字节(16位UTF-8字符,32位16进制数,21.33(22位+2占位符=24)位base64)
  4. SM4具有多种模式ECB(Electronic Codebook)模式CBC(Cipher Block Chaining)模式CFB(Cipher Feedback)模式OFB(Output Feedback)模式,所有模式中只有ECB模式不需要加入偏移量,其余都需要加入偏移量也就是iv,且长度和密钥一致,因此不建议使用ECB模式。
  5. SM4密钥和偏移量为任意128位即可。

image-20231230183735418