什么时候应该使用对称加密而不是 RSA?

信息安全 公钥基础设施 AES RSA
2021-09-06 15:34:38

我目前正在使用 GPG RSA 密钥来加密二进制文件。很多人建议使用对称密钥加密大文件,然后用公钥加密对称密钥。

我应该以多大的文件大小从 RSA 切换到 AES 之类的文件?是任意的吗?在海量文件(千兆字节)上使用 GPG/RSA 是否存在任何安全问题?我知道 RSA 更慢/更大,我只是想知道是否还有其他问题。

即使需要更多时间,直接使用 RSA 加密也比生成新的对称 AES 密钥、加密文件、通过 RSA 加密密钥然后每次我加密文件时存储 AES 密钥要少得多,这就是为什么我在问为什么我应该使用它。

4个回答

这不是大小的问题

被称为 RSA 的原始非对称加密算法可以在相当有限的空间内对“消息”进行非对称加密;即,使用 2048 位 RSA 密钥和 PKCS#1 v1.5 RSA 加密,该算法最多可以处理最多 245 个字节的字节序列。

但是你从不使用原始算法。您使用协议,在本例中为OpenPGP,它定义了要使用的算法以及每个字节的去向。在 OpenPGP 中,当收件人有一个公钥/私钥对并且您想“使用公钥”加密您的消息(即,您希望消息不可读,除非知道相应的私钥的人),然后您调用您的 OpenPGP - 兼容的软件,它将遵循 OpenPGP 规则 - 这些规则是始终使用对称加密:软件生成随机对称密钥K ,使用K作为密钥使用对称算法加密消息本身,然后加密K(不是消息)与收件人的 RSA 公钥。您不必选择,也不必选择:这就是 OpenPGP 的工作方式。

设计你自己的安全协议,然后安全地实施它,是两个难以置信的艰巨任务(“难以置信”,因为人们一开始并不相信它)所以聪明的事情不是自己做,而是使用现有的协议(例如OpenPGP)和该协议的现有实现(例如GnuPG)。从这个意义上说,你不应该问自己这个问题。

任何文件大小真的。对称密码学通常为给定的密钥长度提供更高级别的安全性。这就是我们可以使用 128 位对称算法但必须使用 1024 或 2048 位非对称算法的原因。如果您有大量使用它们加密的结构化数据,还有一些攻击可以更容易地找出某些非对称算法。此外,对称算法的执行速度要快得多,而不对称算法在保护文件时不会给您带来额外的好处。

仅当您需要与没有交换密钥的特定个人交换信息时(即使那样,您使用对称并通常以非对称方式加密密钥)或需要签署某些东西(其中如果您不对称地加密哈希值)。

出于安全和效率的原因,非对称加密几乎总是应该用于尽可能少的信息量。事实上,这是许多(如果不是大多数)利用非对称加密的既定协议所基于的。

PGP、GPG、SSH 和大多数公钥系统已经在内部使用对称算法

在内部,当您使用公钥加密时,软件/硬件首先生成一个对称密钥并使用对称算法加密您的数据。然后它用公钥加密该对称密钥(使用非对称算法)并将加密的对称密钥存储在密文中。在另一端,接收方需要密钥来解密与密文存储的对称密钥,然后使用对称密钥解密密文并检索消息。在所有这些步骤中,用户看到的唯一元素是:公钥、明文、密文、密钥。对称密钥和加密都是内部的,永远不会暴露给用户。这样,您将获得非对称算法的好处(能够使用公钥加密多个人),

这也是为什么当您更改 GPG/PGP 密钥的密码时,您仍然可以解密之前用您的公钥加密的文件。密钥实际上存储在文件中,并且是唯一真正用纯公钥加密的部分!

我目前正在使用 GPG RSA 密钥来加密二进制文件。很多人建议使用对称密钥加密大文件,然后用公钥加密对称密钥。

这被称为混合密码系统,并且是通常使用的方式,尤其是当数据量变大时。就其本质而言,对称加密总是比任何非对称方案都要快

在海量文件 (GB) 上使用 GPG/RSA 是否存在任何安全问题?我知道 RSA 更慢/更大,我只是想知道是否还有其他问题。

嗯,一个问题可能是RSA 的确定性如果您多次使用相同的密钥加密相同的明文,您可能会使攻击者执行已知明文攻击您当然可以以非确定性的方式修改 RSA,但为什么要麻烦而不是在每次加密时使用随机对称密钥。

此外,混合方法可以以很少的开销将密文发送给多个接收者您只需为每个接收者加密对称密钥,而大部分数据对于所有接收者都可以保持不变。

即使需要更多时间,直接使用 RSA 加密也比生成新的对称密钥并通过 RSA 加密然后在每次我加密文件时存储它们要少得多,这就是为什么我要问为什么我应该使用它。

这是GPG 自动处理的事情。您究竟是如何调用 GPG 的?如果混合方法没有真正的缺点,为什么还要等待更长时间?