在 PGP 中,为什么不直接用接收者的公钥加密消息呢?为什么要元加密?

信息安全 加密 pgp
2021-09-03 11:00:10

这张图很好地描述了它。看起来所使用的过程很复杂,而且比它需要的更迂回。为什么要为payload的加密生成一个中间随机密钥,然后在使用接收者的公钥加密后与消息一起传输,而不是直接在消息上使用接收者的公钥?就安全属性而言,它不一样吗?

pgp图

3个回答

由于以下几个原因,没有直接使用 RSA:

  • RSA 仅加密大小有限的消息。使用 1024 位 RSA 密钥,RSA(根据PKCS#1)只能处理 117 字节的数据。要加密更多内容,必须进行一些链接,即将要加密的数据拆分为几个 117 字节的块并分别加密。这通常用于对称加密(这称为“操作模式”),但安全地做到这一点并不容易,而且没有人知道如何为 RSA 做安全的操作模式。

  • 混合加密允许高效的多接收者数据。您使用密钥K对称地加密数据,然后使用每个接收者的 RSA 密钥加密K。当您向 10 个人发送一个 3 MB 的文件时,您更愿意计算并发送一封大小为 3.01 MB 的加密电子邮件,而不是封 3 MB 的电子邮件...

  • RSA 扩大您的数据。使用 1024 位 RSA 密钥,您最多可以加密一个 117 字节的块,但输出时会得到 128 字节,因此放大了 10%。另一方面,对称加密只会导致大小不变的增加。

  • RSA加密和解密的速度快,但不是非常快。在高带宽环境中执行大量 RSA 可能会出现问题(对于电子邮件,使用今天的机器,而不是 VPN)。

第四个原因是最常被引用的,但实际上是四个中最不引人注目的。

很难找到一个好的参考,但RSA 不是很快

相比之下,DES(见第 3.2 节)和其他分组密码比 RSA 算法快得多。DES 的软件速度通常至少是软件的 100 倍,而硬件的速度通常是 1,000 到 10,000 倍,具体取决于实现方式。由于需求量大,RSA 算法的实现可能会在未来几年稍微缩小差距,但分组密码也会变得更快。

因此,加密一个小的对称密钥,然后用它加密数据要快得多

如果您担心 DES 不是一个很好的例子(因为这些天没有理智的人会使用它),AES 的速度在同一个数量级上

这仅仅是因为 RSA 是 A)非常慢 B)只能根据密钥的大小加密 X 位。这里的方法是生成一个更快的 AES 密钥,并且可以加密(AFAIK)无限数量的位。因为 AES 是对称的,所以一方无法在没有加密的情况下将其提供给另一方。这就是为什么使用非对称加密 (RSA) 以及为什么 PGP 要求人们拥有您的公钥才能向您发送消息的原因。