一、介绍
我们都知道,互联网是不安全的,但其上所使用的大部分应用,如Web、Email等一般都只提供明文传输方式(用https、smtps等例外)。所以,当我们需要传输重要文件时,应该对当中的信息加密。非对称密码系统是其中一种常见的加密手段。而在基于PGP方式加密的中文介绍少之又少,所以萌生了写一个完整教程的想法,当然本文部分资料是我搜遍网络整理出来的,并不能保证百分之百的原创
二、使用:
1.生成密钥对 要使用GnuPG加密,首先需要创建密钥对,执行:
其中mykey 参数是可以表示的密钥标识,产生的回收证书放在revoke.asc文件里,一旦回收证书被发放,以前的证书就不能再被其他用户访问,因此以前的公钥也就失效了。
PS:如果一旦决定撤销已经上传的公钥,就需要将该密钥的回收证书上传至密钥服务器完成回收工作。
3.密钥的上传
当上述工作完成以后,为了让尽可能多的人获取您的公钥,您可以将公钥邮寄出去,或者贴在自己的个人主页上,当然还有一种更好的方法就是上传到全球性的密钥服务器,其他用户可以通过您提供的公钥ID来搜索并获得您的公钥。
通过如下命令可以将你的key发布到服务器上:
- 公钥的导出:
- 私钥的导出:
- 密钥的导入:
PS:用户可以使用gpg --list-keys命令查看是否成功导入了密钥。
5.加密解密和数字签名
通过上述的密钥生成以及公钥分发后,加密和解密数据变得非常容易,用户可以通过使用该功能来达到安全地在网络上传输自己的隐密数据的目的。
如果用户patterson要给用户liyang发送一个加密文件,则他可以使用liyang的公钥加密这个文件,并且这个文件也只有liyang使用自己的密钥才可以解密查看。下面给出加解密的步骤:
- 用户patterson使用liyang的公钥加密文件test,使用下面的指令:
这样,就可以将gpg.conf文件加密成test.gpg,一般用户是无法阅读的
PS:当然你也可以直接指定使用哪个用户的公钥进行加密:
- 用户liyang 使用自己的私钥来解密该文件,如下所示:
- 对文件进行签名
- 密匙签名和用户信任(进阶功能)
尽管在理论上讲,具备了公匙和私匙就可以实现安全的信息通讯,但是在实际应用中,还必须对公匙进行有效确认。因为,确实存在伪造公匙信息的可能。
由此,在GPG中引入了一个复杂的信任系统,以帮助我们区分哪些密匙是真的,哪些密匙是假的。这个信任系统是基于密匙的,主要包括密匙签名。
当收到熟人的公匙并且GPG告知不存在任何实体可信信息附加于这个公匙后,首要的事情就是对这个密匙进行“指纹采样”(fingerprint)。例如,我们对来自mike的公匙进行了导入操作,并且GPG告知我们不存在这个密匙的附加可信信息,这时候,我们首先要做的工作就是对这个新密匙进行“指纹采样 ”,相关命令及执行情况如下:
这样,就从密匙数据中生成了其指纹信息,并且应该是唯一的。然后,我们打电话给mike,确认两件事情。首先,他是否发送给我们了密匙;其次,他的公匙的指纹信息是什么。如果Mike确认了这两件事情,我们就可以确信这个密匙是合法的。接下来,我们对密匙进行签名操作,以表示这个密匙来自Mike而且我们对密匙的信任,相关命令及执行情况如下:
执行到此,使用我们的私匙完成了对Mike的公匙的签名操作,任何持有我们的公匙的人都可以查证签名确实属于我们自己。这个附加到Mike的公匙上的签名信息将随它环游Internet世界,我们使用个人信誉,也就是我们自己的私匙,保证了那个密匙确实属于Mike。这是一个多么感人的充满诚信的故事啊 现实世界的人们是否应该从这严格的技术标准中反思些什么呢?
还是回到这里。获取附加于一个公匙上的签名信息列表的命令是:
签名列表越长,密匙的可信度越大。其实,正是签名系统本身提供了密匙查证功能。假设我们接收到一个签名为Mike的密匙,通过Mike的公匙,我们验证出签名确实属于Mike,那么我们就信任了这个密匙。推而广之,我们就可以信任Mike签名的任何密匙。
为了更加稳妥,GPG还引入了另一个附加功能:可信级别(trust level)。使用它,我们可以为我们拥有的任何密匙的所有者指定可信级别。例如,即使我们知道Mike的公匙是可信的,但是事实上我们不能信任Mike在对其他密匙签名时的判断;我们会想,Mike也许只对少数密匙进行了签名,但却没有好好地检查一遍。
设置可信级别的命令及执行情况如下:
在命令编辑环境中执行trust,然后选择级别2(I do NOT trust),这样我们割断了任何信任链,使每个密匙都必须经过Mike的签名。
6.删除密钥
从私钥钥匙环里删除密钥:
必须先删除私钥,然后才能删除公钥。 从公钥钥匙环里删除密钥:
三.对称加密:
当然GPG同样具备普通的对称加密功能,这时候就不需要密钥,直接用密码加密即可(注意,这里的密码不一定是你私钥的密码,您大可以随意设定)
---------------------------------------------
四.GPG常用参数:
指令:
(请参考在线说明以获得所有命令和选项的完整清单)
范例:
-se -r Bob [文件名] 为 Bob 这个收件人签字及加密 --clearsign [文件名] 做出明文签字 --detach-sign [文件名] 做出分离式签字 --list-keys [某甲] 显示密钥 --fingerprint [某甲] 显示指纹
-----------------------------------------------------------------------------------
本文属Alexgao.com原创文章,转载请注明出处.http://www.alexgao.com/2009/01/24/gpg/