本文主要说了EdDSA签名机制的发展及其优点
上一节介绍了Ed25519签名机制,本节我们介绍爱德华签名更多内容。
为什么要有爱德华签名机制? 这就要从其发展历史来看,从前几篇的介绍,我们可以知道,爱德华曲线族的研究比较晚,在爱德华数字签名体制出现之前,已经有了椭圆曲线签名EcDSA机制,基于Weierstrass曲线, 代表性的是secp256r1和secp256k1,前者就是NIST P256椭圆曲线算法。
如同任何事物都是不断发展向前的, 基于椭圆曲线的数字签名亦是如此。EdDSA旨在克服传统的EcDSA的一些不足而诞生。
那么EcDSA有哪些不足呢?主要如下:
签名过程中不安全的使用随机数【包括安全的随机数发生器实现的困难性与程序员正确使用随机数的困难性】,可能导致密钥泄露
ECDSA签名的可锻造性,参考此篇
签名伪造:如果不需要提供签名消息, 可以根据已有签名值伪造对应私钥的签名值
当然效率上的提升是公共点,不单独列出, 关于第三点很有意思,“澳本聪”就曾经利用“伪造‘的签名来冒充”中本聪“,详细的过程下一节在说。
好了, EdDSA是为改进这些不足和提高效率而产生。 关于Edwards曲线和Weierstrass曲线的发展,下面一组图很生动形象:
<center>图一:两种曲线原始形状</center>
<center>图二:形状类比海星和乌龟</center>
<center>图三:比赛赛跑</center>
07年以后,爱德华曲线的研究取得快速发展,后来居上,但都是在学术界,真正的广泛使用是在13年斯诺登事件以后。
实现上做了优化,可在多种计算平台上都能达到较高的性能;
签名过程中不需要唯一的随机数,能够避免随机数引发的安全问题;
无分支和秘密数据索引操作,对于侧信道攻击等具有更好的免疫效果;
公钥和签名值都较小 (Ed25519 公钥为 32 个字节, 签名值为 64 字节),【注:这一点其实不明显,和secp256r1和secp256k1一样】
计算公式是完备 (Complete), 无需对不相信的点执行点的验证操作;
抵抗碰撞, 弱哈希函数的碰撞不会破坏签名机制 (PureEdDSA).
问题来了,既然Ed25519签名比较优秀,比特币为什么没有采用? 因为出现时间较晚! 后来的一些区块链项目开始采用,包括Stellar、Near Protocol等.
本文主要说了EdDSA签名机制的发展及其优点,当然了也不是完美的,也有若干瑕疵,后续在说吧。
到此我们已经多次提到不安全的随机的可能导致泄漏密钥的问题, 具体是怎样的呢?
下一篇详细说说随机数的影响和伪签名的构造!
欢迎关注公众号:blocksight
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!