本文版本为 2.0.0-beta.1
采用 CC BY-NC-SA 4.0 许可协议。

本文主要讲解非对称加密的基本原理和流程,并为 Kleopatra 和 OpenKeychain 两款支持 OpenPGP 标准的非对称加密软件提供对应的图文使用教程与技巧。

本文编写目的是帮助无技术背景的初学者掌握非对称加密的使用。

本文中的蓝色的文字为超链接,点击可以跳转到对应章节或者外部链接。

关于作者

本文的编写者们倾向于保持匿名,尽可能地不透露任何身份信息。

有问题?

如果对本文有任何问题建议,欢迎在本文的 GitHub 仓库 提交 Issue 或 Pull Request。

介绍

对称加密

你用过把文件加密压缩后再外发给朋友的方式,来规避聊天软件或网盘等平台的违规检测吗?这种方式属于对称加密,加密和解密都需要使用同一个密钥(密码)。

不过这里存在一个问题:如何安全地告知朋友这个密钥呢?直接把密钥通过平台发给对方,平台背后的运营方也能通过查看你们之间的聊天记录知道这个密钥,这使得加密失去了意义。

非对称加密

非对称加密解决了这个问题。它使用一对密钥:一个公钥(公开密钥)和一个私钥(私有密钥)。公钥可以对外分享,用来加密消息;私钥只能自己持有,用来解密消息。你的朋友使用你的公钥加密消息得到密文,这个密文只有你的私钥才能解密为可读的原始消息。其他人即使拿到密文,也会因为没有你的私钥而无法解密。此外,其他人也不能通过你的公钥反推出你的私钥。

在实际使用中,通过非对称加密发送一条消息通常需要经过以下步骤:

非对称加密步骤

创建好的密钥对,和导入的公钥,可以重复使用,无需每次加密前重复相关操作。

PGP、OpenPGP与GPG

在介绍非对称加密软件前,我们需要先了解三个名词的概念:

  • Pretty Good Privacy(简称 PGP)是一款收费的商业数据加密软件,软件使用到非对称加密技术和对称加密技术。
  • OpenPGP 是一种开放的非对称加密标准,它基于与最初的 PGP 软件,制定了统一的加密消息、密钥和签名所需的格式和方法。
  • GNU Privacy Guard(简称 GPG 或 GnuPG)是一款免费的数据加密软件,它完整实现了 OpenPGP 标准,同时也是后续提到的 Kleopatra 等图形界面加密软件的核心。

在今天,指代 OpenPGP 功能时,PGP、OpenPGP 和 GPG 三者可以互换,例如 GPG 公钥和 OpenPGP 公钥是相同的概念。只有提及具体的加密工具时才需要区分。

选择加密软件

本文主要介绍实现了 OpenPGP 标准的加密软件。不同的加密软件,只要都实现了 OpenPGP 标准,就能相互收发加密消息。

以下是软件的介绍:

  • Windows 用户推荐使用 Kleopatra
  • Android 系统下有 OpenKeychain,但是该软件已经停止维护,不再推荐使用。
  • 其他操作系统的用户请尝试在 OpenPGP Sofware 中寻找合适的软件,或自行搜索。

Kleopatra

在本章中,你将学习 Kleopatra 的下载与安装,以及使用以下的功能:

  • 创建 OpenPGP 密钥对。
  • 导出自己的公钥,以及公钥的指纹。
  • 导入别人的公钥,并用自己的私钥对其认证。
  • 加密文本或文件。
  • 解密文本或文件。

在完成加密软件的学习后,推荐你继续学习以下章节:

