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.