Ed25519
最后更新于
最后更新于
EdDSA算法本身是安全的,但有些EdDSA库的实现是不安全的,有可能会导致私钥泄露。
Edwards曲线数字签名算法 (EdDSA)是一种数字签名方案,使用了Schnorr签名的变种,基于扭曲Edwards曲线。
EdDSA签名算法及其变种Ed25519和Ed448在RFC 8032有完整的技术性描述。
k = RNG生成的随机数
计算私钥的摘要:
然后计算整数a
:
后面你会发现,这个a
也是一个不能泄露的数,它基本等同于私钥。
B
为曲线的基点
对于消息M
:
l
是点B
生成的子群的阶。
现在我们得到了签名(R,s)
. 显然,如果你知道了a
则可以计算任意签名, 等同于知道了私钥k
。
想象一下这种函数实现:
该sign()函数允许调用者输入任意消息和公钥。如果有人使用了相同的M
但不同的A
,则他可以计算出整数a
,私钥k
的等价物。
有很多库有类似的不安全实现,查看列表.
这是对Ed25519对不安全实现,虽然并不意味着一定会出问题,但还是要尽可能规范。.
开发者应该尽可能熟悉底层的密码学知识以避免类似攻击。