使用单独的密钥对进行签名和加密的目的是什么?

28

为什么我需要使用不同的公钥对进行签名和加密,而不能使用相同的RSA密钥对?如果使用相同的密钥对是否存在安全问题?


6个回答

30
使用不同的密钥对进行签名和加密的原因是为了分散风险:如果有人恢复了私有加密密钥,则可以解密使用公共加密密钥加密的文档,但不能使用它来签署文档,反之亦然。
另一个原因可能是法律原因
在几个国家中,数字签名具有类似传统纸笔签名的地位,例如在欧盟数字签名立法中。一般而言,这些规定意味着任何数字签名都将使文件签署者对其中的条款负法律责任。因此,通常最好使用不同的密钥对进行加密和签名。使用加密密钥对,人们可以进行加密会话(例如关于房地产交易的会话),但加密并不会在每条消息上进行法律签署。只有当双方达成协议后,他们才会使用签名密钥签署合同,只有这样,他们才会被特定文件的条款法律约束。签署后,可以通过加密链接发送文档。如果签名密钥丢失或被破坏,可以吊销该密钥以减轻未来事务的影响。如果加密密钥丢失,则应使用备份或密钥托管来继续查看加密内容。签名密钥不应备份或托管。

有两个签名密钥对,一个用于“我发送了这条消息”(在合同谈判中很有用),另一个用于“我希望通过这份合同获得法律约束力”,这样做是否合理? - Paŭlo Ebermann
1
不同意,其中一个签名是声明我不希望被法律约束。这是一个重要的区别。 - John Nicholas

2

使用不同的密钥进行签名和加密的原因:

  1. 在需要备份或将加密密钥放置在托管中以便在员工/用户不再可用时解密数据的组织中非常有用。与加密密钥不同,签名密钥决不能被任何人使用,只能由员工/用户使用,并且不应该被放置在托管中。
  2. 允许为签名和加密密钥设置不同的过期时间。
  3. 鉴于加密和签名的基础数学原理相同,只是相反的,如果攻击者可以说服/欺骗密钥持有者使用相同的密钥对未格式化的加密消息进行签名,则攻击者将获得原始消息。

请注意,第3点是RSA特定的。签名和加密的基础数学通常是不同的。如果没有填充使用RSA,则会出现签名神谕解密消息的不良属性,但是对于RSA的好的签名和加密方案,确保操作是不同的(因此您不能使用PSS签名神谕来解密OEAP加密的消息)。 - Nicholas Wilson
你很可能是正确的(来源?)。虽然我会保留答案,因为它仍然回答了OP的问题,考虑到他/她提到RSA作为一个例子,并没有要求太多其他细节。 - moo

2

0

拥有单独的签名和加密密钥对允许公司备份加密证书,以便在您离开公司并且他们发现使用您的密钥加密的内容时解密数据。

通常,公司不会保留您的签名证书备份副本,因为这会破坏有效数字签名的概念。如果签名证书由多个方持有,则谁真正使用它签署了消息?

因此,加密密钥由用户持有并由公司备份。签名密钥仅由用户持有。


在我看来,这似乎是一个答案而不是一个问题。由于现今标准下这个问题本身可能过于宽泛和基于个人观点,如果这是一个新的问题,它将会被关闭。但鉴于这个问题,这确实是一个答案。 - Adi Inbar

-1

我不太确定你想表达什么意思。我假设你想知道为什么在使用https/ssl/ssh和代码签名时应该使用不同的密钥(除了它们具有不同的用途位)。

SSL证书必须挂在Web服务器周围,而Web服务器以被攻击而闻名。代码签名证书可以完全脱机隐藏。理论上是这样的。实际上,Web服务器由专业系统管理员管理,而代码签名证书则留在开发人员的个人电脑上。此外还有最小特权原则。


-9

我理解这个问题是关于为什么要使用不同的密钥对进行(非对称)加密和(同样是非对称的)签名。原则上,我的公共签名密钥也可以用于向我发送加密消息。 - Paŭlo Ebermann
如果只有一个密钥用于加密和解密,那么使用公钥和私钥就没有意义了。整个想法是拥有两个密钥,一个用于加密,另一个用于解密。如果同一个密钥执行这两个操作,那么使用非对称加密就毫无意义。我认为我还没有理解你想问什么。 - dr. evil
公钥密码学的工作原理:加密文本 = 加密(明文,公钥);明文 = 解密(加密文本,私钥)。公钥签名:签名 = 加密(消息,私钥);消息 = 解密(签名,公钥)(其中消息通常是文档的哈希值)。第一次操作与后两次操作使用不同的密钥对,其中原因何在? - Paŭlo Ebermann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接