Aller au contenu principal

GnuPG


GnuPG


GNU Privacy GuardGnuPGGPG)是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。GnuPG 是自由软件,遵循 IETF 訂定的 OpenPGP 技術標準設計,并与 PGP 保持兼容。

GnuPG 是自由軟件基金會的 GNU 計劃的一部份,曾受德國政府資助。

歷史

GnuPG 的早期版本由維爾納·科赫开发,经过近两年迭代后于1999年9月7日正式发布1.0.0版。软件实现遵循 OpenPGP 标准,兼容菲爾·齊默爾曼开发的 PGP。2000年,德國聯邦經濟及科技部資助了31.8万马克,用于移植 GnuPG 到 Microsoft Windows。

德国政府于2005年资助开发 S/MIME。GnuPG 2.0 於2006年11月13日發佈加入了,S/MIME。因為 GnuPG 2.0 的新的軟件架構不支援某些用途,所以 1.x 與 2.0 是兩個分支版本。此外 GnuPG 1.x 使用了一个集成的加密库,而 GnuPG 2.x 则用 Libgcrypt 取代了加密库。

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

很长一段时间,它都不支持 PGP 中使用的 IDEA 加密算法。事实上,可以通过下载其插件在 GnuPG 中使用 IDEA,但是,在 IDEA 获得专利的国家中,某些用途可能需要获得许可。从 1.4.13 版和 2.0.20 版开始,GnuPG 支持 IDEA,因为 IDEA 的最后一个专利于 2012 年到期。对 IDEA 的支持旨在“摆脱所有试图解密旧数据或将密钥从 PGP 迁移到 GnuPG 的人的问题”,因此不建议常规使用。

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

使用

虽然基本的 GnuPG 程序有一个命令行界面,仍然存在许多提供图形用户界面的前端。例如 GnuPG 加密被集成进了 Linux 裡流行的桌面环境 KDE 和 GNOME 裡的图形化電子郵件用戶端:KMail 和 Novell Evolution。也有 GnuPG 的图形化前端(GNOME 裡的 Seahorse,KDE 裡的 KGpg 和 Kleopatra)。在 Mac OS X 上,Mac GPG 项目提供 Aqua 作为操作系统集成的加密前端和密钥管理器和 GnuPG 安装一样通过 Installer packages 进行安装。此外,GPGMail 项目可以使 Apple Mail 使用 GnuPG 加密。即时通信(IM)程序,例如,当 GnuPG 已经安装并配置好时,Psi 和 Fire 可以自动安全的传递消息。像 Horde 这类基于互联网的软件也可以使用 GnuPG。跨平台插件 Enigmail 为 Mozilla Thunderbird 和 SeaMonkey 提供了 GnuPG 支持。类似的,Enigform和 FireGPG 为 Mozilla Firefox 提供了 GnuPG 支持。Mailvelope 为在浏览器中使用 GnuPG 操作电子邮件提供了支持。

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

漏洞

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

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

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

過程

GnuPG 使用使用者自行生成的非對稱密鑰對來加密信息,由此產生的公鑰可以同其他使用者以各種方式交換,如密鑰伺服器。他們必須小心交換密鑰,以防止得到偽造的密鑰。GnuPG 還可以向信息添加一個數位簽名,這樣,收件人可以驗證信息完整性和發件人。

GnuPG 支援的各種加密算法:

  • 對稱加密:CAST5、Camellia、Triple DES、AES、Blowfish、Twofish、ChaCha20、IDEA (从 1.4.13 和 2.0.20 开始被添加)
  • 非對稱加密:ElGamal、RSA、DSA、ECDSA、EdDSA
  • 密码散列函数:RIPEMD-160、MD5、SHA-1、SHA-2、Tiger
  • 數字簽名:DSA、RSA、ECDSA、EdDSA

應用程式支援

支援 GPG 的應用程式、前端及瀏覽器擴充套件:

Giuseppe Zanotti Luxury Sneakers

參見

  • PGP
  • 加密技術
  • 密碼學

參考資料

外部連結

官方网站 (英文)


Text submitted to CC-BY-SA license. Source: GnuPG by Wikipedia (Historical)