本帖最后由 Aligagago 于 2022-5-5 18:15 编辑
#技术资源# #申请原创#
在了解SM2(非对称加密算法)之前,先给大家科普下什么是对称加密和非对称加密。 对称加密:指信息的发送方和接收方采用同一个密钥去进行数据的加密和解密。
非对称加密:指需要两个不同的密钥(公开密钥public key、私有密钥private key)进行加解密,如果用公开密钥对数据进行加密,只有对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有对应的公开密钥才能解密。
SM2详解: SM2 是由国家密码管理局于 2010年12月17日发布,相关标准为“GM/T0003-2012 《SM2 椭圆曲线公钥密码算法》 ”其算法公开。是我国自主设计的公钥密码算法。在国际标准的 ECC 椭圆曲线密码理论基础上进行自主研发设计,具备 ECC 算法的性能特点更加安全先进。具有抗攻击性强、CPU占用少、内存占用少、网络消耗低、加密速度快等功能特性。
安全性: ECC算法的单位安全强度远高于RSA算法,可用较少的计算能力提供比RSA算法更高的安全强度,而所需的密钥长度却远比RSA算法低。目前基于ECC的SM2 证书普遍采用256位密钥长度,加密强度等同于 3072 位 RSA证书,远高于业界普遍采用的2048位RSA证书。 此外,为了提高安全强度必须不断增加密钥长度,ECC算法密钥长度增长速度较慢,而RSA算法密钥长度则需呈倍数增长。 高效性: 在TLS握手过程中,更长的密钥意味着必须来回发送更多数据以验证连接,产生更大性能损耗和时间延迟。因此,ECC算法能够以较小的密钥和较少的数据传递建立HTTPS连接,确保相同安全强度的前提下提升连接速度。
函数描述: 函数 | | | 初始化ECC算法参数,执行其余函数前必须配置此函数。 | | 生成一对密钥,公钥(32Bytes)和私钥(64Bytes) | | 加密明文(1-2048 Bytes),生成密文,输出为:(04 || C1 || C2 || C3). | | 解密密文(98-2145 Bytes),生成明文。 | | 签名预处理,输入Message and ID,生成 e: pointer to the H256. | | 签名,输入e值,生成signature.R(32Bytes)signature.S(32Bytes) | | 验签,返回验签结果(SM2_VERIFY_SUCESS) |
注:
1.密文输出顺序为 C1,C2,C3(旧标准),C1,C3,C2(新标准GM/T 0009-2012)。 2.04为压缩标识(1Byte),C1为公钥xy分量(64Bytes),C2为加密数据(与明文长度一致),C3为摘要值(32Bytes)。
参考资料: |