使用 ECDH 与 ECIES 进行密钥交换

Key exchange using ECDH vs ECIES

我是 ECC 加密编程的初学者。 有没有人向我解释使用 ECDH 进行共享密钥交换和使用接收方的 public 密钥加密共享密钥来使用 ECIES 的区别? 我觉得只要私钥保密,ECIES 也可以为我提供安全的密钥交换。 谢谢。

ECDH 是一种共享秘密派生协议。两方使用他们自己的 "private key" 和他们伙伴的 "public key" 的知识来生成共享秘密。一般私钥都是随机数,用于密钥协商,然后丢弃。

ECIES 使用与 ECDH 相同的方案生成一个 "shared secret",其中 "private keys" 之一是随机数,其对应的 public 密钥包含在消息本身中.这意味着共享秘密只能由拥有另一个私钥的人推导出来。然后使用共享密钥作为密钥,使用 AES 等其他方案对消息本身进行加密。

如果您正在进行密钥协商,ECDH 是最佳选择。 (强制性说明:当然,您不应该为生产系统推出自己的加密货币,只需使用 TLS。)