公私钥
私钥: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) 相等。
领取专属 10元无门槛券
私享最新 技术干货