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