什么是 GPG 签名

Lui*_*ado 12 launchpad apt repository gnupg

看着像THISTHISTHIS这样的问题,我向公众询问以下问题:

  1. GPG 签名有什么用?

  2. 签名为用户添加或提供了什么额外的安全级别?

  3. 与 Launchpad 中带有 PPA 的 GPG 签名相关的一些常见问题是什么?为什么会产生这些问题?

and*_*ing 11

什么是GPG?

GPG 或GNU Privacy Guard是一套加密软件。它可用于加密或签署数据和通信以确保其真实性。

这种类型的密码学基于密钥对。公钥托管在密钥服务器(例如 keyserver.ubuntu.com)上,私钥保密。使用公钥,可以验证私钥所做的签名。同样,知道某人的公钥将允许您加密只能由相应密钥持有者读取的消息。

进一步阅读:日常使用的 GnuPG(一个迷你的操作方法...)

这跟我有什么关系?

在这种情况下,您从中下载软件包的 apt 存储库应由密钥签名,以便您可以验证您正在安装的软件包是否来自它们所说的位置。

存储库中已签名的实际文件是该Release文件。此文件包含存储库中许多其他文件的校验和。例如,这里是官方 Ubuntu 12.10 存储库的文件及其对应的 GPG 签名。安装包时,apt验证签名。

进一步阅读:关于安全 apt

常见问题

您的计算机已经知道官方 Ubuntu 存档的公钥,但是如果您想添加 PPA 或第三方存储库,则必须导入它们的密钥。如果您尝试更新您没有密钥的存储库,您将看到如下警告:

W: GPG error: http://ppa.launchpad.net oneiric Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY B725097B3ACC3965
Run Code Online (Sandbox Code Playgroud)

当您从该存储库安装软件包时,您还会收到警告:

WARNING: The following packages cannot be authenticated!
  dropbox
Install these packages without verification [y/N]?
Run Code Online (Sandbox Code Playgroud)

虽然这些警告可通过运行沉默apt--allow-unauthenticated标志,但它是最好的键添加到您的系统,使您可以增加安全性的优势。

添加 PPA 时,您应该使用该add-apt-repository工具,因为它会自动为您添加密钥。如果您需要手动添加密钥,请使用以下命令:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEY_ID_HERE
Run Code Online (Sandbox Code Playgroud)

如果您不想使用终端来执行此操作,请参阅此答案