准备软件

  1. 浏览器打开 Gpg4win 下载页面

  2. 选择捐赠的金额,然后点击下载按钮下载软件。

    如果不打算捐赠,点击“$0”,然后点击“Download”按钮直接下载软件安装包。

    不捐赠直接下载

  3. 以管理员权限运行下载好的安装包。

  4. 点击“下一步”按钮,进入选择组件界面。

    选择组件

  5. 根据你的需求勾选安装的组件:

    • Kleopatra:图形界面加密软件。后续教程将围绕该软件展开,应当安装
    • GpgEX:在系统的文件管理器右键菜单添加加解密等功能的快捷入口,推荐安装
    • GpgOL:电子邮件客户端 Outlook 的插件,用于为 Outlook 添加 OpenPGP 支持。
    • Okular:PDF 文档阅读器。支持使用 GPG 签名 PDF 文档,或检查 PDF 文档在进行签名后是否被更改。
  6. 点击“下一步”,按照界面提示完成后续步骤,直至完成软件安装。

创建密钥对

  1. 打开 Kleopatra。

  2. 点击“文件”菜单,然后点击“创建 OpenPGP 密钥对”。

    创建 OpenPGP 密钥对菜单项

  3. 输入关联密钥对的称谓(对应界面中的“名字”)和电子邮件地址。所输入的称谓和电子邮件地址应能够使收到公钥的人辨认出这个公钥的身份。

    如果该密钥对需要用于支持 OpenPGP 的在线服务,如电子邮件、在线 Git 托管服务(如 GitHub)、公钥服务器等,则必须填写能够联系到你的电子邮件地址。

    特殊的情况是 GitHub 如果启用了“Keep my email addresses private”(不公开我的电子邮件地址),则 Git 提交和 GPG 公钥需要使用 GitHub 提供的带有 no-reply 的电子邮件地址才能让该设置生效。详见 这篇 GitHub 帮助文档第 8 条的 Note

    称谓和电子邮件地址

  4. 勾选“使用密码句保护生成的密钥”。

  5. 点击“OK”按钮开始创建密钥对。

  6. 为新创建的密钥对设置私钥密码。在“Passphrase”和“Repeat”输入框中输入密码,然后点击“OK”按钮。

    重要说明:
    此处是为私钥设置私钥密码。在存储私钥前,Kleopatra 会使用该密码将私钥加密;在私钥使用前(如解密消息等),Kleopatra 会要求用户输入该密码来临时解密私钥。这样做的目的是提高安全性,即使私钥意外泄露,也会因为缺少私钥密码而无法使用。
    因此私钥密码和私钥都很重要,只能自己持有,不能公开;且密码应有一定的复杂度,不应该和其他密码相同。

    设置私钥密码

  7. 完成密钥对的创建。

导出公钥

推荐将公钥导出为 文本格式,也可以选择导出为 文件

两种导出方式推荐都学习。

导出公钥

导出公钥文本并发送

  1. 进入 Kleopatra 证书管理界面,双击需要导出的公钥。

    证书列表

  2. 进入证书细节界面,将界面上的(公钥)指纹截图并发送给对方。

    证书细节

  3. 点击“导出”按钮。

  4. 将文本框中的公钥复制粘贴到 文本分享网站 上为其生成分享链接,然后将链接发送给对方。

    公钥文本

导出公钥

导出公钥文件并发送

  1. 进入 Kleopatra 证书管理界面,点击需要导出的公钥,然后点击工具栏上的“导出”按钮。

    导出公钥按钮

  2. 选择存储公钥的位置,导出后缀名为 .asc 的公钥文件。

  3. 将公钥文件发送给对方。

  4. 回到 Kleopatra 证书管理界面,双击需要导出的公钥。

  5. 进入证书细节界面,将界面上的(公钥)指纹截图并发送给对方。

    证书细节

导入公钥

本章节中将介绍 公钥文本公钥文件 的导入方法。

两种导入方式推荐都学习。

导入公钥

