新的SQRL认证方案依赖于Daniel开发的曲线Ed25519加密。然而,要开始实施这一方案,首先需要一个成熟的曲线Ed25519实现。
有人知道任何成熟的实现吗?对于Java、.NET还是其他流行的平台?
发布于 2013-10-03 14:35:39
Curve25519对Ed25519
首先,Curve25519和Ed25519并不完全一样。它们基于相同的底层曲线,但使用不同的表示形式。大多数实现都是针对Curve25519或Ed25519的,但是可以在它们之间重用一些代码。
可以将Ed25519公钥转换为Curve25519,但相反,它忽略了一个符号。也就是说,两个Ed25519公钥对应于一个Curve25519公钥。私钥也非常相似。
关于实现,区分实际实现和以可用形式打包它们的库是很重要的。
实际实现
djb在 超级警察中的实现
Ref,非常慢Ref10,性能良好amd64-64-24k和amd64-51-30k,用程序集编写,大约是Ref10的两倍他还在NaCl中写了一个早期的不兼容的原型,不要用那个
黄莓唐娜 implementation
包含几个变体,包括程序集和c。有些优化为64位,有些优化为32位。
库
Ref10实现。
有许多编程语言的绑定。这可能是最流行的版本,也是我推荐给大多数人的。
包含一些来自NaCl的其他密码函数,如认证加密(XSalsa20Poly1305)、散列、Curve25519密钥交换。Ref10实现。
这个库最有趣的特性是它支持使用Ed25519公钥进行密钥交换。但是它不会散列共享密钥,因此它不会产生与Curve25519相同的共享秘密。
包含为Win32和Win64预先构建的二进制文件。我建议现在就和LibSodium一起去。它比较受欢迎,而且维护得很好。性能不错,只能在真正的签名重应用程序中引起性能问题。
发布于 2014-07-10 10:59:50
发布于 2013-10-02 22:10:41
到目前为止,最成熟和最具表现力的作品是丹尼尔·伯恩斯坦自己写的。它可以在超级警察中找到。
然而,它的API是相当尴尬的,它需要相当多的挖掘/提取才能得到您想要的。为了挽救其他人的工作,我自己做了这件事,并将我的代码放在Github上。
不过,请注意您的确切术语,Ed25519和Curve25519是相关的,但是不同的东西。您应该知道的是,Ed25519是一个公钥/私钥签名系统,而Curve25519是一个密钥交换。Ed25519键盘可以转换为Curve25519键盘,相反,我不太确定。我在Github上的库所做的就是将所有东西保存在Ed25519键盘中,并转换为Curve25519进行密钥交换。
https://stackoverflow.com/questions/19147619
复制相似问题