什麼是 PGP?Pretty Good Privacy 加密完整指南
什麼是 PGP 加密?
PGP(Pretty Good Privacy)是一個為資料通訊提供隱私保護和密碼學驗證的加密程式。PGP 加密使用對稱金鑰密碼學和公開金鑰密碼學的組合,讓使用者能夠加密訊息、檔案和其他資料,使得只有預期的收件人才能讀取。PGP 最初由 Phil Zimmermann 於 1991 年創建,現已成為全球使用最廣泛的電子郵件加密標準,並構成 OpenPGP 規範(RFC 4880)的基礎。無論您需要發送機密電子郵件、驗證軟體發布者的身份,還是保護敏感檔案,PGP 都提供了一個經過驗證的密碼學框架,受到記者、資安研究人員、政府和日常使用者的信賴。
如果您想立即嘗試 PGP 加密而無需安裝軟體,KeychainPGP 提供一個完全在瀏覽器中運行的線上 PGP 工具。
PGP 的歷史
Phil Zimmermann 於 1991 年 6 月發布了 PGP 1.0 作為免費軟體,他深信強大的密碼學應該讓所有公民都能使用 — 而不僅限於政府和軍方。當時,強加密被美國出口管制法規歸類為軍需品,Zimmermann 因在國際間分發 PGP 而遭到美國海關署長達三年的刑事調查。調查最終於 1996 年撤銷而未提起公訴,此案成為數位自由歷史上的里程碑事件。
PGP 經歷了多次商業化變遷。Zimmermann 於 1996 年創立 PGP Inc.,該公司於 1997 年被 Network Associates(後來的 McAfee)收購,最終於 2010 年被 Symantec 收購。在這些轉手過程中,底層的密碼學協議已經以 OpenPGP 的名義由網際網路工程任務組(IETF)標準化,確保該協議在不受商業所有權影響的情況下保持開放和互通。
OpenPGP 標準的發布意味著任何人都可以建立相容的實作。這促成了 GNU Privacy Guard(GnuPG 或 GPG)的誕生,一個自由開源的實作,至今仍是使用最廣泛的 PGP 工具之一。要了解這些實作之間的差異,請參閱我們的 PGP vs GPG 指南。
PGP 加密如何運作
PGP 加密依賴於多種密碼學技術的精密組合。PGP 並非使用單一方法,而是採用混合加密模型,結合對稱加密的速度優勢和非對稱(公開金鑰)加密的金鑰分發優勢。
公開金鑰密碼學
PGP 的核心是公開金鑰密碼學,也稱為非對稱密碼學。每個 PGP 使用者會產生一個由兩把數學相關金鑰組成的金鑰對:
- 公開金鑰 — 公開分享給任何人。他人使用此金鑰來加密發給您的訊息以及驗證您的數位簽章。
- 私密金鑰(又稱秘密金鑰)— 嚴格保密。您使用此金鑰來解密收到的訊息以及建立數位簽章。
此系統的基本特性是:以公開金鑰加密的資料只能用對應的私密金鑰解密,反之亦然。這消除了通訊雙方在進行私密通訊前需要傳遞共用秘密的需求。
混合加密模型
雖然公開金鑰密碼學解決了金鑰分發問題,但像 RSA 這樣的非對稱演算法在加密大量資料時計算成本很高。PGP 透過混合方式解決此問題:
- 會話金鑰產生 — PGP 為每則訊息產生一個隨機且唯一的對稱會話金鑰(通常為 128 或 256 位元)。
- 資料加密 — 訊息內容使用快速的對稱加密演算法(如 AES-256)以會話金鑰加密。
- 會話金鑰加密 — 會話金鑰本身接著使用收件人的公開金鑰加密(非對稱操作)。
- 封裝 — 加密後的訊息和加密後的會話金鑰被打包在一起發送給收件人。
當收件人收到訊息時,過程反向進行:使用其私密金鑰解密會話金鑰,然後使用解密後的會話金鑰來解密訊息內容。
PGP 數位簽章
除了加密之外,PGP 還提供數位簽章,履行兩項關鍵功能:驗證(證明訊息是誰發送的)和完整性(證明訊息在傳輸過程中未被篡改)。
簽章過程如下:
- PGP 使用 SHA-256 或 SHA-512 等演算法計算訊息內容的密碼學雜湊值(固定長度的摘要)。
- 該雜湊值接著使用發送者的私密金鑰加密,產生數位簽章。
- 簽章附加到訊息上。
任何收件人都可以驗證簽章:使用發送者的公開金鑰解密簽章以取得原始雜湊值,獨立計算收到訊息的雜湊值,然後比較兩個雜湊值。如果匹配,則訊息是真實且未被修改的。
OpenPGP 標準
OpenPGP 是定義 PGP 相容軟體所使用的訊息格式、演算法和程序的開放標準。它本身不是軟體產品,而是任何開發者都可以實作的規範。
關鍵參考文件包括:
- RFC 4880(2007 年 11 月)— 現行的 OpenPGP 訊息格式主要規範。
- RFC 6637(2012 年 6 月)— 擴展 OpenPGP 以支援橢圓曲線密碼學(ECC)。
- RFC 9580(2024 年)— 最新修訂版,以強制支援 Ed25519/X25519、AEAD 加密模式和改進的金鑰指紋來現代化標準。
OpenPGP 確保互通性:使用 KeychainPGP 加密的訊息可以被 GnuPG、Mailvelope 或任何其他符合標準的實作解密。
信任網路
PGP 的一個顯著特徵是其去中心化的信任網路(Web of Trust)模型,用於建立公開金鑰的真實性。與 TLS/SSL 使用的中心化憑證授權(CA)模型不同,PGP 允許使用者之間相互擔保。
信任網路透過金鑰簽署運作:當您驗證了某人的身份並確認他們控制特定的公開金鑰時,您用自己的金鑰簽署他們的金鑰。這個簽章是一個公開聲明,表示您相信該金鑰確實屬於它所聲稱代表的人。
像 KeychainPGP 這樣的工具透過直覺化介面簡化了此過程,讓使用者可以直接操作金鑰,並使用剪貼簿加密輕鬆分享加密訊息和公開金鑰。
PGP 演算法與金鑰類型
PGP 支援一系列隨著密碼學領域進展而演進的密碼學演算法。
經典演算法
- RSA(Rivest-Shamir-Adleman) — PGP 歷史上部署最廣泛的非對稱演算法。2048 位元的 RSA 金鑰被認為是當前的最低安全要求,建議使用 4096 位元金鑰以獲得長期保護。
- DSA(Digital Signature Algorithm) — 用於簽章,與 ElGamal 結合進行加密。目前已較少使用。
- AES(Advanced Encryption Standard) — 用於加密訊息內容的主流對稱加密演算法。支援 AES-128 和 AES-256。
- SHA-2(SHA-256、SHA-384、SHA-512) — 用於數位簽章中摘要計算的密碼學雜湊函數。
現代演算法
最新一代的 OpenPGP 實作支援橢圓曲線密碼學(ECC),以顯著更小的金鑰大小提供與 RSA 同等的安全性:
- Ed25519 — 基於 Curve25519 的數位簽章演算法。產生快速且精簡的簽章。在 RFC 9580 中推薦使用。
- X25519(Curve25519 ECDH) — 用於金鑰交換(加密)。以優異的效能提供強大的安全特性。
- NIST P-256 / P-384 / P-521 — NIST 標準化的橢圓曲線。OpenPGP 支援但通常不如基於 Curve25519 的演算法受青睞。
像 KeychainPGP 這樣的現代工具支援這些當代演算法,使得使用 Ed25519 和 X25519 產生金鑰變得簡單直接。
PGP 常見使用情境
- 安全電子郵件 — 最早且最知名的使用情境。PGP 可加密電子郵件內容並簽署訊息以證明真實性。
- 檔案加密 — PGP 可加密單一檔案或整個封存檔,用於安全儲存或傳輸。
- 軟體驗證 — 開源專案定期使用 PGP 金鑰簽署其發布版本。使用者可以驗證這些簽章以確認下載的真實性。
- 安全通訊 — PGP 可用於加密任何文字訊息,在不提供端對端加密的平台上特別有用。
- 身份驗證 — PGP 金鑰指紋可作為可驗證的數位身份。GitHub 上的開發者可以使用 PGP 簽署其 commit。
- 文件簽署 — 法律工作流程有時使用 PGP 簽章來建立不可否認性。
今日的 PGP
在問世超過三十年後,PGP 仍然是最重要的密碼學工具之一。OpenPGP 標準持續演進,RFC 9580 引入了重大現代化改進,包括強制支援現代橢圓曲線演算法和 AEAD 加密模式。
PGP 工具生態系統已大幅豐富。GnuPG 仍然是命令列使用的參考實作。像 KeychainPGP 這樣的現代工具提供原生桌面應用程式(Windows、macOS、Linux)、Android 應用程式、用於腳本的 CLI 和瀏覽器內網頁應用程式 — 全部建構在相同的 Rust Sequoia-PGP 引擎上。
開始使用 PGP
準備好開始使用 PGP 加密了嗎?以下是最佳的下一步:
- 在瀏覽器中嘗試 — 使用 KeychainPGP 的線上 PGP 工具來產生金鑰對、加密訊息或驗證簽章,無需安裝任何東西。
- 閱讀入門指南 — 如果您是密碼學新手,我們的 PGP 入門指南將逐步帶您上手。
- 學習實務工作流程 — 我們的如何使用 PGP 指南涵蓋金鑰產生、加密和解密、金鑰鏈管理及最佳實踐。
- 了解剪貼簿加密 — 探索 PGP 剪貼簿加密,直接從剪貼簿加密和解密文字。
- 認識工具 — 了解 PGP 和 GPG 之間的差異,為您的工作流程選擇合適的工具。
PGP 加密已保護敏感通訊超過三十年。借助現代工具和標準,它比以往更容易使用。