导入公钥文本

  1. 收到以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头的公钥文本,以及该公钥的指纹截图。

  2. 进入 Kleopatra 记事本界面,并切换到“记事本”选项卡。

    记事本

  3. 将公钥文本复制粘贴到“记事本”选项卡下方的文本框中,然后点击“导入记事本”按钮。

    粘贴公钥和导入记事本

  4. 点击“认证”按钮。

    开始认证公钥

  5. 在认证证书界面上,对比显示的指纹是否与对方在截图中提供的指纹一致。

    • 如果一致,则进行下一步。
    • 如果不一致,表明收到的公钥不是对方想要发送的,应立即终止流程并要求对方重新发送公钥。如果情况依旧,说明当前通信平台存在安全风险,应考虑更换平台。

    检查指纹

  6. “认证方式”下拉框选择自己的私钥,然后点击“认证”按钮。

    认证公钥

  7. 如果创建密钥对时设置了“使用密码句保护生成的密钥”,则此时需要在“Passphrase”输入框中输入先前设置的私钥密码,然后点击“OK”按钮。

    输入私钥密码

  8. 完成公钥的导入与认证。

导入公钥

导入公钥文件

  1. 收到文件后缀名为 .asc 的公钥文件,以及该公钥的指纹截图。

  2. 在文件管理器双击打开公钥文件。

    或者在 Kleopatra 中点击工具栏上的“导入”按钮,然后在“选择证书文件”对话框中选择公钥文件。

    导入公钥按钮

  3. 点击“认证”按钮。

    开始认证公钥

  4. 在认证证书界面上,对比显示的指纹是否与对方在截图中提供的指纹一致。

    • 如果一致,则进行下一步。
    • 如果不一致,表明收到的公钥不是对方想要发送的,应立即终止流程并要求对方重新发送公钥。如果情况依旧,说明当前通信平台存在安全风险,应考虑更换平台。

    检查指纹

  5. “认证方式”下拉框选择自己的私钥,然后点击“认证”按钮。

    认证公钥

  6. 如果创建密钥对时设置了“使用密码句保护生成的密钥”,则此时需要在“Passphrase”输入框中输入先前设置的私钥密码,然后点击“OK”按钮。

    输入私钥密码

  7. 完成公钥的导入与认证。

加密消息

本章节中将介绍 文本文件 的加密方法。

两种加密方法推荐都学习。

加密消息

加密文本并发送

  1. 完成对方公钥的导入。

  2. 进入 Kleopatra 记事本界面,并切换到“记事本”选项卡。

    记事本

  3. 在选项卡下方的文本框中输入要发送给对方的文本。

  4. 切换到“收件人”选项卡。

    收件人

  5. “签名身份”下拉框选择自己的私钥。选择的私钥用于将发件人的身份告知对方。

  6. 点击"为他人加密"输入框右侧的 选择证书按钮 按钮选择对方的公钥(收件人),支持多选。选择的公钥用于加密消息,以及决定谁能解密。可以通过清空输入框内容来取消选择收件人。

  7. 点击“签名/加密记事本内容”按钮。

  8. 如果创建密钥对时设置了“使用密码句保护生成的密钥”,则此时需要在“Passphrase”输入框中输入先前设置的私钥密码,然后点击“OK”按钮。

    输入私钥密码

  9. 加密完成得到密文文本。密文文本会取代原来的消息文本出现在“记事本”选项卡下的输入框中。

    密文

  10. 复制密文文本粘贴到 文本分享网站 上为其创建分享链接,然后把链接发送给对方。

加密消息

加密文件并发送

  1. 完成对方公钥的导入。

  2. 在文件管理器中右击要加密的文件,然后点击“Sign and encrypt”。

    或者在 Kleopatra 中,点击工具栏上的“签名/加密”按钮,然后在“选择一个或多个要签名/加密的文件”对话框中选择要加密的文件。

    签名/加密按钮

  3. 在“签名/加密文件”对话框中,“签名身份”下拉框选择自己的私钥。选择的私钥用于将发件人的身份告知对方。

    签名/加密文件对话框

  4. 点击"为他人加密"输入框右侧的 选择证书按钮 按钮选择对方的公钥(收件人),支持多选。选择的公钥用于加密消息,以及决定谁能解密。可以通过清空输入框内容来取消选择收件人。

  5. “输出文件或文件夹”文本框中设置密文文件的保存位置以及文件名。

  6. 点击“签名/加密”按钮。

  7. 如果创建密钥对时设置了“使用密码句保护生成的密钥”,则此时需要在“Passphrase”输入框中输入先前设置的私钥密码,然后点击“OK”按钮。

    输入私钥密码

  8. 加密完成得到密文文件。

  9. 将密文文件发送给对方。

