AUR 上有许多软件包,当您尝试安装它们时,会导致如下错误:==> ERROR: One or more PGP signatures could not be verified!
这可以通过使用类似gpg --recv-keys 123456789ABCDEF
. AUR 讨论通常会提供关键。
我对此有几个问题:
这些键具体有什么作用?GPG 正在验证什么,为什么需要验证?
为什么需要手动导入密钥?为什么不能自动化?
如果盲目地从 AUR 评论线程导入密钥是不好的,我应该采取哪些步骤来“验证”密钥?
如果没有人费心在评论中发布它,并且如果我没有时间发表评论并希望维护者回复,我应该在哪里找到密钥?
在网上搜索,我找到了一篇著名博客文章的引用。很遗憾地说,经过几次仔细阅读后,我仍然不明白以上几点。
这些密钥用于验证您正在下载的软件是否是软件包作者想要的,而不是来自存储库服务器的木马恶意软件,该恶意软件可能已被攻击者成功渗透。或者,攻击者可能会将您的下载请求重定向到他伪装的恶意软件存储库,而不是真正的 AUR 存储库。GPG 的验证使攻击者很难成功地将软件存储库用作恶意软件分发渠道。
您应该有意识地选择是否信任特定的软件作者/打包者,以及您是否有足够的信心确保您收到的密钥是真实的,而不是来自冒名顶替者。
必要的信任和信心水平取决于你在做什么:一个娱乐的私人家庭系统,一个为企业处理其他人的健康和/或信用卡信息的服务器,以及一个国家导弹防御系统的辅助支持服务器应该每个人都有一些不同的要求。
如果密钥是由您已经拥有其密钥的其他人签署的,并且您至少在签署 GPG 密钥时相信这些人的判断,那么您可以将其作为密钥可能是真实的证据。否则,您可能会尝试从多个不同来源获取密钥并比较结果。如果它对您来说足够重要,您甚至可以致电或与开发人员会面,以获得更强有力的确认,以确认您拥有正确的密钥。
打算广泛使用的 GPG 公钥通常发布在 SKS 密钥服务器上:如果您没有正确的密钥,打包工具应该能够显示所需密钥的 keyID,您可以使用它来搜索密钥服务器上的密钥。
有关 SKS 密钥服务器网络的更多信息,请参见此处:https ://sks-keyservers.net/
您也可以谷歌搜索keyID。
TL;DR - 新的、增强的和自动化的“根据网站上发布的列表检查下载的 md5sum”
签名是对谁在包上签名的数字验证,并确保包自制作以来没有被修改过。通常由包维护者或发布经理或分发核心项目维护组中的“权威”人员签名。从本质上讲,它是对您将要安装的内容的增强和自动完整性检查 - 新的“我们已经发布了文件列表的 md5sum 哈希,您应该将下载的内容与这些进行比较”。
它的工作方式是公钥/私钥 - 我用密码创建了一个私钥(好强的密码)并用它生成一个公钥。我可以给出公钥。我生成包,对其进行签名,当您安装它时,您会被告知公钥匹配 ABC321FF 或验证签名所需的任何内容。导入密钥后,您端的软件可以验证识别哈希是否相同,以及哈希是否由我的私钥签名。
将软件从存储库添加到系统时的安全问题是“谁是这个软件的幕后黑手——哦,还有关键”。如果它是发行版的密钥(某些发行版有自己的密钥,或者已经撤销并创建了新密钥),那么没关系,无论如何您都是从他们的发行版运行软件。请注意,当您进入 3rd 方存储库(如 Ubuntu 和项目 PPA)时,您最终会为每个存储库导入一个密钥,这可能是您的担忧。
您应该注意的是,该密钥现在将只适用于该密钥已签名的任何其他内容。根据您的偏执程度,您可能希望根据需要添加密钥,并在完成安装软件包后将其从受信任的密钥列表中删除。当然,随着频繁更新,您将创建更多工作和更新步骤。
而且,如果您对密钥签名令人讨厌的东西感到偏执,那么您可能不应该愿意尝试从该存储库安装任何东西。