分享:椭圆曲线数字签名算法(ECDSA)

2019-12-18 18:46发布

本帖最后由 SCREA 于 2017-6-16 16:40 编辑

椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中。与普通的离散对数问题(discrete logarithm problem  DLP)和大数分解问题(integer factorization problem  IFP)不同,椭圆曲线离散对数问题(elliptic curve discrete logarithm problem  ECDLP)没有亚指数时间的解决方法。因此椭圆曲线密码的单位比特强度要高于其他公钥体制。


数字签名算法(DSA)在联邦信息处理标准FIPS中有详细论述,称为数字签名标准。它的安全性基于素域上的离散对数问题。椭圆曲线密码(ECC)由Neal Koblitz和Victor Miller于1985年发明。它可以看作是椭圆曲线对先前基于离散对数问题(DLP)的密码系统的模拟,只是群元素由素域中的元素数换为有限域上的椭圆曲线上的点。椭圆曲线密码体制的安全性基于椭圆曲线离散对数问题(ECDLP)的难解性。椭圆曲线离散对数问题远难于离散对数问题,椭圆曲线密码系统的单位比特强度要远高于传统的离散对数系统。因此在使用较短的密钥的情况下,ECC可以达到于DL系统相同的安全级别。这带来的好处就是计算参数更小,密钥更短,运算速度更快,签名也更加短小。因此椭圆曲线密码尤其适用于处理能力、存储空间、带宽及功耗受限的场合。

ECDSA是椭圆曲线对DSA的模拟。ECDSA首先由Scott和Vanstone在1992年为了响应NIST对数字签名标准(DSS)的要求而提出。ECDSA于1998年作为ISO标准被采纳,在1999年作为ANSI标准被采纳,并于2000年成为IEEE和FIPS标准。包含它的其他一些标准亦在ISO的考虑之中。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
SCREA
1楼-- · 2019-12-19 00:29
4.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、如果等式成立,接受签名,否则签名无效。

证明公式:
签名体制的正确性证明: 签名体制的正确性证明:
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接受签名。
dellric
2楼-- · 2019-12-19 02:49
搬个板凳来围观
huangqi412
3楼-- · 2019-12-19 07:49
好多年前那个office注册码就是这个  然后被破解吧
SCREA
4楼-- · 2019-12-19 10:30
 精彩回答 2  元偷偷看……
FireHe
5楼-- · 2019-12-19 13:41
在MCU资源上能否很好实现?不需要生成密钥。只需要加解密运算

一直想找一个在ARM M0、M3、M4上实现的非对称加密
SCREA
6楼-- · 2019-12-19 15:09
FireHe 发表于 2017-6-16 21:16
在MCU资源上能否很好实现?不需要生成密钥。只需要加解密运算

一直想找一个在ARM M0、M3、M4上实现的非对 ...

https://www.amobbs.com/thread-5466438-1-1.html

测试过这上面的TEA、AES,后面不知道从哪搞了MD5.
挺好用。

其他待测

一周热门 更多>