篇4為大家介紹一下HTTP 和 HTTPS協議。通過這兩組協議的比較,我希望告訴大家一個道理。在計算機技術中,速度和安全是不可兼得的,所以要有所取舍。這個取舍的關鍵是根據你的應用場景,在一些不那么容易出現安全隱患的業務中(網絡圖片請求)可以使用速度快的,但是在一些比較注重安全的業務場景中(支付,賬戶登錄)則需要犧牲速度換取安全性。
1 - 優點與缺點并存的HTTP
HTTP協議的優勢之前在(菜鳥面試必知的 http 知識(二)—— HTTP 協議特點)已經介紹過。其特點主要是,不保存用戶的狀態、持久連接和管線化,這些特點讓采用HTTP協議的服務器資源開銷少,傳輸效率很高,并且使用起來也非常的簡單和方便。
但是也正是因為HTTP協議設計的時候注重了輕便,也導致其在安全性上面存在了比較大的隱患。比如,通信使用明文,不驗證通信方的身份,無法驗證報文的完整性。這些都是一些安全漏洞,當網站用戶規模到達一定程度時,就不得不重視起來了。而目前主流的方案是HTTPS,例如知乎就在2016年9月支持了HTTPS協議。
2 - HTTPS為何物
HTTPS(HTTP Secure),其實是加上加密+認證+完整性保護的HTTP。使用HTTPS最普遍的場景是支付系統,因為在這種場景下使用HTTP會導致支付卡號以及密碼被盜取,采用HTTPS則能有效的避免這點。
2.1 - 加密技術
加密技術也是計算機技術的一個重要分支,由于在HTTPS中用到了加密技術,所以先做一個簡單的介紹。
對稱密鑰加密:加密和解密同用一個密鑰的方式稱為對稱密鑰加密,這種加密方式又被稱為共享密鑰。
那么由于雙方都需要使用一個密鑰,那么A設計了這個密鑰,還是要通過網絡先把密鑰傳送給B,才能開始保密傳輸。一旦密鑰傳輸的時候被截取,那么之后整個通信過程也就沒有了任何的安全性可言。
非對稱密鑰加密:使用兩把密鑰,一把叫做私有密鑰,另一把叫做公開密鑰。私有密鑰不能讓其他任何人知道,公開密鑰可以隨意發布,任何人都可以獲得。
當A設計密鑰的時候會產生一對私有和公開密鑰,B可以根據A的公開密鑰對消息進行加密,A得到消息后通過自己的私有密鑰解密,由于私有和公開密鑰存在著復雜的數學關系,僅僅通過公開密鑰想要破解消息是非常困難的。
非對稱密鑰加密雖然解決了對稱密鑰加密的一些弊端,但同時也有自身的局限性。比如非對稱加密處理起來更為復雜,解碼起來效率很低。并且由于公開密鑰大家都能獲取到,當你打算獲取到公開密鑰,如何判定你到手的公開密鑰就是正宗的也是個問題。
為了驗證公開密鑰的正宗又出現了數字證書認證機構(CA),這種機構作為中介,告訴買家(解密方),這是機構和賣家(加密方)權威認證的,于是買家相信了這個公開密鑰。這樣雖好,但是中介也需要你付費啊。
2.2 - SSL
HTTPS并非是應用層的一種新協議,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協議代替。如圖1所示,HTTPS其實是HTTP先和SSL通信,再由SSL和TCP通信。SSL是獨立于HTTP的協議,其他運行在應用層的SMTP和Telnet等協議均可配合SSL協議使用。
大家好,我是彬彬醬,目前在騰訊從事Web后端開發。
菜鳥必知的 http 知識專題整理了關于網絡的基礎知識,適合大家進行入門級學習,這個專題現包含下列文章:
菜鳥必知的 http 知識(一)—— TCP 握手協議
菜鳥必知的 http 知識(二)—— HTTP 協議特點
菜鳥必知的 http 知識(三)—— 請求和響應報文
菜鳥必知的 http 知識(四)—— HTTP 和 HTTPS
菜鳥必知的 http 知識(五)—— 新技術的出現
菜鳥必知的 http 知識(六)—— web的結構組件