这取决于您对“妥协”的定义。主要关注的是隐私,parcimonie 和 tor 是解决方案,如下所述。
但首先让我们看看数据完整性。
“端到端”安全性的概念在涵盖您为数据考虑的实际应用程序时最有帮助。由于 OpenPGP HTTP 密钥服务器协议 (HKP) 移动的对象被基于公钥技术的签名所覆盖,它们可以由您的应用程序(例如 gpg)本身检查。它将确定签名是否有效,它们是否适用于其他密钥和您信任的人等(更新:因此 gpg 仅(可选)从密钥服务器获取证书,它不依赖任何密钥服务器来建立钥匙。)
例如,假设您正在使用 gpg 检查电子邮件上的签名。如果 gpg 告诉您给定的密钥未知,您可以从密钥服务器获取它。也许您的邮件会告诉您密钥是已知的但不可信,因为从您最终受信任的密钥到签署电子邮件的密钥(例如这个)。因此,您查看签名,并找到您认识的人信任的人的密钥,以及信任给定密钥的人并下载该密钥。如果您最终选择了一条您信任的道路,那么一切都很好。如果有人在您下载密钥时弄乱了密钥,您要么无法获得可信路径(由于密钥损坏或无用),要么(这将非常不寻常)您将获得可能或可能的另一条路径不适合你。但是,关键是您仍然必须使用 gpg 来检查路径,并自己评估信任路径的“无形资产”(您对他人及其信任的程度)理解签名等)。但是你总是必须用 PGP 来做这件事。因此,它是“端到端”的,因为它从制作签名的人到您检查签名的软件以及您配置的信任根一直受到保护,因此非常理想。
传输的安全性并不是特别重要,使用 TLS 和相关的 PKI 和证书会增加 PGP 密钥服务器基础设施的额外复杂性、成本和脆弱性,而不会提高数据完整性。如果有人弄乱了传输,他们可能会拒绝为您提供服务,或者进行网络钓鱼攻击,但无论如何您几乎总是必须处理这些问题。
参见例如(已过期,但可能仍然有用的)Internet 草案的“安全注意事项”部分:draft-shaw-openpgp-hkp-00 - The OpenPGP HTTP Keyserver Protocol (HKP)
一个更重要的数据完整性问题将是提供精心制作的“恶意软件证书”的风险,该证书可以利用 gpg 客户端中的缓冲区溢出漏洞,或类似的东西。我还没有听说过 gpg 中的任何此类漏洞,但它们发生在 SSL 上:yaSSL Certificate Processing Buffer Overflow Vulnerability - CNET。这在连接到不受信任的公钥服务器有哪些固有风险?
更新:一个更成问题的问题是隐私。如果您不希望人们能够看到您正在搜索的密钥,或者弄乱您的密钥传输,那么使用 TLS 将是一种替代方案。但这并不能保护您免受服务器知道您感兴趣的内容的影响。
@teris-riel 扩展了隐私问题:想象有人向您发送了一封签名然后加密的电子邮件。您的邮件客户端愉快地检索签名的密钥。埃文正在观察交通,看到钥匙飞过。现在他知道 1)您可以阅读使用他发送给的密钥加密的消息,2)您确实阅读了该特定消息,以及 3)您阅读它的大致时间。如果这种确认攻击让您担心,请使用 hkps 和 Tor 获取密钥,不要自动进行。parcimonie是一个可以解决这个问题的工具。
并且作为bash注释中的一个 parcimonie 实现: gpg --refresh-keys 向您正在使用的密钥服务器公开您的 PGP 密钥的整个列表,以及如果您使用未加密的协议(例如 HKP)窃听您的连接的任何人(这是大多数设置的默认值)。这是一件坏事。
所以使用类似parcimonie的东西。
有一些替代协议,但是为它们找到包含您想要的密钥的服务器似乎很难:
也可以看看