加密文件时使用公钥加密有什么缺点?

信息安全 加密 密码学 不对称
2021-08-13 18:00:31

我想用我的公钥加密文件,我的朋友告诉我这不是一个好主意,但没有解释原因。有人可以解释一下吗。

3个回答

您的朋友是正确的,因为私钥加密不是这项工作的工具。Cryptography.SE上的这个答案很好地解释了原因。一些亮点:

任何公钥加密方案都必然会增加其加密数据的大小。

虽然有更有效的方案,但可以肯定地说,对称方案比非对称方案要快几个数量级且功耗更低,至少在解密方面是这样。

当进行加密的人与进行解密的人不同时,使用私钥密码术——如果双方不能轻松地交换密钥,对称密码术就无法处理这种情况。

当私钥加密用于传输大量数据时(如在 TLS 中),您通常首先使用随机对称密钥加密数据。然后你用接收者公钥加密对称密钥,这样他们和其他人都无法读取它并解密数据。

非对称密码学有两个常见的用例:

  • 加密:您使用其他人的公钥处理消息或文件。只有他/她可以用他/她的私钥解密它。
  • 签名:您使用自己的私钥处理消息或文件。消息或文件本身可以不加密地传输。通常只处理/签名消息/文件的哈希。因此,每个人都可以使用您的公钥验证它是由您处理的,因为只有您(应该)有权访问您的私钥。

使用您自己的公钥加密文件不是上述用例。如果您将该加密文件存储在您的计算机上是没有意义的,因为您计算机上的黑客也可以访问您的私钥。

但是,如果您想将文件(例如备份)存储在不太安全的云存储上,但您的私钥应保持机密,那么您的想法完全有道理。闯入您的云存储的黑客无法在不闯入您的计算机的情况下解密文件。

简而言之,如果您将私钥与加密文件分开,我认为没有任何缺点。

公钥加密的唯一缺点是密钥分发问题:如果您需要通过多个软件实例验证/检查您的文件,即您正在签署升级补丁,那么将未篡改的密钥传递给客户端是一个问题,因此伪造/MitM 将是不可能的。

如果你只是要加密一个文件——我建议你使用像 AES 这样的对称密钥算法,因为它现在几乎在任何地方都是硬件加速的。如果有人闯入您的云或 FTP 存储并拥有一个文件 - 它仍然会遇到同样的问题:解密密钥,如果黑客闯入您的 PC - 无论哪种方式,它都会拥有完整的密钥集。例如,AES256 只是一种更快的方法。