SM2算法概述

 2021SC@SDUSC

SM2算法概述

SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。

SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。

详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,并给出了选取的标准以便于验证。最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数问题从sP难以得到s,并针对素域和二元扩域给出了密钥对生成细节和验证方式。总则中的知识也适用于SM9算法。

国密算法对比见下图:(来源见水印)

SM2与RSA算法

SM2算法和RSA算法都是公钥密码算法,SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。

对比:(来源见水印)

安全性对比:

速度对比:

SM2算法数学基础

主要内容来源是《密码学原理与实践 第三版》

明文x(也就是初态w0)经过Nr轮加密后变成y,每一轮的加密通过轮函数g完成,g的实现需要两个输入子密钥K以及上一轮加密的结束状态。

解密过程

我的理解上图中的y其实是子密钥K,该函数的输入是子密钥K以及中间状态w。

 单射函数(来源:单射_百度百科

 SPN(代换-置换网络)是特殊的一类迭代密码。

第一轮的输入需要初态w0与K1先异或得出u1再输入S盒。

最后一轮不应用置换,需要Nr轮加密,但需要用到K(Nr+1)个子密钥。

猜你喜欢

转载自blog.csdn.net/vincy_yeha/article/details/120690341
sm2