使用椭圆曲线加密技术使用公钥加密并使用私钥解密

Evg*_*sky 6 cryptography

大家。是否可以执行椭圆曲线加密的公钥加密流程? https://en.wikipedia.org/wiki/Public-key_cryptography

我需要实现以下场景:

  1. Alice 生成一条消息。
  2. 爱丽丝用鲍勃的公钥对其进行加密。
  3. Alice 向 Bob 发送消息(通过不安全的通道)。
  4. 鲍勃收到消息。
  5. 鲍勃只能用他的私钥解密该消息。

我在 tweetnacl 库( https://github.com/dchest/tweetnacl-js )中找不到正确的方法。有人可以指导我正确的方向吗?

先感谢您。

Maa*_*wes 5

您应该寻找ECIES实施。是一个似乎支持它的随机 JavaScript 库。

椭圆曲线不支持像 RSA 那样的加密原语。有 EC ElGamal,但由于 ElGamal 的密钥较小且开销较大,因此不值得。

要使用带有加密的曲线,您需要使用混合加密。ECIES 是混合加密:离线 ECDH 密钥协商以及使用派生密钥执行的对称加密。


请注意,ECIES 的标准化程度高。您可能必须选择自己的密钥派生函数、流密码或分组密码以及操作模式。对于密钥派生方法,您可以选择 HKDF(如果可用)。如今,GCM 模式下的 AES 对于密码来说似乎是一个明智的选择(12 字节 IV 可以设置为零或也可以设置为从“共享秘密”派生的值)。支持 ECIES 的图书馆可能对 ECIES 的外观有自己的想法,但要注意兼容性问题......