GPG加密工具介绍及Gpg4win使用方法

GPG加密工具介绍及Gpg4win使用方法

GPG简介

GNU Privacy GuardGnuPGGPG)是Symantec的PGP加密软件套件的免费软件替代品。该软件符合 RFC 4880,即OpenPGP的IETF标准跟踪规范。现代版本的PGP可与 GnuPG 和其他符合 OpenPGP 的系统互操作。[6]

GnuPG 是GNU 项目的一部分,并于 1999 年从德国政府获得了大量资金。 [7]

GnuPG 是一种混合加密软件程序,因为它结合了传统的对称密钥密码术以提高速度,并使用公钥密码术来简化安全密钥交换,通常使用接收者的公钥来加密仅使用的会话密钥一次。这种操作模式是 OpenPGP 标准的一部分,并且从第一个版本开始就是 PGP 的一部分。

GnuPG 1.x 系列使用一个集成的密码库,而 GnuPG 2.x 系列用Libgcrypt代替了它。

GnuPG 使用GnuPG 用户单独生成的非对称密钥对加密消息。生成的公钥可以通过多种方式与其他用户交换,例如互联网密钥服务器。必须始终小心地交换它们,以防止通过破坏公钥 ↔ “所有者”身份对应来进行身份欺骗。还可以将加密数字签名添加到消息中,因此可以验证消息的完整性和发送者,如果所依赖的特定通信没有被破坏。

GnuPG 还支持对称加密算法。默认情况下,GnuPG 从 2.1 版开始使用AES对称算法,[8] CAST5在早期版本中使用。GnuPG 不使用专利或其他受限制的软件或算法。相反,GnuPG 使用各种其他的非专利算法。[9]

一直以来,它都不支持 PGP 中使用的IDEA加密算法。实际上,可以通过下载插件在 GnuPG 中使用 IDEA,但是,这可能需要在 IDEA 获得专利的国家/地区的某些用途上获得许可。从 1.4.13 和 2.0.20 版本开始,GnuPG 支持 IDEA,因为 IDEA 的最后一项专利于 2012 年到期。支持 IDEA 旨在“摆脱人们试图解密旧数据或从 PGP 迁移密钥的所有问题到 GnuPG”,[10],因此不建议经常使用。

算法

从 2.2 版本开始,GnuPG 支持以下算法:

公钥:
RSA , ElGamal , DSA , ECDH , ECDSA , EdDSA

密码:
3DES、IDEA(从 1.4.13 和 2.0.20 版本开始)、CAST5、Blowfish、Twofish、AES-128、AES-192、AES-256、Camellia-128、-192 和 -256(从 1.4.10 和 2.0.12版本开始)

哈希:
MD5、SHA-1、RIPEMD-160、SHA-256、SHA-384、SHA-512、SHA-224

压缩:
未压缩、ZIP、ZLIB、BZIP2

最新版本的 GnuPG 2.x(“现代”和现已弃用的“稳定”系列)公开了Libgcrypt(其密码库)提供的大多数加密函数和算法,包括对椭圆曲线加密(ECDH、ECDSA 和 EdDSA)的支持[11 ]在“现代”系列中(即从 GnuPG 2.1 开始)。

历史

GnuPG 最初由Werner Koch开发。[12] [13] 第一个生产版本,版本 1.0.0,于 1999 年 9 月 7 日发布,距第一个 GnuPG 发布(版本 0.0.0)差不多两年。[1] [12]德国联邦经济和技术部于 2000 年资助了Microsoft Windows的文档和端口。 [13]

GnuPG 是一个符合 OpenPGP 标准的系统,因此 OpenPGP 的历史很重要;它旨在与PGP互操作,PGP 是最初由Phil Zimmermann设计和开发的电子邮件加密程序。[14] [15]

2014 年 2 月 7 日,GnuPG众筹活动结束,为新网站和基础设施改进筹集了 36,732欧元。[16]

分支

自 2021 年 10 月发布稳定的 GnuPG 2.3 以来,从 2.3.3 版本开始,积极维护 GnuPG 的三个稳定分支:[17]

  • 一个“稳定的分支”,目前(截至 2021 年)是 2.3 分支。
  • 一个“ LTS(长期支持)分支”,目前(截至 2021 年)是 2.2 分支(以前称为“现代分支”,与 2.0 分支相比)。
  • 旧的“遗留分支”(以前称为“经典分支”),现在和将保持 1.4 分支。

