DSA算法是一种数字签名算法,其原理是基于整数有限域离散对数难题。ECC算法是一种公钥加密算法,基于椭圆曲线数学来实现安全性。而当这两种算法相结合,就会诞生出一种新的数字签名算法——ECDSA算法。

ECDSA算法简介

ECDSA算法的全称为Elliptic Curve Digital Signature Algorithm,即椭圆曲线DSA。它是DSA算法应用了椭圆曲线加密算法的变种。ECDSA算法和DSA算法一样,无法用于数据加密。ECDSA算法主要应用于数字签名,以保障信息在传递和使用过程中的完整性、真实性和不可抵赖性。

ECDSA算法的整个签名过程与DSA类似,不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r和s两个签名值。椭圆曲线算法的原理很复杂,但是具有很好的公开密钥算法特性,通过公钥无法逆向获得私钥,可以有效提高数字签名的安全性。

ECDSA算法

ECDSA算法签名过程

生成过程

  1. 选择一条椭圆曲线Ep(a,b),和基点G;
  2. 选择私有密钥k(k<n,n为G的阶),利用基点G计算公开密钥K=kG;
  3. 产生一个随机整数r(r<n),计算点R=rG;
  4. 将原数据和点R的坐标值x,y作为参数,计算SHA256作为hash,即Hash=SHA1(原数据,x,y);
  5. 计算s≡r - Hash * k (mod n);
  6. r和s作为签名值,如果r和s其中一个为0,重新从第3步开始执行。

ECDSA算法

验证过程

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

  1. 计算:sG+H(m)P=(x1,y1), r1≡ x1 mod p。
  2. 验证等式:r1 ≡ r mod p。
  3. 如果等式成立,接受签名,否则签名无效。

ECDSA算法的优缺点

ECDSA算法的优点其实就是ECC算法的优点,它在实现相同安全性的条件下,所需要的密钥更短,并且密钥增长幅度也比较慢,计算量比较小,存储空间占用也比较小,并且处理速度比较快。

而就像RSA算法的普及程度比ECC算法高一样,ECDSA算法也具有同样的问题。椭圆曲线原理复杂,在保证安全的同时,实现难度技术复杂。

免责声明:素材源于网络,如有侵权,请联系删稿。