iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 13
0

應觀眾要求:

lWX5Xaj.png

於是,我們這幾篇(或是一篇)會來講 PGP (Pretty Good Privacy) 的起源和作業原理等等,若有有趣的安全問題等等,也會一起介紹。

何謂夠強的加密方式

世界上有兩種加密算法:一種是防止你的妹妹偷看你的檔案,一種是防止政府單位看你的檔案。
—— Bruce Schneier《應用密碼學》

PGP 主要是做後面那種的。一個加密算法是否足夠強,通常是以需要多少時間和能力去解開那個加密算法來做衡量的。要如何算做強?通常是指,動用地球上的每台機器,也不能在短時間內解開。
不過,就像神會一個一個摔下神壇,加密算法也有可能因為某天被人找出漏洞,所以被捨棄。但直到今天,PGP 仍是我們已知最好的算法之一。

當初 Snowden 傳資料給記者,即是先請記者用 PGP 後才傳給他的。

PGP? GnuPG?

首先介紹一下,PGP 是一個能夠以密碼學的方式來提供資料加密與認證的程式。PGP 能夠用來做數位簽章、加密、解密等等。
由於 PGP 是一位美國公民寫的,而且 PGP 寫的太好了,所以受到美國相關出口法規的限制(註:PGP 定義上算是軍火)。不過,由於出口法規沒有說不能出口 "標準",所以 PGP 另外寫了一套標準叫做 OpenPGP,別人再依據這套標準開發,所以才有 GnuPG。

PGP 基本上使用了以下方式的組合:

  • 雜湊值 (hash)
  • 壓縮
  • 對稱加密
  • 公鑰加密,這個在 HTTPS 的 Diffie-Hellman 那邊有講到。

一層串一層,各自有各自的算法。因為採取了很多種組合,所以 PGP 是 混合的密碼學系統

PGP 各種用途的原理

前述提到,PGP 能夠做數位簽章等等,其原理與 HTTPS 那邊的作法是類似的。

加密流程

當一方想要用 PGP 做加密時,PGP 會先將明文給做壓縮。這樣有幾個好處:

  1. 檔案變小,傳輸速度變快
  2. 某方面上可以避免字詞分析攻擊,透過字詞的頻率來做文本分析

再來,PGP 會產生一把一次性的金鑰。這個金鑰是隨機產生的。接下來會發生兩件事情:

  1. 將這把金鑰當作把明文加密的基礎,拿去把明文先轉成密文
  2. 把這把金鑰和對方的公鑰一起加密,然後和上述已加密過的密文放在一起

這時候,你就會拿到一組金鑰(第二步的結果)和密文(第一步的結果)

解密流程

解密流程,基本上就是將加密流程反過來。
首先,接收方要準備好他的私鑰。先用私鑰解出加密第二步驟裡面的金鑰,然後再用那把金鑰去解開密文。

由此可見,PGP 同時結合了非對稱是加密和對稱式加密的優點。

簽署


前面提到,PGP 也能將一個訊息做簽署的動作。將一個訊息做簽署,通常能夠保證:

  • 訊息在傳輸過程中,沒有被竄改(因為竄改了,簽章就會失效)
  • 能夠保證訊息的來源是真實的

這是一個大家電腦算力都強的年代,就算是拍影片,也都不能證明你的真實性了(CycleGAN)。 幸好 PGP 認證身份不是看臉,是用密碼學的方式去證明你的身份。

PGP 做訊息簽署,大致上是這樣的:

  1. 和加密一樣,但是是拿發文者的私鑰去做簽署
  2. 解開時,是拿發文者的公鑰去解開

由於公鑰和私鑰是成對的,所以,這種狀況下,若是有人意圖抹消發文者的身份,或是幫他放一個假的公鑰,那麼,原本發過的訊息就會解不開。相對來說,若發文者的訊息遭到竄改,那則訊息也會直接解不開。

PGP 不能保護的事情

最後,必須要說:PGP 不是完美。它不能防止一些不存在它設計範圍中的事情發生。

例如:


上一篇
BGP Hijacking: 常見受到 BGP 狹持影響的服務及目前的防禦方式
下一篇
你的軟體是否足夠安全?談「軟體」的安全,以 CVE-2017-5638 (Struts2) 為例
系列文
網路安全概述31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
陳董 Don
iT邦新手 5 級 ‧ 2018-01-01 17:57:09

能學東西還有漫畫看真棒~

我要留言

立即登入留言