【发布时间】:2017-05-30 14:38:18
【问题描述】:
我认为这是可能的,因为两者都使用 RSA 进行加密。我应该能够读取 X.509 并将其存储为新的 OpenPGP 密钥。
我的软件的合作者需要 OpenPGP。 另一个合作者提供 X.509。
我正在寻找一种转换密钥的方法。 有可能吗,怎么办?
【问题讨论】:
我认为这是可能的,因为两者都使用 RSA 进行加密。我应该能够读取 X.509 并将其存储为新的 OpenPGP 密钥。
我的软件的合作者需要 OpenPGP。 另一个合作者提供 X.509。
我正在寻找一种转换密钥的方法。 有可能吗,怎么办?
【问题讨论】:
简短的版本:你可以有点,但这样做很少有用。
您可以提取构成密钥的数字,并从理论上将它们组合成一个新的 X.509 和/或 OpenPGP 密钥,但在各自的系统中,这些数字仍然不兼容,不同的密钥。实际上,monkeysphere 项目提供了两个方向的工具(openpgp2pem 和 pem2openpgp,但请务必在出发和转换密钥之前阅读帖子的其余部分)。
X.509 和 OpenPGP 都不仅仅是一种密钥文件格式:它们为密钥管理和认证、元数据、标识符等添加了(不兼容的)选项……此外,两个系统使用的加密操作模式略有不同,并且加密和签名消息的格式非常不同(因此不兼容)。它们甚至在处理认证的方式上也存在巨大差异(X.509 的层次结构与 OpenPGP 的任意图)。
换句话说:您对共享相同 RSA 素数的 OpenPGP 密钥的 X.509“表示”所做的任何事情都不能与 OpenPGP 变体一起使用,反之亦然。在一个系统中颁发的证书在另一个系统中不起作用(并且无法转换!)。
由于两个键“表示”无论如何都不兼容并且必须单独管理,我会强烈建议从一开始就创建不同的键集。毕竟,这增加了另一层安全性,以防其中一个密钥被破坏,因为另一个密钥保持完好无损。除了执行不寻常的操作外,总是容易出错和可疑的后续问题。
可能会有很好的用例,例如,monkeysphere 项目需要这些转换来通过 OpenPGP 密钥验证 SSH 连接。但出于上述原因,我不会认为对消息和文件进行签名和加密的一般用途是一个很好的用例。
【讨论】: