据我理解,EdDSA使用了Curve25519的一个细微的变体(通常用于ECDH),称为Ed25519。
给定相同的私钥,这两种算法之间的差异是否足以使X25519和Ed25519之间产生的公钥有所不同?
换句话说,如果我编写代码来生成私钥/公钥对,那么是否需要为EdDSA/ to 25519和ECDH/X 25519分别实现?
澄清:我意识到EdDSA要求使用ECDH/X 25519没有指定的沙-512级。我很好奇,对于标量乘法步骤的给定输入,公钥是否是相同的。
发布于 2019-12-02 21:49:01
。
这些曲线在出生时是等价的;曲线上的一个点在另一条曲线上是等价的。
因此,给定一个EdDSA公钥和/或私钥,您可以计算一个X25519等效项。these等库提供了执行这些计算的功能。
当然,它也是相反的工作方式,尽管这是稍微复杂一些,因为符号不存在于编码的X25519键中。
还有其他的选择。其中之一是在两个操作中使用相同的曲线。在DH中使用Ed25519没有任何问题。
如果您需要的是存储一个单独的秘密,您可以简单地将其用于两个操作。您将获得2个公钥,但考虑到它们有多小,这很少是一个问题。
说到这里,存储一个合并的64字节密钥而不是32字节密钥真的是一个问题吗?对于大多数应用程序,它很少是这样的。
https://crypto.stackexchange.com/questions/76156
复制相似问题