首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不推荐使用ed25519密钥进行加密?

为什么不推荐使用ed25519密钥进行加密?
EN

Cryptography用户
提问于 2020-08-07 06:37:07
回答 1查看 8.3K关注 0票数 12

不知道为什么没有直接使用ed25519密钥进行加密的方法。

然后我发现了这个:https://github.com/indutny/elliptic/issues/108

这里指出,它与RSA不同,不推荐用于此目的--人们应该从diffie-hellman风格的共享秘密中派生对称密钥。

它是用来签字的。但是如果签署像这样的话:

代码语言:javascript
复制
hash = doHash(message)
signature = doAsymmetricEncrypt(hash, privateKey)

hash == doAsymmetricDecrypt(signature, publicKey) // true

我认为它也应朝这个方向努力。

代码语言:javascript
复制
encryptedToken = doAsymmetricEncrypt(token, publicKey)

token = doAsymmetricDecrypt(encryptedToken, privateKey)

我目前对有关事项的理解归结为:

  • 非对称密码技术在两个方面都能发挥作用:用私钥加密,->用公钥解密,用公钥加密,->用私钥解密。
  • ed25519私钥只是一个随机的256位数。
  • 可以通过在curve25519上投影私钥号来明确地导出公钥。
  • ed25519实际上是指DSA与SHA-512相结合的版本。

所以我假设,当我拥有私钥的32个字节时,知道它就是这样的密钥。我应该能够只在任何上下文中使用它,而不管将它用作签名或加密算法。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-08-07 07:29:34

你似乎对一些事情感到困惑。请原谅我,这是一个很常见的混乱!

加密的目的是以保密方式传输信息:如果您加密信息,则它意味着要隐藏起来,直到接收方解密。注意,在您的伪代码中

代码语言:javascript
复制
hash = doHash(message)
signature = doAsymetricEncrypt(hash, privateKey)

hash == doAsymetricDecrypt(signature, publicKey) //true

..。从您的“密文”message检索signature是不可能的:您只能检索哈希。其次,您正在使用私钥加密,而解密则使用公钥进行,这意味着任何一方都可以解密您的hash,因为您的publicKey显然是公开的。

digital签名是一种验证数字消息或文档(维基百科)真实性的数学方案。请注意,这从来不是用加密来定义的。让我强调这一点:如果你有一位老师声称“签名是一种带有私钥的加密”,他们是错的。如果你有一本书声称这一点,扔掉它,烧掉它--不要把它送出去,因为它显然会引起混乱--然后买一本更好的书。加密是为了保密,签名是为了真实性。

尽管如此:这种混乱的source 是在RSA的数学中。在RSA (而不是ECC!)中,教科书签名操作符与加密操作符相同,密钥被交换。请注意,数学操作是相同的,而不是签名“是用交换的密钥加密的”,尽管它们看起来是这样的。还要注意的是,这是针对教科书RSA的,它从不按原样部署,但需要填充和随机化,这在签名和加密之间是不同的。

因此,虽然您的伪代码可能与RSA一起工作,也可能不起作用(取决于您使用的库),但它根本不安全,而且根本不适用于ECC,因为密钥不能交换,因为它背后的数学模型根本不支持它。

现在,要想最终回答您的问题,使用椭圆曲线的加密是存在的,被广泛使用,并被称为ECIES。它实际上归结为Diffie-Hellman交换,然后使用对称算法。如果您有非常短的消息,也有ElGamal加密

但是,对于ECIES和EdDSA签名来说,同时重用相同的密钥是否安全,这是EdDSA的问题。

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

https://crypto.stackexchange.com/questions/83266

复制
相关文章

相似问题

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