加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

伤不起的算法-ECC-ECDSA

(2012-03-22 17:28:08)
标签:

it

4.ECDSA

ECDSA算法用于数字签名,是ECCDSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s

       签名过程如下:

   1、选择一条椭圆曲线Ep(a,b),和基点G

   2、选择私有密钥kk<nnG的阶),利用基点G计算公开密钥K=kG

   3、产生一个随机整数rr<n),计算点R=rG

   4、将原数据和点R的坐标值x,y作为参数,计算SHA1做为hash,即Hash=SHA1(原数据,x,y)

   5、计算sr - Hash * k (mod n)

   6rs做为签名值,如果rs其中一个为0,重新从第3步开始执行

 

验证过程如下:

   1、接受方在收到消息(m)和签名值(r,s)后,进行以下运算

   2、计算:sG+H(m)P=(x1,y1), r1 x1 mod p

   3、验证等式:r1 r mod p

4、如果等式成立,接受签名,否则签名无效。

 

证明公式:

签名体制的正确性证明: 签名体制的正确性证明:

sG+H(m)P

=(k-H(m)nA)G+H(m)P

=kG-H(m)nAG+H(m)P

=kG-H(m)P+H(m)P

=kG

所以,r1r mod p

R=kGP=nAG; s=k-H(m)*nA mod p

 

简单的例子:

签名过程:

选取随机数k = 3,假设h(m) = 4 ,则计算(x,y) = kG = 3 (x,y) = kG = 3(0,2)=(11,9)r = x mod n = 11 mod 23 = 11s=k-H(m)×nA mod p = 3 4×9 mod 23 = 13。因此对m的签名为(11 13)

 

验证过程:

 签名接收者B得到签名后计算:sG+H(m)P= 13G + 4P = (11,9)r1 = x1

mod n = 11 mod 29 = 11 = r。因此B接受签名。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有