ECIES 是 public 加密算法吗?

Is ECIES a public encryption algorithm?

我已经实现了RSA加密算法来加密数据加密中使用的对称密钥,但是RSA的密钥大小和密文大小造成了内存问题,所以我搜索了其他public密钥加密方法为解决方案。我找到了椭圆曲线集成加密方案 (ECIES) 并了解其背后的理论,但是,我不太清楚这种方法如何用作 public/asymmetric 加密算法。该方法使用从加密和解密的共享秘密派生的密钥计算对称加密(使用相同的密钥)。

那怎么会是非对称加密算法呢? 或者有什么方法可以实现为非对称加密吗?

Meta:这不是真正的编程或开发问题。它可能属于 crypto.SX;你可能会要求迁移。

确切地说,ECIES 是一种 混合 public 密钥加密方案,但大多数其他加密方案也是如此。例如,正如您所说,RSA 通常用于加密工作(每条消息)对称密钥,而不是直接加密数据。

Paraphrasing the wikipedia description:

  1. (通常提前)Bob 生成一个(静态)密钥对并真实地发布 public 密钥(例如使用证书)

2-5。 Alice 生成一个临时密钥对,导出共享 DEK,加密数据,并使用她的临时 publickey 发送 (编辑)并销毁临时私钥

  1. Bob 使用他的私钥导出 DEK 并解密数据

添加,并在下面展开,根据评论:是的,两端的 DEK 相同(注意我使用 'the' 表示一个而不是多个),这就是该方案有效的原因; ECIES中使用DEK进行数据加密和解密的部分是对称的,但所有其他操作(安全地创建临时共享DEK)不是。

除了爱丽丝(或鲍勃)之外,没有人知道她的临时私钥是至关重要的;如果他们这样做,他们可以解密。但她不需要明确保密,因为她在使用它发送消息后立即销毁;这就是短暂的意思。

让我们看看:

  • 收件人的public密钥是public,任何人都可以加密

  • 收件人拥有(静态)私钥并且可以解密

  • 没有其他人拥有 Bob 的(静态)私钥 Alice 的临时私钥,并且没有其他人可以解密

  • 收件人只需要一对密钥;如果有多个发件人,他们都可以使用相同的 publickey 但不能解密彼此的流量,并且不需要秘密获取 publickey;对于一千或一百万发件人来说,这与一个发件人的成本相同或略高于一个发件人

改为考虑 standard/traditional 对称方案的属性:

  • 双方必须事先共享一个密钥(只有一个,不是一对);双方都必须保密,不能与任何人分享

  • 这通常需要双方提前会面,或使用物理上安全的方式(例如快递)将密钥从一方传给另一方,或者可能从中央机构传给双方

  • 每个密钥只能由一对方使用;对于多个发件人,Bob 必须拥有并管理那么多不同的密钥,并且每个发件人(Alice、Abby、Anne 等)必须拥有不同的密钥。每个发件人必须单独与 Bob 会面,或者他们必须各自有一个单独的快递员(或两个),在他们与 Bob 通信之前。对于一千或一百万发件人来说,这变得非常昂贵

ECIES 具有常规或对称系统的 none 这些属性,以及 所有 public上面的密钥或非对称系统,尽管它也使用 一些 对称操作及其非对称操作。

这就是为什么它对我来说听起来像(混合)public-密钥加密!

@dave_thompson_085已经很好地解释了这个概念。但是,我想添加一个示例来说明。

例如:

  • 爱丽丝生成Public"qA"和私钥"dA".
  • Alice 将她的 public 密钥发送给 Bob。
  • 使用这个 public 密钥,Bob 生成了一对随机的对称密钥(R 和 S)。
  • Bob 使用密钥 "S" 加密消息并将此密文连同密钥 "R" 发送给 Alice。
  • 有了这个"R"密钥,爱丽丝可以乘以她的私钥"dA"并生成对称密钥"S"来解密密文。

所以消息是使用对称密钥加密的,但在网络上它是不对称的,因为只有 public 密钥在网络上交换,该密钥用于为接收者和私有者生成对称密钥密钥用于在发送方生成相同的对称密钥。