我正在考虑设置 GPG 密钥服务器,我想知道是否可以在使用 TLS 证书时使用 GPG 信任。例如,公司GPG密钥用于对部门GPG密钥进行签名,部门GPG密钥对用户GPG密钥进行签名。
这行得通吗,还是我把 GPG 的洞弄错了?
答案1
您询问“这是否可行”,但您没有给出您希望通过基础设施实现什么目标的用例。
既然您将 GPG 密钥与证书进行比较,我假设您对密码学有基本的了解,但还不足以“连接点”,可以这么说。
签署别人的密钥意味着什么
GNU 隐私手册有一个很好的条目,解释了“信任”的概念。 GPG 公钥的主要思想是一个人或实体拥有一个或多个密钥。然而,无法判断您找到的给定 GPG 密钥是否确实属于他们声称的人。
例如,我可以以唐纳德·特朗普的名义创建一个密钥对,而你无法知道公钥是否确实属于他。
因此,“信任网”应运而生。其基本思想是与某人见面或通过任何其他可验证的渠道,确认他们的公钥确实是他们的。有时,用户会聚在一起,互相签署彼此的密钥,这被称为密钥签署方。
基本思想是,虽然你可能不信任我,但你可能会信任我的朋友,他验证了我的身份。如果你不信任我的朋友,你总是可以信任他的朋友,等等。
这是否意味着您所要做的就是创建大量假密钥并相互签名以获得即时可信度?不,因为你不信任这些人,他们的签名对你来说基本上毫无价值。
证书意味着什么
证书的设计类似。他们获取公钥,对其进行验证并签名。最大的区别在于,这些签名并不是为了在您想要验证的人与您之间建立一条链,而是为了在您想要验证的人与您信任的证书颁发机构之间建立一条链。
整个过程首先由权威机构生成“根证书”,然后“根证书”生成中间证书,然后使用中间证书对您的密钥进行签名,从而为您生成证书。
优点是信任并不取决于您的信任网络有多大,而是取决于您信任哪个“根证书颁发机构”。一般来说,您信任操作系统附带的 CA,因为制造您的操作系统的公司或团体信任这些证书。
那么,您应该使用哪一个呢?这很大程度上取决于您的应用程序是什么。如果您希望建立一个 GPG 密钥服务器并为每个员工提供一个密钥对,然后让每个人签署其他人,您可以这样做。
但是,如果您希望在身份验证领域执行任何操作,那么您最好自己生成根 CA,将其部署在公司的每台计算机上并从那里签署证书。
答案2
简短的回答是肯定的,但长期的回答是你可能需要了解 GPG很多更多的。传递信任是 GPG(称为信任网络)的一项基本功能,因此比 X509 PKI 证书(即所谓的 TLS)更加复杂和可配置。这些技术之间的主要区别在于 PKI 依赖于全球知名的权威机构,而 GPG 希望每个人都能为自己定义自己的权威机构(非常简单的解释)。作为信任网络的灵活性的示例,请参阅《使用信任来验证密钥》一章GnuPG 手册
另外,我不知道您的问题与建立自己的密钥服务器的既定目标有什么联系,我应该警告您,以这种程度的理解,它可能对您来说是危险的。