区块链中的数学 – Ed25519签名机制

Ed25519使用了扭曲爱德华曲线,签名过程和之前介绍过的Schnorr,secp256k1, sm2都不一样,最大的区别在于没有使用随机数,这样产生的签名结果是确定性的,即每次对同一消息签名结果相同。

## 写在前面 上一节说了[蒙哥马利曲线&Curve25519实例](https://learnblockchain.cn/article/1641),如果仔细看,会发现其中两点之和的几何意义与Weierstrass曲线完全一样,实际上蒙哥马利曲线是[Weierstrass曲线族](https://learnblockchain.cn/article/1529)的一员。 何以见得?Weierstrass曲线的射影方程是 ![](https://img.learnblockchain.cn/2020/11/03/16043649188246.jpg) 考虑到平面上方程,Z坐标隐去,得到: ![](https://img.learnblockchain.cn/2020/11/03/16043649360924.jpg) 所以蒙哥马利方程是其中的一个实例:$a_1=0,a_3=0,a_6=0$ 说到这,大家对椭圆曲线的范围应该有了新的理解。 有了这些基础,本节说下与蒙哥马利曲线和Curve25519相关联的Ed25519签名机制。 ## Ed25519 Ed25519是基于Edwards曲线的数字签名算法(EdDSA),结合 SHA-512/256哈希算法,采用扭曲爱德华曲线: ![](https://img.learnblockchain.cn/2020/11/03/16043649628967.jpg) 系数a = -1, $d= -\frac{121655}{121656}$. 比现有的数字签名方案更快,且不损失安全性。 具体参数如下: $q =2^{255} − 19$ B: 基点, y坐标为4/5,x坐标为9 H:SHA-512 b = 256 【注:如果H使用SHA-256则b=128】 l: 群的阶,值为$ 2^{252} + 27742317777372353535851937790883648493$, ### 密钥生成 私钥:如同之前一样,使用随机数发生器生成随机数k作为私钥。 公钥: (1)计算私钥摘要: $H(k) =(h_0,h_1,…,h_{2b-1})$ (2)计算整数: ![](https://img.learnblockchain.cn/2020/11/03/16043649752811.jpg) (3)公钥生成:A = aB 先看一下具体签名过程再来分析其效率和安全性。 ## 签名与验证 ### 签名生成 M:待签名消息 1. 计算$r = H(h_b,…,h_{2b-1},M) ∈ { 0, 1, . . . , 2^{2b}− 1}$ 2. 计算R = rB 3. 计算S = (r + H(R,A,M)a) mod l 【注:l是群的阶】 得到签名结果(R,S) ### 签名验证 验证过程很简单: 只需要验证 8SB = 8R+8H(R,A,M)A 是否成立。 原理如下: 8SB = 8(r + H(R,A,M)a)B = 8rB + 8H(R,A,M)aB = 8R + 8H(R,A,M)A ## 小结 Ed25519使用了扭曲爱德华曲线,签名过程和之前介绍过的Schnorr,secp256k1, sm2都不一样,**最大的区别在于没有使用随机数**,这样产生的签名结果是确定性的,即每次对同一消息签名结果相同。 一般说来随机数是安全措施中重要的一种方法,但是随机数的产生也是安全隐患,著名的索尼公司产品PS3密钥泄露事件,就是随机数产生的问题导致的。如果你对之前绍过的Schnorr,secp256k1,sm2等签名过程比较熟的的话,就容易理解如果在签名过程中出现了这个相同的随机数r,那么私钥将很容易被计算出来,造成泄露。 这种事情发生过不止一次,包括以太坊出现类似的问题,感兴趣的可以自行搜索,有时间的话专门写写这个问题。 另外我们说Ed25519与蒙哥马利曲线Curve25519相关联,到底是什么关系呢? 好了,下一篇继续说Ed25519签名算法更多内容! 欢迎关注公众号:blocksight ### 相关阅读: [区块链中的数学-蒙哥马利曲线&Curve25519实例](https://learnblockchain.cn/article/1641) [区块链中的数学-扭曲爱德华曲线](https://learnblockchain.cn/article/1627) [区块链中的数学-迪菲-赫尔曼密钥交换D-H](https://learnblockchain.cn/article/1554) [区块链中的数学-爱德华曲线基本方程和点运算规则](https://learnblockchain.cn/article/1610) [区块链中的数学-RSA签名和安全分析-计时攻击](https://learnblockchain.cn/article/1546) [区块链中的数学 – 基于椭圆曲线的VRF证明验证过程](https://learnblockchain.cn/article/1582) [区块链中的数学-Schnorr签名及Schnorr群](https://learnblockchain.cn/article/1527) [区块链中的数学 – Uniwap核心算法解析(中)](https://learnblockchain.cn/article/1494)

