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). 

外部連結

官方網站  (英文)