萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

PGP 郵件加密完整指南:從公開金鑰體系到實戰操作與金鑰管理

為什麼需要郵件加密?

電子郵件傳輸過程經過多個郵件伺服器 (MTA),預設為明文傳遞 (SMTP 無加密)。任何掌握網路節點 (ISP、企業閘道、公共 Wi-Fi) 的人都可攔截、閱讀、竄改郵件內容。加密是保護通訊機密性、完整性、不可否認性的唯一有效手段。

公開金鑰加密體系 (PKI) 基礎

  • 金鑰對: 每位使用者擁有一對非對稱金鑰 — 公開金鑰 (可公開發布) 與 私有金鑰 (絕對保密,受密語保護)。
  • 加密/解密: 公開鑰加密 → 僅對應私鑰可解密 (機密性)。私鑰加密 (簽名) → 公開鑰驗證 (完整性/不可否認性)。
  • 金鑰分發: 公開鑰可透過金鑰伺服器 (keyserver.ubuntu.com、pgp.mit.edu)、個人網頁、郵件簽名、名片交換。私鑰絕不離開持有者控制環境。

常見加密演算法比較

PGP 混合加密流程 (鏈式加密)

  1. 發送端產生隨機 會話金鑰 (Session Key) (每次郵件不同)。
  2. 使用會話金鑰 + 對稱演算法 (IDEA/AES) 加密郵件明文 → 密文。
  3. 使用接收者 公開金鑰 + RSA 加密會話金鑰 → 加密會話金鑰封包。
  4. 發送:密文 + 加密會話金鑰封包 (+ 發送者私鑰簽名)。
  5. 接收端:私鑰 RSA 解密會話金鑰 → 會話金鑰對稱解密郵件本體 → 驗證發送者簽名。

優勢: 兼具 RSA 非對稱金鑰管理便利性與對稱加密高速度,完美解決大量資料加密效能問題。

PGP 核心功能

  • 郵件/檔案加密: 防止非授權閱讀。
  • 數位簽名: 證明發送者身分、保證內容未竄改 (可僅簽名不加密,適用公開聲明)。
  • 檔案加密: 任意二進位檔案 (圖片、音訊、文件、壓縮包)。
  • RADIX-64 (Base64) 編碼: 將二進位加密輸出轉為純文字,適配郵件/Usenet 傳輸。
  • 壓縮再加密: 內建 PKZIP (ZLIB) 壓縮明文再加密,減小體積、增加密文熵值、提升抗已知明文攻擊能力。

金鑰管理體系:信任鏈與金鑰伺服器

金鑰環

本地資料庫 (pubring.gpg, secring.gpg 或 GnuPG 2.1+ 的 pubring.kbx) 儲存:自身金鑰對、信任者的公開金鑰、信任度設定、簽名記錄、過期/撤銷資訊。

信任模型:信任網絡

  • 無中央 CA,採用 去中心化信任網絡:你信任 A 的公開金鑰屬於 A (親自驗證指紋) → 簽署 A 的公開金鑰 → 你信任 A 的簽署判斷 → A 簽署 B 的公開金鑰 → 你間接信任 B 的公開金鑰。
  • 信任等級:Unknown、Marginal (邊際信任)、Full (完全信任)、Ultimate (終極信任,僅限自身金鑰)。

金鑰生命週期管理

  1. 生成: 選擇 RSA 4096-bit (或 ECC Curve25519)、設定有效期 (建議 1-2 年)、設定強密語保護私鑰。
  2. 發布: 上傳公開金鑰至金鑰伺服器、張貼於個人網站、附加於郵件簽名。
  3. 撤銷: 私鑰洩露/遺失/演算法淘汰時,產生撤銷憑證 並發布至金鑰伺服器,告知世界該金鑰不再可信。**撤銷憑證必須在生成金鑰時預先製作並妥善保管 (離線儲存)**。
  4. 過期續簽: 到期前延長有效期並重新發布;或生成新金鑰對並交叉簽署平滑遷移。

實戰操作:GnuPG (GPG) 命令列範例

# 1. 生成金鑰對
gpg --full-generate-key
# 選擇 RSA/RSA 4096-bit,有效期 2y,輸入真實姓名/信箱,設定強密語

# 2. 列出金鑰
gpg --list-keys
gpg --list-secret-keys

# 3. 匯出公開金鑰 (ASCII armored)
gpg --armor --export "Your Name" > mypubkey.asc

# 4. 匯入他人公開金鑰
gpg --import theirpubkey.asc
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys KEYID

# 5. 簽署他人金鑰 (驗證指紋後)
gpg --sign-key KEYID
gpg --send-keys KEYID  # 將簽名推送至金鑰伺服器

# 6. 加密郵件/檔案給接收者
gpg --encrypt --armor --recipient "Recipient Name" --sign --output msg.asc msg.txt

# 7. 解密/驗證
gpg --decrypt --output msg.txt msg.asc

# 8. 僅簽名 (不加密)
gpg --clearsign --output msg.txt.asc msg.txt

# 9. 產生撤銷憑證 (生成金鑰後立即執行並離線保存)
gpg --gen-revoke "Your Name" > revoke.asc

金鑰與密語安全性鐵律

  • 密語 ≠ 密碼: 可包含空格、標點、多單詞片語 (Passphrase),長度 ≥ 20 字元,熵值極高 (如 Correct-Horse-Battery-Staple-2024!)。
  • 私鑰檔案 (secring.gpg 或 private-keys-v1.d/) 必須加密儲存,備份至離線加密 USB、紙本 QR Code (paperkey)、硬體安全模組 (YubiHSM、Nitrokey)。
  • 防範惡意軟體竊取: 使用硬體金鑰 (OpenPGP Card、YubiKey、Nitrokey) 簽名/解密,私鑰永不進入主機記憶體。

結語

PGP/OpenPGP 以混合加密、信任網絡、去中心化金鑰管理 三大支柱,構建了經得起時間考驗的郵件加密標準。雖然易用性曾為普及障礙,但現代工具 (GnuPG + Enigmail/Thunderbird、OutlookGpg、Mailvelope、ProtonMail、FlowCrypt) 已大幅降低門檻。掌握金鑰生成、驗證指紋、備份撤銷憑證、硬體金鑰隔離私鑰 核心技能,你就擁有了在數位世界中真正屬於自己的「密語特權」。

copyright © 萬盛學電腦網 all rights reserved
演算法類型特點PGP 中角色
RSA非對稱基於大整數質因數分解困難性;運算慢,適合加密小資料 (金鑰、雜湊值)金鑰加密/數位簽名核心
IDEA對稱128-bit 區塊加密,速度快、安全性高,PGP 早期預設演算法郵件本體加密 (會話金鑰)
CAST5 / AES / Twofish對稱現代 PGP (GPG) 預設改用 AES-256,更高效、無專利限制郵件本體加密 (會話金鑰)
MD5 / SHA-1 / SHA-256雜湊產生訊息摘要,配合私鑰簽名實現完整性驗證數位簽名雜湊演算法