图解SM2算法流程——第2章 签名验签

A.2 第2部分——数字签名算法

A.2.1 签名(User A)

l  签名者用户A的密钥对包括其私钥dA公钥PA=[dA]G= (xA,yA)

l  签名者用户A具有长度为entlenA比特的可辨别标识IDA,

l  ENTLA是由整数entlenA转换而成的两个字节

ZA=H256(ENTLA || IDA || a || b || xG || yG|| xA || yA)。

l  待签名的消息为M

数字签名(r,s)


说明:第5步若r=0r+k=n则返回第3步;第6步若s=0则返回第3步。

A.2.2 验签(User B)

l  签名者用户A的密钥对包括其私钥dA公钥PA=[dA]G= (xA,yA)

l  签名者用户A具有长度为entlenA比特的可辨别标识IDA,

l  ENTLA是由整数entlenA转换而成的两个字节

ZA=H256(ENTLA || IDA || a || b || xG || yG|| xA || yA)。

l  消息为M数字签名(r,s)

 

 

A.2.3 原理

首先,验证流程B4计算的点(x1; y1) 和签名步骤A3 计算的点 ( x1, y1 )相等。

计算流程

(x1; y1)

= [s′]G + [t]PA

= [s′]G + [s′] PA + [r′] PA

= [s′]G +[s′][dA] G +[r·dA] G

= [(1+ dA)×s′] G+[r·dA] G

= [k − r · dA) ] G+[r·dA] G

= [k] G

= ( x1, y1 )

其次, R= ( e′ + x′ 1) mod nr= ( e + x 1 ) mod ne′和 e相等, x′ 1x 1相等,故正常情况下 R= r′。

猜你喜欢

转载自blog.csdn.net/samsho2/article/details/80770862