【APP-技术教程】GnuPG 简易教程:在平台间安全地与好友分享数据 其他工具 APP 技术教程

665 3

前言

在 wx、qq 等平台上与好友分享数据时,若希望避免中间人窥探,可使用 GnuPG。

GnuPG(GNU Privacy Guard)是一款遵循开放标准的自由软件工具,专门用于数据的加密与签名。它实现了 OpenPGP 标准,允许用户安全地交换信息和文件。GnuPG 提供了数据加密、数字签名、密钥管理等功能,广泛用于保护电子邮件、文件及其他类型的数据传输。

GnuPG 的主要特点包括:

  1. 加密与签名数据:GnuPG 可用于加密文件、电子邮件等数据,以确保数据的机密性。同时,它也支持对数据进行数字签名,以验证数据的完整性和来源。
  2. 密钥管理:GnuPG 提供了一个密钥管理系统,用户可以生成、导入、导出和管理自己的密钥。
  3. 跨平台:GnuPG 可以在多种操作系统上运行,包括 Windows、macOS 和 Linux。
  4. 开源与免费:GnuPG 是一个开源项目,遵循 GPL 许可证,因此是免费使用的。

写在前面:本教程仅为 GnuPG 的简易操作指南,其背后涉及到的诸如非对称加密之类的技术原理不会在此详细讲解。若对非对称加密感兴趣,可参见 BiliBili UP 主“硬件茶谈”的这条科普视频:https://www.bilibili.com/video/BV1Eo4y1y7Dh

 

GnuPG 简易教程

目录

 

1.1 安装软件

