为什么有时需要手动导入密钥?

为什么有时需要手动导入密钥?

AUR 上有许多软件包,当您尝试安装它们时,会导致如下错误:==> ERROR: One or more PGP signatures could not be verified!

通过使用类似 的内容导入密钥可以解决此问题gpg --recv-keys 123456789ABCDEF。 AUR 讨论通常会提供关键。

我对此有几个问题:

  1. 这些键到底有什么作用? GPG 正在验证什么?为什么有必要?

  2. 为什么需要手动导入密钥?为什么不能自动化?

  3. 如果盲目地从 AUR 评论线程导入密钥是不好的,我应该采取什么步骤来“验证”密钥?

  4. 如果没有人愿意在评论中发布密钥,并且我没有时间发布评论并希望维护者回复,我应该在哪里找到密钥?

在网上搜索,我发现了一个参考资料众所周知的博客文章。很遗憾,仔细阅读了几遍之后,我仍然不明白以上几点。

答案1

这些键到底有什么作用? GPG 正在验证什么?为什么有必要?

这些密钥用于验证您正在下载的软件是否是软件包作者的意图,而不是来自可能已被攻击者成功渗透的存储库服务器的特洛伊木马恶意软件。或者,攻击者可能可以将您的下载请求重定向到他伪装的恶意软件存储库,而不是真正的 AUR 存储库。 GPG 验证使得攻击者很难成功地将软件存储库用作恶意软件分发渠道。

为什么需要手动导入密钥?为什么不能自动化?

您应该有意识地选择是否信任特定的软件作者/打包者,以及您是否有足够的信心来确保您收到的密钥是真实的而不是来自冒名顶替者。

必要的信任和置信水平取决于您正在做的事情:用于娱乐的私人家庭系统、用于处理其他人的健康和/或企业信用卡信息的服务器以及用于国家导弹防御系统的辅助支持服务器应该每个都有不同的要求。

如果盲目地从 AUR 评论线程导入密钥是不好的,我应该采取什么步骤来“验证”密钥?

如果该密钥是由您已经拥有密钥的其他人签名的,并且您至少在签署 GPG 密钥时相信这些人的判断,那么您可以将此作为该密钥可能是真实的证据。否则,您可以尝试从多个不同来源获取密钥并比较结果。如果它对您来说足够重要,您甚至可以致电或与开发人员会面,以获得更强有力的确认,证明您拥有正确的密钥。

如果没有人愿意在评论中发布密钥,并且我没有时间发布评论并希望维护者回复,我应该在哪里找到密钥?

旨在广泛使用的 GPG 公钥通常发布在 SKS 密钥服务器上:如果您没有正确的密钥,软件包工具应该能够显示所需密钥的 keyID,您可以使用它来搜索密钥服务器上的密钥。

有关 SKS 密钥服务器网络的更多信息,请参阅此处:https://sks-keyservers.net/

您还可以通过 google 搜索 keyID。

答案2

TL;DR - 新的、增强的和自动化的“根据网站上发布的列表检查下载的 md5sum”

签名是对谁签署了包的数字验证,以确保包自创建以来没有被修改过。通常由包维护者或发布经理或发行版核心项目维护组中的“权威”人员签名。本质上,它是对您要安装的内容进行增强和自动化的完整性检查 - 新的“我们已经发布了文件列表的 md5sum 哈希值,您应该将您下载的内容与这些内容进行比较”。

它的工作方式是公钥/私钥 - 我创建一个带有密码的私钥(强密码)并用它生成一个公钥。我可以给出公钥。我生成包,对其进行签名,当您安装它时,您会被告知匹配 ABC321FF 的公钥或验证签名所需的任何内容。导入密钥后,您端的软件可以验证识别哈希是否相同,并且该哈希是由我的私钥签名的。

将软件从存储库添加到系统时的安全问题是“这个软件背后的人是谁 - 哦,还有密钥”。如果它是发行版的密钥(某些发行版有自己的密钥,或者已撤销并创建新密钥),那么没关系,无论如何您都在运行其发行版中的软件。请注意,当您进入第 3 方存储库(例如 Ubuntu 和项目 PPA)时,您最终将为每个存储库导入一个密钥,这可能是您关心的问题。

您应该注意的是,该密钥现在仅适用于该密钥已签名的任何其他内容。根据您的偏执程度,您可能需要根据需要添加密钥,并在安装完软件包后将其从可信密钥列表中删除。当然,随着频繁的更新,您会创建更多的工作和更新步骤。

如果您对密钥签署一些令人讨厌的东西感到偏执,您可能不应该愿意尝试从该存储库安装任何内容。

相关内容