扫盲PGP——如何在网络世界确认身份/加密信息?

网络世界与现实生活的一大不同之处,在于无法【直接】确认对方的身份。盗用他人虚拟身份,为某些目的(例如:钓鱼、诈骗、挑拨离间)的事例层出不穷,况且由于【高度匿名性】(例如品葱这样的论坛),线下核实大概率是【不】现实的。这时候,PGP就成了最为广泛流行的身份核对方式。 俺当初零基础学习PGP时,绕了大半天才学会,所以想写一篇浅显易懂的教程,教小白们傻瓜式入门,不必吃俺遭受过的苦头:)

啥是PGP?

这里引用一下维基百科: “PGP(英語:Pretty Good Privacy,中文翻译「优良保密协议」)是一套用于讯息加密、验证的应用程式。 PGP加密由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成。每个步骤均支持几种算法,用户可以选择一个使用。每个公钥均绑定一个用户名和/或者E-mail地址。” 简而言之,PGP就是一种加密技术。而且,不是【一般】的加密技术,目前的计算机,还是无法暴力解密滴。 PGP主要有两种功能:验证身份和加密讯息。另外GPG指的是GnuPG,一种使用PGP的工具,基本上和PGP是一回事。

几个基本概念:

一个PGP一般包括以下内容,相当于名片上的信息。 用户标识(UID):相当于您QQ的名称,这玩意儿是可以随便写滴。要注意,既然可以随便写,那么也可以伪造,这玩意是【不】能用来核实身份的。 邮箱:用于联系,也是可以随便写的。 指纹/ID:这俩玩意是独一无二的,才是【真正】可以辨别身份滴,相当于您的【QQ号】。(QQ号还可以回收(换人),这个只能吊销) 指纹一般由二十个字母组成,比如俺的长这样:9815 57F4 6325 4104 15C0 77F4 497F 8186 110B 8B28 ID是一串字符,相较于指纹和整块公钥,它具有较短的特点,特别是在有字数限制的时候方便贴上。检索他人ID时,要记得头上加上0x。 子密钥:俺还不太清楚是啥,但无伤大雅。

公钥/私钥的概念:

【公钥】是您需要公开给别人的。您可以把您的指纹/ID分享给别人。 【私钥】是需要自己妥善保管滴。导入私钥就相当于登录自己的账号了,所以【绝不】可以分享给别人。拿它是可以解锁所有加密讯息滴!

密钥服务器的概念:

密钥服务器是一个贮存人们PGP的仓库,通用的的有keyserver.ubuntu.com,keys.opengpg.org等等。 如果希望别人更方便地导入您的公钥,您可以把您的公钥上传到密钥服务器。上传后,您就可以分享相对简短的指纹/ID,让别人自己去搜索下载。 如果您不想把公钥上传到服务器,那您就需要把长长的公钥导出来去粘贴了。

如何使用PGP?

PGP有点像邮箱,一个人的PGP相当于他的邮箱地址。您需要首先自己拥有一套个人PGP,相当于创建一个邮箱账户。 不同的操作系统,使用PGP的方式不同。在Windows和Mac上都有特别的软件可以方便地操作,这里俺不细讲;俺单讲Linux系统的操作。 如果您习惯可视化的,您可以使用“密码和密钥”工具,点击加号,之后填写相关信息,就能够创建一个您自己的PGP啦。 然而,大部分操作都必须使用指令来进行。所以您需要打开终端,按照俺给的指令一点点来。

导入/导出密钥

首先,您需要导入别人的PGP来ta发加密消息,或者告诉别人您的PGP。 途径1:在密钥服务器直接搜索别人的密钥,下载。用您的密钥工具打开,直接导入。 途径2:如果别人的公钥是一整块BLOCK,复制,粘贴到文本编辑器,存为txt。假设文件名叫Alice.txt,使用指令: gpg --import Alice.txt 就可以啦。 那么,如何导出自己的公钥捏?指令如下: gpg -a --output [文件名] --export [密钥的UID] 导出的这个文件,内容就是一大块乱码BLOCK。您可以把这个txt文件上传到密钥服务器(访问服务器网站上传或者使用 gpg --send-keys 指令),也可以直接粘贴BLOCK。

加密/解密消息

PGP最重要的功能就是加密。下面来介绍以下如何加密与解密: 假设您写好了消息,需要加密,那么先把它粘贴到文本编辑器,存成一个txt文件。然后,使用以下指令: gpg --encrypt [文件名] 选择收件人(填写UID) 在原有的文件夹里会多出一个文件,内容就是加密过的暗文啦。 如果您在网络上看到别人给您的暗文,把它复制粘贴,也存成一个txt。然后,使用指令: gpg -a --output [新的文件名] --decrypt [文件名] 这个【新的文件名】指的是破解后的明文的文件名,后缀写.txt,然后打开这个txt,就能看到破解后的明文啦。

签署消息

啥叫签署?就是给一个消息签名,这样对方解密的时候,就可以确认这个信息是您发的。 签署有两种,一种是暗文签署,就是说既加密又签署,另一种是明文签署。如果您是公开发言,又希望别人确定是您亲自写的,没有人冒充您的话,用明文签署。 同前面方法,还是用txt保存您的消息,用指令: gpg --clear-sign [文件名] 就会生成一份新文件。复制粘贴里面的内容,就OK了。 校验别人签过名的消息,则用 gpg -verify [文件名]

给密钥签名

如果您【确定】某某密钥确定是某人的,您可以用自己的密钥给它签名,以添加信任度。指令是 gpg --sign-key [UID]


以上就是关于PGP的一些【基本】操作,其实玩法还不止这些。您可以使用 gpg --help 来查看更多指令。 顺便一提,如果俺说“俺的OpenGPG是……”,就是叫你去keys.opengpg.org,按照俺的指纹/ID搜索俺的密钥并导入。


相关阅读: 〖圖文教學〗如何使用PGP加密以便在非安全通訊工具內進行加密通訊 【安全上网】GPG入门教程