GPG除了可用于信息加密和解密外,还是一个很好的签名算法,能有效的校验文件的完整性。以GnuPG上的软件包为例说明。
一、下载软件
例如,您从http://www.gnupg.org/下载新版的GnuPG 1.4.9版本。
网站提供如下信息:
引用
· GnuPG 1.4.9 source compressed using bzip2. 3250k S
· Signature and SHA-1 checksum for previous file.
826f4bef1effce61c3799c8f7d3cc8313b340b55 gnupg-1.4.9.tar.bz2
· GnuPG 1.4.9 source compressed using gzip. 4554k S
· Signature and SHA-1 checksum for previous file.
52a245d20da70a3f79a2134c8ece3a1d30554ffa gnupg-1.4.9.tar.gz
· Signature and SHA-1 checksum for previous file.
826f4bef1effce61c3799c8f7d3cc8313b340b55 gnupg-1.4.9.tar.bz2
· GnuPG 1.4.9 source compressed using gzip. 4554k S
· Signature and SHA-1 checksum for previous file.
52a245d20da70a3f79a2134c8ece3a1d30554ffa gnupg-1.4.9.tar.gz
把任意一对的源码包和签名下载回来:
# wget ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.9.tar.bz2
# wget ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.9.tar.bz2.sig
# wget ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-1.4.9.tar.bz2.sig
二、校验
1、使用sha1sum校验
引用
# sha1sum gnupg-1.4.9.tar.bz2
826f4bef1effce61c3799c8f7d3cc8313b340b55 gnupg-1.4.9.tar.bz2
826f4bef1effce61c3799c8f7d3cc8313b340b55 gnupg-1.4.9.tar.bz2
校验码相同,软件包完整。
2、使用GnuPG校验
直接运行的话,会提示找不到公钥:
引用
# gpg –verify gnupg-1.4.9.tar.bz2.sig
gpg: 于 2008年03月27日 星期四 01时39分46秒 CST 创建的签名,使用 RSA,钥匙号 1CE0C630
gpg: 无法检查签名:找不到公钥
gpg: 于 2008年03月27日 星期四 01时39分46秒 CST 创建的签名,使用 RSA,钥匙号 1CE0C630
gpg: 无法检查签名:找不到公钥
从第三方的公钥服务器上下载并导入公钥:
引用
# gpg –keyserver subkeys.pgp.net –recv-key 1CE0C630
gpg: 下载密钥‘1CE0C630’,从 hkp 服务器 subkeys.pgp.net
gpg: 密钥 1CE0C630:公钥“Werner Koch (dist sig) <dd9jn@gnu.org>”已导入
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
gpg: 合计被处理的数量:1
gpg: 已导入:1 (RSA: 1)
gpg: 下载密钥‘1CE0C630’,从 hkp 服务器 subkeys.pgp.net
gpg: 密钥 1CE0C630:公钥“Werner Koch (dist sig) <dd9jn@gnu.org>”已导入
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
gpg: 合计被处理的数量:1
gpg: 已导入:1 (RSA: 1)
校验:
引用
# gpg –verify gnupg-1.4.9.tar.bz2.sig
gpg: 于 2008年03月27日 星期四 01时39分46秒 CST 创建的签名,使用 RSA,钥匙号 1CE0C630
gpg: 完好的签名,来自于“Werner Koch (dist sig) <dd9jn@gnu.org>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg: 没有证据表明这个签名属于它所声称的持有者。
主钥指纹: 7B96 D396 E647 1601 754B E4DB 53B6 20D0 1CE0 C630
gpg: 于 2008年03月27日 星期四 01时39分46秒 CST 创建的签名,使用 RSA,钥匙号 1CE0C630
gpg: 完好的签名,来自于“Werner Koch (dist sig) <dd9jn@gnu.org>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg: 没有证据表明这个签名属于它所声称的持有者。
主钥指纹: 7B96 D396 E647 1601 754B E4DB 53B6 20D0 1CE0 C630
三、自己做签名
先参考使用GPG加密信息,生成您自己的密钥对。当然,如果单纯用于签名,生成密钥时,可以选择使用DSA、RSA算法种类即可。
然后用gpg生成签名,并把签名单独分离出来:
引用
# gpg –detach-sign gnupg-1.4.9-1.src.rpm
您需要输入密码,才能解开这个用户的私钥:“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
1024 位的 DSA 密钥,钥匙号 A3942296,建立于 2008-12-19
根据提示,输入密钥的密码。然后会生成签名文件,可用于校验:
引用
# gpg –verify gnupg-1.4.9-1.src.rpm.sig
gpg: 于 2008年12月19日 星期五 16时59分50秒 CST 创建的签名,使用 DSA,钥匙号 A3942296
gpg: 完好的签名,来自于“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
gpg: 于 2008年12月19日 星期五 16时59分50秒 CST 创建的签名,使用 DSA,钥匙号 A3942296
gpg: 完好的签名,来自于“Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>”
注意,我们使用的密钥对是自己的:
引用
# gpg –list-keys
/root/.gnupg/pubring.gpg
————————
pub 1024D/A3942296 2008-12-19
uid Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>
sub 2048g/911E677B 2008-12-19
/root/.gnupg/pubring.gpg
————————
pub 1024D/A3942296 2008-12-19
uid Hyphen Wang (Use for GPG Encrypt) <gpgencrypt@linuxfly.org>
sub 2048g/911E677B 2008-12-19
四、帮助
GnuPG 中文选项说明
使用GPG加密信息
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/111129.html