跳轉到

為何 HTTPS 不再安全

為何 HTTPS 已經是加密了的通訊。我們為何還要多此一舉,在前端先用 asymmetric encryption 把 password 資料加密啊? 我最簡單的回答:HTTPS(我這裡說的是不包括使用 client-side cert.的 https)早便不再100%安全

首先,我們來看看一般使用 https 網站的流程(大幅簡化版) 1 用戶輸入https://abc.com,然後你的firefox向網絡上的abc.com拿取他的電子證書來看 2 在 abc.com 的電子證書中,會有 CA(可信任的機構)為他作出的電子簽名。 3 一般 CA 的 public key 是早便內包在 Firebox 啊,chrome 啊,Ubuntu 啊,你下載這些軟體時便自動存到你的電腦內部的。Firefox 以 CA 的名字拿出對應的 public key 來檢查。如果電子簽名是沒問題的,便代表這張 cert 的確是由可信任的 CA 來發出,是可以信任的。 4  Firefox 產生一組隨機密碼,用作之後的 HTTPS 加密通訊用。 5  Firefox 以 abc.com 的電子證書內的 public key 把第4步的隨機密碼加密,然後再把加密後的隨機密碼(重點!)丟到 abc.com。 6 因為只有 abc.com 才會有 abc.com 的 private key,所以第5步即使被人偷聽/偽裝,也沒法解密。所以,如果第5步成功,Firefox 便能肯定現在通訊的是手持 abc.com 的 private key 的伺服器,而不是 cracker。 7 之後,伺服器和 Firefox 之間的通訊都使用第4步的隨機密碼作 symmetric encryption。這樣偷聽者便沒法知道通訊內容。

而為何 HTTPS 現在不再安全嘛~

  1. HTTPS 的基石,是 CA 遵守道義,只為真正的 abc.com 背書。 而現在一個最大問題是:有一些 CA 違反道義,對 cracker 發出了 abc.com 的證書!(關鍵字:Firefox distrust CNNIC) 因為 cracker 他們伺服器手持的 abc.com 證書,是真真正正地由 CA 來發出的,你的 Firefox 也自然地會認同這張證書去信任這個 cracker 的伺服器!自然,你所有的資訊也會被 MITM attack 偷光光啦。 (所以近年一堆 CA 被 Firefox 和 chrome 相繼除名,他們也做太多「好事」了) (吐嘈:大家可以去自己看看中國的銀行用的證書是誰來發的,便知道中國的 CA 的可信度。台灣銀行的 CA 是台灣政府下屬的 CA 來發的)

  2. 當 Firefox 拿到一張 abc.com 的電子證書時,他是看這個 CA 是否在你的電腦內已經是可信任的機構。 再強調一次:你家的電腦/手機是有一堆檔案,紀錄那些 CA 才是可以信任。 (我也可以簽一張 HTTPS 電子證書給你啊,只是除了我家電腦沒人信任而已~) 重點:只要那堆檔案被混入惡意機構,那惡意機構便會在 Firefox 面前顯示為可信任的 CA,他所簽的 HTTPS 電子證書自然也會被接納! 其中最出名的例子,便是內建在 Levono 電腦中的 Superfish 惡意軟體。Levono 和 Superfish 為了監聽你的所有通訊,把 Superfish 加入你的電腦內的可信任 CA 名單。 然後在你的 Levono 電腦上的 Superfish 便能偽裝成任何一個 HTTPS 網站,把你的所有通訊和信用卡資料偷偷上傳! 你們可能會說:用中國制的電子產子,活該被盜啊~ 可是~~~你去裝遊戲軟體時~~~ 你有看過那份授權書寫了什麼嗎? 你有留意過到底安裝軟體做過了什麼嗎? 會看這篇文章的,應該都是有一定電腦知識的人吧。 連你也會輕易地便按下 YES YES YES,一般用戶安裝了惡意軟意,然後被額外加惡意機構到可信任 CA 又有什麼好奇怪的?

  3. 真正安全的運算,除了通訊層要用 HTTPS 加密保護外,你的電腦/手機也要安全才可以啊! (再次強調一句請用自由而且安全的 Linux 和 firefox) 中國的防火牆城(GFW)除了侵犯了中國憲法所明文保障的言論自由,還讓中國的網絡變成一個巨大的 Intranet(中國政府對 Intranet 的中文翻譯:「互聯網+」),讓中國網絡用戶接觸不到外國安全的軟體。 請想像一下: 我們一般人要下載 Ubuntu ISO Image,到 Ubuntu 的官方網站便可以吧。 可是對在 GFW 內的人……要麼他便忍受以 KB 計的下載速度,要麼他便要自行找在 GFW 內的副本。 一般人拿到安裝軟體嘛,當然是立即執行再下 YES YES YES 嘛,有誰會去對比官方網站的 MD5 checksum 的XD? GFW 的出現,讓之前只會在 Intranet 內發生的攻擊非常巨大化,只要在 GFW 內的軟體副本被加了料子,隨時數以億計的用戶受感染。 不信嗎?之前讓數以千計的 ios apps 感染的 xcodeghost 事件,便是因為大量在中國的開發人員下載了在 GFW 內被加了料的開發套件啊! 另外,下載不了 Firefox 和 google chrome 的人,很自然的會被迫使用 Firefox 下載器來上網(呃,現在好像叫 Microsoft Edge 吧)。而在 WoSign 的事件中,Microsoft 可是最後一家來除名 WoSign 這家 CA 的。 簡單來說:GFW 讓在牆內的用戶接觸不了真正安全可信任的軟體。很自然地,中國用戶便會被迫用不安全軟體……

後記

http cert pinning 這個技術,讓 Firefox 記住網站的電子證書,如果出現異常變動(例如 cracker 拿著惡意 CA 的證書來 MITM)時便警告用戶。 但是,這技術不是100%能生效的,而且對第二和第三點更加是沒用。 現在 HTTPS 這個現代安全的基石已經鬆動下,除非使用預先安裝的 client side certificate,否則通訊已經不再100%安全。 (另外:對 password 使用 asymmetric encryption 再丟到伺服器,目的只是增加攻擊的困難度而不是讓通訊變回100%安全) 最後一句: 這個世界有 CA,也有中國的 CA;這個世界有 Internet,也有中國的 Internet+

Reference