为什么应用程序鼓励您使用单独的密钥对进行加密和签名?
您是正确的,没有技术原因不能使用一个 RSA 密钥对进行加密/解密和签名/验证。但仅仅因为技术允许它,并不意味着它是一个好主意。原因与备份有关,以及如果您丢失私钥(或被盗)会发生什么。我认为解释这一点的最好方法是浏览一些示例案例。
对于以下内容,假设 a1-keypair user是使用相同密钥对进行加密和签名操作的人,而 a2-keypair user是将两个单独的密钥对附加到其个人资料的人。
对于这些示例,我们还假设您的硬盘驱动器上有一堆您为自己加密的重要文件,还有一堆您已签名并发送给其他人的文档。
案例#1:1-keypair 用户,您丢失/删除了您的私钥
您无法再解密硬盘上的文件。所有那些重要到足以加密的东西?他们已经走了,你永远不会让他们回来。这可能听起来很傻,但是当人们丢失手机/笔记本电脑死机/忘记主密码等时,他们总是会丢失密钥。使用 GPG 无法恢复它。
至于签名,没问题,您已经签名的文件仍然可以正确验证,因为配对的公钥仍然可以,而对于新文件,您只需制作新的签名密钥即可。
您可能会想“好吧,那我将我的私钥备份到保管箱或其他东西上”,请考虑案例 #2
案例 #2:1-keypair 用户,您的私钥被黑客窃取
当您将数据放在云存储上时,您就允许该服务器的管理员访问它。所以其他人(不是你)现在可以访问你的私钥——至少在理论上是这样。所以呢?好吧,如果他们拿到你的笔记本电脑,他们就可以解密那些重要的文件。此外,更重要的是,他们现在可以以您的名义签署文件。
这对您来说可能没什么大不了的,但由于数字签名在某些地方具有法律约束力,因此对于不希望黑客代表他们签署法律合同的政客和律师来说,这是一件大事。在法律上,有一个不可否认的概念,这意味着如果一份文件带有您的签名,那么我们就知道您是签署它的人。一旦不止一个人可以访问您的私钥(即使在理论上),您就不能再要求不可否认性,这意味着,在最坏的情况下,您曾经使用该密钥签署的任何合同都将失效。
这两个案例表明:
您想要备份您的解密私钥,这样就不会有丢失数据的风险。事实上,许多公司和政府组织要求他们的员工在中央服务器上备份解密密钥。
您永远不会想要备份签名密钥。曾经。
解决方案
因为1-keypair users您必须在保护您的数据和保护您的不可否认性之间做出选择。同时,2-keypair users不要有这个问题,而且由于在您的个人资料中拥有第二个密钥对确实没有任何不利之处,因此没有理由让任何人成为1-keypair user.