🔒 加密筆記 encryption.hk
[]

點樣用GPG加密電郵?完整命令列教學同實例

學習使用GPG命令列工具加密電郵嘅完整指南。從安裝到產生金鑰、加密解密、數位簽署,逐步教學配搭實例操作,確保你嘅通訊隱私安全無虞。

NaN年NaN月NaN日

根據國際資訊安全認證聯盟(ISC)²最新發布嘅2026年網路安全人力研究報告指出,全球有超過67%嘅組織喺過去一年內曾經遭遇電郵資料外洩事件。同時,電子前哨基金會(EFF)嘅調查顯示,採用端到端加密技術嘅電郵通訊比例仍然低於23%。面對日益嚴峻嘅隱私威脅,GPG加密(GNU Privacy Guard)作為一套開源且免費嘅加密工具,可以幫你有效保護電郵內容免受未經授權嘅窺探。本文將帶你由零開始,掌握命令列環境下嘅GPG操作技巧。

GPG加密嘅基本原理

GPG加密採用嘅係非對稱加密架構,亦即係所謂嘅公鑰加密系統。每位使用者會產生一對金鑰:公開金鑰私密金鑰。公開金鑰可以自由分發俾任何人,用嚟加密訊息;私密金鑰則必須妥善保管,用嚟解密訊息同進行數位簽署

當你想傳送一封加密電郵俾朋友時,你需要先用對方嘅公開金鑰將郵件內容加密。加密後嘅訊息變成亂碼,只有持有對應私密金鑰嘅收件人先可以解密還原。呢個機制確保即使電郵喺傳輸過程中被攔截,攻擊者都無法讀取內容。對稱式加密同非對稱式加密嘅結合,令GPG喺安全性同效率之間取得平衡。

安裝GPG命令列工具

絕大多數Linux發行版都預裝咗GPG,你可以透過終端機檢查版本:

gpg --version

如果系統未安裝,可以透過套件管理員快速安裝。喺Debian或Ubuntu系統執行:

sudo apt update && sudo apt install gnupg

喺macOS嘅用戶,建議使用Homebrew安裝最新版本:

brew install gnupg

Windows用戶可以下載Gpg4win套件,安裝後會同時提供命令列工具同圖形介面。安裝完成後,建議即刻編輯~/.gnupg/gpg.conf設定檔,加入use-agentkeyserver hkps://keys.openpgp.org等參數,確保金鑰交換過程使用加密連線。命令列加密工具嘅優勢在於可完全控制加密流程,唔受第三方軟體限制。

產生你嘅GPG金鑰對

執行以下指令開始產生金鑰:

gpg --full-generate-key

系統會詢問幾個關鍵設定。首先選擇金鑰類型,建議揀RSA and RSA(預設值),呢個選項同時支援加密同簽署功能。金鑰長度方面,2026年嘅安全標準建議最少使用4096位元,以抵禦未來量子計算嘅潛在威脅。

接著設定金鑰有效期。你可以選擇永不過期,或者設定一個合理嘅期限,例如兩年。設定有效期係良好嘅安全習慣,因為一旦私鑰遺失或被盜,過期金鑰自動失效可以減少損害。最後輸入你嘅姓名同電郵地址,呢啲資料會綁定金鑰嘅使用者ID,方便其他人辨識。

產生金鑰期間,系統會要求你輸入一組強密碼保護私鑰。呢個密碼係保護私鑰嘅最後防線,務必使用包含大小寫字母、數字同特殊符號嘅複雜組合,長度至少要有16個字元。

管理同分發公開金鑰

金鑰產生完成後,你需要將公開金鑰匯出同分發。使用以下指令匯出ASCII格式嘅公開金鑰:

gpg --armor --export your-email@example.com > public-key.asc

--armor參數會將二進位金鑰轉換成可讀嘅文字格式,方便貼入電郵內文或上傳到金鑰伺服器。你可以將匯出嘅public-key.asc檔案內容直接複製俾通訊對象,或者上傳到公開金鑰伺服器:

gpg --keyserver hkps://keys.openpgp.org --send-keys YOUR_KEY_ID

要加密電郵俾某人,你需要先匯入對方嘅公開金鑰。當收到對方嘅公開金鑰檔案時,執行:

gpg --import friend-public-key.asc

匯入後務必驗證金鑰嘅指紋,確認金鑰真係屬於對方。請對方透過其他安全渠道(例如電話或加密即時通訊)告知金鑰指紋,然後比對:

gpg --fingerprint friend@example.com

比對無誤後,用以下指令簽署對方嘅金鑰,表示你信任呢把金鑰:

gpg --sign-key friend@example.com

呢個信任網絡機制係GPG安全模型嘅核心,透過互相簽署金鑰建立可信任嘅通訊圈。

加密同解密電郵實例

假設你要傳送一封加密電郵俾朋友,先將電郵內容寫入一個文字檔:

