简易PGP加密教程

前言

有感于目前网络上对GPG加密的教程基本大多晦涩难懂,且排版一言难尽(如下图)
某网站的教程
笔者决意写一篇通俗易懂的GPG教程

1、各种加密客户端

1.1 电脑系统

通用
官网下载源码后使用源码编译安装,基本通用。

1
2
3
4
# 解压源码压缩包后进入源码目录运行下列命令
./configure
make
make install

Linux:直接在terminal运行以下程序

1
2
3
4
# Debian / Ubuntu系请用apt
sudo apt install gnupg
# Fedora/Centos系请用yum
yum install gnupg

Windows:推荐使用GPG4win,官网
MacOS:使用brew安装

1
brew install gpg

1.2 手机系统

安卓:推荐使用openkeychain
iOS: 使用PGPEverywhere

2、生成自己的公私钥

对于懂英语的同志来说,一旦找准入口就会了。如同安装软件一样简单。

2.1 通过命令行生成

(此方法为通用)

第一步,输入命令gpg --gen-key

运行结果
出现这些字说明结果正常。

第二步,在Real name:后面填写使用的名字

填名字
(可以带空格)

第三步,在Email adress:后面填写使用的邮箱

填完邮箱后
确认无误后输入O确认,或如图所示输入其他字母来修改

第四步,用密码来保护私钥(可选)

弹出框
可以选择在使用密码来保护私钥

第五步,生成成功!

成功
成功后会显示恢复文件存放路径,

2.2 通过客户端生成(推荐)

(以windows平台下的kleopatra为例(安装GPG4win时可附带))

第一步,在客户端点击“新密钥”

生成

第二步,确认生成PGP密钥

PGP
(X.509密钥不在本教程讨论范围内)

第三步,输入并确认信息

输入
确认

第四步,用密码来保护私钥(同2.1)

密码
同上

第五步,生成成功!

成功

3、实践使用:在客户端中用公钥加密

3.1 Windows

(以windows平台下的kleopatra为例(安装GPG4win时可附带))

首先我们应该确定加密内容的发送对象,并使用他/她/它的公钥(可同时加密给多人)。

导入
通过.asc等文件导入对方公钥或在公共的公钥交换服务器上查找。需要注意的是公共服务器上可能出现近似或仿冒者,需要多加分辨。此外,很多人不会在默认的麻省理工服务器上上传,所以(找不到时)不要太惊讶。

以下以向我自己加密为例

找到我的公钥

加密文字

第一步,点击记事板

notepad

第二步,确认加密对象及是否签名

确认

第三步,输入要加密的文字

输入
首先切换回记事板,并输入需要加密的内容。加密完后点击“签名/加密记事板”

第四步,将密文发给发送对象

密文
将记事板中生成的密文发送出去吧!

2020/11/27更新

4、和桌面版outlook使用

意外发现,windows平台下的outlook桌面版程序可以自动检测到gpg4win的存在并用做扩展项加载项
此扩展项会被自动检测,并通过Program Files/Gpg4win/bin/gpgol.dll 文件进行加载。点击右下角可以调出一些设置,但证书相关导入导出、信任度是通过主程序gpg4win或附带kleopatra完成

4.1 收信

可信度

insecure
当收到普通无PGP签名邮件时,会显示insecure。考虑到目前推广接受度,?号图标更多旨在提醒而非警告⚠。
Trust Level 4
这封邮件附带的签名达到了信任等级四,因为是笔者自己的证书签的。当邮件签名来自已经导入公钥并信任的用户时,此扩展可在下述三个地方显示此邮件的安全性,可行度和完整性。
邮件列表,正文和顶端

解密

PGP公私钥技术的另一个也是最主要的用途是加密信息的发送和接收。只要对方拥有你的公钥,对方就可以向持有私钥的你发送加密邮件,并且只有你的私钥可以解开——密码保护的私钥还需要输入密码,更加安全。
密码保护
如图所示,即使电脑被他人登录加密邮件也不会泄露
签名与加密邮件在图标上的区别

解密后
解密后的邮件如图所示。这封邮件不仅加密还签名了,可信度和安全性极高。体现在如图标示上。

4.2 发信

选择加密与签名

实际很简单,勾选是否加密、签名即可,但有几点注意:

  • 加密需要有收信方公钥,通过kleopatra导入(见上3.1)
  • 签名请用当前所用邮箱的私钥签名,否则可能造成迷惑
  • 签名时最好保证对方已有你的公钥,可以通过你的签名验证。
  • 可以给多个人加密、签名。加密使用所以收信方公钥,而签名规则同上,最好大家已经交换完公钥。