在 GnuPG 官网下载页面中(https://www.gnupg.org/download/),往下翻找到 Gpg4win(Windows 版本,其它平台用户请自行下载对应版本),下载安装包并运行。安装界面不存在需特别注意的。安装完毕后,桌面中应该会出现证书管理工具 Kleopatra 的快捷方式。

1-1_2.png


1.2 创建 OpenPGP 密钥对

在 Kleopatra 中,点击左上角“文件(F)”,点击“新建 OpenPGP 密钥对...”,输入名字和电子邮件地址,电子邮件地址可以是虚构的,也可以是真实的,只要能记住即可。

2-1_2.png

2-2.png

通常到这里即可点击“OK”创建密钥对,但一些高级设置可增强密钥对的安全性:

  • 使用密码句保护生成的密钥:勾选此选项后将额外为私钥设置一个 passphrase(密码),此后使用此私钥进行签名、解密、认证等操作时需要输入 passphrase。
  • 高级设置...
    • 密钥类型
      • RSA(+ RSA):兼容性好;
      • ECDSA/EdDSA(+ ECDH):性能相比于 RSA 较好,同时安全性不输 RSA。
    • 证书用途
      • 签名:勾选此选项后将允许使用私钥对数据进行数字签名,通常不建议取消勾选
      • 验证:TBA;
      • 有效期结束于:勾选此选项后将为密钥对设置有效期。默认为 3 年,若不勾选则表示无限期。

2-3.png


1.3 导出/导入 OpenPGP 证书(公钥)

1.3.1 以文件形式导出/导入证书

选择已创建的 OpenPGP 证书,点击左上角“文件(F)”,点击“导出...”,将证书存储在本地并发送给好友。

3-1_2.png

等待好友如法炮制将 TA 的证书发送过来,点击左上角“文件(F)”,点击“导入...”,选择好友的证书。

若一切顺利,Kleopatra 会显示“您已经导入一个新的证书(公钥)”,但提示需要检查证书指纹以验证。为了便于理解,此时请先点击取消。

3-3.png

 

1.3.2 以文本形式导出/导入证书

选择已创建的 OpenPGP 证书,点击左上角“文件(F)”,点击“导出...”,将证书存储在本地。然后使用记事本打开证书文件,复制其中的内容并发送给好友。

等待好友如法炮制将 TA 的证书发送过来,请先在本地新建一个文本文件并将其后缀名改为`.asc`,使用记事本打开此文件,将好友的证书内容复制粘贴到其中并保存。然后在 Kleopatra 中,点击左上角“文件(F)”,点击“导入...”,选择刚才修改的`.asc`文件。

若一切顺利,Kleopatra 会显示“您已经导入一个新的证书(公钥)”,但提示需要检查证书指纹以验证。为了便于理解,此时请先点击取消。

若导入失败,可能是在粘贴证书内容时格式出现错误。请参考本教程在结尾提供的证书,确认格式是否正确。

 

1.4 查看 OpenPGP 证书指纹与认证 OpenPGP 证书

右键自己的 OpenPGP 证书,点击“细节”,在新窗口的左下角可以看见此证书的指纹。请将指纹以安全的方式发送给好友,如:打电话、语音/视频通话、使用受信任的网站/社交平台等。

4-1_2.png

4-1.1_2.png

等待好友如法炮制将 TA 的证书指纹发送过来,右键先前导入的好友的证书,点击“认证...”,在新窗口的正上方可以看见此证书的指纹,请将其与好友发送过来的指纹逐一比对。

4-2_2.png

若核对无误,在认证方式中选择自己的私钥,点击“认证”。待 Kleopatra 显示“认证成功”,此时右键好友的证书,点击“细节”,在新窗口中可以发现此证书的信任等级为“完全”,这也意味着与好友之间已进行一次成功的“密钥交换”。

4-3_2.png


1.5 使用 OpenPGP 密钥对加密与解密文件

在 Kleopatra 中,点击左上角“签名/加密”,选择欲加密的文件。在新窗口中,“签名身份”选择自己的 OpenPGP 私钥,“为我加密”选择自己的 OpenPGP 证书,“为他人加密”选择好友的证书,点击“签名/加密”。待签名/加密完毕后,将加密文件发送给好友。

5-1_2.png

假设好友如法炮制发送过来一个加密文件,在 Kleopatra 中,点击左上角“解密/校验”,选择欲解密的文件。

待解密/校验完毕,若 Kleopatra 弹出绿色窗口并显示“此证书的签名有效,且其有效性受到完全/绝对信任”,则说明解密成功,且源文件完整性可以保证;若 Kleopatra 弹出灰色窗口并显示“解密失败: No Secret Key”“此密钥没有被您或任何受信任的人验证”等,则说明源文件在传输过程中被篡改、与好友之间的“密钥交换”没有做到位等,请自行排查原因。

点击“Save All”保存解密后文件或点击“Discard”丢弃解密后文件。

5-2.png

5-3_2.png

提示:若仅需要签名/加密文本,可直接在 Kleopatra 内置的“记事本”中实现。


1.6 仅使用 OpenPGP 密钥对签名与校验文件

若不在意文件的机密性,仅在意文件的完整性(确保文件在传输过程中未被篡改),在 Kleopatra 中,点击左上角“签名/加密”,选择欲签名的文件。在新窗口中,“签名身份”选择自己的 OpenPGP 私钥,取消勾选“为我加密”和“为他人加密”,点击“签名”。待签名完毕后,将源文件和`.sig`文件一并发送给好友。

6-1_2.png

6-2.png

假设好友如法炮制发送过来一个源文件和一个`.sig`文件,请先将这两个文件存储在同一文件夹中,然后在 Kleopatra 中,点击左上角“解密/校验”,选择与源文件对应的`.sig`文件。

待校验完毕,若 Kleopatra 弹出绿色窗口并显示“此证书的签名有效,且其有效性受到完全/绝对信任”,则说明源文件未被篡改,其完整性可以保证;若 Kleopatra 弹出灰色窗口并显示“此密钥没有被您或任何受信任的人验证”等,则说明源文件在传输过程中被篡改、与好友之间的“密钥交换”没有做到位等,请自行排查原因。

6-3.png


2.1 原理简述:非对称加密之公钥和私钥

  • 公钥:
    • 公钥是可以公开的密钥,任何人都可以获取和使用它。它通常用于加密数据或验证数字签名。
    • 在通信中,发送方可以使用接收方的公钥来加密消息。只有拥有相应私钥的接收方才能解密这条消息。
  • 私钥:
    • 私钥是保密的密钥,只有密钥的拥有者知道。它用于解密用公钥加密的数据或生成数字签名。
    • 发送方可以使用自己的私钥对消息进行签名,接收方可以使用发送方的公钥来验证这个签名,确保消息确实是由发送方发出的,并且在传输过程中没有被篡改。
  • 总结:
    • 公钥用于加密和验证,私钥用于解密和签名。
    • 公钥可以公开,私钥必须保密。

 

3.1 附加:Android 用户的方案

Android 用户可使用软件 OpenKeychain 实现类似效果。以下是 OpenKeychain 的官网:

 

参考资源

 

Extra

以下为本作者的 OpenPGP 证书,欢迎尝试(有效期结束于:2027/11/27)。

 

更新日志

2024.11.27 20:00

  • 新增示例图以便于理解;
  • 修正一部分地方的用语。

 

2024.12.02 01:40

  • 新增目录。

 

2024.12.19 08:30

  • 补充章节 1.2 内容;
  • 补充章节 1.3 内容并细化其结构。

 

彩蛋

(来自你站聊天室在 2024.11.25 的聊天记录)

  • Tsurumaki_Kokoro: 话说对于某软件使用教程的帖子,发 APP 区、资源区还是什么区?
  • M27IAR: @BHB
  • BHB: APP 的教程就发APP pc的教程就发PC呗 要不要增加一个技术教程 标签
  • Tsurumaki_Kokoro: 彳亍
  • (本来没有这标签的,你站之站长说到做到呢)

2024-11-25 20_00_00-.png

曲终人散,黄粱一梦,该醒了!
最新回复 ( 3 )
发新帖