在 OpenVpn 连接中,我想使用椭圆曲线,但我不知道 EC 和 ED 有什么区别。哪个更好?
另外,我读到的一些文档中说存在 ECDH,如果我没有记错的话,它是椭圆曲线与 Diffie-Hellman 的结合。但我不确定 ECDH 是否与 EC 相同。如果不一样,EC 是否不需要 DH 文件?如果它们不一样,ECDH 是否比 EC 更好?
如果 EC 与 ED 不同,那么 ED 是否需要 DH 文件?
总之,我想知道不同算法之间的区别以及哪种算法更好。
谢谢。
答案1
在 OpenVpn 连接中,我想使用椭圆曲线,但我不知道 EC 和 ED 有什么区别。哪个更好?
就其本身而言,“ED”并不是一个独立的东西——它是 EC 的一部分。
一般来说,它是“扭曲的埃德沃兹曲线”,从技术上讲,它只是椭圆曲线的另一种形式(“EC”),显然它比其他类型的曲线缺陷更少。Curve25519 就是通常的例子。
在签名方面,“EdDSA”是一种专为与 Edwards 曲线一起使用而设计的签名方案,它与传统的“ECDSA”签名有很大不同 —— 我相信它比 ECDSA 更为强大 —— 但它仍然是一种 EC 加密形式。
据我所知,ECDSA 和 EdDSA 在正确使用时都是安全的;但 ECDSA 很容易让程序员出错。(例如,每个 ECDSA 签名都需要添加随机或其他唯一数据;这在过去导致了许多错误,包括两周前 PuTTY 中的错误。)
但是,只有某些曲线可以与 EdDSA 一起使用(例如,不能将 EdDSA 与 P-256 一起使用,而必须与传统 ECDSA 一起使用)。
没有“EdDH”,因为 Curve25519(在该上下文中通常称为“X25519”)和其他 EC 曲线使用相同的 ECDH。
“Ed25519”的正式含义是“带有 Curve25519 的 EdDSA”,尽管有时它也指 X25519(采用 Curve25519 的 ECDH)。
因此,如果您在签名(例如证书签名或握手签名)的上下文中查看这一点,那么“带有 Ed25519 的 EdDSA”比“带有 P-256 的 ECDSA”稍微好一点,尽管可能差别不大。
在 DH 密钥交换的背景下,类似地,“带有 X25519 的 ECDH”可能比“带有 P-256 的 ECDH”稍好一些。
另外,我读到的一些文档中说存在 ECDH,如果我没有记错的话,它是椭圆曲线与 Diffie-Hellman 的结合。但我不确定 ECDH 是否与 EC 相同。如果不一样,EC 是否不需要 DH 文件?如果它们不一样,ECDH 是否比 EC 更好?
它们不是可比较的事物:
- EC 是一般概念(椭圆曲线密码学);
- ECDH是EC实现DH的一种具体用法。
(同样,ECDSA 和 EdDSA 是使用 EC 来实现数字签名的;ECIES 是使用 EC 来实现加密的;等等)
EC 不需要 DH 文件吗?
ECDH不需要预先生成参数文件,因为它通常与特定的曲线一起使用,并且曲线本身是双方已经知道名称的“参数”。
(但传统 DH 有时也以这种方式使用 - 有几组预生成的 DH 参数,例如“组 2”和“组 14”最初来自的 IPsec“Oakley”集。
如果您曾经查看过 SSH,它还使用“dh-group-exchange”的参数文件 - 但它不需要“dh-group14”的参数文件,因为它已经引用了一组商定的参数。)