首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SM2算法主要功能

公私钥

私钥:BN_大整数

公钥:EC-Point椭圆曲线上的点

整体结构

2、数字签名算法

2.1签名(User A)

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

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

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

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

l  待签名的消息为M,

l  数字签名(r,s)

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

2.2验签(User B)

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

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

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

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

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

2.3原理:

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

计算流程

(x′1; y′1)

= [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 )

3、密钥交换协议

3.1密钥交换(User A & User B)

3.2原理参与KDF运算的所有输入数据均相等,所以得到的协商密钥自然相同。

4、密钥封装和加解密

4.1加密(User A)

说明:第3步计算S=[h]PB略,因h=1。

4.2解密(User B)

说明:第2步计算S=[h]C1略,因h=1。

4.3原理

关键在于说明加密流程第4步计算的 [k]PB= (x2, y2) 与解密流程第2步计算的 [dB]C1 = (x2, y2) 相等。解密流程第2步计算

计算流程

(x2, y2)

= [dB]C1

=[dB][k]G

=[k] [dB] G

=[ k] PB

[k]PB是加密流程第4步计算值。所以加密流程第4步计算的[k]PB = (x2,y2) 与解密流程第2步计算的[dB]C1 = (x2, y2) 相等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210122A040JX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券