深入理解 HTTPS
HTTPS 作為安全的互聯網通信協議,和 HTTP 有怎樣的關系?是怎樣實現的?
以前在博客或者公眾號也讀過一些關于 HTTPS 的文章,理解的不是很好。最近花時間讀了一下《圖解 HTTP》,對 HTTPS 有了更深層次的理解,寫出來總結一下。
一、HTTP 協議的缺點
(1)通信時使用明文,內容可能會被竊取
HTTP 本身沒有加密功能,無法對通信內容進行加密,只能以明文的方式發送。竊取通信的內容并非一件難事,只需收集在互聯網上流動的數據包(幀)就行了。
對于收集來的數據包可以使用抓包工具(Wireshark)或者嗅探工具(Sniffer)進行解析。
(2)不驗證通信方的身份,身份可能會被偽裝
使用 HTTP 通信時,由于不需要確認通信方的身份,任何人都可以發起請求。另外,服務器只要接受到請求,不管接受方是誰都會返回一個響應。在這種情況下,接收請求的就有可能是偽造的服務器,當然客戶端也可以偽造。
(3)不能保證報文的完整性,信息可能會篡改
在請求或者響應發出之后,在對方接收之前的這段時間內,請求或響應的報文可能會被篡改,協議本身無法知道這一點。
二、加密協議 SSL
HTTP 協議本身沒有加密機制,但是可以使用 SSL(Secure Socket Layer)/TLS(Transport Layer Security)協議解決 HTTP 的安全性問題。
SSL 是獨立于 HTTP 的協議,所以不光是 HTTP 協議,其他運行在應用層的 SMTP 和 Telnet 等協議都可以配合 SSL 協議使用??梢哉f SSL 是當今世界上應用最為廣泛的網絡安全技術。
使用 SSL 建立安全通信線路( 對通信線路加密 )之后,就可以在這條線路上進行 HTTP 通信了,內容不會被竊取和篡改。
SSL 不僅提供加密處理,還提供了一種證書機制,用于確定客戶端或服務器。證書由值得信任的第三方機構頒發,用來證明客戶端和服務端是真實存在的。
三、什么是 HTTPS
HTTP 加上加密處理方式和認證及完整性保護即是 HTTPS(HTTP Secure)。HTTPS = HTTP + 加密 + 認證 + 完整性保護 。
使用 HTTPS 通信時,不再用 http://,而是改用 https://。另外,當瀏覽器訪問 HTTPS 通信有效的 Web 網站時,瀏器的地址欄內會出現一個帶鎖的標記。
HTTPS 并不是應用層的一種新協議。它只是 HTTP 通信接口部分使用 SSL(Secure Socket Layer)和 TLS(TransportLayer Security)協議代替而已。
HTTPS 本身就是身披 SSL 協議外殼的 HTTP。在采用 SSL 后,HTTP 就擁有了 HTTPS 的加密、證書和完整性保護這些功能。
四、加密方式
(1)共享秘鑰加密
所謂共享秘鑰加密(Common key crypto system)就是加密和解密都使用相同的秘鑰,因此也被稱為對稱秘鑰加密。
使用共享秘鑰加密時必須將秘鑰也發送給對方 ,這樣就存在一個問題,發送的秘鑰可能會被攻擊者竊聽,如果不發送,對方又不能解密。
(2)公開秘鑰加密
公開秘鑰加密使用一對非對稱的秘鑰,一把叫做私有秘鑰(private key),另一把叫做公開秘鑰(private key)。公開秘鑰任何人都可以獲得,但是私有秘鑰是私有的。通過這種方式,可以很好的解決共享秘鑰加密的安全性問題。
使用公開秘鑰加密時,發送密文的一方使用公鑰加密,對方收到加密的信息后,再使用自己的私鑰進行解密。這樣不需要發送用來解密的私鑰,就不存在秘鑰被竊取的風險了。
五、HTTPS 加密方式
HTTPS 采用共享密鑰加密和公開密鑰加密兩者并用的混合加密機制。 使用公開密鑰加密方式安全地交換在稍后使用的共享秘鑰中的秘鑰;確保秘鑰是安全的前提下,使用共享秘鑰加密方式進行通信。
如何保證公開密鑰加密方式交換的秘鑰是安全的呢? 將公鑰放在數字證書中 ,數字證書由雙方都可依賴的第三方機構頒發,因此只要證書是可信的,公鑰就是可信的。
六、other
- TSL 是以 SSL 為原型開發的協議,有時會統一稱該協議為 SSL。當前主流的版本是 SSL3.0 和 TLS1.0
- HTTPS 比起 HTTP 會更多地消耗服務器和客戶端的硬件資源(加密處理),導致負載增強
- 非敏感信息使用 HTTP 通信,只有在包含個人信息等敏感數據時,才利用 HTTPS 加密通信
- 要進行 HTTPS 通信,證書是必不可少的。而使用的證書必須向認證機構(CA)購買,存在一定的開銷
七、參考文獻:
- 《圖解 HTTP》上野宣
- SSL/TLS 協議運行機制的概述 阮一峰
總結
以上是生活随笔為你收集整理的深入理解 HTTPS的全部內容,希望文章能夠幫你解決所遇到的問題。