我已经实现了 RSA 加密算法来加密数据加密中使用的对称密钥,但是 RSA 的密钥大小和密文大小造成了内存问题,所以我搜索了其他公钥加密方法来解决问题。我找到了椭圆曲线集成加密方案(ECIES)并理解了它背后的理论,但是,我有点不清楚这种方法如何用作公共/非对称加密算法。该方法使用从共享密钥派生的密钥计算对称加密,用于加密和解密(使用相同的密钥)。
那么如何将其视为非对称加密算法呢?或者有什么方法可以将它实现为非对称加密?
我已经实现了 RSA 加密算法来加密数据加密中使用的对称密钥,但是 RSA 的密钥大小和密文大小造成了内存问题,所以我搜索了其他公钥加密方法来解决问题。我找到了椭圆曲线集成加密方案(ECIES)并理解了它背后的理论,但是,我有点不清楚这种方法如何用作公共/非对称加密算法。该方法使用从共享密钥派生的密钥计算对称加密,用于加密和解密(使用相同的密钥)。
那么如何将其视为非对称加密算法呢?或者有什么方法可以将它实现为非对称加密?
Meta:这不是一个真正的编程或开发问题或问题。它可能属于crypto.SX;您可能会要求迁移。
确切地说,ECIES 是一种混合公钥加密方案,但大多数其他加密方案也是如此。例如,正如您所说,通常使用 RSA 来加密工作(每条消息)对称密钥,而不是直接加密数据。
2-5。Alice 生成一个临时密钥对,派生共享 DEK,并对数据进行加密,并与她的临时公钥(编辑)一起发送,并销毁临时私钥
根据评论添加并在下面扩展:是的 DEK 在两端是相同的(注意我使用“the”表示一个而不是多个),这就是该方案有效的原因;ECIES 使用 DEK 进行数据加密和解密的部分是对称的,但所有其他操作(安全地创建临时共享 DEK)不是。
除了爱丽丝(或鲍勃)之外,没有人知道她的临时私钥是至关重要的;如果他们这样做,他们可以解密。但她不需要明确保密,因为她在使用它发送消息后立即将其销毁;这就是短暂的意思。
让我们来看看:
收件人的公钥是公开的,任何人都可以加密
接收者拥有(静态)私钥并且可以解密
没有其他人拥有 Bob 的(静态)私钥或Alice 的临时私钥,其他人也无法解密
接收者只需要一个密钥对;如果有多个发送者,他们都可以使用相同的公钥,但不能解密彼此的流量,并且不需要秘密获取公钥;对于一千或一百万发件人,这与一个发件人的成本相同或略高于一个发件人
请考虑标准/传统对称方案的属性:
双方必须事先共享一个密钥(只有一个,而不是一对);两者都必须保密,不得与其他人分享
这通常要求双方提前会面,或使用诸如快递之类的物理安全方式将密钥从一方传递到另一方,或者可能从中央机构传递到双方
每个密钥只能由一对方使用;对于多个发件人,Bob 必须拥有并管理许多不同的密钥,并且每个发件人(Alice、Abby、Anne 等)必须拥有不同的密钥。每个发件人必须分别与 Bob 会面,或者他们每个人都必须有一个单独的信使(或两个),然后才能与他通信。对于一千或一百万发件人来说,这变得非常昂贵
ECIES没有传统或对称系统的这些属性,也没有上述公钥或非对称系统的所有属性,尽管它也使用一些对称操作及其非对称操作。
这就是为什么它对我来说听起来像是(混合)公钥加密!
@dave_thompson_085 很好地解释了这个概念。但是,我想添加一个示例以使其清楚。
例如:
所以消息是使用对称密钥加密的,但在网络上它是非对称的,因为只有公钥在网络上交换,用于为接收者生成对称密钥,而私钥用于生成相同的对称密钥在发送方。