商用密码应用与安全性评估要点笔记(SM2数字签名算法)

1、SM2算法简介

        SM2密码算法是我国2010年发布的商用密码算法,属于公钥密码算法,也成为非对称密钥机制密码算法。SM2基于椭圆曲线离散对数问题,相对于RSA基于大整数因数分解更具优越性。

        SM2算法于2012年成为我国密码行业标准,并于2017年被ISO采纳,成为国际标准的一部分。SM2算法行业标准包括如下构成:

        GMT 0003.1-2012-SM2 椭圆曲线公钥密码算法第1部分:总则

        GMT 0003.2-2012-SM2 椭圆曲线公钥密码算法第2部分:数字签名算法

        GMT 0003.3-2012-SM2 椭圆曲线公钥密码算法第3部分:密钥交换协议

        GMT 0003.4-2012-SM2 椭圆曲线公钥密码算法第4部分:公钥加密算法

        GMT 0003.5-2012 SM2 椭圆曲线公钥密码算法第5部分:参数定义

        简要说,SM2是一种椭圆曲线密码学(Elliptic Curve Cryptograghy,ECC)的实现,具体推荐参数是定义在256bit素域上。

        SM2算法私钥长度为256bit,公钥长度为512bit。数字签名算法的输出签名长度为512bit,公钥加密算法的输出密文长度为文明长度+96byte。

2、数字签名算法

        数字签名算法由一个签名者对数据产生数字签名,并由一个验签者验证签名的可靠性。每个签名者由一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。一般来说,数字签名不会直接对原始数据进行签名操作,而是先使用密码杂凑算法(例如SM3)对原始数据进行压缩输出摘要值,再对该摘要值进行签名。在验证时,也要同样进行得到摘要值进行比较验证。

        上面提到了私钥和公钥,具体来说私钥dA为256bit随机数,对应的公钥PA=[dA]G=(XA,YA),XA和YA都是256bit,所以PA就是512bit长。按照SM2参数公开如下,SM2使用素数域256位椭圆曲线,基点G也就是(xG、yG),p是一个大素数,也就是定义在有限域GF(p)上的椭圆曲线。

 2.1 签名生成算法

        这里ZA是签名者的可辨别标识(公开固定值)、M的待签名的消息(公开)、PA是公钥(公开)、DA是私钥(不可公开妥善保存)。注意这里引入随机数k,从而使得即使对相同的M多次签名,每次的签名值都不同。

        SM2算法输出数字签名是(r,s),其中r和s都是256bit长,所以数字签名长度为512bit。签名者将原始消息M和签名(r,s)一起发送给验证者。

2.2签名验证算法

        验证者在验签时拥有的数据包括ZA(签名者的公开标识)、PA(签名者的公钥)以及收到的M'和签名值(r',s')。这里我们可以看到,SM2算法的验签过程相比较签名过程要计算更多的椭圆曲线上点乘运算,故SM2算法的验签速度较慢。

        

 3、SM2数字签名算法特点(与RSA对比)

(1)安全性高,相当于RSA-3072。SM2安全强度为128位。

(2)密钥短(256bit VS. 3072bit)

(3)私钥产生简单,256bit的随机数即可。RSA则需要大素数判定等。

(4)签名速度快,同等安全强度下,速度远超RSA。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游鲦亭长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值