区块链与密码学全民课堂第6-5讲:SM2数字签名算法

导语:本课堂用通俗易懂的系列内容为大家呈现区块链与密码学领域相关知识。这里有知识也有故事,从感兴趣到有乐趣,全民课堂等你来学。这个系列中的课程内容首先从比特币着手进行入门介绍,再延伸至区块链的相关技术原理与发展趋势,然后深入浅出地依次介绍在区块链中应用的各类密码学技术。欢迎大家订阅本公众号,持续进行学习。

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

6.5 SM2数字签名算法

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

  • 总则 
  • 数字签名算法
  • 密钥交换协议
  • 公钥加密算法
  • 参数定义

图片– 曲线参数图片

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

区块链与密码学全民课堂第6-5讲:SM2数字签名算法

– 密钥生成算法 –

  • Alice选择随机数dA做为私钥,其中0<d<n,
  • Alice计算公钥PA=dA⋅G
  • 输出密钥对 (sk=dApk= PA)

– 签名算法 –

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

ZA=H (ENTLA ‖IDA ‖ab‖ 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数字签名算法
SM2数字签名算法签名过程示意图

图片

– 验证算法 –图片

接收到的消息为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数字签名算法
SM2数字签名算法验证过程示意图图片

– 算法的正确性 –图片

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

· G + · PA

= s · G + (r + sdA · G

(s + · dA ) · G· dA · G

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

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

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

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

= k · G

-验证算法的特点 –

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

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

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

  • 验证算法中的①检查签名分量r’的合理性
  • 验证算法中的②检查签名分量s’的合理性
  • 验证算法中的⑤检查t的正确性

– SM2签名算法的应用 –

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

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

实现难点:倍点运算。

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

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

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

区块链与密码学全民课堂第6-5讲:SM2数字签名算法

同学们可以关注PlatON World,持续学习哦。我们下节课见啦。

本文转载自https://mp.weixin.qq.com/s?__biz=MzUzNTg2ODg5MQ==&mid=2247492208&idx=1&sn=f93b3e9ae511bc80fc4fc964c6e73478&chksm=fafc46c4cd8bcfd275e3b5fb8ddcc34ec201bc1a0c2ab33cf0a7d66ec334572c3a5904e4ede3&scene=178&cur_album_id=1411898566347735044#rd

(0)
PlatONWorld-M6的头像PlatONWorld-M6管理员
上一篇 7 3 月, 2021 03:43
下一篇 8 3 月, 2021 06:15

相关推荐

发表回复

登录后才能评论