大多数情况下,只需添加软件包存储库,您就可以下载和安装软件包,而无需存储库密钥。此外,一些存储库会在其信息旁边显示其密钥,以便于查找。但是
- 如果我们不需要密钥就可以安装包,为什么还需要添加密钥呢?
- 它们在 Ubuntu 下如何工作?
答案1
我找到了一个很好的解释Ubuntu 社区帮助维基。
“认证密钥”通常从软件存储库的维护者处获得。维护者通常会将认证密钥的副本放在公钥服务器(如 www.keyserver.net)上。然后可以使用命令检索密钥。
Apt-get
包管理使用公钥加密来验证下载的包。
- Debian 在这个 wiki 页面上出色地解释了 Secure apt。
接下来是从 Debian 的 wiki 页面中收集的密钥获取和验证过程的简短摘要。
基本概念 公钥加密基于密钥对,一个
public key
和一个private key
。public key
向全世界公布; 必须private key
保密。 任何拥有公钥的人都可以加密消息,以便只有拥有私钥的人才能阅读。 也可以使用私钥对文件进行签名,而不是加密。 如果使用私钥对文件进行签名,那么任何拥有公钥的人都可以检查该文件是否由该密钥签名。 没有私钥的人无法伪造这样的签名。gpg(GNU Privacy Guard)是安全 apt 中用于签署文件和检查其签名的工具。
apt-key 是一个用于管理安全 apt 的 gpg 密钥环的程序。密钥环保存在文件中
/etc/apt/trusted.gpg
(不要与相关但不太有趣的文件混淆/etc/apt/trustdb.gpg
)。apt-key 可用于显示密钥环中的密钥,以及添加或删除密钥。每次将另一个 apt 存储库添加到 时
/etc/apt/sources.list
,如果希望 apt 信任它,您还必须将其密钥提供给 apt。获取密钥后,您可以通过检查密钥的指纹来验证它,然后使用您的私钥签署此公钥。然后,您可以使用以下命令将密钥添加到 apt 的密钥环中apt-key add <key>
答案2
您需要存储库密钥,这样您就可以验证您是否从您认为的获取该软件包的人那里获得了该软件包。
这是为了防止人们将坏的软件包注入到你的更新中。
您应该尽可能添加存储库密钥。
答案3
我相信这通常是过程的工作方式。如果您的存储库中有一个包,并且您希望其他人能够下载它,同时还让他们能够确保该包来自您并且内容没有被更改,那么您可以将您的公钥添加到公钥服务器,然后执行以下操作。
- 对包内容进行哈希处理
- 使用你的私钥加密哈希。(签名)
- 给下载包添加签名。
然后用户执行以下操作:
- 从您的存储库下载包。
- 使用你的公钥解密签名。
- 对下载包进行哈希处理,减去签名。
- 将哈希与解密的签名进行比较。如果它们匹配,那么您可以确定该包没有被更改并且来自存储库所有者。此过程依赖于 OpenPGP 密钥服务器和标准哈希和加密算法。