如何仅根据指纹和密钥 ID 检查 gpg 签名?

如何仅根据指纹和密钥 ID 检查 gpg 签名?

我正在尝试检查我下载的 gmp-6.1.2.tar.lz 的完整性(请参阅这里我在 CentOS 6.6 上使用 gpg (GnuPG) 2.0.14。

GMP 网站仅列出

Key ID: 0x28C67298 
Key type: 2560 bit RSA 
Fingerprint: 343C 2FF0 FBEE 5EC2 EDBE F399 F359 9FF8 28C6 7298 

当我跑步时(按照建议这里):

$ gpg --verify gmp-6.1.2.tar.lz.sig gmp-6.1.2.tar.lz
gpg: Signature made Sun 18 Dec 2016 03:18:35 PM EST using RSA key ID 28C67298
gpg: Can't check signature: No public key

问题

  1. 如何从 gpg 提取指纹来与 GMP 网站进行比较?

  2. 我不知道在哪里或如何获取 gmp 的公钥,这个指纹检查够好吗?这似乎不太安全,因为我正在从下载文件的同一网站检查文件的签名。

答案1

我不知道在哪里或如何获取 gmp 的公钥,这个指纹检查足够好吗?

通常可以根据密钥的 ID 或指纹从公共密钥服务器获取密钥。

gpg --recv-key '343C 2FF0 FBEE 5EC2 EDBE F399 F359 9FF8 28C6 7298'

或者:

gpg --auto-key-retrieve --verify gmp-6.1.2.tar.lz.sig gmp-6.1.2.tar.lz

比较其指纹就足以确保您获得了正确的密钥。

这似乎不太安全,因为我正在从下载文件的同一网站检查文件的签名。

确实,它不太安全。您应该尝试使用其他方式验证指纹,例如,有时它是邮件列表档案中的发布公告的一部分;我有时使用 web.archive.org 来确保网站最近没有更改。

(遗憾的是,“传统”的 PGP 机制,信任网络在这里不是很有用。)

但验证仍然有用:

  • 同一个密钥用于签署多个版本。即使你不知道这是谁的密钥,但知道它是相同的密钥该公司过去几年一直在合法地签署发行协议。

  • 实际下载的内容可能托管在各种镜像站点上。如果您信任主项目网站,则可以使用此信息来验证从任何地方下载的档案。

答案2

补充重力的回答:

--auto-key-retrieve已被弃用。

撰写本文时修订的语法是:

gpg --keyserver-options auto-key-retrieve --verify abc.tar.gz.sign abc.tar.gz

成功应该表现为:

gpg: Good signature from "User <[email protected]>"

相关内容