echo "聽日三點老地方見,帶埋份合約。" > message.txt

使用對方嘅公開金鑰加密呢個檔案:

gpg --encrypt --armor --recipient friend@example.com message.txt

--recipient參數指定收件人,你可以同時指定多個收件人,GPG會用各自嘅公開金鑰分別加密。執行後會產生message.txt.asc檔案,內容就係加密後嘅密文。你可以直接將呢個檔案嘅內容貼入電郵內文傳送。

當你收到朋友傳嚟嘅加密訊息時,將密文儲存為檔案,然後執行解密:

gpg --decrypt encrypted-message.asc

系統會提示你輸入保護私鑰嘅密碼。解密成功後,原始訊息會顯示喺終端機上。如果你想直接將解密內容儲存為檔案:

gpg --decrypt --output decrypted.txt encrypted-message.asc

公鑰加密實例展示咗整個流程嘅簡潔性,熟習之後,加密解密不過係幾秒鐘嘅事。

數位簽署電郵確保完整性

加密可以保護內容私隱,但無法證明訊息確實由你發出。數位簽署就係用嚟解決呢個問題。簽署訊息時,GPG會用你嘅私鑰產生一個獨特嘅簽章,收件人可以用你嘅公開金鑰驗證簽章,確認訊息未被竄改而且確實出自你手。

單獨簽署一個檔案(唔加密):

gpg --sign --armor message.txt

更常見嘅做法係同時加密同簽署,確保訊息既保密又可以驗證來源:

gpg --encrypt --sign --armor --recipient friend@example.com message.txt

--sign參數會先用你嘅私鑰簽署,再用對方嘅公開金鑰加密。收件人解密時,GPG會自動驗證簽章,如果簽章無效會發出警告。

驗證已簽署嘅檔案:

gpg --verify signed-message.asc

電郵簽署方法喺商業通訊同軟件發布領域尤其重要,例如開源軟件開發者會為發布嘅程式碼簽署,確保用戶下載嘅版本冇被惡意篡改。

進階技巧同日常應用整合

將GPG整合到日常電郵客戶端可以大幅簡化操作流程。MuttNeomutt等終端機電郵客戶端原生支援GPG,你只需喺設定檔加入幾行配置:

set crypt_use_gpgme = yes
set pgp_default_key = "YOUR_KEY_ID"

咁樣當你撰寫郵件時,按快捷鍵就可以自動加密同簽署。對於使用Thunderbird嘅用戶,安裝Enigmail或內建嘅OpenPGP功能,可以喺圖形介面下完成金鑰管理同郵件加密。

定期更新同備份金鑰係良好嘅安全習慣。使用以下指令備份整個GPG設定目錄:

tar -czf gpg-backup-$(date +%Y%m%d).tar.gz ~/.gnupg

同時建議製作一份撤銷憑證,萬一私鑰遺失或被盜,你可以發布撤銷憑證通知所有人該金鑰已經失效:

gpg --gen-revoke your-email@example.com > revoke-cert.asc

將撤銷憑證儲存喺安全嘅離線媒體,例如加密嘅USB手指或印出嚟放喺保險箱。

FAQ

GPG加密同S/MIME有咩分別?邊種更適合電郵加密?

GPG採用信任網絡模型,使用者自行管理金鑰信任關係;S/MIME則依賴憑證授權機構發放數位憑證。GPG完全免費且無需依賴第三方機構,適合個人同小型團隊使用。根據2026年開源安全基金會嘅報告,GPG喺技術社群嘅採用率達到58%,而S/MIME主要喺企業環境使用,採用率約31%。如果你需要完全掌控加密基礎設施,GPG係更靈活嘅選擇。

私鑰密碼忘記咗點算?有冇得還原?

冇得還原。私鑰密碼係用嚟加密儲存私鑰檔案嘅最後防線,GPG本身冇任何後門機制。如果你忘記密碼,該私鑰將永久無法使用,所有用呢把私鑰加密嘅過往訊息都無法解密。呢個就係點解強烈建議製作撤銷憑證同定期備份嘅原因。2024年密碼管理服務Dashlane嘅調查顯示,有11%嘅加密貨幣用戶因為遺失私鑰而永久失去資產,同樣嘅風險適用於GPG私鑰。

金鑰有效期設定幾耐最合適?過期後要點處理?

建議設定1至2年嘅有效期。有效期太短會頻繁需要更新,太長則增加金鑰洩漏風險。金鑰過期前,你可以延長有效期而無需產生新金鑰:

gpg --edit-key your-email@example.com

進入互動模式後輸入expire指令,設定新嘅到期日,然後儲存離開。延長後需要重新發布更新後嘅公開金鑰到金鑰伺服器。如果你決定停用某把金鑰,應該發布撤銷憑證而唔係等佢自然過期。

參考資料

tags: GPG加密教學電郵簽署方法公鑰加密實例命令列加密工具私密通訊