【密码学(3)】-国密系列1-SM2

2022-12-01 15:52:15 浏览数 (2)

题外话:不知道鸽了多久了,这次补更一下,出的密码学加密算法还挺少的,打算先搞4期密码算法,国密SM系列。

SM2算法概念

SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。

SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2椭圆曲线算法替换RSA算法。

SM2原理

(1)曲线参数

SM2标准推荐使用256位素域Fp上的椭圆曲线y2=x3 ax b,其中:

(2)密钥生成算法

Alice选择随机数dA做为私钥,其中0

Alice计算公钥PA=dA⋅G

输出密钥对(sk=dA, pk=PA)

(3)签名算法

设Alice发签名消息M给Bob,IDA是Alice的标识符,ENTLA是IDA的长度,dA是A的私钥,基点G= (xG,yG),A的公钥PA=dA ⋅ G= (xA, yA).。

ZA=H(ENTLA ‖IDA ‖a‖b‖ xG ‖ yG ‖ xA ‖ yA), H是SM3算法

①设置M*=ZA ‖M并计算 e = H(M*)

②产生随机数k∈[1, n-1]

③计算椭圆曲线点G1=k ⋅ G= (x1, y1)

④计算r=(e x1) mod n,若r=0或r k=n则返回②

⑤计算s=(1 dA)−1·(k −r ·dA)mod n,若s=0则返回②

⑥以(r, s)作为对消息M的签名

SM2数字签名算法签名过程示意图

(4)验证算法

接收到的消息为M′,签名为(r′, s′)和发送者Alice的公钥PA,Bob执行如下步骤验证合法性:

检验r′∈[1, n-1]是否成立,若不成立则验证不通过

检验s′∈[1, n-1]是否成立,若不成立则验证不通过

设置M*=ZA‖M′

计算e′= H(M* )

计算t= (r′ s′) mod n,若t=0,则验证不通过

计算椭圆曲线点 (x1′,y1′)= s′ · G t · PA

计算v=(e′ x1′) mod n,检验v=r′是否成立,若成立则验证通过;否则验证不通过

SM2数字签名算法验证过程示意图

(5)算法的正确性

由于s= (1 dA) −1·(k − r ·dA),PA = dA · G,我们可以得到:

s· G t · PA

= s· G (r s)·dA · G

=(s s · dA ) · G r · dA · G

= s· (1 dA ) · G r · dA · G

= (1 dA)−1 · (k −r · dA) · (1 dA ) · G r · dA · G

= (k− r · dA) · G r · dA · G

= k· G −r · dA · G r · dA · G

= k· G

验证算法的特点

SM2签名验证算法的一个显著特点是,其中加入了较多的检错功能。

因为这是收信者对收到的签名数据进行验证,而签名数据是经过信道传输过来的,由于信道干扰和对手的篡改,因此,签名数据中含有错误或被篡改的可能性是存在的。

把错误和篡改检测出来,对提高签名验证系统的数据完整性、系统可靠性和安全性是有益的。

验证算法中的①检查签名分量r’的合理性

验证算法中的②检查签名分量s’的合理性

验证算法中的⑤检查t的正确性

国密SM2算法证书VS传统SSL证书的优势

(1)加密强度更高

传统SSL证书通常是RSA算法,RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

但随着密码技术和计算机技术的发展,目前1024位RSA算法已经被证实存在被攻击的风险,美国国家标准技术研究院在2010年要求全面禁用1024位RSA算法,并升级到了2048位RSA算法。

我国现阶段使用的国密SM2算法是在椭圆曲线密码理论基础进行改进而来,其加密强度比RSA算法(2048位)更高。

(2)安全性能更强

作为传统SSL证书的核心算法,RSA算法虽然仍占据着SSL证书市场的主流地位,但是随着计算机技术的发展,加上对因子分解的改进,对低位数的密钥攻击已成为可能,传统的SSL证书也面临着更多的未知风险。

而基于ECC椭圆曲线算法的SM2算法,则普遍采用256位密钥长度,它的单位安全强度相对较高,在工程应用中比较难以实现,破译或求解难度基本上是指数级的。因此,SM2算法可以用较少的计算能力提供比RSA算法更高的安全强度,而所需的密钥长度却远比RSA算法低。

此外,若要不断提高安全强度,则必须增加密钥长度,SM2算法密钥长度增长速度较慢(例如:224-256-384),而RSA算法密钥长度则需呈倍数增长(例如:1024-2048-4096),这使得SM2算法的安全性能表现更佳。

(3)传输速度更快

在通讯过程中,更长的密钥意味着必须来回发送更多的数据以验证连接。256位的 SM2 算法相对于2048位的RSA 算法可以传输更少的数据,也就意味着更少的传输时间。

经国外有关权威机构测试,在Web服务器中采用SM2算法,Web服务器新建并发处理响应时间比RSA算法快十几倍。

当前,我国正在大力推动国密SM2算法,替换采用RSA算法的SSL证书,以政府、金融领域为主要示范行业,并在教育、社保、交通、通信、能源、税收、公共安全、国防工业等重要领域广泛要求使用符合国家标准的密码算法和产品,确保密码算法这一关键环节的自主可控,保障我国信息安全基础设施的安全可信。

参考文献:

[1]https://baijiahao.baidu.com/s?id=1718040869557055414&wfr=spider&for=pc

[2]https://blog.csdn.net/Digquant/article/details/124429472

[3] https://blog.csdn.net/chexlong/article/details/103293311

0 人点赞