在Ubuntu下,什么是存储库密钥,它们是如何工作的?

大多数情况下,只需添加软件包存储库即可下载和安装软件包,无需存储库密钥。此外,一些存储库会在其信息旁边显示其密钥,因此很容易找到。但是,
  • 如果我们可以在没有密钥的情况下安装软件包,为什么还需要添加密钥?
  • 在Ubuntu下,它们是如何工作的?

我想为上述问题添加另一个术语,"钥匙扣"有什么用途? - dileepa
3个回答

我在Ubuntu社区帮助维基上找到了一个很好的解释。

“认证密钥”通常是从软件源的维护者那里获得的。维护者通常会将认证密钥的副本放在诸如www.keyserver.net之类的公共密钥服务器上。然后可以使用以下命令检索密钥。

Apt认证

Apt-get软件包管理使用公钥加密来验证下载的软件包。
Debian在这个维基页面上对Secure apt进行了很好的解释。
以下是从Debian维基页面中摘取的密钥获取和验证过程的简要概述。
基本概念:公钥加密是基于一对密钥,即公钥和私钥。公钥可以公开给世界;私钥必须保密。拥有公钥的任何人都可以使用该公钥加密消息,以便只能由拥有私钥的人读取。还可以使用私钥对文件进行签名,而不是加密。如果使用私钥对文件进行签名,则拥有公钥的任何人都可以检查该文件是否由该密钥签名。没有私钥的人无法伪造这样的签名。
gpg(GNU Privacy Guard)是secure apt中用于签署文件并检查其签名的工具。
apt-key是用于管理secure apt的gpg密钥环的程序。密钥环保存在文件/etc/apt/trusted.gpg中(与相关但不太有趣的/etc/apt/trustdb.gpg不要混淆)。apt-key可用于显示密钥环中的密钥,并添加或删除密钥。
每次将另一个apt存储库添加到/etc/apt/sources.list时,如果希望apt信任它,还必须提供apt的密钥。获得密钥后,可以通过检查密钥的指纹并使用私钥对该公钥进行签名来验证它。然后,可以使用apt-key add 将密钥添加到apt的密钥环中。

2我能给这个点赞一百次吗?:) 谢谢你,Achu!! - KateYoak

你需要存储库密钥,这样你就可以验证你从认为的人那里获取了软件包。
这是为了防止有人将恶意软件包注入到你的更新中。
尽可能地添加存储库密钥是一个好习惯。

我相信这通常是流程的工作方式。 如果您在您的存储库中有一个包,并且希望其他人能够下载它,并且还可以为他们提供确保该包来自您并且内容未更改的功能,则可以将您的公钥添加到公钥服务器中,然后执行以下操作。
  • 哈希包内容
  • 使用您的私钥加密哈希值。 (签名)
  • 将签名添加到下载包中。

然后用户执行以下操作:

  1. 从您的存储库中下载包。
  2. 使用您的公钥解密签名。
  3. 计算下载包减去签名的哈希值。
  4. 将哈希与解密的签名进行比较。 如果它们匹配,则可以确定该软件包未被更改并且来自存储库所有者。 此过程依赖于OpenPGP密钥服务器和标准哈希和加密算法。