2008/02/15

[Linux] PGP 流程及說明

先來說明一下在網路上面傳遞訊息最怕的問題是什麼:

  1. 明文傳遞的訊息內文很容易藉由各種方式取得,像是 sniffer 之類的的。

  2. 網路上的訊息難以驗證它的真實性

  3. 既使上面兩點都忽略,也難以保證這個訊息沒有被竄改過。



因為上述三點原因,所以我們通常不會在網路上面用 msn 討論重要的事情, msn 的內文傳遞沒有加密,很容易用 sniffer 就截聽下來。然而,既使是用 ssl 方式傳遞訊息,如果全程被監聽,且加密程序不夠複雜,也還是會在時間內被破解訊息。更不用說,在使用無線網路的情況下,要監聽溢漏的封包或假造封包也是很簡單的事情。

那麼我們只需做到確保不會有任何除收信人以外的第三者收到訊息訊息不會被竄改 兩點就可以確保訊息的安全傳遞,本篇 PGP 的流程及說明 就在說明問題點的解法及重要觀念:

  1. PGP 的訊息傳遞是安全的傳遞方法。

  2. 數位簽章社交認證 ﹑認證中心 是身分辨別的重要手續



PGP 的傳遞方式


前提: A(發) 跟 B(收) 都知道對方的公錀 看過對方的簽名。

A 發信時使用 B 的(數位簽章)專用加密器加密信件內文 -- 發信 --> B 用自已的私錀 自已的解密器打開信件閱讀。

這樣簡單的方法,就可以確保只有 B 能閱讀內文了嗎?顯然沒有那麼簡單,問題:
1. B 專用的 加密器(數位簽章)|解密器 怎麼來的?
2. B 如何知道這封信是 A 發的?

1. 最好的方式當然是 B 直接用手拿一隻 usb 給 A 說,裡面有我的數位簽章(加密器),你要發信的時候用這個東西加密過,就只有我能解開來看,別人拿去也沒有辦法解讀。不過還有一個方式就是透過社交方式,由其它人認識 B 的人轉交 B 的數位簽章,因為大家都認識都看過 B 的簽名,所以可以相互認證,得知這個數位簽章是不是 B 的,也就不用擔心有人假造簽章,讓你的信件沒辦法正確傳達給 B 。(當然也還有認證中心這一條線可以得到 B 的數位簽章)

2. 如何知道是 A 發的呢? 重點在於(數位簽章)加密器和(私錀)解密器的特性上面。這兩個資料分別是兩個很大的質數 p, q ,當 p 拿來加密時,只有 q 能拿來解密。當 q 拿來加密時,只有 p 能解密。也因此,在判別是不是 A 所發的信件時,我們可以把加密器跟解密器互換,用 私錀 來對信件的時間內文等特徵加密,再傳送給 B 之後,讓 B 使用 A 的數位簽章解密,只要信件內文﹑時間等特徵相符合,就可以證明是 A 所發的。

以上,傳遞安全﹑雙方驗證安全,剩下的就只有保護好你所持有的私錀跟讓大家都認識你的數位簽名了。

--
參考文件: PGP 簡介(簡中)

沒有留言:

[Windows] git-bash 底下的工具

因為工作轉到 Windows 平台上的關係,所以很多工具改到 Windows 上面運作,跟著在 TortoiseGit 底下使用 git-bash 來維護自己的專案原始碼。結果就是裝了前面提過的 auto-hotkey 使用熱鍵來提昇自己的平台操作速度; 但除了 hotkey...