美文网首页
2020-12-30 ECDSA算法原理理解

2020-12-30 ECDSA算法原理理解

作者: oracle3 | 来源:发表于2020-12-30 16:10 被阅读0次

研读了两篇文章,《什么是数字签名?区块链共识指的是啥?用物理学理解共识机制》《一文读懂 ECDSA 算法如何保护数据》
基本上理解了ECDSA算法的公私钥生成,签名和验签的原理,这里按自己的理解整理如下:

私钥和公钥的关系

1、先在椭圆曲线上随便选一个点,叫G点
2、然后随机生成一个大整数,就是私钥Ka
3、公钥Pa就是Ka个G在曲线上相加得到,因此Pa = Ka \cdot G

签名的过程

1、假设alice的公私钥是Ka和Pa,需要验证的消息m
2、随机生成新的公私钥对,K和P
3、那么r就是P的x坐标值,记作 r=X_p
4、计算s=K^{-1} \cdot (hash(m)+Ka \cdot {r})
输出(r,s)就是签名的结果

验签的过程

1、计算a=s^{-1} \cdot hash(m)
2、计算b=s^{-1} \cdot r
3、计算a \cdot G+b \cdot Pa=a \cdot G + b \cdot Ka \cdot G
=(a+b \cdot Ka) \cdot G
=s^{-1} \cdot (hash(m)+r \cdot Ka) \cdot G
由于在签名的第四步我们得到了s=K^{-1} \cdot (hash(m)+Ka \cdot r)
在公式的两边同时乘以k \cdot s^{-1},可以得到:
k=s^{-1} \cdot (hash(m)+r \cdot Ka)
因此第三步继续化简:
s^{-1} \cdot (hash(m)+r \cdot Ka) \cdot G
=k \cdot G
=P
我们只需要验证这个计算出来的P的x坐标是否和r一样,就证明验签通过了

相关文章

网友评论

      本文标题:2020-12-30 ECDSA算法原理理解

      本文链接:https://www.haomeiwen.com/subject/vnuhoktx.html