前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【密码学(3)】-国密系列1-SM2

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

作者头像
帆说区块链
发布2022-12-01 15:52:15
9480
发布2022-12-01 15:52:15
举报
文章被收录于专栏:帆说区块链帆说区块链

题外话:不知道鸽了多久了,这次补更一下,出的密码学加密算法还挺少的,打算先搞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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帆说区块链 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1)曲线参数
  • (2)密钥生成算法
  • (3)签名算法
  • (4)验证算法
  • (5)算法的正确性
  • 验证算法的特点
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档