什么是GPG?
GPG (Gnu Privacy Guard)是一个非对称加密的工具。使用过程中会遇到两种密钥:公钥和私钥。
密钥的基本概念
私钥加密可以用公钥解开。
公钥加密可以用私钥解开。
公钥顾名思义是公开的,很容易获取。
这意味着什么呢?私钥加的密,大家都能解开。所以它的用途不是用来加密而是表明身份、用来判断出处,即:签名。
Verify
用不到的东西,比较容易遗忘。写写总结回头再想起来就容易一点。这篇说下GPG里verify的用法。
一个实际的例子:下载了一个archlinux的iso,我想验证下来源。
1. 下载相关sig文件
这个sig文件是签名文件,要和需要验证的iso文件放在同一个目录。
GPG支持分体式签名,sig文件是二进制的签名文件,还有一种是asc文件,由字母表示。
2. 尝试验证
结果是:这个sig是由一个ID为9741E8AC的密钥生成的,但是现在找不到这个密钥
>>> gpg --verify archlinux-2012.11.01-dual.iso.sig
gpg: Signature made Thu 01 Nov 2012 02:10:33 PM CST using RSA key ID 9741E8AC
gpg: Can't check signature: public key not found
3. 下载导入公钥
前面提到的KeyID,可以在公共服务器里查找并导入。提示中的hkp指的是Http Keyserver Protocol
>>> gpg --search-keys 9741E8AC
gpg: searching for "9741E8AC" from hkp server keys.gnupg.net
(1) Pierre Schmitz <pierre@archlinux.de>
2048 bit RSA key 9741E8AC, created: 2011-04-10
Keys 1-1 of 1 for "9741E8AC". Enter number(s), N)ext, or Q)uit > 1
gpg: requesting key 9741E8AC from hkp server keys.gnupg.net
gpg: /home/matt/.gnupg/trustdb.gpg: trustdb created
gpg: key 9741E8AC: public key "Pierre Schmitz <pierre@archlinux.de>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
4. 再次验证
现在可以确认archlinux-2012.11.01-dual.iso这个文件确是由pierre@archlinux.de签发的。但是不能保证和相应的人是挂钩的,所以会有一个警告。
gpg --verify archlinux-2012.11.01-dual.iso.sig
gpg: Signature made Thu 01 Nov 2012 02:10:33 PM CST using RSA key ID 9741E8AC
gpg: Good signature from "Pierre Schmitz <pierre@archlinux.de>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 4AA4 767B BC9C 4B1D 18AE 28B7 7F2D 434B 9741 E8AC