当前所在位置:首页 > 关于我们 > 资讯中心

ECDSA签名算法介绍

发布时间:2021-12-10

一、ECDSA概述
       椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。与普通的离散对数问题(DLP)和大数分解问题(IFP)不同,椭圆曲线离散对数问题没有亚指数时间的解决方法。因此椭圆曲线密码的单位比特强度要高于其他公钥体制。
       数字签名算法(DSA)在联邦信息处理标准FIPS中有详细论述,称为数字签名标准。它的安全性基于素域上的离散对数问题。可以看作是椭圆曲线对先前离散对数问题(DLP)的密码系统的模拟,只是群元素由素域中的元素数换为有限域上的椭圆曲线上的点。椭圆曲线离散对数问题远难于离散对数问题,单位比特强度要远高于传统的离散对数系统。因此在使用较短的密钥的情况下,ECC可以达到于DLP系统相同的安全级别。这带来的好处就是计算参数更小,密钥更短,运算速度更快,签名也更加短小。


二、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 mod p;
       3、验证等式:r1 ≡ r mod p;
       4、如果等式成立,接受签名,否则签名无效。

上一篇:LCSHA204—EncryptRead命令解析 下一篇:RSA算法明文长度介绍