解密消息

本章节中将介绍 密文文本密文文件 的解密方法。

两种解密方法推荐都学习。

解密消息

解密密文文本

  1. 收到以 -----BEGIN PGP MESSAGE----- 开头的密文文本。

  2. 进入 Kleopatra 记事本界面,并切换到“记事本”选项卡。

    记事本

  3. 将密文文本粘贴到“记事本”选项卡下方的文本框中,然后点击“解密/验证记事本内容”按钮。

    解密密文文本

  4. 如果创建密钥对时设置了“使用密码句保护生成的密钥”,则此时需要在“Passphrase”输入框中输入先前设置的私钥密码,然后点击“OK”按钮。

    输入私钥密码

  5. 解密完成得到原始文本,原始文本会取代先前的密文文本出现在“记事本”选项卡下的输入框中。

    文本解密结果

解密消息

解密密文文件

  1. 收到文件后缀名为 .gpg.pgp 的密文文件。

  2. 在文件管理器双击密文文件。

    或在 Kleopatra 中点击工具栏的“解密/校验”按钮,然后在弹出的对话框中选择密文文件。

    解密/校验按钮

  3. 如果创建密钥对时设置了“使用密码句保护生成的密钥”,则此时需要在“Passphrase”输入框中输入先前设置的私钥密码,然后点击“OK”按钮。

    输入私钥密码

  4. 解密完成得到原始文件。

    点击“输出文件夹”输入框右侧的 设置输出路径按钮 按钮打开“选择文件夹”对话框,选择原始文件的保存位置。

    随后再点击“Save All”按钮。

    解密的文件

  5. 如果软件询问是否以原始文件名保存,按提示自行决定。

    是否原始文件名保存

  6. 原始文件将保存在指定的位置。

警告:

OpenKeychain 已经过时且停止维护,不建议再使用。推荐改用 PC 上的 Kleopatra。

OpenKeychain 在尝试解密较新版本 GPG 的密文时会出现报错而无法解密的问题。若要继续使用 OpenKeychain,则双方必须都使用该应用。

OpenKeychain

在本章中,你将学习 OpenKeychain 的下载与安装,以及使用以下的功能:

  • 创建 OpenPGP 密钥对。
  • 导出自己的公钥,以及公钥的指纹。
  • 导入别人的公钥,并用自己的私钥对其认证
  • 加密文本或文件。
  • 解密文本或文件。

在完成加密软件的学习后,推荐你继续学习以下章节:

准备软件

  1. 浏览器打开 应用的 F-Droid 下载页面

  2. 点击最新版本对应的“下载 APK”链接。

    下载 APK

  3. 安装 APK。如果安装失败,可以尝试以下解决方法:

    • 设置允许(应用)安装未知来源软件。
    • 退出操作系统的账号登录。
    • 关闭相关的安全选项。

创建密钥对

