ECDSA算法

让我们来看看ECDSA的数学原理。签名是通过一个数学函数Fsig生成的,它产生由两个值组成的签名。在ECDSA中,这两个值是R和s。

签名算法首先生成一个私密nonce(k),并从中派生一个公共nonce(K)。数字签名的R值然后是nonce K的x坐标。

然后,算法计算签名的s值。就像我们在schnorr签名中所做的那样,涉及整数的操作都是模p进行的:

s=k1(Hash(m)+xR)s = k^{-1}(Hash(m)+x*R)

其中:

  • k 是私密nonce

  • R 是公共nonce的x坐标

  • x 是Alice的私钥

  • m 是消息(交易数据)

验证是签名生成函数的逆函数,使用R、s值和公钥计算一个值K,它是椭圆曲线上的一个点(在签名创建中使用的公共nonce):

K=s1Hash(m)G+s1RXK = s^{-1} * Hash(m) * G + s^{-1} * R * X

其中:

  • R 和 s 是签名值

  • X 是 Alice 的公钥

  • m 是消息(被签名的交易数据)

  • G 是椭圆曲线的生成点

如果计算得到的点 K 的 x 坐标等于 R,则验证者可以得出签名是有效的结论。

ECDSA 的数学过程相当复杂;本书的范围之外无法完整解释。有许多在线优秀指南会逐步带领您了解它:搜索“ECDSA 解释”。

Last updated