椭圆曲线密码技术是密码学界的研究热点之一。椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)和RSA与DSA的功能相同,并且数字签名的产生与验证速度要比RSA和DSA快。
设待签的消息为m;全局参数D=(p,a,b,G,n,h),还有签名者的公钥私钥对(Q,d)。
1.签名的算法步骤
(1)选择一个随机数k,k∈[1,n-1];
(2)计算k G=(x1,y1);
(3)计算r=x1 mod n,如果r=0,则回到步骤(1);
(4)计算k-1 mod n;
(5)计算e=SHA1(m);
(6)计算s=k-1(e+d r)mod n,如果s=0,则回到步骤(1);
(7)对消息的签名为(r,s)。
最后签名者就可以把消息m和签名(r,s)发送给接收者。
当接收者收到消息m和签名(r,s)之后,验证消息签名的有效性,需要取得如下参数:全局参数D=(p,a,b,G,n,h)、发送者的公钥Q。(www.daowen.com)
2.验证算法
(1)检验r、s,要求r、s∈[1,n-1];
(2)计算e=SHA1(m);
(3)计算w=s-1 mod n;
(4)计算u1=e w mod n;u2=r w mod n;
(5)计算X=u1G+u2Q;
(6)如果X=0,表示签名无效;否则,X=(x1,y1),计算v=x1 mod n;
(7)如果v=r,表示签名有效;否则表示签名无效。
下面证明ECDSA算法成立。
如果签名(r,s)是消息m的合法签名,有
再有u1G+u2Q=(u1+u2d)G=k G,其中的k G横坐标x1=r;u1G+u2Q的横坐标为v;即有v=r。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。