简单理解椭圆曲线数字签名算法(ECDSA)

Elliptic Curve Digital Signature Algorithm

通俗化的理解:

1、一条曲线方程

2、在曲线上随机选择一个起始点(私钥)

3、利用起始点做一些变化,获得曲线上的第二个点(公钥)

4、利用私钥与文件hash值进行运算得到数字签名,40字节

5、数字签名由两部分构成RS,各160

6、用公钥可验证签名的正确性,利用公钥和S运算可得到R,相等即正确


细节:

1、整数运算,数字区间由签名位数决定,该算法使用160

2、曲线方程形式 y^2=(x^3+a*x+b) mod p p是小于160位(二进制)的质数

3、点加(point addition)的计算。在椭圆曲线上取一点p;过p做切线,得切线与椭圆曲线的交点;交点取反,得2pk*p的乘法以此类推,做过(k-1pp的直线与椭圆曲线的交点取反。

4R=k*P的性质,已知RP的值,无法推出k的值。(trap door function

5、使用ECDSA需要的参数 a, b, p, N, G 前三者定义了曲线方程 N表示曲线上的点的数目 G表示起始点(横坐标)

6、设置一个随机数字(20字节)为私钥(dA),公钥(Qa=私钥(dA*G

7、生成随机数字k20字节),用Gk进行点乘(point multiplication),得到的点的x轴坐标值为R

8、通过SHA1计算文件的hashzS=k^-1(z+dA) mod p k^-1(mod p)为k的模反元素,即(k*k^-1)≡1(mod p)。因为p为质数,k是随机生成的整数,故k的模反元素一定存在。


9、利用公式S^-1*z*G+S^-1*R*Qa得到20字节答案,与R比较,若相同则签名正确。



猜你喜欢

转载自blog.csdn.net/ywy19930523/article/details/80078359