熱點話題討論同優秀網文轉載
Post a reply

網路安全概述

Oct 14th, '09, 14:23

不曉得支那共匪的徒子徒孫們是能力低落還是正在釣魚?
你現在正在閱讀的文件是使用 HTTP (HyperText Transfer Protocol) 協定傳輸
這是一種完全無安全性可言的傳輸方式
假設你是 A, 正經由 B 及 C 連接 D. 亦即: A - B - C - D
則 B 及 C 都可輕易的得知你輸入的及讀取的資料
(其中, B 及 C 稱為 man-in-the-middle, 通常是 ISP 或你區網的 gateway 主機.)
HTTP 是以純文字的方式傳輸 (有時可能會壓縮, 但壓縮不是解密. 竊聽者只需解壓縮即可.)
其傳輸的資料可直接閱讀 甚至不須用專門的軟體開啟

保護的方法有
就是改用 HTTPS (HyperText Transfer Protocol over SSL)
SSL (Secure Sockets Layer) 是使用非對稱加密(asymmetric encryption)的方式來對所傳輸的資料進行保護
關於非對稱加密, 詳見 http://en.wikipedia.org/wiki/Asymmetric_encryption
這裡只提個概觀, 同樣的原理亦常見於對電子郵件的保護. (是的! 若你的電子郵件未加密, 則主機端是可隨意閱讀的.)

傳統我們所謂的加密 是用一組密碼同時用來加密 及解密
當 解密 加密 使用同樣密碼時
我們現在稱它為對稱加密(symmetric encryption)以和接下來要論及的非對稱加密區別

相較於對稱加密
非對稱加密 它會有一對密碼(而不是單一個密碼)
假設是 X 及 Y
若用 X 加密, 則只有 Y 能解密.
若用 Y 加密, 則只有 X 能解密.
我們通常會把其中一個密碼公開 假設是 X
則 X 就成了所謂的 public key 而 Y 就是 private key
private key 是必須妥善保管 切勿外洩的

若我的朋友用我公佈的 public key 加密
則被加密的文件 將只有我才能解開 (因為只有我有其相對應的 private key)

當我用 private key 加密
則因為我的 public key 是公開的 因此所有人都可以藉由該公開的 public key 解密
但是 重點在 如果他能用我的 public 解密出有意義的文件, 那麼 這才代表該文件是真的出自我方的.

在討論 PKI (Public Key Infrastructure) 時
術語上 "用 private key 加密" 不稱為加密(所有人都可解開故無秘密可言) 而稱為 "簽署(signing)"
而 "用 public key 加密" 才被稱為 "加密(encrypting)"

"非對稱加密" 存在一個缺陷: 加解密的速度太慢 (需要較多的系統資源)
因此通常只被用來保護(傳統的) "對稱加密" 的密碼(或文件的 digest), 而不是用來保護整個文件.
("對稱加密" 較 "非對稱加密" 快許多)

SSL (Secure Sockets Layer) 的連線步驟:
1) 未加密的傳輸: 客端(client)向主端(server)提出連線要求
2) 未加密的傳輸: 主端傳給客端 certificate (其內包含主端的 public key)
3-1) 客端隨機選擇一個用來 "對稱加密" 的密碼(稱為 shared secret)後, 將 shared secret 以主端的 public key 加密.
3-2) 有加密的傳輸: 客端將步驟 3-1 產生的數據(經主端 public key 加密的 shared secret)傳輸給主端
4-1) 主端使用他的 private key 解開客端傳來的已加密的資料, 獲得 shared secret.
4-2) 至此, 主客端都擁有不被第三者獲悉的 shared secret. 他們將用該 shared secret 來加解密之後所有將傳輸的資料.

如果有仔細閱讀並思考上述的步驟 會察覺存在一個安全漏洞
就是 man-in-the-middle 可能偽造主端的 certificate 給你, 使你獲得不正確的主端的 public key.
事實上 在正常情況下 這幾乎是不可能的 (是有可能 但可能性極低 這裡不詳述)
因為主端的 certificate 是經由 CA "簽署" 的 (Certification Authority 就是專門負責簽署 certificate request 的單位)
而 CA 的 certificate 是附加於瀏覽器內的 (是的! 你下載並安裝瀏覽器的同時, 也在你的系統內存放了 CA 們的 certificates.)

總之, 上述 SSL 連線的步驟全是由瀏覽器(如 Mozilla Firefox 等)自動處理.
你所要做的, 只是確保你的網址是以 "https://" 起頭, 而不是 "http://".
當網址是 "http://" 時, 請小心了! 你所有傳輸的資料, ISP 全可一覽無遺.
(他們可以用 script 自動監控具有敏感字眼的連線, 如果他們願意的話.)

上述的非對稱加密(asymmetric encryption)建立的 certificate, public key, private key
也可應用在 Mozilla Thunderbird 等電子郵件軟體 (有興趣的話 再討論)
當然前提得是主機必須支援 POP3 或 IMAP 你才能享受電子郵件軟體自動地幫你加密 解密 驗證 及簽署
據我的了解 GMail 有提供 IMAP
但 Yahoo! 好像沒有, 好像只能用瀏覽器收發信件.

撇開加密解密不談
網路上 最基本層度的安全 就是千萬千萬不要使用或洩漏任何你的真實身份
(我連 ID 都是隨機產生的呢! 嘿! 嘿!)

希望各位好好的保護自己
我們的敵人不是吃素的
Post a reply