ECDSA 和 ECDH



ECDH:

      ECC算法用途比RSA还猛,不仅可以加解密、签名验证。还可以与DH结合使用,用于密钥磋商,这个密钥交换算法称为ECDH。交换双方可以在不共享任何秘密的情况下协商出一个密钥。ECC是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点P,一个整数k,求解点Q=kP很容易;给定两个点P、Q,知道Q=kP,求整数k确是一个难题。ECDH即建立在此数学难题之上。密钥磋商过程:

      假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。

1)Alice生成随机整数a,计算A=a*G。Bob生成随机整数b,计算B=b*G。

2)Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。Bob将B传递给Alice。同理,B的传递可以公开。

3 )Bob收到Alice传递的A,计算Q=b*A

4)Alice收到Bob传递的B,计算Q‘=a*B

Alice、Bob双方即得Q=b*A=b*(a*G)=(b*a)*G=(a*b)*G=a*(b*G)=a*B=Q'(交换律和结合律),即双方得到一致的密钥Q。




ECDSA:

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

      签名过程如下:

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

  2、选择私有密钥k(k<n,n为G的阶),利用基点G计算公开密钥K=kG;

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

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

  5、计算s≡r - Hash * k (mod n)

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

 

验证过程如下:

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

  2、计算:sG+H(m)P=(x1,y1),r1≡x1 modp。

  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

所以,r1≡r mod p。

R=kG;P=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 =11,s=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接受签名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值