文章列表

EP46 - Pretty Good Privacy|蠻好的隱私?

Podcast 連結


什麼是 PGP?

PGP(Pretty Good Privacy)在 1991 年由 Phil Zimmermann 開發的一款加密工具,他可以被用來加密文字、email、檔案以及用來進行數位簽章。

Phil Zimmermann 希望讓所有想要可以安全的傳送訊息的人都可以有一個安全的工具來保護自己,因此開發了 PGP,並把程式跟原始碼免費提供給所有非商業用途的人。

後來 Phil Zimmermann 跟幾位夥伴為了 PGP 成立了一家公司,這家公司也在接下來的幾年間被幾家不同的公司收購跟轉手,在這些過程中 PGP 變成了一套需要付費購買才能用的私人的軟體。

Phil Zimmermann 跟夥伴在成立了公司不久之後就與專門制定開放標準的組織 IETF 一起推出了一套以 PGP 為基礎的標準,這套標準叫做OpenPGP。只要是遵守這套標準,任何人都可以寫出跟 PGP 通用的軟體,換句話說就是即使 PGP 現在是一套付費的軟體,他的技術已經被公開讓大家都可以使用了。

現在被最廣泛使用的一套遵守 OpenPGP 軟體是免費和開源的 GnuPG(簡稱 GPG)

PGP_example

圖:使用 PGP 加密的訊息

有趣的小故事

Phil Zimmermann 在 1993 年被美國政府調查,原因是根據美國出口管理法案中的定義像是 PGP 這類型的加密系統會被認為是軍用品,而 Phil Zimmermann 在網路上免費提供 PGP 的過程中,PGP 有被分享到美國以外的網站上,因此 Phil Zimmermann 可以算是非法出口軍用品。

後來 Phil Zimmermann 用了一個很有趣的方式應對,他把 PGP 的原始碼完整的寫成一本書再把這本書出版並且銷售到世界各地。根據美國憲法第一修正案中規定,因為言論自由的關係,美國政府不能管制書本的出口,因此利用這種方式就可以把原本不能公開分享的 PGP 變成可以被合法出口的產品了。任何拿到這本書的人只要把書中的程式碼透過一些免費公開的軟體編譯過就可以執行了。

PGP 的應用實例

Edward Snowden 曾經為美國的中央情報局 CIA 和國家安全局 NSA 工作過,他在 2013 年向媒體揭發了美國國安局的網路監視監聽計畫,在這之後,Snowden 就被美國和英國政府通緝,而直到今天,Snowden 仍然在俄羅斯流亡。當年 Snowden 為了確保安全性也為了避免走漏風聲,就特別跟媒體記者要求要使用一款叫做 PGP 的加密軟體。事後證明使用 PGP 保護 email,是連美國國安局都無法破解跟知道 email 內容的。

PGP_edwardsnowden

PGP 運作原理

前情提要:密碼學對稱式加密非對稱式加密/公開金鑰

透過結合對稱式與非對稱式的兩種加密方法 PGP 可以做到安全性與效率。

非對稱式演算法的速度通常比較慢,因此檔案大小通常比較大的訊息本體我們就交給加密速度比較快的對稱式加密。

使用對稱式加密時,金鑰不知道怎麼安全的交給收件者的這個問題,就交給非對稱式加密來解決。

這些過程中使用者是可以選擇要用哪一種對稱式加密跟非對稱式加密,最多人用的 GPG 就支援了超過六種不同的非對稱式加密演算法跟對稱式加密演算法。

透過 PGP 加密訊息

PGP_encrypt

  1. 生成一組一次性的金鑰(用來透過對稱式加密來加密訊息)
  2. 用朋友的公鑰透過非對稱式加密剛剛的一次性金鑰
  3. 要將加密後的訊息、加密後的金鑰兩個一起傳給收件者

透過 PGP 解密訊息

PGP_decrypt

  1. 收件者透過自己有的私鑰解密被加密的金鑰
  2. 利用這把金鑰,透過對稱式加密的方式把被我們加密的訊息解密

透過 PGP 進行數位簽章

複習:數位簽章 Digital Signature

PGP 透過非對稱式加密來做到簽章

假設我今天想要透過 PGP 來簽署一則要給朋友的訊息,我會把訊息用我的私鑰加密,接著把加密以後的內容連同沒有加密的訊息兩個一起寄給朋友。

當朋友收到想要確認這是不是真的是我傳的訊息的時候,可以透過我的公鑰把加密的訊息解密,接著拿解密以後的內容比對他收到沒有加密的訊息。

因為我的私鑰應該只有我有,因此如果可以成功用我的公鑰把訊息解密,而且解密以後的內容跟沒有加密的內容互相吻合的話,就代表這個訊息真的是我傳的。

金鑰伺服器 Keyserver

為了解決金鑰傳遞的問題,一些比較有公信力的組織架設了金鑰伺服器,這些金鑰伺服器就像一個個的資料庫,儲存了很多使用者的公開金鑰。

當我們使用 PGP 的時候,可以把自己的公開金鑰和一些像是姓名、Email 等等的資料上傳到這些金鑰伺服器。

如果我們要傳訊息給一個不認識的人的話,我們就可以到這些金鑰伺服器上面搜尋他的名字或是 Email,看看上面有沒有他的公開金鑰,如果有的話我們就可以用那些資訊來加密要傳送給他的訊息。

金鑰保管的問題

我們前面有提到 PGP 的加密解密和數位簽章都會用到我們的公鑰和私鑰,有時候還會用到收件者的公鑰,那麼在管理金鑰上就是很重要的一件事了。

如果遺失了私鑰,我們就會沒有辦法解密任何傳送給我們的訊息,也會沒有辦法繼續進行數位簽章了。

如果私鑰被駭客竊取,駭客就會有辦法解密過去我們收到的每一則訊息,而且還可以假冒我們的名義傳送訊息或是進行數位簽章。

當上述的情況發生,我們都會需要產生一對新的公鑰和私鑰,並撤銷我們原本在用的金鑰。我們也會需要透過金鑰伺服器,來讓其他人知道不要再繼續使用舊的金鑰了,要改成用新的。

現在的主流 Email 服務都沒有內建 PGP 的功能,這些種種的因素都讓 PGP 不是那麼容易的可以被大眾使用。

Mailvelope

一款採用 OpenPGP 標準的開放原始碼軟體,提供一般非商業的用戶免費使用。

他可以透過瀏覽器擴充套件的形式跟 Gmail 整合,讓我們可以簡單地用 Gmail 來傳送被 PGP 加密或是簽署的 Email。

教學連結:Mailvelope 使用教學

發佈於 2021年5月9日

資安解壓縮網站內容除特別註記外皆以CC BY-SA 4.0方式授權
對於這個節目有什麼想法,或想要聽什麼內容都歡迎到聯絡資訊告訴我們