在 GnuPG 2.3 之前,积极维护了 GnuPG 的两个稳定分支:

  • “Modern”(2.2),与之前的“稳定”(2.0)分支相比,具有许多新功能,例如椭圆曲线密码学,它被 2017 年 8 月 28 日发布的 GnuPG 2.2.0 所取代。[18]它最初于 2014 年 11 月 6 日发布。[11]
  • “Classic”(1.4),很老了,但仍然保持着单机版,最适合过时或嵌入式平台。最初于 2004 年 12 月 16 日发布。[19]

不能同时安装不同的 GnuPG 2.x 版本(例如来自 2.2 和 2.0 分支)。但是,可以将“Classic”GnuPG 版本(即来自 1.4 分支)与任何 GnuPG 2.x 版本一起安装。[11]

在 GnuPG 2.2(“Modern”)发布之前,现在已弃用的“稳定”分支(2.0)被推荐用于一般用途,最初于 2006 年 11 月 13 日发布。[20]该分支于 12 月结束生命周期2017 年 31 月 31 日;[21]其最后一个版本是 2.0.31,于 2017 年 12 月 29 日发布。[22]

在 GnuPG 2.0 发布之前,所有稳定版本都源自一个分支;即,在 2006 年 11 月 13 日之前,没有并行维护多个发布分支。这些以前的,顺序成功的(最多 1.4)发布分支是:

  • 1.2 分支,最初于 2002 年 9 月 22 日发布,[23]以 1.2.6 作为最后一个版本,于 2004 年 10 月 26 日发布。[24]
  • 1.0 分支,最初于 1999 年 9 月 7 日发布,[1] 1.0.7 作为最后一个版本,于 2002 年 4 月 30 日发布。[25]

(请注意,在 GnuPG 2.3.0 发布之前,具有奇数次要版本号(例如 2.1、1.9、1.3)的分支是开发分支,导致具有“+ 0.1”更高版本号(例如 2.2、2.0)的稳定版本分支, 1.4);因此分支 2.2 和 2.1 都属于“现代”系列,2.0 和 1.9 都属于“稳定”系列,而分支 1.4 和 1.3 都属于“经典”系列。

随着 GnuPG 2.3.0 的发布,这个命名法被更改为由“现代”系列的“稳定”和“LTS”分支组成,再加上作为最后维护的“经典”分支的 1.4。另请注意,偶数或奇数次要版本号不再表示稳定或开发版本分支。)

平台

虽然基本的 GnuPG 程序有一个命令行界面,但也有各种前端为其提供图形用户界面。例如,GnuPG 加密支持已集成到KMailEvolution中,这是在KDEGNOME中发现的图形电子邮件客户端,最流行的Linux桌面。还有图形 GnuPG 前端,例如GNOME的Seahorse和KGPG以及KDE 的Kleopatra

GPGTools 为 OS 集成加密和密钥管理以及通过安装程序 [26]macOS安装 GnuPG提供了许多前端。GPG Suite [27]安装所有相关的 OpenPGP 应用程序(GPG 钥匙串)、插件(GPG 邮件)和依赖项(MacGPG),以及 GPG 服务(集成到 macOS 服务菜单)以使用基于 GnuPG 的加密。

在安装和配置 GnuPG 时,即时消息应用程序(例如PsiFire )可以自动保护消息。Horde等基于 Web 的软件也使用了它。跨平台扩展 Enigmail为Mozilla ThunderbirdSeaMonkey提供 GnuPG 支持。同样,Enigform 为Mozilla Firefox提供 GnuPG 支持。FireGPG 已于 2010 年 6 月 7 日停产。[28]

2005 年,g10 Code GmbH 和 Intevation GmbH 发布了Gpg4win ,这是一个包含 GnuPG for Windows、GNU Privacy Assistant 以及用于Windows ExplorerOutlook的 GnuPG 插件的软件套件。这些工具包含在标准的 Windows 安装程序中,使 GnuPG 更容易在 Windows 系统上安装和使用。[29]

限制

作为一个基于命令行的系统,GnuPG 1.x 不是作为一个API编写的,可以合并到其他软件中。为了克服这个问题,GPGME(缩写为GnuPG Made Easy)被创建为围绕 GnuPG 的 API 包装器,它解析GnuPG的输出并在组件之间提供稳定且可维护的 API。[30] 目前,对于许多 GPGME API 调用,这需要对 GnuPG 可执行文件进行进程外调用;因此,由于过程障碍,应用程序中可能的安全问题不会传播到实际的密码代码[需要引用] 。已经创建了各种基于 GPGME 的图形前端[需要的例子]

