注:本文爲我的學習轉載,原文地址:http://www.williamlong.info/archives/2058.htmlhtml
最近,Google針對Gmail被攻擊事件,全面默認啓用了始終以https訪問Gmail的方式了。可是,對於能夠動用整個國家力量的黑客來講,從網絡通信數據中(在此不討論對用戶電腦種木馬破解https的狀況,只討論在網絡通信數據中破解https的方法)破解https除了暴力破解(暴力破解https即便按照如今的集羣計算能力仍舊須要幾百至幾萬年不等)以外真的別無他法了嗎?事實並不是如此。瀏覽器
咱們知道,https的安全性主要是由SSL證書中的公鑰和私鑰來保證的。瀏覽器與服務器通過https創建通信的時候(不考慮SSL代理方式須要用戶提交證書的狀況,由於咱們如今討論的是瀏覽器訪問網站,和SSL代理無關)會按照如下步驟保證通信的安全性:安全
一、瀏覽器鏈接服務器,服務器把SSL證書的公鑰發送給瀏覽器服務器
二、瀏覽器驗證此證書中的域是否和訪問的域一致(好比用戶訪問https://mail.google.com/時,瀏覽器驗證服務器發送過來的SSL證書的公鑰中的域是否爲mail.google.com或*.google.com)並無過時網絡
三、若是瀏覽器驗證失敗,瀏覽器通知用戶證書有問題,讓用戶選擇是否繼續併發
四、若是瀏覽器驗證成功,那麼瀏覽器隨機生成一個對稱密鑰並使用接收到的SSL證書的公鑰進行加密併發送給服務器學習
五、服務器經過SSL證書的私鑰對收到的信息進行解密並獲得瀏覽器隨機生成的對稱密鑰網站
六、最後服務器和瀏覽器都經過這個對稱密鑰進行通信了(爲何不直接使用公鑰和私鑰進行通信?由於非對稱加密比對稱加密效率低)google
這個方案看似完美,卻沒法抵禦中間人攻擊,攻擊者能夠按如下步驟實施攻擊截取https通信中的全部數據:加密
一、攻擊者僞造一個Gmail的SSL證書,使其中的域爲mail.google.com或*.google.com,並設置合適的證書過時時間
二、攻擊者等待訪問者的瀏覽器訪問Gmail時,經過DNS劫持或IP僞造(對於有路由器控制權限的黑客來講簡直垂手可得)的方法使其訪問到攻擊者的服務器上
三、攻擊者把僞造的SSL證書公鑰發送給瀏覽器
四、瀏覽器驗證SSL證書的域和過時時間都沒錯,認爲訪問到的就是Gmail自己,從而把對稱密鑰發送給黑客服務器
五、黑客服務器把僞造的Gmail網頁經過收到的對稱密鑰加密後發送給瀏覽器
六、訪問者經過瀏覽器輸入Gmail賬戶,發送給黑客服務器,黑客服務器經過收到的對稱密鑰解密後成功得到訪問者的Gmail密碼
爲了抵禦這種中間人攻擊,SSL證書須要由可信的SSL證書頒發機構頒發,造成一個證書鏈(好比Gmail的證書鏈爲:最底層爲網域mail.google.com,上一層爲Thawte SGC CA證書頒發機構,最頂層爲頗有名的VeriSign證書頒發機構)。那麼,瀏覽器除了須要驗證域和有效期外,還要檢查證書鏈中的上級證書公鑰是否有效,上級的上級證書公鑰是否有效,直至根證書公鑰爲止。這樣就能夠有效避免中間人攻擊了,由於根證書公鑰都是預裝在操做系統中的,黑客若是不是暴力破解,沒法獲得根證書的私鑰,若是黑客本身生成一個私鑰,瀏覽器驗證根證書公鑰的時候發現沒法經過操做系統中預裝的公鑰加密數據後使用這個私鑰進行解密,從而斷定這個公鑰是無效的。這個方案也是如今https通信一般的方案。
那麼,這個如今全部的瀏覽器正在使用的https通信方案就無懈可擊了嗎?答案還是否認的。咱們能夠看到,在後一個方案中,https的安全性須要在證書頒發機構公信力的強有力保障前提下才能發揮做用。若是證書頒發機構在沒有驗證黑客爲mail.google.com的持遊者的狀況下,給黑客頒發了網域爲mail.google.com的證書,那麼黑客的中間人攻擊又能夠順利實施:
一、攻擊者從一家不驗證mail.google.com持有者的SSL證書頒發機構WoSign那裏獲得了網域爲mail.google.com的證書,此證書的證書鏈爲:最底層爲網域mail.google.com,上一層證書頒發機構爲WoSign,頂層證書頒發機構爲VeriSign
2/三、第2、第三個步驟同上一個方案的中間人攻擊的第2、第三個步驟
四、瀏覽器驗證SSL證書的域和過時時間都沒錯,繼續驗證證書鏈:
4.一、最底層的網域mail.google.com證書公鑰不在操做系統中,沒法驗證其訪問到的就是Gmail自己,繼續驗證上一層證書頒發機構
4.二、上一層證書頒發機構WoSign的公鑰也不在操做系統中,仍舊沒法驗證其有效性,繼續驗證上一層證書頒發機構
4.三、瀏覽器看到頂層證書頒發機構VeriSign的公鑰在操做系統中,認爲證書鏈有效,從而把對稱密鑰發送給黑客服務器
5/六、第5、第六個步驟同上一個方案的中間人攻擊的第5、第六個步驟。黑客成功得到訪問者的Gmail密碼
然而,不驗證域名持有者就頒發證書的狀況在國外幾乎不會發生,可是在國內就不必定了。針對破解目標,國內證書頒發機構WoSign(在此只是舉例國內比較有名的證書頒發機構WoSign,並不表明WoSign從此必定會這麼作)頗有可能爲了上級要求頒發了證書給非域名持有者的黑客,從而使得破解目標的Gmail密碼被黑客截取。