我正在尝试检查我下载的 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
问题
如何从 gpg 提取指纹来与 GMP 网站进行比较?
我不知道在哪里或如何获取 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]>"