Sin*_*per 19 rsa gpg openssl private-key ssh-keys
我目前有一个 SSH 密钥,我已经使用了一段时间,我想开始使用带有新密钥环的 GnuPG。但是,鉴于我已经使用我的密钥多年,我仍然希望在 GPG 中使用该密钥作为主/主键。我已经尝试通过这些说明导入密钥。
但是,我最终得到了被认为是“子密钥”的东西。此外,如果我尝试在不创建标准 GPG 密钥的情况下导入它,GPG 甚至看不到这个子密钥。(我假设子密钥需要先由主密钥签名。)
如何使用此密钥作为 secring.gpg 中的主密钥?
use*_*ser 19
简单的答案是:你没有。
SSH 密钥和 GnuPG(实际上是 OpenPGP)密钥完全不同,尽管这两种协议都可以使用 RSA 密钥对。
此外,你为什么要这样做?即使您使用相同的密钥材料来组成您的 PGP 密钥,您仍然需要将您的密钥作为 PGP 密钥分发。您可能没有将您的 SSH 公钥分发给与您通信的人,因此从密钥分发的角度来看,没有区别:他们需要从您那里接收公钥。即使您已经将 SSH 公钥分发给其他人,他们也需要采取一些额外的步骤才能将其导入到他们的 OpenPGP 实现中,这可能很容易,也可能不容易。
正如kasperd非常正确地指出的那样,必须只有一种方法来解释(特别是)签名。如果您对 PGP 和 SSH使用相同的密钥,如果有人可以诱使您将特制消息(这是某些签名系统攻击中的假定功能)签名,那么即使两个系统在隔离时都是安全的或许可以以在一个系统中具有一种含义但在另一个系统中具有不同含义的方式来制作这样的消息。这本身就是一个弱点。(可利用?谁知道呢。但为什么要抓住机会呢?)
PGP 和 SSH 密钥对都是长期密钥,用于保护临时(消息和会话)对称密钥,以及验证远程方的真实性。这使得 PGP 或 SSH 私钥比相应的对称密钥成为攻击者价值更高的目标。如果您对两者使用相同的密钥材料,并且攻击者能够意识到这一点,则只会增加对该密钥对成功攻击的价值。
在没有详细研究任何一个协议的情况下,我想认识到在两个协议中使用相同的密钥材料可能是相当简单的,因为公钥基本上是明文传输的。
只需生成一个新的 PGP 密钥。如果您愿意,请将其设为 RSA 并与您的 SSH 密钥长度相同。(无论如何,没有一个理智的人会比验证指纹更仔细地观察它。)然后将公钥作为 PGP 密钥分发给您希望与之通信的人。这对每个人来说都会容易得多,而且很可能更安全,代价是系统随机熵池中的少量熵无论如何都应该很快得到补充。
如果您的密钥环上有多个密钥并希望指定默认情况下应使用哪个密钥,请使用~/.gnupg/gnupg.conf 中的default-key
和 可能的default-recipient{,-self}
指令。
您可以pem2openpgp
使用Monkeysphere 项目中的工具将 SSH 密钥转换为 OpenPGP 密钥。然后,gnupg 可以将此密钥作为常规私钥/公钥对导入。正如另一个答案所提到的,这通常不是一个好主意,因为 ssh 没有证书的概念,因此您实际上是在向现有密钥添加以前不可能拥有的功能。这在密码学中通常是行不通的。
无论如何,我是用我的一个 ssh 密钥完成的,但我将密钥对添加到我的另一个 OpenPGP 密钥中,作为只有一个功能标志的子密钥:身份验证。此标志适用于这样的情况,您不想使用密钥对(gnupg 的含义--encrypt
和--sign
选项)对任何内容进行签名或加密,但无论如何都希望将它放在您的密钥箱中以使用 OpenSSH 和 gnupg-agent 进行身份验证。
有关更多详细信息,请参阅monkeysphere 文档。
归档时间: |
|
查看次数: |
19976 次 |
最近记录: |