Alice 想向 Bob 发送加密消息,但她也想连接到 Carol 的服务器。对 PGP 和 SSH 使用相同的 RSA 密钥是否存在任何危险(除了缺乏匿名性)?
对加密 (PGP) 和身份验证 (SSH) 使用相同的密钥 (RSA) 是否危险?
信息安全
加密
密码学
隐私
公钥基础设施
密钥管理
2021-09-03 19:38:37
2个回答
在 PGP 设置中,使用接收者的公钥进行加密。在 SSH 身份验证中,这是(内部)带有客户端私钥的签名。如果 Alice 向 Bob 发送消息并连接到 Carol 的服务器,那么 Alice 将使用 Bob 的公钥进行加密,并在这里使用自己的私钥(来自不同的密钥对)进行签名。这里没问题。
一个更棘手的情况是,Bob 既想从 Alice 接收加密消息,又想连接到 Carol 的 SSH 服务器。在这种情况下,Bob 使用他的私钥解密传入的消息(来自 Alice),并签署 Carol 发送的内容(SSH 握手中的身份验证挑战)。一般来说,对两种不同的算法使用相同的私钥是一个坏主意,因为这两种用法之间可能的交互是一个探索得很差的领域。此外,通常希望保留任何加密密钥的备份,而不是保留任何身份验证/签名密钥的备份(请参阅this),因此使两个密钥相同意味着您做的事情并不理想。
就此而言,正常的 PGP 设置已经需要具有多个密钥对(可以撤销子密钥的“主密钥”,以及用于加密和签名的子密钥)。有一个额外的 SSH 应该不难。
(不包括像GnuPG这样的 PGP 实现和像OpenSSH这样的 SSH 实现具有不同的密钥编码格式,因此对两者使用相同的密钥需要一些努力。)
真正的问题是您是使用签名/身份验证 GPG 子密钥作为 SSH 密钥,还是使用加密密钥。前者很好,后者不是:绝不能同时使用 RSA 密钥来加密和签名!(身份验证使用数字签名。)
其它你可能感兴趣的问题