Ed25519算法

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=225519

私钥长度: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,...,h2b1)
  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=2b2+3ib32ihi{2b2,2b2+8,...,2b18}
  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,...,h2b1,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 参考资料

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值