为什么不应该使用与签名相同的非对称密钥进行加密?

信息安全 密码学 加密 电子签名
2021-08-20 01:46:28

PulpSpy在回答有关 RSA 和 PGP 的问题时指出:

可以使用 GPG 生成 RSA 密钥对(用于加密和签名——您不应该对两者使用相同的密钥)。

这背后的原因是什么?

也许我对公钥加密的理解是有缺陷的,但我认为操作类似于这样:

  • 当 Bob 想要加密给 Alice 的消息时,他使用 Alice 的公钥进行加密。然后 Alice 使用她的私钥解密消息。
  • 当爱丽丝想要对给鲍勃的消息进行数字签名时,她使用她的私钥对其进行签名。Bob 然后使用 Alice 的公钥来验证签名。

为什么使用不同的密钥进行加密和签名很重要?这是否也意味着您需要将两个公钥分发给您希望与之通信的每个人?我想这很容易导致一些混乱和误用密钥。

4个回答

主要是管理方法和时间框架因使用签名和加密密钥而异。

对于不可否认性,您永远不希望其他人控制您的签名密钥,因为他们可能会冒充您。但是您的工作场所可能希望托管您的加密密钥,以便其他需要的人可以获取您加密的信息。

您可能还希望签名密钥长期有效,以便世界各地的人们可以检查过去的签名,但是使用加密密钥,您通常希望更快地滚动它,并且能够在没有 as 的情况下撤销旧的很多麻烦。

使用相同的密钥对进行签名和加密可能不安全的。这样做可能会启用攻击,具体取决于您使用的特定公钥方案。这种使用不是系统的设计目的,因此以非设计方式使用系统“使保修失效”。

不要这样做。这是自找麻烦。

有一些原因我们不应该使用相同的密钥进行加密和签名。

  1. 我们需要为加密数据备份我们的密钥。稍后我们想解密一些旧的加密消息,但我们不需要备份我们的密钥进行签名。如果攻击者找到了密钥,我们可以告诉我们的 CA 撤销它并获取新的签名密钥,而无需备份。

  2. 更重要的是:如果我们使用相同的密钥进行加密和签名,攻击者可以使用它来解密我们的加密消息。他/她会这样做:

    攻击者必须选择一个随机数r,其中

          r必须有GDC(N, r) = 1
          并且N是用于创建私钥和公钥的数字 ( N = pq)

    然后攻击者选择一条新消息 ( m′) 并将其发送给发送者进行签名:

          m′ = m^e.r^e(这里(e,n)是公钥)

    当发件人签名m′我们得到

          m′^d ≡ (m^e.r^e)^d ≡ m.r (mod N)

    现在攻击者只需要“除”它就r可以得到m(秘密消息)。

使用单独的密钥进行签名和加密的原因:

  1. 在组织中很有用的是,一旦组织的员工/用户不再可用,加密密钥需要被支持或保存在托管中以便解密数据。与加密密钥不同,签名密钥绝不能被员工/用户以外的任何人使用,并且不需要也不应该被托管。
  2. 允许为加密密钥签名使用不同的到期时间。
  3. 鉴于加密和签名的基础数学是相同的,只是相反,如果攻击者可以说服/欺骗密钥持有者使用相同的密钥签署未格式化的加密消息,那么攻击者将获得原始消息。

参考

  1. https://www.entrust.com/what-is-pki/

  2. https://www.gnupg.org/gph/en/manual/c235.html

  3. http://www.di-mgt.com.au/rsa_alg.html