目录
1. 算法简介
ECDSA(Elliptic Curve Digital Signature Algorithm)是Scott和Vanstone为响应美国国家标准与技术研究院(NIST)对数字签名标准DSS的要求,于1992年提出的使用椭圆曲线密码ECC对数字签名算法DSA进行模拟的椭圆曲线数字签名算法。ECDSA算法于1998年作为ISO标准被采纳,在1999年作为ANSI标准被采纳,并于2000年成为IEEE和FIPS标准。与普通离散对数问题和大数分解问题不同,椭圆曲线离散对数问题没有亚指数时间的解决方法,因此椭圆曲线密码单位比特强度高于其他公钥体制。
2. 算法原理
假设待签名信息为,私钥为、公钥为,签名生成与验证方法如下:
2.1 生成签名
- 生成20字节长的随机数;
- 计算倍点;
- 令;
- 用SHA-1计算待签名信息的哈希值;
- 计算,其中为的模乘法逆元,为签名私钥;
- 输出数字签名,若或则应另选随机数重新计算签名。
2.2 验证签名
假设接收到的消息为、签名信息为,签名验证方法如下:
- 用SHA-1计算接收到的消息的哈希值;
- 计算,为的模乘法逆元;
- 若则说明签名有效,否则签名无效。
2.3 公式推导
- 签名验证的计算公式为:
- 将代入上式,得到:
- 由于,两边求逆得,将其代入上式可得
根据签名过程可知,若签名合法,则有。
3. 参考文献
[1]高承实,王永娟,于刚. 区块链中的密码技术[M]. 浙江大学出版社: 2021. 83-88.