为什么我可以签名但不能加密?

信息安全 电子签名 RSA 不对称
2021-08-22 05:44:11

-edit- 在关注这个问题的一连串链接后,我看到这与为什么不应该使用与签名相同的非对称密钥进行加密类似/重复? 但是这个问题是问是否有技术原因我们不应该这样做,并且链接的技术性较低,并且不仅限于 rsa

我可能有错误的理解。GPG 允许您生成仅用于签名的 RSA 密钥。据我了解,RSA 密钥是公钥和密钥对。签名通过对消息进行散列处理并使用私钥对其进行加密,而其他人使用公钥对其进行解密。据我了解,如果哈希与解密的内容匹配,则消息已签名。

GPG 如何生成密钥并对其进行签名,但不允许我加密消息?我相信在另一个应用程序中,它建议您拥有一个用于签名的密钥和一个用于加密的密钥,但没有理由。这会不会令人困惑,因为加密的消息和签名的明文将使用不同的密钥并且似乎来自不同的用户?

2个回答

请不要将签名的“解释”用作“用私钥加密”,因为这是一个有缺陷的类比,实际上并不起作用。

RSA实际上是两种算法,一种用于非对称加密,一种用于签名。碰巧这两种算法有一些共同的数学元素,特别是使用相同类型的密钥(这就是为什么我们称它为“RSA 密钥”,而不是“RSA 加密密钥”或“RSA 签名密钥” )。因此,可以想象给定的 RSA 密钥对可用于加密和签名。

但是,您有充分的理由希望将加密密钥和签名密钥分开。OpenPGP格式承认这一点,因此“标记”密钥并指示其预期用途。因此,您的仅签名 RSA 密钥是 OpenPGP 标记的 RSA 密钥,其标签上大多写着“请不要使用该密钥进行加密”。

为什么应用程序鼓励您使用单独的密钥对进行加密和签名?

您是正确的,没有技术原因不能使用一个 RSA 密钥对进行加密/解密和签名/验证。但仅仅因为技术允许它,并不意味着它是一个好主意。原因与备份有关,以及如果您丢失私钥(或被盗)会发生什么。我认为解释这一点的最好方法是浏览一些示例案例。

对于以下内容,假设 a1-keypair user是使用相同密钥对进行加密和签名操作的人,而 a2-keypair user是将两个单独的密钥对附加到其个人资料的人。

对于这些示例,我们还假设您的硬盘驱动器上有一堆您为自己加密的重要文件,还有一堆您已签名并发送给其他人的文档。

案例#1:1-keypair 用户,您丢失/删除了您的私钥

您无法再解密硬盘上的文件。所有那些重要到足以加密的东西?他们已经走了,你永远不会让他们回来。这可能听起来很傻,但是当人们丢失手机/笔记本电脑死机/忘记主密码等时,他们总是会丢失密钥。使用 GPG 无法恢复它。

至于签名,没问题,您已经签名的文件仍然可以正确验证,因为配对的公钥仍然可以,而对于新文件,您只需制作新的签名密钥即可。

您可能会想“好吧,那我将我的私钥备份到保管箱或其他东西上”,请考虑案例 #2

案例 #2:1-keypair 用户,您的私钥被黑客窃取

当您将数据放在云存储上时,您就允许该服务器的管理员访问它。所以其他人(不是你)现在可以访问你的私钥——至少在理论上是这样。所以呢?好吧,如果他们拿到你的笔记本电脑,他们就可以解密那些重要的文件。此外,更重要的是,他们现在可以以您的名义签署文件。

这对您来说可能没什么大不了的,但由于数字签名在某些地方具有法律约束力,因此对于不希望黑客代表他们签署法律合同的政客和律师来说,这是一件大事。在法律上,有一个不可否认的概念,这意味着如果一份文件带有您的签名,那么我们就知道您是签署它的人。一旦不止一个人可以访问您的私钥(即使在理论上),您就不能再要求不可否认性,这意味着,在最坏的情况下,您曾经使用该密钥签署的任何合同都将失效。

这两个案例表明:

  1. 您想要备份您的解密私钥,这样就不会有丢失数据的风险。事实上,许多公司和政府组织要求他们的员工在中央服务器上备份解密密钥。

  2. 您永远不会想要备份签名密钥。曾经。

解决方案

因为1-keypair users您必须在保护您的数据和保护您的不可否认性之间做出选择。同时,2-keypair users不要有这个问题,而且由于在您的个人资料中拥有第二个密钥对确实没有任何不利之处,因此没有理由让任何人成为1-keypair user.