注意:
如果你是第一次打开应用,请从第 2 步开始看。

  1. 在 OpenKeychain 密钥管理界面,点击右上角的三点按钮,然后点击“管理我的密钥”。

    密钥管理界面菜单

  2. 点击“创建密钥”。

    管理我的密钥

  3. 输入关联密钥对的称谓,然后点击“下一步”。所输入的称谓应能够使收到公钥的人辨认出这个公钥的身份。

    称谓

  4. 输入关联密钥对的电子邮件地址,然后点击“下一步”。所输入的电子邮件地址应能够使收到公钥的人辨认出这个公钥的身份。

    如果该密钥对需要用于支持 OpenPGP 的在线服务,如电子邮件、在线 Git 托管服务(如 GitHub)、公钥服务器等,则必须填写能够联系到你的电子邮件地址。

    特殊的情况是 GitHub 如果启用了“Keep my email addresses private”(不公开我的电子邮件地址),则 Git 提交和 GPG 公钥需要使用 GitHub 提供的带有 no-reply 的电子邮件地址才能让该设置生效。详见 这篇 GitHub 帮助文档第 8 条的 Note

    电子邮件地址

  5. 点击右上角的三点按钮,然后点击“更改密钥配置”。

    更改密钥配置

  6. 点击“变更密码”。

  7. 为新创建的密钥对设置私钥密码。在“密码”和“重复密码”输入框中输入密码,然后点击“OK”按钮。

    重要说明:
    此处是为私钥设置私钥密码。在存储私钥前,OpenKeychain 会使用该密码将私钥加密;在私钥使用前(如解密消息等),OpenKeychain 会要求用户输入该密码来临时解密私钥。这样做的目的是提高安全性,即使私钥意外泄露,也会因为缺少私钥密码而无法使用。
    因此私钥密码和私钥都很重要,只能自己持有,不能公开;且密码应有一定的复杂度,不应该和其他密码相同。

    设置私钥密码

  8. 点击右上角的“保存”。

    保存密钥设置

  9. 点击右下角的“创建密钥”。

    创建密钥

  10. 完成密钥对的创建。

导出公钥

推荐将公钥导出为 文本格式,也可以选择导出为 文件

两种导出方式推荐都学习。

导出公钥

导出公钥文本并发送

  1. 进入 OpenKeychain 密钥管理界面,点击需要导出的公钥。

    密钥列表

  2. 进入密钥概览界面。点击右上角的三点按钮,然后点击“更多密钥详情”。

    更多密钥详情

  3. 进入密钥详情界面。切换到“分享”选项卡。

    密钥详情界面

  4. 将界面上的(公钥)指纹截图并发送给对方。

  5. 点击下方“分享到...”右边的第二个图标,复制公钥文本到剪贴板。

  6. 将剪贴板中的公钥文本粘贴到 文本分享网站 上为其生成分享链接,然后将链接发送给对方。

导出公钥

导出公钥文件并发送

  1. 进入 OpenKeychain 密钥管理界面,点击需要导出的公钥。

    密钥列表

  2. 进入密钥概览界面。点击右上角的三点按钮,然后点击“更多密钥详情”。

    更多密钥详情

  3. 进入密钥详情界面。切换到“分享”选项卡。

    密钥详情界面

  4. 将界面上的(公钥)指纹截图并发送给对方。

  5. 点击下方“分享到...”右边的第一个图标。然后按照提示自行选择公钥文件的分享途径和目标。

导入公钥

本章节中将介绍 公钥文本公钥文件 的导入方法。

两种导入方式推荐都学习。

导入公钥

导入公钥文本

  1. 收到以 -----BEGIN PGP PUBLIC KEY BLOCK----- 开头的公钥文本,以及该公钥的指纹截图。

  2. 选择以下一种方法让 OpenKeychain 读取公钥文本。

    方法 1:分享公钥文本到 OpenKeychain

    部分应用(如 Via浏览器)支持分享文本到其他应用。利用此特性,分享公钥文件到 OpenKeychain 让其读取。

    参考步骤:

    1. 选中全部公钥文本。

    2. 点击文本周围出现的工具栏上的分享按钮。

    3. 点击“OpenKeychain:导入密钥”和“仅此一次”(如果有该项)。

      使用 OpenKeychain 处理公钥

    方法 2:自动从剪贴板读取公钥文本

    1. 复制公钥文本,然后打开 OpenKeychain 进入密钥管理界面。

    2. 界面下方出现“在剪贴板中发现密钥数据!”的提示,点击右侧的“查看”按钮。

      自动检测剪贴板的公钥文本

    方法 3:手动指定从剪贴板读取公钥文本

    1. 复制公钥文本,然后打开 OpenKeychain 进入密钥管理界面。

    2. 点击界面右下角的圆形“+”图标,然后点击“从文件导入”。

      从文件导入

    3. 进入导入密钥界面。点击右上角的三点图标,然后点击“从剪贴板读取”。

      从剪贴板读取

  3. 点击“导入”按钮。

    导入的公钥的信息

  4. 回到密钥管理界面,点击刚导入的公钥。

    点击导入的公钥

  5. 进入密钥概览界面。点击右上角的三点按钮,然后点击“通过指纹确认”。

    点击通过指纹确认

  6. 对比界面显示的指纹是否与对方在截图中提供的指纹一致。

    • 如果一致,则点击“密钥指纹符合”。
    • 如果不一致,表明收到的公钥不是对方想要发送的,应立即终止流程并要求对方重新发送公钥。如果情况依旧,说明当前通信平台存在安全风险,应考虑更换平台。

    确认指纹

  7. “我的密钥”下拉框选择自己的私钥,然后点击“确认密钥”按钮。

    认证公钥

  8. 如果创建密钥对时设置了私钥密码,则此时需要在“密码”输入框中输入先前设置的密码,然后点击“解锁”按钮。

    输入私钥密码

  9. 完成公钥的导入与认证。

