ECDSA数字签名算法

目录

1. 算法简介

2. 算法原理

2.1 生成签名

2.2 验证签名

2.3 公式推导

3. 参考文献


1. 算法简介

        ECDSA(Elliptic Curve Digital Signature Algorithm)是Scott和Vanstone为响应美国国家标准与技术研究院(NIST)对数字签名标准DSS的要求,于1992年提出的使用椭圆曲线密码ECC对数字签名算法DSA进行模拟的椭圆曲线数字签名算法。ECDSA算法于1998年作为ISO标准被采纳,在1999年作为ANSI标准被采纳,并于2000年成为IEEE和FIPS标准。与普通离散对数问题和大数分解问题不同,椭圆曲线离散对数问题没有亚指数时间的解决方法,因此椭圆曲线密码单位比特强度高于其他公钥体制。

2. 算法原理

        假设待签名信息为m,私钥为d_{A}、公钥为P_{A}=\left [d_{A} \right ]G,签名生成与验证方法如下:

2.1 生成签名

  • 生成20字节长的随机数k
  • 计算倍点\left [ k \right ]G=\left ( x,y \right )
  • r=x\,mod\,q
  • 用SHA-1计算待签名信息m的哈希值z=Hash\left ( m \right )
  • 计算s=k^{-1}\left ( z+d_{A}\cdot r \right )mod\,q,其中k^{-1}k的模乘法逆元,d_{A}为签名私钥;
  • 输出数字签名\left ( r,s \right ),若r=0s=0则应另选随机数k重新计算签名。

2.2 验证签名

        假设接收到的消息为m'、签名信息为\left ( r',s' \right ),签名验证方法如下:

  • 用SHA-1计算接收到的消息m'的哈希值z'=Hash\left ( m' \right )
  • 计算\left (u,v \right )=\left (\left [s'^{-1}\cdot z' \right ]G+\left [s'^{-1}\cdot r' \right ]P_{A} \right )\,mod\,qs'^{-1}s'的模乘法逆元;
  • u=r'则说明签名有效,否则签名无效。

2.3 公式推导

  • 签名验证的计算公式为:

\left (u,v \right )=\left (\left [s'^{-1}\cdot z' \right ]G+\left [s'^{-1}\cdot r' \right ]P_{A} \right )\,mod\,q

  • P_{A}=\left [d_{A} \right ]G代入上式,得到:

\left (u,v \right )=\left (\left [s'^{-1}\cdot z' \right ]G+\left [s'^{-1}\cdot r' \right ]\left [d_{A} \right ]G \right )\,mod\,q

\Rightarrow \left (u,v \right )=\left (\left [s'^{-1}\cdot z' \right ]G+\left [s'^{-1}\cdot r'\cdot d_{A} \right ]G \right )\,mod\,q     

\Rightarrow \left (u,v \right )=\left ( \left [s'^{-1}\left (z'+ r'\cdot d_{A} \right ) \right ]G\right )\,mod\,q                     

  • 由于s'=k^{-1}\left ( z+d_{A}\cdot r \right )mod\,q,两边求逆得s'^{-1}=k\left ( z+d_{A}\cdot r \right )^{-1}mod\,q,将其代入上式可得

\left (u,v \right )=\left (\left [ k \right ]G \right )\,mod\,q

        根据签名过程可知,若签名合法,则有u=r

3. 参考文献

[1]高承实,王永娟,于刚. 区块链中的密码技术[M]. 浙江大学出版社: 2021. 83-88.

  • 16
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值