3

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

那么如何将其视为非对称加密算法呢?或者有什么方法可以将它实现为非对称加密?

4

2 回答 2

3

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

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

解释维基百科的描述:

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

2-5。Alice 生成一个临时密钥对,派生共享 DEK,并对数据进行加密,并与她的临时公钥(编辑)一起发送,并销毁临时私钥

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

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

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

让我们来看看:

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

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

  • 没有其他人拥有 Bob 的(静态)私钥Alice 的临时私钥,其他人也无法解密

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

请考虑标准/传统对称方案的属性:

  • 双方必须事先共享一个密钥(只有一个,而不是一对);两者都必须保密,不得与其他人分享

  • 这通常要求双方提前会面,或使用诸如快递之类的物理安全方式将密钥从一方传递到另一方,或者可能从中央机构传递到双方

  • 每个密钥只能由一对方使用;对于多个发件人,Bob 必须拥有并管理许多不同的密钥,并且每个发件人(Alice、Abby、Anne 等)必须拥有不同的密钥。每个发件人必须分别与 Bob 会面,或者他们每个人都必须有一个单独的信使(或两个),然后才能与他通信。对于一千或一百万发件人来说,这变得非常昂贵

ECIES没有传统或对称系统的这些属性,也没有上述公钥或非对称系统的所有属性,尽管它也使用一些对称操作及其非对称操作。

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

于 2018-06-20T11:21:45.400 回答
0

@dave_thompson_085 很好地解释了这个概念。但是,我想添加一个示例以使其清楚。

例如:

  • Alice 生成公钥“qA”和私钥“dA”。
  • Alice 将她的公钥发送给 Bob。
  • Bob 使用此公钥生成一对随机对称密钥(R 和 S)。
  • Bob 使用密钥“S”对消息进行加密,并将该密文与密钥“R”一起发送给 Alice。
  • 有了这个“R”密钥,Alice 可以乘以她的私钥“dA”并生成对称密钥“S”来解密密文。

在此处输入图像描述

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

于 2020-04-08T16:58:32.587 回答