Apple

macOS 使用 GPGTools 與 GPG Mail 對郵件加密、解密、簽章、驗證教學與範例

介紹如何在 macOS 中安裝 GPGTools 與 Free-GPGMail,使用 OpenPGP 加密與簽署郵件。

安裝 GPGTools

在 macOS 中若要使用 GnuPG,可以安裝 GPGTools,其包含了許多實用的工具(例如 GPG Keychain、GPG Services、GPG Suite Preferences 與 MacGPG),對於 macOS 使用者來說會比較方便。

若要安裝 GPGTools,可從 GPGTools 官方網站下載 GPG Suite 的安裝檔後,執行安裝檔案進行安裝。

在 GPG Suite 的安裝檔案中,包含了 GPG Mail 的 30 天試用版,過了 30 天之後若要繼續使用 GPG Mail,就必須購買才能繼續使用,若沒有用到 GPG Mail,可以在安裝完成後,再執行 GPG Suite 附帶的 Uninstall.app 將 GPG Mail 移除。

安裝 Free-GPGMail

GPG Mail 雖然是需要付費的商業軟體,但它的使用授權是開放原始碼的 GPLv3,而 Free-GPGMail 就是一套 GPG Mail 的免費釋出版本,也就是說 Free-GPGMail 與 GPG Mail 是同一套軟體,若不需要商業版的技術支援,其實不需要去購買 GPG Mail,只要安裝免費的 Free-GPGMail 即可,功能完全一樣。
Step 1
安裝 Free-GPGMail 之前,要先開啟終端機的「完全取用磁碟」功能。開啟「系統設定」,選擇「隱私權與安全性」中的「完全取用磁碟」。

開啟終端機的「完全取用磁碟」功能

Step 2
將「終端機」的「完全取用磁碟」功能開啟。

開啟終端機的「完全取用磁碟」功能

Step 3
開啟終端機,即可透過 brew 直接安裝 Free-GPGMail:

# 安裝 Free-GPGMail
brew install --cask free-gpgmail

安裝好 Free-GPGMail 之後,開啟 macOS 中的「郵件(Mail)」應用程式,在打開偏好設定,在「一般」頁籤中點選「管理外掛模組」,勾選「Free-GPGMail」項目,並將「GPGMailLoader」取消。

勾選「Free-GPGMail」,取消「GPGMailLoader」

Step 4
套用並重新啟動「郵件」應用程式之後,就可以使用 Free-GPGMail 的功能了,在偏好設定可以調整 Free-GPGMail 的選項。

Free-GPGMail

產生金鑰

在使用 GnuPG 加密或簽署之前,要先建立一組自己的金鑰。
Step 1
打開 GPG Keychain(這是在安裝 GPGTools 會自動安裝的工具之一),在上方的工具列中點選「New」新增金鑰。

新增金鑰

Step 2
在 Name 與 Email 的欄位填入自己的姓名與電子郵件位址,並設定一組用於保護金鑰的密碼。下方進階選項中可以自訂金鑰的演算法、長度與有效日期。

設定金鑰選項

Step 3
建立金鑰之後,可以考慮將公鑰上傳至金鑰伺服器中,這樣可以方便其他人取的自己的公鑰。

上傳金鑰至金鑰伺服器

數位簽章與加密

金鑰可以分為公鑰與私鑰兩種,公鑰是公開的,而私鑰必須受到保護,在加密郵件時會使用收件者的公鑰進行加密,而收件者則可用自己的私鑰解密,而數位簽章則是寄件者用自己的私鑰進行簽署,而收件者使用寄件者的公鑰驗證數位簽章的有效性。

當我們撰寫郵件時,若寄件者的私鑰有存放於 PGP Keychain 中,郵件就會自動啟用數位簽章功能,以寄件者的私鑰幫郵件郵件加上數位簽章。而如果收件者的公鑰也剛好有在 PGP Keychain 中,加密功能就會自動啟用,我們就可以選擇是否要進行加密,若選擇加密功能,就會使用收件者的公鑰將郵件加密。

使用 OpenPGP 進行郵件的加密與簽章

而當我們收到以 OpenPGP 加密或簽署的郵件,打開郵件時就會自動以 PGP Keychain 中的金鑰進行郵件內容的解密與數位簽章的驗證。

郵件的加密與數位簽章

如果在 GMail 的網頁中,打開以 OpenPGP 加密的郵件,沒有對應的金鑰進行解密,是看不到郵件內容的。

郵件的加密與數位簽章

將郵件內容直接打開,只能看到加密後的密文。

加密的郵件

在實際使用 OpenPGP 進行郵件的加密與簽署之前,除了要產生自己的金鑰之外,還要把自己的公鑰發送給其他人,這樣其他人才能使用自己的公鑰發送加密郵件給自己,同時也才能使用我們的公鑰驗證我們的數位簽章,另一方面,我們也要先取得其他人的公鑰,這樣我們才能發送加密郵件給其他人,以及驗證其他人的數位簽章。

而公鑰的的交換有幾種不同的做法,最簡單的做法就是從 PGP Keychain 中將自己的公鑰匯出成檔案,將這個檔案交給其他人,另一種方式則是將公鑰上傳至金鑰伺服器,而其他人再從金鑰伺服器中搜尋並下載我們的金鑰。

每一把金鑰都會有一個指紋(fingerprint),它是用來幫助我們識別金鑰一串十六進位代碼,在匯入其他人的金鑰時,一定要確認金鑰的指紋是完全正確的,常見的確認方式就是用電話跟對方確認,確保金鑰沒有被他人竄改過。

Share
Published by
Office Guide
Tags: 資訊安全

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago