電子郵件傳輸過程經過多個郵件伺服器 (MTA),預設為明文傳遞 (SMTP 無加密)。任何掌握網路節點 (ISP、企業閘道、公共 Wi-Fi) 的人都可攔截、閱讀、竄改郵件內容。加密是保護通訊機密性、完整性、不可否認性的唯一有效手段。
| 演算法 | 類型 | 特點 | PGP 中角色 |
| RSA | 非對稱 | 基於大整數質因數分解困難性;運算慢,適合加密小資料 (金鑰、雜湊值) | 金鑰加密/數位簽名核心 |
| IDEA | 對稱 | 128-bit 區塊加密,速度快、安全性高,PGP 早期預設演算法 | 郵件本體加密 (會話金鑰) |
| CAST5 / AES / Twofish | 對稱 | 現代 PGP (GPG) 預設改用 AES-256,更高效、無專利限制 | 郵件本體加密 (會話金鑰) |
| MD5 / SHA-1 / SHA-256 | 雜湊 | 產生訊息摘要,配合私鑰簽名實現完整性驗證 | 數位簽名雜湊演算法 |
PGP 混合加密流程 (鏈式加密)
- 發送端產生隨機 會話金鑰 (Session Key) (每次郵件不同)。
- 使用會話金鑰 + 對稱演算法 (IDEA/AES) 加密郵件明文 → 密文。
- 使用接收者 公開金鑰 + RSA 加密會話金鑰 → 加密會話金鑰封包。
- 發送:密文 + 加密會話金鑰封包 (+ 發送者私鑰簽名)。
- 接收端:私鑰 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 (終極信任,僅限自身金鑰)。
金鑰生命週期管理
- 生成: 選擇 RSA 4096-bit (或 ECC Curve25519)、設定有效期 (建議 1-2 年)、設定強密語保護私鑰。
- 發布: 上傳公開金鑰至金鑰伺服器、張貼於個人網站、附加於郵件簽名。
- 撤銷: 私鑰洩露/遺失/演算法淘汰時,產生撤銷憑證 並發布至金鑰伺服器,告知世界該金鑰不再可信。**撤銷憑證必須在生成金鑰時預先製作並妥善保管 (離線儲存)**。
- 過期續簽: 到期前延長有效期並重新發布;或生成新金鑰對並交叉簽署平滑遷移。
實戰操作: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