导入公钥

导入公钥文件

  1. 收到文件后缀名为 .asc 的公钥文件,以及该公钥的指纹截图。

  2. 选择以下一种方法让 OpenKeychain 读取公钥文件。

    方法 1:直接打开公钥文件

    文件管理器点击公钥文件,然后点击“OpenKeychain:导入密钥”和“仅此一次”(如果有该项)。

    使用 OpenKeychain 处理公钥

    方式 2:手动指定并读取公钥文件

    1. 打开 OpenKeychain 进入密钥管理界面。

    2. 点击界面右下角的圆形“+”图标,然后点击“从文件导入”。

      从文件导入

    3. 点击浏览公钥文件按钮,然后选择要导入的公钥文件。

      浏览公钥文件按钮

  3. 点击“导入”按钮。

    导入的公钥的信息

  4. 回到密钥管理界面,点击刚导入的公钥。

    点击导入的公钥

  5. 进入密钥概览界面。点击右上角的三点按钮,然后点击“通过指纹确认”。

    点击通过指纹确认

  6. 对比界面显示的指纹是否与对方在截图中提供的指纹一致。

    • 如果一致,则点击“密钥指纹符合”。
    • 如果不一致,表明收到的公钥不是对方想要发送的,应立即终止流程并要求对方重新发送公钥。如果情况依旧,说明当前通信平台存在安全风险,应考虑更换平台。

    确认指纹

  7. “我的密钥”下拉框选择自己的私钥,然后点击“确认密钥”按钮。

    认证公钥

  8. 如果创建密钥对时设置了私钥密码,则此时需要在“密码”输入框中输入先前设置的密码,然后点击“解锁”按钮。

    输入私钥密码

  9. 完成公钥的导入与认证。

加密消息

本章节中将介绍 文本文件 的加密方法。

两种加密方法推荐都学习。

加密消息

加密文本并发送

  1. 完成对方公钥的导入。

  2. 选择以下一种方法进入 OpenKeychain 的文本加密界面。

    方式 1:从密钥概览界面进入

    1. 进入 OpenKeychain 密钥管理界面,点击作为收件人的密钥。

    2. 点击加密文本按钮(红框 2 处)。

      加密按钮

    方式 2:从加密/解密界面进入

    1. 打开 OpenKeychain,从屏幕左侧向右滑动拉出侧边菜单。

    2. 点击“加密/解密”。

      加密/解密”

    3. 点击“加密文本”。

    方式 3:分享要加密的文本到 OpenKeychain

    部分应用(如 Via浏览器)支持分享文本到其他应用。利用此特性,分享要加密的消息到 OpenKeychain 让其读取。

    参考步骤:

    1. 选中全部要加密的消息。

    2. 点击文本周围出现的工具栏上的分享按钮。

    3. 点击“OpenKeychain:加密”和“仅此一次”(如果有该项)。

      使用 OpenKeychain 处理消息或密文

  3. 以下为加密文本界面的说明:

    加密文本界面

    • 红框 1 处输入公钥名称或邮箱地址来选择对方的公钥,支持多选。选择的公钥用于加密消息,以及决定谁能解密。
    • 红框 2 处选择自己的私钥。选择的私钥用于将发件人的身份告知对方。
    • 红框 3 处输入要发送给对方的文本。
    • 红框 4 处为加密文本并复制密文到剪贴板。
  4. 进行加密操作时,如果创建密钥对时设置了私钥密码,则此时需要在“密码”输入框中输入先前设置的密码,然后点击“解锁”按钮。

    输入私钥密码

  5. 加密完成后密文文本会被复制到剪贴板。将密文文本粘贴到 文本分享网站 上为其创建分享链接,然后把链接发送给对方。

