首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ed25519的含义是什么?

Ed25519的含义是什么?
EN

Stack Overflow用户
提问于 2013-10-02 22:06:16
回答 6查看 16.4K关注 0票数 24

新的SQRL认证方案依赖于Daniel开发的曲线Ed25519加密。然而,要开始实施这一方案,首先需要一个成熟的曲线Ed25519实现。

有人知道任何成熟的实现吗?对于Java、.NET还是其他流行的平台?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-10-03 14:35:39

Curve25519对Ed25519

首先,Curve25519和Ed25519并不完全一样。它们基于相同的底层曲线,但使用不同的表示形式。大多数实现都是针对Curve25519或Ed25519的,但是可以在它们之间重用一些代码。

可以将Ed25519公钥转换为Curve25519,但相反,它忽略了一个符号。也就是说,两个Ed25519公钥对应于一个Curve25519公钥。私钥也非常相似。

关于实现,区分实际实现和以可用形式打包它们的库是很重要的。

实际实现

djb在 超级警察中的实现

  • 用c ++编写的Ref,非常慢
  • 用c ++编写的djb的Ref10,性能良好
  • djb的amd64-64-24kamd64-51-30k,用程序集编写,大约是Ref10的两倍

他还在NaCl中写了一个早期的不兼容的原型,不要用那个

黄莓唐娜 implementation

包含几个变体,包括程序集和c。有些优化为64位,有些优化为32位。

  • LibSodium C库,目前使用Ref10实现。 有许多编程语言的绑定。这可能是最流行的版本,也是我推荐给大多数人的。 包含一些来自NaCl的其他密码函数,如认证加密(XSalsa20Poly1305)、散列、Curve25519密钥交换。
  • 夜猫子Ed25519 C库,使用Ref10实现。 这个库最有趣的特性是它支持使用Ed25519公钥进行密钥交换。但是它不会散列共享密钥,因此它不会产生与Curve25519相同的共享秘密。 包含为Win32和Win64预先构建的二进制文件。
  • 我的C#端口 纯托管代码,在32位和64位平台上工作不变。基于Ref10。比c++实现慢一点,但两者之间的差别却是惊人的小。 支持与NaCl兼容的密钥交换,使用Curve25519和Ed25519密钥,并包含来自NaCl的其他密码函数。我的目标是一个类似的功能集,如LibSodium。 Ed25519签名函数可以工作,并且已经看到了相当数量的测试,但是库的其他部分有点粗糙。
  • 直接使用来自超级警察或Floodyberry代码的实现。 构建可能需要更多的工作,但是您将获得更高的性能(~2x),并且不需要携带不需要的代码。

我建议现在就和LibSodium一起去。它比较受欢迎,而且维护得很好。性能不错,只能在真正的签名重应用程序中引起性能问题。

票数 37
EN

Stack Overflow用户

发布于 2014-07-10 10:59:50

添加到CodesInChaos的答案:

  • 我的Java端口 基于参考文献10,并提供标准的JCA,以便可以将其添加到密码提供者中。
票数 6
EN

Stack Overflow用户

发布于 2013-10-02 22:10:41

到目前为止,最成熟和最具表现力的作品是丹尼尔·伯恩斯坦自己写的。它可以在超级警察中找到。

然而,它的API是相当尴尬的,它需要相当多的挖掘/提取才能得到您想要的。为了挽救其他人的工作,我自己做了这件事,并将我的代码放在Github上。

不过,请注意您的确切术语,Ed25519和Curve25519是相关的,但是不同的东西。您应该知道的是,Ed25519是一个公钥/私钥签名系统,而Curve25519是一个密钥交换。Ed25519键盘可以转换为Curve25519键盘,相反,我不太确定。我在Github上的库所做的就是将所有东西保存在Ed25519键盘中,并转换为Curve25519进行密钥交换。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19147619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档