用自己的 X.509 证书签署 GnuPG 主密钥?

信息安全 pgp gnupg x.509 信任网络 pkcs7
2021-09-06 11:52:39

我可以使用受信任的 X.509 数字证书来帮助扩展我的个人信任网络吗?

更具体:

  1. 我可以使用我的 X.509 证书来签署我的个人 GnuPG 主密钥吗?
  2. 收件人能否使用 CA 的证书来验证公钥确实是我的?
  3. 当涉及到我的公钥的可信度和真实性时,这与当前的信任扩展方法网络(例如密钥签名方)相比如何?
  4. 这会为不认识我的人提供足够的安全性来签署我的主密钥吗?

在研究这个主题时,我遇到了这个关于密钥签名策略的页面

使用 X.509 证书签署 PGP 密钥

虽然来自 CA 的证书并不是信任 PGP 密钥的真正基础,但当没有其他选项可用时,它可以作为合理的替代品。

为什么国家证书颁发机构的签名不能使发布的密钥可信?

我国围绕PKCS #7X.509标准实施公钥基础设施。他们的流程如下:

  • CA 满足加密要求并获得政府签署的密钥。
  • 用户支付费用来验证他们的身份并获得由 CA 颁发的数字证书。
  • 证书最常作为智能卡发行,并启用具有法律约束力的数字签名。

根据GnuPG 文档,在我看来,CA 相当于信任网络中的一个人,其签名可以完全信任

所有者对密钥签名非常了解,并且他在密钥上的签名与您自己的签名一样好。

如果我的密钥确实可以由这样的证书签名,那么我的公钥的接收者怎么能不确定它是我的,因为我的身份已经由 CA 亲自且相当彻底地验证了?


我发现的相关信息 Security.SE 问题:

在很多不同的地方似乎有很多相互矛盾的信息。如果签名的 OpenPGP 或 GnuPG 公钥与 X.509 证书相同,那么签名怎么会不兼容?此外,除了涉及的官僚机构数量外,信任系统似乎彼此相似。

1个回答

我可以使用我的 X.509 证书来签署我的个人 GnuPG 主密钥吗?

从技术上讲,是的,您可以使用与您的证书关联的私钥来签署 X.509 公钥,作为 X.509 证书的真实性声明。但是,我怀疑您真的在问“是否有现成的集成实现可供使用?” ,而答案(据我所知)是否定的。

收件人能否使用 CA 的证书来验证公钥确实是我的?

假设您正在谈论使用 CA 证书来验证 PGP 公钥是您的,不。您必须将 X.509 证书的公共部分(我们通常称之为“证书” - 私有部分通常称为“密钥”)分发给所有想要使用它来验证任何内容的客户。在 SSL/TLS 中,这种分配发生在连接开始时,在发送 ServerHello 数据包之后 - 服务器直接向客户端提供其证书。在您的情况下,您必须想办法将您的证书分发给人们。您还需要能够分发不会附加到 PGP 密钥本身的签名(尽管您可能会将签名临时装配到 WoT 实现使用的相同扩展中)。

当涉及到我的公钥的可信度和真实性时,这与当前的信任扩展方法网络(例如密钥签名方)相比如何?

它更加繁琐,缺乏真正的实现,并且合并了两个旨在分离的生态系统。Web of trust 允许其他用户使用他们的私钥签署您的公钥,并发布这些签名。

作为一个场景,假设 Alice 和 Bob 住在同一个城镇,但我搬走了,不能再来拜访。我们都通过电子邮件交谈,用 PGP 签名。在我搬家之前,我们都聚在一起,亲自交换了公钥。Alice 刚刚遭遇磁盘故障并且没有进行备份,所以她丢失了她的密钥对。她创建了一个新的密钥对,但我没有办法验证它。但是,我相信鲍勃。他用他的私钥签署她的公钥,并分发该签名。然后我可以通过代理信任 Alice 的签名,而无需自己验证它。

将 X.509 引入其中是很痛苦的。仅证书分发就令人头疼。如果 CA 失控,他们可以发布任意 CA,并开始对人们进行社会工程以接受新的交叉签名密钥。密钥分发自动化方法的另一个问题是,它只需要一个 CA 就可以成为流氓 - PKI(尤其是 HTTPS)目前就是这种情况,这是一个我们没有强有力的解决方案的主要问题(除了证书固定)。

这会为不认识我的人提供足够的安全性来签署我的主密钥吗?

那是主观的。我个人的回答是否定的,因为我不相信 CA 是万无一失的。在 PGP 生态系统本身中使用信任网络具有一定的意义,因为影响范围是每个人的系统,关键更改很少发生,并且系统从头开始设计为与电子邮件一起使用。引入 X.509 和 PKI 只会让一切变得一团糟,并将影响范围转移到第三方 CA。