加密消息

加密文件并发送

  1. 完成对方公钥的导入。

  2. 选择以下一种方法进入 OpenKeychain 的文本文件界面。

    方式 1:从密钥概览界面进入

    1. 进入 OpenKeychain 密钥管理界面,点击作为收件人的密钥。

    2. 点击加密文件按钮(红框 1 处)。

      加密按钮

    方式 2:从加密/解密界面进入

    1. 打开 OpenKeychain,从屏幕左侧向右滑动拉出侧边菜单。

    2. 点击“加密/解密”。

      加密/解密”

    3. 点击“加密文件”。

    方式 3:分享要加密的文件到 OpenKeychain

    1. 文件管理器中长按要加密的文件。

    2. 点击分享相关的按钮,然后点击“OpenKeychain:加密”和“仅此一次”(如果有该项)。

      使用 OpenKeychain 处理消息或密文

  3. 以下为加密文件界面的说明:

    加密文件界面

    • 红框 1 处输入公钥名称或邮箱地址来选择对方的公钥,支持多选。选择的公钥用于加密消息,以及决定谁能解密。
    • 红框 2 处选择自己的私钥。选择的私钥用于将发件人的身份告知对方。
    • 红框 3 处选择要发送给对方的文件。只能选择一个文件,选择多个可能会导致加密失败。如需分享多个文件,可以手动将文件打包为一个文件再加密。
    • 红框 4 处为加密文件为密文文件并保存。
    • 红框 5 处为加密文件为密文文件并分享到其他应用。
  4. 进行加密操作时,如果创建密钥对时设置了私钥密码,则此时需要在“密码”输入框中输入先前设置的密码,然后点击“解锁”按钮。

    输入私钥密码

  5. 加密完成后密文文件会根据先前选择的操作,保存到指定的位置,或分享到其他应用。

解密消息

本章节中将介绍 密文文本密文文件 的解密方法。

两种解密方法推荐都学习。

解密消息

解密密文文本

  1. 收到以 -----BEGIN PGP MESSAGE----- 开头的密文文本。

  2. 选择以下一种方法让 OpenKeychain 读取密文文本。

    方式 1:分享密文文本到 OpenKeychain

    部分应用(如 Via浏览器)支持分享文本到其他应用。利用此特性,分享密文文本到 OpenKeychain 让其读取。

    参考步骤:

    1. 选中密文文本。

    2. 点击文本周围出现的工具栏上的分享按钮。

    3. 点击“OpenKeychain:解密”和“仅此一次”(如果有该项)。

      使用 OpenKeychain 处理消息或密文

    方式 2:手动指定从剪贴板读取

    1. 打开 OpenKeychain,从屏幕左侧向右滑动拉出侧边菜单。

    2. 点击“加密/解密”。

      加密/解密”

    3. 点击“从剪贴板导入”。

  3. 进行解密操作时,如果创建密钥对时设置了私钥密码,则此时需要在“密码”输入框中输入先前设置的密码,然后点击“解锁”按钮。

    输入私钥密码

  4. 解密完成后会跳转到独立的页面显示解密得到的原始文本。

解密消息

