HTTP
http脚祟,超文本傳輸協(xié)議绍在,它是基于 TCP 實(shí)現(xiàn)的應(yīng)用層協(xié)議感帅,它開(kāi)始工作的前提是 TCP 連接已經(jīng)建立斗锭,HTTP 協(xié)議與 IP 協(xié)議共同組成 Internet地淀,這就是我們常說(shuō)的 TCP/IP 協(xié)議失球,我們也可以把 Internet 稱作是 TCP/IP 網(wǎng)絡(luò)。因?yàn)?HTTP 是比 TCP 更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則实苞,只有低層協(xié)議建立之后才能豺撑,才能進(jìn)行更層協(xié)議的連接。
HTTP 傳輸?shù)臄?shù)據(jù)類(lèi)型為 HTML 文件黔牵、圖片文件聪轿、 其他結(jié)果等,它由請(qǐng)求和響應(yīng)構(gòu)成猾浦,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型(B/S)陆错,因?yàn)樗恍枰⒁粋€(gè)持久的連接,所以它一直都是由客戶端發(fā)起請(qǐng)求金赦,服務(wù)器進(jìn)行響應(yīng)音瓷。
HTTP 的請(qǐng)求過(guò)程中,客戶端和服務(wù)器之間沒(méi)有確認(rèn)身份的過(guò)程夹抗,數(shù)據(jù)全部明文傳輸绳慎,直接暴露在互聯(lián)網(wǎng)上的,所以這就很容易遭到黑客的攻擊漠烧。黑客會(huì)劫持客戶端發(fā)給服務(wù)器的信息杏愤,然后冒充服務(wù)器發(fā)給用戶任意信息;所以就造成了諸如消息監(jiān)聽(tīng)已脓、消息篡改珊楼、冒充身份等一些安全問(wèn)題。
HTTP2
HTTPS
HTTPS:安全的超文本傳輸協(xié)議摆舟。在HTTP下加入SSL層亥曹,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL恨诱。
HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道媳瞪,來(lái)保證數(shù)據(jù)傳輸?shù)陌踩涣硪环N就是確認(rèn)網(wǎng)站的真實(shí)性照宝。
HTPPS 并不是新的協(xié)議蛇受,只是引入了安全層 SSL/TSL,進(jìn)化為 HTTP 首先和 SSL/TSL 進(jìn)行通信厕鹃,再由 SSL/TSL 和 TCP 通信兢仰,所以 HTTPS 就是身穿 SSL/TSL 協(xié)議的 HTTP。
SSL 提供加密處理剂碴,并且使用數(shù)字證書(shū)的手段把将,用于確定通信方。證書(shū)由第三方機(jī)構(gòu)頒發(fā)忆矛,通過(guò)第三機(jī)構(gòu)的私鑰進(jìn)行加密察蹲,難以偽造搀崭。我們通過(guò)證書(shū)就可以確認(rèn)服務(wù)器和客戶端的是否真實(shí)存在焊夸。
TLS 主要保證兩個(gè)通信應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性,在瀏覽器、郵箱港庄、即時(shí)通信州丹、網(wǎng)絡(luò)傳真等應(yīng)用程序中低滩,廣泛支持這個(gè)協(xié)議缤言。如 Google、Facebook 等也以此協(xié)議建立連接审胚。
SSL/TLS 是通過(guò)哪些算法實(shí)現(xiàn)的匈勋?
1、對(duì)稱加密
如果 J 通過(guò)互聯(lián)網(wǎng)向 D 發(fā)送數(shù)據(jù)膳叨,如果不對(duì)數(shù)據(jù)進(jìn)行加密颓影,數(shù)據(jù)就可能被惡意的第三者 P 看到, 所以保密的數(shù)據(jù)需要進(jìn)行加密再發(fā)送。這個(gè)方法的缺點(diǎn)也很明顯懒鉴,就是需要使用相同的密鑰進(jìn)行加密和解密诡挂,因?yàn)檫@個(gè)鑰匙也要通過(guò)網(wǎng)絡(luò)傳輸,所以也很可能會(huì)被 P 攔截临谱。
2璃俗、非對(duì)稱加密
因?yàn)閷?duì)稱加密用單個(gè)密匙加解密存在很大的風(fēng)險(xiǎn),如果將密匙分為 2 個(gè)悉默,保存在服務(wù)端的是私有密匙城豁,發(fā)送給客戶端的是公有密匙。私有密匙保存在服務(wù)端是相對(duì)安全的抄课,公有密匙是所有客戶端或者劫持者都可以得到〕牵現(xiàn)在通信就是使用公鑰加密,私鑰解密跟磨,這個(gè)時(shí)候因?yàn)榻俪终邲](méi)有私鑰间聊,就無(wú)法修改客戶端傳輸?shù)臄?shù)據(jù),也無(wú)法解密數(shù)據(jù)抵拘。但是這樣是保證了安全哎榴,代價(jià)就是加密解密的時(shí)間過(guò)長(zhǎng)。
3僵蛛、混合加密
因?yàn)閷?duì)稱加密效率高尚蝌,非對(duì)稱加密安全性強(qiáng),這種方式采用的就是二合一的加密方式充尉。道理很簡(jiǎn)單就是通過(guò)公開(kāi)密鑰加密客戶端的密鑰傳給服務(wù)端飘言,再通過(guò)對(duì)稱密鑰方法傳遞數(shù)據(jù)。HTTPS 目前就是采用的這種方式加密驼侠。
其實(shí)這樣的加密手段依舊不是安全的姿鸿,傳輸過(guò)程中我們是無(wú)法保證服務(wù)器返回的公鑰不被截獲泵喘。如果黑客把服務(wù)器返回的公鑰轉(zhuǎn)換成自己的公鑰,然后他就可以對(duì)客戶端的的所有消息使用自己的私鑰解密般妙。這個(gè)問(wèn)題的根本所在就是我們無(wú)法分辨出返回的數(shù)據(jù)是否是真正的來(lái)自服務(wù)器。針對(duì)這個(gè)問(wèn)題的解決方法就是:使用數(shù)字證書(shū)來(lái)證明信息發(fā)送方的身份相速。
4碟渺、數(shù)字證書(shū)
數(shù)字證書(shū),顧名思義突诬,它是一個(gè)用于驗(yàn)證身份的數(shù)字認(rèn)證苫拍,由公認(rèn)的證書(shū)機(jī)構(gòu)頒發(fā)給服務(wù)器的。它的基本架構(gòu)是利用一對(duì)秘鑰實(shí)施加密和解密旺隙。其中密鑰包括私鑰和公鑰绒极,私鑰主要用于簽名和解密,由用戶自定義蔬捷,只有用戶自己知道垄提;公鑰用于簽名驗(yàn)證和加密,可被多個(gè)用戶共享周拐。
數(shù)字證書(shū)認(rèn)證機(jī)構(gòu)(Certificate Authority)簡(jiǎn)稱 CA
https 的詳細(xì)工作流程
希望關(guān)于 HTTPS 的這些介紹能幫助大家更好的理解和回顧铡俐,有理解偏差的地方,希望大家多多指正妥粟。那么我們可以思考一個(gè)問(wèn)題就是:既然 HTTPS 這么安全审丘,為什么我們利用抓包工具還能捕捉到數(shù)據(jù)哪?這里其實(shí)我們扮演了一個(gè)中間人的身份勾给,也就是中間人攻擊滩报,HTTPS 的主要作用是防止在不知情的情況下通信被監(jiān)聽(tīng),如果我們主動(dòng)信任某個(gè)證書(shū)播急,就會(huì)構(gòu)成 “中間人攻擊” 脓钾,代理軟件就是這個(gè)道理,這樣就可以對(duì)傳輸內(nèi)容進(jìn)行解密桩警。其中的詳細(xì)實(shí)現(xiàn)過(guò)程惭笑,大家可以自己更深入的了解一下。
HTTPS和HTTP的區(qū)別主要如下:
1生真、https協(xié)議需要到ca申請(qǐng)證書(shū)沉噩,一般免費(fèi)證書(shū)較少,因而需要一定費(fèi)用柱蟀。
2川蒙、http是超文本傳輸協(xié)議,信息是明文傳輸长已,https則是具有安全性的ssl加密傳輸協(xié)議畜眨。
3昼牛、http和https使用的是完全不同的連接方式,用的端口也不一樣康聂,前者是80贰健,后者是443。
4恬汁、http的連接很簡(jiǎn)單伶椿,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸氓侧、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議脊另,比http協(xié)議安全。