GnuPG

OpenPGP與S/MIME標準的完整實作

GNU Privacy GuardGnuPGGPG)是一个密码学软件,用于加密签名通信内容及管理非对称密码学的密钥。GnuPG 是自由软件,遵循 IETF 订定的 OpenPGP 技术标准设计,并与 PGP 保持兼容。[4]

GNU Privacy Guard
The GNU Privacy Guard logo
原作者维尔纳·科赫
开发者GNU计划
首次发布1999年9月7日,​24年前​(1999-09-07[1]
当前版本
  • 2.2.42 (2023年11月28日;长期支持)[2]
  • 2.4.5 (2024年3月12日;稳定版本)[3]
编辑维基数据链接
原始码库 编辑维基数据链接
编程语言C语言
操作系统Microsoft WindowsmacOSRISC OSAndroidLinux
取代PGP
标准OpenPGP
类型密码学软件
许可协议 编辑维基数据链接
网站gnupg.org 编辑维基数据链接

GnuPG 是自由软件基金会GNU 计划的一部分,曾受德国政府资助。[5]

历史

GnuPG 的早期版本由维尔纳·科赫开发,经过近两年迭代后于1999年9月7日正式发布1.0.0版[1]。软件实现遵循 OpenPGP 标准,兼容菲尔·齐默尔曼开发的 PGP。2000年,德国联邦经济及科技部资助了31.8万马克,用于移植 GnuPG 到 Microsoft Windows[6]

德国政府于2005年资助开发 S/MIME。GnuPG 2.0 于2006年11月13日发布加入了,S/MIME。因为 GnuPG 2.0 的新的软件架构不支持某些用途,所以 1.x 与 2.0 是两个分支版本。[7]此外 GnuPG 1.x 使用了一个集成的加密库,而 GnuPG 2.x 则用 Libgcrypt 取代了加密库。

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],因此不建议常规使用。

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

使用

虽然基本的 GnuPG 程序有一个命令行界面,仍然存在许多提供图形用户界面前端。例如 GnuPG 加密被集成进了 Linux 里流行的桌面环境 KDEGNOME 里的图形化电邮客户端KMailNovell Evolution。也有 GnuPG 的图形化前端(GNOME 里的 Seahorse英语Seahorse (software)KDE 里的 KGpgKleopatra)。在 Mac OS X 上,Mac GPG 项目提供 Aqua 作为操作系统集成的加密前端密钥管理器和 GnuPG 安装一样通过 Installer packages 进行安装。[12]此外,GPGMail 项目[13]可以使 Apple Mail 使用 GnuPG 加密。即时通信(IM)程序,例如,当 GnuPG 已经安装并配置好时,PsiFire 可以自动安全的传递消息。像 Horde英语Horde (Software) 这类基于互联网的软件也可以使用 GnuPG。跨平台插件 EnigmailMozilla ThunderbirdSeaMonkey 提供了 GnuPG 支持。类似的,Enigform英语EnigformFireGPGMozilla Firefox 提供了 GnuPG 支持。Mailvelope 为在浏览器中使用 GnuPG 操作电邮提供了支持。

在2005年,G10 Code和 Intevation 发行了 Gpg4win,一个包含 GnuPG for Windows, WinPT, Gnu Privacy Assistant 和为 Windows ExplorerOutlook 提供的 GnuPG 插件的 mail 软件套装。这些工具被包装进了一个标准的微软安装包里,使 GnuPG 可以在 Windows 系统上安装和使用。

漏洞

2003 年,由于对 GnuPG 的一次更新中出现了错误,导致了一个安全漏洞[14]。不过它只影响了一种对消息进行数码签名的办法且只影响 GnuPG(1.0.2 到 1.2.3)的一些发布版本。受影响的密钥少于1000个[15],绝大多数人也不使用这种方法。因此造成的损害(如果有的话,因为尚未公开报告过)似乎很小。在此发现之后发布的 GnuPG 版本(1.2.4 及更高版本)中已经删除了对这种方法的支持。

2006 年初又发现了两个漏洞;第一个是对 GnuPG 进行脚本化以进行签名验证可能会导致误报[16], 第二个是非 MIME 消息容易受到数据注入[17],这些数据虽然没有被数码签名覆盖,但会被报告为签名消息的一部分。

2021 年 1 月,Libgcrypt 1.9.0 版发布,其中包含一个简单的严重漏洞。10 天后,在 Libgcrypt 1.9.1 中发布了修复程序。

过程

GnuPG 使用用户自行生成的非对称密钥对来加密资讯,由此产生的公钥可以同其他用户以各种方式交换,如密钥伺服器。他们必须小心交换密钥,以防止得到伪造的密钥。GnuPG 还可以向资讯添加一个数码签名,这样,收件人可以验证资讯完整性和发件人。

GnuPG 支持的各种加密算法:

应用程式支持

支持 GPG 的应用程式、前端及浏览器扩展:

参见

参考资料

  1. ^ 1.0 1.1 Release Notes. GnuPG. [2020-02-05]. (原始内容存档于2014-02-09). 
  2. ^ Noteworthy changes in version 2.2.42. 2023年11月28日 [2024年2月22日]. 
  3. ^ 维尔纳·科赫. [Announce] GnuPG 2.4.5 released. 2024年3月12日 [2024年3月12日]. (原始内容存档于2024年3月12日). 
  4. ^ Project, The People of the GnuPG. GnuPG Frequently Asked Questions. www.gnupg.org. 2018-02-14 [2019-05-04]. (原始内容存档于2015-04-29) (英语). 
  5. ^ online, heise. Bundesregierung fördert Open Source. heise online. [2019-05-04]. (原始内容存档于2017-12-22) (德语). 
  6. ^ Germany Awards Grant for Encryption. archive.nytimes.com. [2019-05-04]. (原始内容存档于2018-04-05). 
  7. ^ GnuPG-2.0 released. [2009-05-02]. (原始内容存档于2014-02-14). 
  8. ^ [Announce] The maybe final Beta for GnuPG 2.1. lists.gnupg.org. [2024-05-02]. 
  9. ^ Project, The People of the GnuPG. GnuPG - Related Software. www.gnupg.org. 2017-03-23 [2024-05-02] (英语). 
  10. ^ Koch, Werner. GnuPG 1.4.13 released. Fri Dec 21 12:18:11 CET 2012 [2024-05-02]. 
  11. ^ [Announce] GnuPG 2.1.0 "modern" released. lists.gnupg.org. [2024-05-02]. 
  12. ^ Mac GNU Privacy Guard. SourceForge. [2008-04-29]. (原始内容存档于2017-10-17). 
  13. ^ GPGMail project. GitHub. [2010-07-28]. (原始内容存档于2020-10-30). 
  14. ^ Phong NGUYEN -- Publications. www.di.ens.fr. [2024-05-02]. 
  15. ^ [Announce] GnuPG's ElGamal signing keys compromised. lists.gnupg.org. [2024-05-02]. 
  16. ^ [Announce] False positive signature verification in GnuPG. lists.gnupg.org. [2024-05-02]. 
  17. ^ [Announce] GnuPG does not detect injection of unsigned data. lists.gnupg.org. [2024-05-02]. 
  18. ^ getfiregpg.org. [2015-08-10]. (原始内容存档于2020-05-10). 

外部链接

官方网站  (英文)