應觀眾要求:
於是,我們這幾篇(或是一篇)會來講 PGP (Pretty Good Privacy) 的起源和作業原理等等,若有有趣的安全問題等等,也會一起介紹。
世界上有兩種加密算法:一種是防止你的妹妹偷看你的檔案,一種是防止政府單位看你的檔案。
—— Bruce Schneier《應用密碼學》
PGP 主要是做後面那種的。一個加密算法是否足夠強,通常是以需要多少時間和能力去解開那個加密算法來做衡量的。要如何算做強?通常是指,動用地球上的每台機器,也不能在短時間內解開。
不過,就像神會一個一個摔下神壇,加密算法也有可能因為某天被人找出漏洞,所以被捨棄。但直到今天,PGP 仍是我們已知最好的算法之一。
當初 Snowden 傳資料給記者,即是先請記者用 PGP 後才傳給他的。
首先介紹一下,PGP 是一個能夠以密碼學的方式來提供資料加密與認證的程式。PGP 能夠用來做數位簽章、加密、解密等等。
由於 PGP 是一位美國公民寫的,而且 PGP 寫的太好了,所以受到美國相關出口法規的限制(註:PGP 定義上算是軍火)。不過,由於出口法規沒有說不能出口 "標準",所以 PGP 另外寫了一套標準叫做 OpenPGP,別人再依據這套標準開發,所以才有 GnuPG。
PGP 基本上使用了以下方式的組合:
一層串一層,各自有各自的算法。因為採取了很多種組合,所以 PGP 是 混合的密碼學系統。
前述提到,PGP 能夠做數位簽章等等,其原理與 HTTPS 那邊的作法是類似的。
當一方想要用 PGP 做加密時,PGP 會先將明文給做壓縮。這樣有幾個好處:
再來,PGP 會產生一把一次性的金鑰。這個金鑰是隨機產生的。接下來會發生兩件事情:
這時候,你就會拿到一組金鑰(第二步的結果)和密文(第一步的結果)
解密流程,基本上就是將加密流程反過來。
首先,接收方要準備好他的私鑰。先用私鑰解出加密第二步驟裡面的金鑰,然後再用那把金鑰去解開密文。
由此可見,PGP 同時結合了非對稱是加密和對稱式加密的優點。
前面提到,PGP 也能將一個訊息做簽署的動作。將一個訊息做簽署,通常能夠保證:
這是一個大家電腦算力都強的年代,就算是拍影片,也都不能證明你的真實性了(CycleGAN)。 幸好 PGP 認證身份不是看臉,是用密碼學的方式去證明你的身份。
PGP 做訊息簽署,大致上是這樣的:
由於公鑰和私鑰是成對的,所以,這種狀況下,若是有人意圖抹消發文者的身份,或是幫他放一個假的公鑰,那麼,原本發過的訊息就會解不開。相對來說,若發文者的訊息遭到竄改,那則訊息也會直接解不開。
最後,必須要說:PGP 不是完美。它不能防止一些不存在它設計範圍中的事情發生。
例如: