歡迎光臨
每天分享高質量文章

全面普及HTTPS有意義嗎?

來自公眾號:車小胖談網絡

記得小時候,敞篷卡車從果園拉著一車車的蘋果,運到碼頭上,然後再裝載到萬噸貨輪上運往上海。但運往碼頭的最後一公里,道路坑坑窪窪,卡車會放慢速度,這時就會有一些青少年爬上貨車,從袋子里拿蘋果吃,每次都會有一袋或幾袋被開包,為此運輸公司非常苦惱。

後來為了減少損失,運輸公司使用了封閉的集裝箱,裝載好蘋果再將車廂鎖起來,到達目的地再打開,這樣即使有人想從車廂里拿蘋果,也無從下手。

以上敞篷卡車所對應的就是TCP,蘋果對應的是HTTP,由於敞篷卡車無法保證在傳輸路途上,蘋果是否被竊取、調包、所以最終有多少貨物到達目的地,那完全要看壞小子的心情,如果壞小子只是插入一些廣告,用戶的瀏覽器最多彈出一些廣告頁面。

更甚一步,竊取用戶cookie,登錄用戶賬戶做非法的勾當。還可以通過明文http植入木馬,可以遠程控制用戶電腦,竊取用戶敏感信息。

集裝箱代表TCP + TLS(Transport Layer Security),從果園運輸的十噸蘋果能夠原封不動地到達目的地,既不會多也不會少。

明文HTTP讓壞人有機可乘

為了實現網絡的高度安全,需要很多環節協同工作,只要有一個環節有漏洞,就有可能被利用,而為了提高網絡的相對安全性,最高優先級就應該從HTTP下手,因為這個用戶使用的最頻繁。

目前幾乎所有的個人電腦都處於路由器NAT保護之下,如果用戶不主動訪問Internet,別人無從對NAT後個人電腦下手。

一旦用戶主動訪問Internet,就相當於在NAT城門上啄了一個小洞,這個小洞就是一個NAT映射表,如果沒有流量掃清,300秒之後小洞就會關閉。

小洞存活的300秒以內,允許外部主機來訪問個人電腦,而明文的HTTP就是最好的載體。一旦個人電腦被植入了木馬,木馬程式就會主動周期性發訊息給Internet的控制終端,這樣NAT小洞會一直敞開大門(周期性訊息掃清定時器),給遠程控制提供了便利。

HTTPS提供了端到端的安全加密

不僅提供資料機密性(加密),還提供資料完整性(不篡改資料)保護防重放(把捕獲的報文再發一次無效),這樣壞小子就很難下手,沒有session key 很難去偷窺並篡改用戶的資料,更無法依賴HTTPS這個載體植入木馬。

一定有同學會有疑問,為何明文傳輸的HTTP可以被劫持,篡改網頁內容,而加密傳輸的HTTPS卻不可以?

那是因為HTTP被劫持篡改頁面,重新計算TCP checksum,用戶電腦是無法判別是否被篡改,只好被動接收。

而加密傳輸之後,有了HMAC保護,任何篡改頁面的嘗試,由於沒有session key,無法計算出和篡改網頁一致的HMAC,所以資料接收端的SSL/TLS會輕易地識別出網頁已被篡改,然後丟棄,既然無法劫持,也就沒有篡改的衝動了,所以HTTPS可以很好地對付網頁劫持。

HTTPS並不是100%絕對可靠

斯諾登暴露出,針對IPsec,TLS的密鑰交換所依賴的Diffie-Hellman演算法攻擊,即通過離線的超級計算機預先計算出海量的公鑰、私鑰對,一旦嘗試出私鑰就會得到Master Key,進而推匯出session key,這樣歷史資料、現在、將來的資料全可以解密。

以上是被動攻擊方式,針對數字證書欺騙則屬於主動攻擊,可以實時地解密用戶資料。但種種主、被動攻擊難度都很高,往往是以國家意志為源動力,而不是一些小團體所能完成的。

有讀者肯定會心生疑惑,既然HTTPS不是絕對可靠,那依靠HTTPS工作的網銀安全嗎?安全,放心使用!

銀行在轉賬時,通常需要用戶私鑰簽名確認,而私鑰就嵌入在USB Token里,類似下圖中的硬體設備。只要用戶不要把這個借給別人使用,轉賬可以確保安全。

電腦網銀用戶一般都有一個USB Token,裡面有用戶數字證書私鑰(Private Key),網銀轉賬一定要有用戶數字證書私鑰簽名的轉賬確認,而這個私鑰只有用戶的Token唯一擁有,而銀行擁有用戶數字證書公鑰(Public Key),可以成功解密出用戶私鑰(Private Key)簽名的轉賬確認,以此確信轉賬指令是由擁有USB Token的用戶發出來的,這樣會進一步提高網銀的安全性。

手機銀行一般都是APP,可以強制使用(Public Key Pinning )特定根證書作為證書信任鏈的頂端,可以避免客戶端使用誤安裝的偽造證書,所以APP不會與假的服務器建立TLS連接,只會與真正的服務器建立安全隧道,一旦隧道成功建立,通信就是安全的,即使轉賬也是安全的。轉賬之前通過手機驗證碼確認,又多了一層安全保護。

已同步到看一看
赞(0)

分享創造快樂