写在前面

上一节说了蒙哥马利曲线&Curve25519实例,如果仔细看,会发现其中两点之和的几何意义与Weierstrass曲线完全一样,实际上蒙哥马利曲线是Weierstrass曲线族的一员。 何以见得?Weierstrass曲线的射影方程是

区块链中的数学 - Ed25519签名机制

考虑到平面上方程,Z坐标隐去,得到:

区块链中的数学 - Ed25519签名机制

所以蒙哥马利方程是其中的一个实例:$a_1=0,a_3=0,a_6=0$ 说到这,大家对椭圆曲线的范围应该有了新的理解。

有了这些基础,本节说下与蒙哥马利曲线和Curve25519相关联的Ed25519签名机制。

Ed25519

Ed25519是基于Edwards曲线的数字签名算法(EdDSA),结合 SHA-512/256哈希算法,采用扭曲爱德华曲线:

区块链中的数学 - Ed25519签名机制

系数a = -1, $d= -\frac{121655}{121656}$. 比现有的数字签名方案更快,且不损失安全性。 具体参数如下: $q =2^{255} − 19$ B: 基点, y坐标为4/5,x坐标为9 H:SHA-512 b = 256 【注:如果H使用SHA-256则b=128】 l: 群的阶,值为$ 2^{252} + 27742317777372353535851937790883648493$,

密钥生成

私钥:如同之前一样,使用随机数发生器生成随机数k作为私钥。 公钥: (1)计算私钥摘要: $H(k) =(h_0,h1,…,h{2b-1})$ (2)计算整数:

区块链中的数学 - Ed25519签名机制

(3)公钥生成:A = aB

先看一下具体签名过程再来分析其效率和安全性。

签名与验证

签名生成

M:待签名消息

  1. 计算$r = H(hb,…,h{2b-1},M) ∈ { 0, 1, . . . , 2^{2b}− 1}$
  2. 计算R = rB
  3. 计算S = (r + H(R,A,M)a) mod l 【注:l是群的阶】

得到签名结果(R,S)

签名验证

验证过程很简单: 只需要验证 8SB = 8R+8H(R,A,M)A 是否成立。 原理如下: 8SB = 8(r + H(R,A,M)a)B = 8rB + 8H(R,A,M)aB = 8R + 8H(R,A,M)A

小结

Ed25519使用了扭曲爱德华曲线,签名过程和之前介绍过的Schnorr,secp256k1, sm2都不一样,最大的区别在于没有使用随机数,这样产生的签名结果是确定性的,即每次对同一消息签名结果相同。

一般说来随机数是安全措施中重要的一种方法,但是随机数的产生也是安全隐患,著名的索尼公司产品PS3密钥泄露事件,就是随机数产生的问题导致的。如果你对之前绍过的Schnorr,secp256k1,sm2等签名过程比较熟的的话,就容易理解如果在签名过程中出现了这个相同的随机数r,那么私钥将很容易被计算出来,造成泄露。

这种事情发生过不止一次,包括以太坊出现类似的问题,感兴趣的可以自行搜索,有时间的话专门写写这个问题。

另外我们说Ed25519与蒙哥马利曲线Curve25519相关联,到底是什么关系呢?

好了,下一篇继续说Ed25519签名算法更多内容!

欢迎关注公众号:blocksight

相关阅读:

区块链中的数学-蒙哥马利曲线&Curve25519实例

区块链中的数学-扭曲爱德华曲线

区块链中的数学-迪菲-赫尔曼密钥交换D-H

区块链中的数学-爱德华曲线基本方程和点运算规则

区块链中的数学-RSA签名和安全分析-计时攻击

区块链中的数学 – 基于椭圆曲线的VRF证明验证过程

区块链中的数学-Schnorr签名及Schnorr群

区块链中的数学 – Uniwap核心算法解析(中)

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 23小时前
  • 阅读 ( 27 )
  • 学分 ( 0 )
  • 分类:入门/理论

该内容来自于互联网公开内容,非区块链原创内容,如若转载,请注明出处:https://htzkw.com/archives/27574

联系我们

aliyinhang@gmail.com