[图文教程] 在openSUSE下玩转GPG

因为论坛限制附件数,所以图片只有 3 个,完整版见原文: tonghuix.io/2014/12/opensuse-gnupg-kleopatra/

演示视频高清: youtube.com/watch?v=wlp1vbc5J7M

墙内镜像(非高清):[flash=280,360]http://player.youku.com/player.php/sid/XODM5NzAzNTY0/v.swf][/flash]

关于这个话题最早首先是玛格丽特·苏在微博上贴图求助,同时也让我有兴趣好好去了解了解,特别是当时我又感兴趣于 GPG 与智能卡的交互。后来我曾在 2014 年 openSUSE.Asia Summit 上做过一个 workshop,但效果不是很好,很多朋友觉得讲的不够细致,确实,GPG 的命令行操作对初学者比较难,上手困难。

后来我就花费了一些时间考察了常用的一些 GPG 图形前端,最终选定了本文我要介绍的这个软件—— Kleopatra 。没错,名字就是来源于“埃及艳后”克里奥佩特拉(Cleopatra)。我选定 Kleopatra 有几个原因,第一是因为它比较简洁明了,容易上手。第二是因为功能丰富,除了常用的 GPG/OpenPGP 密钥操作以外,还支持 x509 个人证书等。第三是通用性,Kleopatra 可以在包括 Linux/BSD/Windows 等操作系统上使用,Windows 可以通过安装 gpg4win 来安装 Kleopatra,这一点就超过了同样非常强大也非常简洁的 GNOME Seahorse 和 Kgpg。

本文力求简明扼要地讲述如何在 openSUSE 下玩转 GPG(其他 Linux 发行版、BSD 和 Windows 也可以应用本文所有例子),力求一句话讲明与 GPG 相关的一些概念和操作,比如常用的加密 / 解密以及文件和密钥的签名及其校验。关于与电子邮件的结合,我会推荐使用 Thunderbird+Engimail 的组合,但不会过多详述。


** 相关概念 **
* PGP (Pretty Good Privacy) :可以简单理解为是一种数据加密解密和验证的应用程序。使用散列算法。此软件是闭源商业软件。

*  **OpenPGP** :这是一种数据加密算法的  * 开放标准 * ,也就是一种加密协议(RFC 4880)。而 PGP 也是这个标准的实现之一。

*  **GnuPG(GPG)** :是 OpenPGP 标准的开源实现,使用 GPL 协议的自由软件。

*  ** 散列算法(Hashing,哈希算法)** :可以简单理解为是对一段数据(可能是文件、也可能是流)取其摘要的数学运算方法,这种运算有个特性,就是  * 不可逆性 * ,无法根据已经摘要的数据(即哈希值或散列值)恢复成原数据。常用的散列算法有 MD5、SHA-1、SHA-256、SHA-512 等等。可以用这种算法来验证数据的一致性,也可为数据生成数字指纹。

*  ** 非对称加密 ** :先来说“对称加密”,就是在加密和解密过程中使用的是相同的密钥。而非对称加密,就是在加密和解密的过程中使用的是不同的密钥。一个  * 公钥 * ,一个  * 私钥 * 。使用公钥加密,使用私钥解密,因为公钥只是用来加密,甚至可以随处散播。而私钥就必须妥善且私密的保管好,否则就无法解密了。同时私钥还可以用来对文件进行数字签名,也就是对文件或信息生成一个散列值,若文件在传输过程中发生更改,再做散列操作以后,这个值就变了,这样就有了形似古时通信用“封印”的效果。我们常用的非对称加密算法有 DSA 和 RSA 等。

** 安装 Kleopatra**
这个软件包一般在 kdeim 组件包内,有些发行版会单独打包,比如 OpenMandriva/Debian/Ubuntu,可以单独安装 Kleopatra 包。若没有可以从源码编译。

Windows 用户可以选择安装 gpg4win 这个软件(下载页面需要科学上网),选择下载完整版包含 Kleopatra 的就行。Mac OS 用户可以安装 gpgtool,但只有命令行版。

** 创建个人 openPGP 密钥对 **
打开 Kleopatra 之后选择文件—> 新建认证,打开新建认证对话框。可以看到有两个大按钮,因为 Kleopatra 除了支持常用的 OpenPGP 协议以外,还可以用来生成个人站点 x509 证书。这里我们选择“创建个人 OpenPGPG 密钥对”


