2008年12月4日星期四

中間人攻擊

事緣有人懷疑HTTPS不夠安全,查了一輪,主要是說HTTPS可能被中間人攻擊(man-in-the-middle attack)破解。

好,那麼看看它是怎麼做的。

對於互動式(人類用家與程序互動,如使用瀏覽器)的HTTPS情形,中間人攻擊將做兩件事。首先要截取和轉發客戶和服務器之間的通信,一般靠「DNS冒名」(DNS Spoofing)或利用公共無線網絡熱點做到。第二步,在截獲握手請求時,保存真正服務器的證書,換上自己的。

粗心大意的用戶在browser提示使否接受證書時,可能不會檢查證書上的名稱。攻擊者可以在名稱前後插入空格,使它看上去和真的一樣。一旦攻擊者證書被接受,用戶程序(browser)將使用攻擊者提供的key加密數據。那麼,攻擊者可以截獲來自用戶的信息,解密得到明文,喜歡的話可以修改之,再用真正服務器的key加密之,轉發給真正服務器。

DNS冒名和完全截獲信道並不太容易做到,我們也可以教育客戶,在被提示是否接受證書時,小心檢查,不要接受可疑的證書。另外,如果明知服務來自正規可信的機構(如銀行網站),其證書應由公認的CA簽發,瀏覽器是不會提示的(它將自動接受)。一旦提示,則表示證書並非來自公認之CA。

我們看到,中間人攻擊是在HTTPS的能力範圍之外入手,並非HTTPS本身不安全。而且中間人攻擊也是可以輕易對付的,只要小心一點就可以了。

沒有留言:

發佈留言