从 GnuPG 2.0 开始,许多 GnuPG 的函数都可以直接作为Libgcrypt中的 C API 使用。[31]

漏洞

OpenPGP 标准指定了几种对消息进行数字签名的方法。2003 年,由于旨在使其中一种方法更高效的 GnuPG 更改中出现错误,因此引入了安全漏洞。[32]它只影响了一种数字签名消息的方法,仅适用于 GnuPG 的某些版本(1.0.2 到 1.2.3),并且密钥服务器上列出的此类密钥少于 1000 个。[33]大多数人没有使用这种方法,并且在任何情况下都不鼓励这样做,因此造成的损害(如果有的话,因为没有公开报道过)似乎很小。在此发现之后发布的 GnuPG 版本(1.2.4 及更高版本)中已删除对这种方法的支持。

2006 年初又发现了两个漏洞;第一个是 GnuPG 用于签名验证的脚本使用可能会导致误报[34]第二个是非 MIME 消息容易受到数据注入的影响,这些数据虽然没有被数字签名覆盖,但会被报告为签名的消息。[35]在这两种情况下,GnuPG 的更新版本都在发布时提供。

2017 年 6 月,Bernstein、Breitner 等人在Libgcrypt中发现了一个漏洞(CVE-2017-7526) :GnuPG 使用的一个库,它可以对 RSA-1024 和大约 1/8 以上的 RSA- 2048 个键。这种侧信道攻击利用了Libgcrypt使用滑动窗口方法进行求幂的事实,这会导致指数位泄漏和完整的密钥恢复。[36] [37]同样,在发布公告时提供了 GnuPG 的更新版本。

2017 年 10 月,宣布 ROCA 漏洞影响由YubiKey 4 令牌生成的 RSA 密钥,这些令牌通常与 PGP/GPG 一起使用。许多已发布的 PGP 密钥被发现容易受到影响。[38]

2018 年 6 月左右,宣布了SigSpoof攻击。这些允许攻击者令人信服地欺骗数字签名。[39] [40]

2021 年 1 月,Libgcrypt 1.9.0 发布,被发现包含一个易于利用的严重漏洞。10 天后在 Libgcrypt 1.9.1 中发布了一个修复程序。[41]

应用程序支持

支持 GPG 的著名应用程序、前端和浏览器扩展包括以下内容:

GPG相关重要新闻

2014 年 5 月,《华盛顿邮报》报道了一个名为 anon108 的用户于 2013 年 1 月[42]发布到Vimeo的 12 分钟视频指南“记者 GPG” 。邮报将anon108 确定为逃亡的NSA举报人爱德华·斯诺登(Edward Snowden),据说他制作了这个教程——“由一个数字伪装的声音讲述,其语音模式听起来与斯诺登的相似”——教记者格伦·格林沃尔德电子邮件加密。格林沃尔德表示,他无法确认视频的作者身份。[43]教程与斯诺登参与的采访有相似之处,例如在这段视频和2015 年对约翰奥利弗的采访中都提到了“margaretthatcheris110%sexy”的密码。 [44]

Gpg4win使用方法

本文主要以GPG中的Gpg4win工具为例进行讲解其用法:

Gpg4win不仅提供电子邮件加密,还提供一整套工具。它也可以直接在文件资源管理器中用于文件加密。Gpg4win 也是 GnuPG for Windows 的官方发行版。该国际倡议希望将重点放在构建器上,以便为 GnuPG 轻松创建更新的安装程序。

①下载GPG程序:

在如下网站进行下载:

https://gnupg.org/download/index.html

或者直接在下面的链接下载

系统下载地址描述
WindowsGpg4winGnuPG的全功能 Windows 版本
 download sig当前GnuPG的简单安装程序
 download sigGnuPG 1.4的简单安装程序
OS XMac GPGgpgtools 项目的安装程序
 GnuPG for OS XGnuPG安装程序
DebianDebian siteGnuPG 是 Debian 的一部分
RPMrpmfind不同操作系统的 RPM 包
Android(安卓)Guardian project提供 GnuPG 框架
VMSantinode.infoGnuPG 1.4 到 OpenVMS 的端口
RISC OShome pageGnuPG 移植到 RISC OS

比如要下Gpg4win,选择0美元然后点击即可下载:

GPG加密工具介绍及Gpg4win使用方法

②安装工具

Gpg4win安装的话就是一路下一步即可:

GPG加密工具介绍及Gpg4win使用方法