然后填入个人信息。特别注意名字和邮件地址不要填错。注释建议留空。之后我们按“高级设置”按钮,配置更多选项。


在这个高级设置对话框中,我们可以选择生成的算法,保持默认的 RSA 即可。为了更高的安全性,我们选择 4096 比特,这是目前 gpg 支持的最大位数,也是最安全的。另外就是证书有效期(也就是密钥的有效期),这里注意,为了安全起见,也为了防止密钥丢失造成的损失,这里推荐还是为密钥增加有效期,一般三年左右就行。这并不是不可修改的,还可以修改,建议逐年增加。如图所示:

https://tonghuix.io/wp-content/uploads/2014/12/%20%20 抓图 %20%2021.png

然后选“下一步”。之后会有个确认信息,确认生成的密钥对是否如你所愿,特别注意名称和电子邮件地址不要写错。然后点选“创建密钥”按钮。

https://tonghuix.io/wp-content/uploads/2014/12/%20%20 抓图 %20%2022.png

在创建密钥的过程中,会要求你输入一个密码,这个密码是个密钥的本地密码,强烈建议设置一个密码,不要为空!假设你的私钥丢失,落入他人之手,因为他没有此密码,也无法使用你的私钥。

https://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2024.png

密钥被创建以后,可以看到一个密钥的指纹,此指纹是对密钥对进行散列算法得到一个为了便于记忆和识别的编码。这里可以点选生成密钥对的副本,也可以邮件发送证书,目前不建议把证书(这里其实是你的公钥)上传到服务器。

https://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2025.png

如图所示,绿色阴影所在的密钥就是刚刚生成的密钥对。

https://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2026.png

双击此密钥可以获得密钥相关的细节。我们可以对其进行修改,修改好之后可以选择上传到密钥服务器,这里只会上传公钥,这样可以有更多人知道你的 GPG 公钥。之后别人就可以根据你的 GPG 公钥,给你发送加密信息了。

https://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2027.png

** 导入导出密钥 **
导出公钥的操作非常简单,只要在主界面上选中预导出的密钥,然后再按上面的“导出证书”按钮,之后就可以把此公钥另存到另一个地方了。也可以把此公钥发送给别人,也可以放到自己的网站供人下载上等等。可以下载我的个人公钥,在我 [

**openPGP 与电子邮件的结合 **
Kleopatra 与电子邮件的结合不够好,若需要解密电子邮件,可能需要客户端先把邮件导出,然后再使用 Kleopatra 来处理。对于加密和签名,我们虽然可以把加密和签名的内容拷贝到正文里,不过毕竟这不太方便。所以各个邮件客户端都有与 OpenPGP 的结合,比如 GNOME 下的 Evolution 就可以很方便的直接与 OpenPGP 结合,相应的 KDE 下的 Kmail 搭配 Kpgp 也是同样的功能。

不过从跨平台通用性考虑可以使用 Thunderbird + Enigmail。网上这类文章很多了,这里不再赘述。特别要说明的是,Engimail 可以完成上面所说的所有功能,但其生成密钥的方法略有点复杂,选项比较多,不利于初学者快速掌握。https://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2029.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2030.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2028.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2040.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2035.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2041.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2038.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2037.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2044.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2045.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2046.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2052.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2053.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2054.pnghttps://tonghuix.io/wp-content/uploads/2014/12/%20%20%20 抓图 %20%20%2055.png[ 此文很不错,可以做参考

最后,Kleopatra 的功能是非常强大的,除本文所介绍之外,还可以检查文件的校验和等等。可以说是一款不可多得的个人加密工具前端。我花了点之间,录制了一段操作视频,解释了一下以上各操作。](https://exaos.github.io/attic/softwares/mynote-gpgmail.html)](https://tonghuix.io/)

@tonghuix 我很想帮你补倒数第二段那个网址加个斜杠 url 让它更雅观。可是一加就会让一大段文字都变成带链接的文字…

kwallet 支持 GPG 加密的,只是不清楚怎么创建自己的 GPG 密钥就没用这个。下次试试看吧。

不错

没找到收藏按钮。
mark