GnuPG上手指南

这是很多年前写的一篇文章了。 GnuPG全称GNU Privacy Guard,它是基于公钥/私钥体系的加密工具PGP(Pretty Good Privacy )的开源版本它遵循OpenPGP标准。你可以免费使用,自由传播,并可以获得它的源代码。可以用于对Email、文件及其他数据的加密与验证,确保通信数据的保密性、完整性和真实性。 PGP原理及规则 在介绍GPG前,先让我们看看PGP的基本原理及应用规则。 PGP使用双密匙来加密数据。每个使用PGP加密技术的人都要创建一对密匙,一个叫做公匙,另一个叫做私匙。公匙可被广泛传播,你可以贴在自己的网页上或发到专门的公钥管理网站上等等。私匙属于个人信息,绝不应该泄漏给其他人。 公匙和私匙相互作用对数据进行加密及解密。被公匙加密的数据只能被私匙解密,被私匙加密的数据也只能被一个公匙解密。这样就可以实现双重认证。 例如,A要给B发信息: A不想信息被其他人看见,怎么办? 首先A必须通过某些途径得到B的公钥。在发送信息前,使用B的公匙对信息进行加密。这样只有B用对应的私匙才能解密收到的信息。所以就保证了信息传输的安全,这就是PGP所谓的加密(encryption)与解密(decryption)。 B收到信息后如何确定这信息是A发的呢? 首先A必须通过某种途径把自己的公钥发给B。在发送信息前,A先用自己的密钥加密信息。B收到信息后就可以使用A的公钥来对收到的信息进行验证。这样就能确定信息来自A,这就是PGP所谓的签名(signature)与验证(verification)。 如何使用GnuPG来生成自己公钥/私钥 你首先要创建一个自己的密钥对,使用如下命令: 期间会要求你输入个人信息如用户名,邮件地址,注释等,最好选有意义的。最后会让你输入passphrase(口令),这就是咱们通常意义上的密码了,解密和签名时都用得着的,按设密码的一般规则设就行了。除了那些Yes/No的问题,其他选项大可直接回车默认。 这里假设我们生成了一个名为foooo的用户: 接着你便可以使用下面的命令导出自己的公钥了 下面是文本形式公钥的一个例子 现在你就可以把你的公钥传到网上或发给别人了。 获得别人的公钥之后可以使用下面的命令把公钥导入自己的钥匙圈 如何使用GnuPG来加密/解密 你有一个文件beloved.txt要加密后发给你的GF,首先你得有GF的公钥,假设GF的公钥的用户信息为 加密命令如下–recipient选项指定接受者,也就是你要用谁的公钥来加密。在GnuPG里面指定公钥或私钥可以使用该公钥或私钥的用户名、注释、邮件地址等。可以只输入一部分,但要唯一,GnuPG会查找用户列表来找到所需的公钥。 比如,使用邮箱地址来指定密钥 当然GnuPG还可以通过其他手段来指明你要使用哪个公钥或私钥,具体请参看GnuPG的文档。 现在可以把加密后生成beloved.txt.gpg或beloved.txt.asc文件发给你GF吧。 你的GF收到文件后,必须使用自己的相应的私钥来解密,命令如下 这个过程需要输入passphrase。 如何使用GnuPG来签名/验证 那么你的GF如何确定这信息是你发的呢?这就涉及到签名与验证了。你发送beloved.txt的时候可以使用自己的密钥给beloved.txt加上签名。签名实际上就是用自己的私钥给文件加密,但是你的公钥是公开的,持有你公钥的人都可以解密你签名的信息。签名的时候要用到passphrase。 签名的过程如下 这样你就可以把beloved.txt.gpg或beloved.txt.asc发给你的GF了。 持有你公钥的人使用下面的命令来验证和还原信息。 此外还有两种签名方式,一种是 这种签名方式主要用于文本,将签名信息附在文本内容的后面,验证时只要把该文件做参数就行了 这是用–clearsign方式加密后的例子 另外一种是签名方式是生成单独的签名文件 验证的时候需要要原文件和签名文件,命令如下 参考:...

May 21, 2014