③新建密钥对

这里假设FBI探员A要和CIA探员B进行交流,但是中途传输的数据要进行加密,即使被别人截获别人也无法解密,所以他们两人决定使用gpg4win进行数据加密.(当然FBI,CIA使用的加密手段可能更加复杂)

简单示意图如下:

GPG加密工具介绍及Gpg4win使用方法

FBI-A现在开始在电脑上安装Gpg4win

GPG加密工具介绍及Gpg4win使用方法

注意:名字和电子邮件必须选择一个填写:

GPG加密工具介绍及Gpg4win使用方法
GPG加密工具介绍及Gpg4win使用方法

设置密码保护key

GPG加密工具介绍及Gpg4win使用方法
把私钥导出备份好(需要重点保护)
GPG加密工具介绍及Gpg4win使用方法
GPG加密工具介绍及Gpg4win使用方法

导出私钥会让你输入刚才设置的密码:

GPG加密工具介绍及Gpg4win使用方法

成功导出密钥,即桌面上的FBI-A_0x9….asc

GPG加密工具介绍及Gpg4win使用方法
把公钥导出

点FBI-A然后点上面的导出即可,例如我们把公钥导出保存为FBI-A_public.asc文件

GPG加密工具介绍及Gpg4win使用方法

导出的公钥如下图所示:FBI-A_public.asc

GPG加密工具介绍及Gpg4win使用方法

CIA-B现在开始在电脑上安装Gpg4win

安装方法和FBI-A一样的操作流程,最后也把公钥导出来了,公钥名称为CIA-B_public.asc文件

GPG加密工具介绍及Gpg4win使用方法

④交换公钥

FBI-A把生成的公钥(FBI-A_public.asc)发给CIA-B
CIA-B把生成的公钥(CIA-B_public.asc)发给FBI-A
[直接随便什么方式发过去都无所谓,因为截获公钥是没有用的.]

⑤导入公钥

导入方法很简单,双击.asc文件即可.

例如FBI-A要导入CIA-B的公钥,只需要双击CIA-B_public.asc文件即可:

GPG加密工具介绍及Gpg4win使用方法

现在CIA-B也已经成功导入FBI-A的公钥:

GPG加密工具介绍及Gpg4win使用方法

⑥加密文件

现在FBI-A有一份绝密情报要传输给CIA-B
FBI-A开始对文件进行加密处理:
假设这份绝密情报就是桌面上的”情报线索.txt“文件

GPG加密工具介绍及Gpg4win使用方法

点击左上角的 签名/加密 按钮进行加密,

选择要加密的文件

GPG加密工具介绍及Gpg4win使用方法

这个位置选择我们的老友CIA-B

GPG加密工具介绍及Gpg4win使用方法
GPG加密工具介绍及Gpg4win使用方法

选好之后是这个样子的:

GPG加密工具介绍及Gpg4win使用方法

如果你设置了密码,那么加密的时候会让你输入密码:(这个密码就是安装的时候FBI-A自己设置的保护key的密码)

GPG加密工具介绍及Gpg4win使用方法

加密完成后是这个样子的:

GPG加密工具介绍及Gpg4win使用方法

比如,我这里,加密后的文件会是一个叫”情报线索.txt.gpg“的文件,这个文件打开来看全是乱码.

GPG加密工具介绍及Gpg4win使用方法

⑦发送加密文件

FBI-A通过随便哪一种方式把加密过的文件发送给CIA-B.
[直接发送即可,中途被人截获也无法解开.]

⑧解密文件

CIA-B收到了来自FBI-A的加密文件,接下来只需要双击该文件即可进行解密:

跳出的让你输入密码的窗口,(这个密码就是安装的时候CIA-B自己设置的保护key的密码)

GPG加密工具介绍及Gpg4win使用方法

现在已经成功解密完成

GPG加密工具介绍及Gpg4win使用方法

点击Save All 按钮就可以把文件保存好,解密后的文件即可正常查看:

现在CIA-B收到的密文已经成功解密:

GPG加密工具介绍及Gpg4win使用方法

GPG使用方法总结

①双方安装Gpg4win

②各自新建密钥对

③互相交换公钥文件

④互相导入对方的公钥文件

⑤加密文件并传送给对方

⑥解密文件.

整个过程中,双方发送的东西只有两样:
①公钥文件
②加密文件

即使别人在中途截获了这两个文件,没有密钥也是解不开的.
希望本文通俗易懂,大家一看就会,一学就废.

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注