解密密文文件

  1. 收到文件后缀名为 .gpg.pgp 的密文文件。

  2. 选择以下一种方法让 OpenKeychain 读取密文文件。

    方式 1:分享密文文件到 OpenKeychain

    1. 文件管理器中长按密文文件。

    2. 点击分享相关的按钮,然后点击“OpenKeychain:解密”和“仅此一次”(如果有该项)。

      使用 OpenKeychain 处理消息或密文

    方式 2:手动指定读取的文件

    1. 打开 OpenKeychain,从屏幕左侧向右滑动拉出侧边菜单。

    2. 点击“加密/解密”。

      加密/解密”

    3. 点击“从文件导入”。

    4. 选择需要解密的密文文件。

  3. 进行解密操作时,如果创建密钥对时设置了私钥密码,则此时需要在“密码”输入框中输入先前设置的密码,然后点击“解锁”按钮。

    输入私钥密码

  4. 解密完成后会跳转到独立的页面显示解密得到的原始文件。可以另存到指定位置。

文本分享网站

发送大段的文本(如公钥、密文等),推荐的方式是将文本复制粘贴到文本分享网站上为其创建分享链接,然后把分享链接发送给对方。

这样做的好处有:

  • 避免因为文本过长,而发送失败,或者发送后造成刷屏,影响观感。
  • 降低消息内容被平台(如聊天软件等)记录审查,或者窃取篡改的可能。

以下是部分免登录的文本分享网站的推荐:

  • Moziila Community Pastebin:首选推荐,支持中文,支持阅后即焚、定时删除和立即删除,不支持长期保存,没有创建限制。
  • Pastebin:支持中文,支持长期保存、阅后即焚和定时删除(立即删除需要登录),但一天里创建的分享有数量限制。
  • Paste2: 支持中文,但不支持删除。

Mozilla Community Pastebin

网站链接:https://pastebin.mozilla.org/

创建文本分享链接

创建分享链接

  1. 在红框 1 处粘贴文本内容。

  2. 在红框 2 处选择“Plain Text”。

    该项为设置分享文本使用的语法高亮,对于公钥和密文,合适的类型为“Plain Text”(纯文本),不过选择其他类型也没影响。

  3. 在红框 3 处设置分享过期时间。

    以下是各选项的翻译:

    • One Time Snippest:一次性文本,即 阅后即焚(Burn After Read)
    • Expire in one hour:一小时后过期
    • Expire in one day:一天后过期
    • Expire in one week:一周后过期
    • Expire in 21 days:21天时后过期

    如果你不能保证对方能短时间内查看你发的消息,建议选择“Expire in one day”(一天后过期)。

  4. 点击红框 4 处的“Paste Snippet”按钮创建并访问文本分享链接。

访问文本分享链接

访问分享链接

以下为界面各处的解释:

  • 红框 1 处为分享链接。
  • 红框 2 处为复制分享链接按钮。
  • 红框 3 处为分享的剩余存在时间。
  • 红框 4 处的部分按钮或选项的作用为:
    • Delete Now:立即删除该分享。
    • Raw:进入一个只有分享内容的页面(显示原始内容),适用于手机上快速全选文本并分享到应用。
    • Copy Snippet:复制分享内容到粘贴版。
    • Edit Snippet:编辑分享内容(实际上不能修改,只能重新创建)。
    • Word wrap:是否启用内容自动换行。
  • 红框 5 处为分享的内容。

简单的安全与保密意识

以下需发送的内容应先进行加密,避免以文本或截图等形式直接对外发送:

  • 对方向你加密发送的内容。
  • 对方向你加密发送内容,然后你回复对方的内容。
  • 通过国内平台发送的灰色、敏感或违规的内容(如 R18、政治、翻墙、本章节内容等)。

以下行为应尽力做到:

  • 始终完全禁止输入法联网。
  • 使用翻墙或加密软件时,禁止任何国产的软件和游戏在前后台运行或联网(如 QQ、WPS、B站、原神、国产浏览器、360 等)。

以下行为必须做到:

  • 禁止公开私钥或私钥密码。

违反可能会导致被和谐和查水表。国内平台发的内容,都会被检测记录,供利用和取证。

参考资料

中文技术文档写作风格指南

中文文案排版指北

Markdown Guide

Public-key cryptography

Pretty Good Privacy

GNU Privacy Guard

OpenPGP


Markdown 教程

GPG入门教程(作者:阮一峰)