我目前正在研究使用curve25519进行签名。 Original distribution和C implementation(和second C implementation)。
Bernstein建议为此使用ECDSA,但我找不到任何代码。
最佳答案
ECDSA由ANSI X9.62指定。该标准定义了定义ECDSA的曲线的种类,包括详细的曲线方程式,关键表示等。它们与Curve25519不匹配:优化的一部分使Curve25519比相同大小的标准曲线更快,这取决于特殊的曲线方程式,该方程式未包含在X9.62形式主义中。相应地,没有任何既符合ANSI X9.62又使用Curve25519的ECDSA实现。在实践中,我知道在Curve25519上没有实现类似ECDSA的算法。
简而言之,您是一个人。您可能希望通过遵循X9.62(从1998年开始草稿可以从多个地方下载,例如there下载,或者您可以花100美元从Techstreet获取真正的2005版本),从而在Curve25519实现上实现ECDSA。但是请注意,您正在走出精心分析的密码学之路;换句话说,我明确否认对这种ECDSA的安全性有任何保证。
我的建议是坚持标准曲线(例如NIST P-256)。请注意,虽然Curve25519比大多数相同大小的曲线要快,但较小的标准曲线会更快,但仍可为大多数目的提供足够的安全性。例如,NIST P-192提供了“96位安全性”,有点类似于1536位RSA。而且,标准曲线已经可以在小型PC上提供每秒几千个签名的性能,而我很难想象需要更多性能的情况。
关于encryption - 在ECDSA中使用Curve25519,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2515948/