導讀:HTTP是一個優秀的通信協議,不過事物皆具有雙面性,該協議也是有不足之處,大概有以下幾點:
- 使用明文傳輸,可能會被竊取不安全
- 不驗證通信方身份
- 無法證明報文的完整性,證明不了報文是否被修改
一、HTTP不具備加密功能
HTTP協議本身是沒有加密功能,所以無法對請求和響應等內容加密。HTTP報文均采用明文形式,數據包在網絡間傳輸很容易就被人竊取,如使用抓包工具(Wireshark)等。在對數據包進行抓取后進行分析,由于報文是以明文形式傳輸,如果內容是關于如個人信息等重要隱私則可能會被他人獲取后所利用,造成損失。
二、對內容進行加密
對內容加密是一種保護信息的好方法,HTTP是沒有加密機制的,所以需要借助第三方來幫助實現加密。對內容加密的方式有很多如:
- SHA安全散列算法
- MD5信息-摘要算法
- BASE64(BASE64Encoder、BASE64Decoder類)
- RSA非對稱加密算法
- DES等
主要分為兩大類,對稱加密和非對稱加密(對于加密這里就不做深入的討論,感興趣的朋友可以去查閱相關資料)。
三、只對內容進行加密的不足之處
- 對于內容的加密并不能完全地保證信息的安全,因為即使對內容進行加密但數據包還是可以被竊取的,并且加密內容依然很有可能被解密出來。
- HTTP協議通信中請求和響應是不會對通信方進行確認的,所以可能會遭遇身份偽裝。如發送的服務器是否就是真的目標主機、響應是否返回到真實發出請求的客戶端等。
- 加密之后的報文雖然安全性提高了,但是還是證明不了報文內容是否被修改過。
所以只對內容加密并不完善,需要一種更加全面的安全解決方案,不僅保證內容安全也要保證通信的安全等多方面--HTTPS。
三、什么是SSL和TSL?
在討論HTTPS之前得先了解下SSL和TSL協議
- SSL:安全套接層,位于可靠的面向連接的網絡層協議和應用層協議之間的一種協議層。
- TSL:安全層傳輸協議,用于兩個應用程序之間提供保密性和數據完整性。該協議由兩層組成:TLS記錄協議和TLS握手協議。
SSL技術最初由網景公司主導開發,開發過SSL3.0之前的版本后來主導權轉移到IETF。IETF以SSL為原型開發了TSL協議。當前主流版本是SSL3.0和TLS1.0。
四、HTTPS基礎概念
HTTPS并不算是一個新協議,是將HTTP協議通信接口部分用SSL和TSL協議代替。如下圖所示:
解析:從最初HTTP與TCP直接通信轉變為HTTP先與SSL通信,之后SSL再與TCP通信。可以理解為HTTP加多了層SSL協議外套就變為了HTTPS。下面,通過一條公式來表達HTTPS:
HTTP + 加密 + 認證 + 完整性保護 = HTTPS
五、HTTPS是如何進行通信的?
概述:HTTPS通信過程結合了對稱加密和非對稱加密兩種方法。HTTPS服務端在連接建立SSL通信時先會將自身的公鑰發送給客戶端。客戶端拿到公鑰后通過非對稱加密與服務端協商數據傳輸通道的對稱加密密鑰。一旦雙方協商出會話密鑰,則后續的數據通訊就會一直使用基于該會話密鑰的對稱加密算法了。
具體流程
- 客戶端發送報文開始SSL通信。
- 服務端可以進行SSL連接時就會發送應答報文給客戶端。
- 接下來服務端發送Certificate報文(包含公開密鑰證書)給客戶端。
- 最后服務端發送通知報文通知客戶端。
- 客戶端先生成Pre-master secret隨機密碼,并以包含Pre-master secret且使用公鑰加密的報文響應服務端。
- 客戶端繼續發送報文提示服務器說接下來的所有通信都采用Pre-master secret密鑰加密。
- 客戶端發送Finsh報文(該報文包含連接至今所有的整體校驗值)
- 服務器也重復6 7步驟發送同樣的報文,當Finsh報文交換結束后SSL連接算是建立完成。
- 接下來就是進行HTTP請求了,同時通信會受到SSL的保護。
六、使用HTTPS是否很完美?
- HTTPS比HTTP通信慢
- 導致客戶端和服務器負載增強
- 購買證書需要開銷
HTTPS由于除了TCP連接、HTTP請求響應之外還需要進行SSL通信所以效率會相對與HTTP慢。其次,客戶端和服務端需要進行加密和解密處理,當訪問量多時會相對于使用HTTP來說負載增強。另外,進行HTTPS通信需要購買證書,可能對于一些服務或小型網站來說并不劃算。
六、HTTPS在哪些場景下應用比較合適?
綜上HTTPS的特點,HTTPS適用于多像交易支付等對安全性要求很高的服務進行加密通信,包括一些會包含個人敏感信息的服務等。如果非敏感信息等則使用HTTP通信。
七、總結
HTTP是一個優秀的協議,但是由于其不支持加密等原因導致安全性比較差。提高安全性的方式有多種,如采用加密算法對內容進行加密等。HTTPS協議則提供了較為完善的方案。HTTPS不是一種新協議,是通過HTTP結合SSL/TSL實現了通信安全。但是HTTPS也有其缺點,所以要結合具體場景情況合理地使用才能發揮HTTPS的強大作用。
感謝您的閱讀,如果喜歡本文歡迎關注和轉發,本頭條號將堅持原創,持續分享IT技術知識。對于文章內容有其他想法或意見建議等,歡迎提出共同討論共同進步。