【区块链与密码学】第6-5讲:SM2数字签名算法
  xWnxpMg9QrWh 2023年11月02日 76 0


【区块链与密码学】第6-5讲:SM2数字签名算法_签名算法

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

6.5 SM2数字签名算法

在政府高度重视和市场迫切需求的双向驱动下,国密算法SM1—SM9应时而生。其中,SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,包含5个部分:

总则 

数字签名算法

密钥交换协议

公钥加密算法

参数定义

曲线参数

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

【区块链与密码学】第6-5讲:SM2数字签名算法_签名算法_02

密钥生成算法

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

Alice计算公钥PA=dA⋅G

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

签名算法

设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的签名

【区块链与密码学】第6-5讲:SM2数字签名算法_密码学_03SM2数字签名算法签名过程示意图

验证算法

接收到的消息为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′是否成立,若成立则验证通过;否则验证不通过

【区块链与密码学】第6-5讲:SM2数字签名算法_签名算法_04

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

算法的正确性

由于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签名算法的应用

安全:目前尚没有发现求解椭圆曲线离散对数问题的亚指数算法。

实现:软硬件实现规模小,容易实现。160位的椭圆曲线密码的安全性,相当于1024位的RSA密码。

实现难点:倍点运算。

应用场景:目前最大的应用是二代身份证。

应用前景:2019年10月26日,第十三届全国人民代表大会常务委员会第十四次会议表决通过密码法,于2020年1月1日起施行。

今天的课程就到这里啦,下一堂课我们将学习基于身份的数字签名算法,带大家继续了解数字签名,敬请期待!

【区块链与密码学】第6-5讲:SM2数字签名算法_验证算法_05

-- 完 --


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
xWnxpMg9QrWh