1 基础参数

Ed25519采用的曲线方程为 y 2 = x 3 + 486662 x 2 + x y^2 = x^3 + 486662x^2 + x y2=x3+486662x2+x , m o d u l o   p = 2 255 − 19 modulo \ p = 2^{255} - 19 modulo p=2255−19 。

私钥长度:32字节。

公钥长度:32字节,无其它长度。

签名长度:64字节。

2 签名算法

2.1 生成密钥对

私钥:使用随机数发生器生成随机数 k k k 作为私钥。

公钥生成过程:

  1. 计算私钥哈希值: H ( k ) = ( h 0 , h 1 , . . . , h 2 b − 1 ) \displaystyle \large H(k)=(h_{0},h_{1},...,h_{2b-1}) H(k)=(h0​,h1​,...,h2b−1​)
  2. 生成整数: a = 2 b − 2 + ∑ 3 ⩽ i ⩽ b − 3 2 i h i ∈ { 2 b − 2 , 2 b − 2 + 8 , . . . , 2 b − 1 − 8 } \displaystyle \large a=2^{b-2}+\sum_{3\leqslant i\leqslant b-3}2^ih_{i}\in \{2^{b-2},2^{b-2}+8,...,2^{b-1}-8\} a=2b−2+3⩽i⩽b−3∑​2ihi​∈{2b−2,2b−2+8,...,2b−1−8}
  3. 生成公钥: A = a B \displaystyle \large A=aB A=aB

在Ed25519中, b b b固定取256。

A A A 就是公钥。

2.2 生成签名

  1. r = H ( h b , . . . , h 2 b − 1 , M ) \displaystyle r=H(h_b,...,h_{2b-1},M) r=H(hb​,...,h2b−1​,M)
  2. R = r B \displaystyle R=rB R=rB
  3. S = ( r + H ( R , A , M ) a ) m o d   l \displaystyle S=(r+H(R,A,M)a)mod \ l S=(r+H(R,A,M)a)mod l

则签名就是 ( R , S ) (R,S) (R,S)。

2.3 签名验证

只需要检验 8 S B = 8 R + 8 H ( R , A , M ) A \displaystyle 8SB=8R+8H(R,A,M)A 8SB=8R+8H(R,A,M)A 是否成立。

2.4 签名验证原理分析

签名验证原理如下公式:

8 S B = 8 ( r + H ( R , A , M ) a ) B = 8 r B + 8 H ( R , A , M ) a B = 8 R + 8 H ( R , A , M ) A \displaystyle \begin{aligned} 8SB &=8(r+H(R,A,M)a)B\\ &=8rB+8H(R,A,M)aB\\ &=8R+8H(R,A,M)A\\ \end{aligned} 8SB​=8(r+H(R,A,M)a)B=8rB+8H(R,A,M)aB=8R+8H(R,A,M)A​

3 参考资料

更多推荐