ECDSA(Elliptic Curve Digital Signature Algorithm),椭圆曲线数字签名算法。
椭圆曲线数字签名生成
假设Alice希望对消息进行签名,所采用的椭圆曲线参数为,对应的密钥对为,其中为公钥,为私钥。
Alice将按如下步骤进行签名:
- 产生一个随机数,. (签名算法首先生成一个临时私公钥对,该临时密钥对用于计算和值。)
- 计算,将转化为整数.
- 计算,若,则转向第1步. (值为临时公钥的坐标值)
- 计算.
- 计算哈希值,并将得到的比特串转化为整数.
- 计算,若,则转向第1步.
- 即为Alice对消息的签名.
is the multiplicative inverse of modulo .逆元。
椭圆曲线签名验证
为验证Alice对消息的签名,Bob需要得到Alice所用的椭圆曲线参数以及Alice的公钥。
步骤如下:
- 验证和是区间上的整数.
- 计算并将其转化为整数.
- 计算.
- 计算以及.
- 计算.
- 若,则拒绝签名,否则将的坐标转化为整数,并计算.
- 当且仅当时,签名通过验证.
椭圆曲线签名正确性
要证明,只需要证明即可。
证明步骤:
令:
将、带入:
由得出,带入:
证明完毕。
参考文档:
Elliptic Curve Digital Signature Algorithm
Elliptic Curve Cryptography: ECDH and ECDSA
Understanding How ECDSA Protects Your Data.