HTTPS 中間人攻擊。也就是通訊雙方中插入一個(gè)中間人茵休,通訊雙方的對(duì)方已經(jīng)變成中間人了手蝎,而不是原本的對(duì)方柑船。
HTTPS 協(xié)議之所以是安全的是因?yàn)?HTTPS 協(xié)議會(huì)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,而加密過(guò)程是使用了非對(duì)稱加密實(shí)現(xiàn)亏拉。但其實(shí)逆巍,HTTPS 在內(nèi)容傳輸?shù)募用苌鲜褂玫氖菍?duì)稱加密锐极,非對(duì)稱加密只作用在證書(shū)驗(yàn)證階段。
HTTPS的整體過(guò)程分為證書(shū)驗(yàn)證和數(shù)據(jù)傳輸階段
① 證書(shū)驗(yàn)證階段
客戶端發(fā)起 HTTPS 請(qǐng)求
服務(wù)端返回 HTTPS 證書(shū)
客戶端驗(yàn)證證書(shū)是否合法肋层,如果不合法則提示告警
② 數(shù)據(jù)傳輸階段
當(dāng)證書(shū)驗(yàn)證合法后,客戶端在本地生成隨機(jī)數(shù)
通過(guò)公鑰加密隨機(jī)數(shù)净薛,并把加密后的隨機(jī)數(shù)傳輸?shù)椒?wù)端
服務(wù)端通過(guò)私鑰對(duì)隨機(jī)數(shù)進(jìn)行解密
服務(wù)端通過(guò)客戶端傳入的隨機(jī)數(shù)構(gòu)造對(duì)稱加密算法肃拜,對(duì)返回結(jié)果內(nèi)容進(jìn)行加密后傳輸
為什么數(shù)據(jù)傳輸是用對(duì)稱加密雌团?
首先,非對(duì)稱加密的加解密效率是非常低的猛蔽,而 http 的應(yīng)用場(chǎng)景中通常端與端之間存在大量的交互雨涛,非對(duì)稱加密的效率是無(wú)法接受的替久;另外蚯根,在 HTTPS 的場(chǎng)景中只有服務(wù)端保存了私鑰胀糜,一對(duì)公私鑰只能實(shí)現(xiàn)單向的加解密,所以 HTTPS 中內(nèi)容傳輸加密采取的是對(duì)稱加密距帅,而不是非對(duì)稱加密括堤。
為什么需要 CA 認(rèn)證機(jī)構(gòu)頒發(fā)證書(shū)悄窃?
HTTP 協(xié)議被認(rèn)為不安全是因?yàn)閭鬏斶^(guò)程容易被監(jiān)聽(tīng)者勾線監(jiān)聽(tīng)、偽造服務(wù)器轧抗,而 HTTPS 協(xié)議主要解決的便是網(wǎng)絡(luò)傳輸?shù)陌踩詥?wèn)題。首先我們假設(shè)不存在認(rèn)證機(jī)構(gòu)纠炮,任何人都可以制作證書(shū),這帶來(lái)的安全風(fēng)險(xiǎn)便是經(jīng)典的“中間人攻擊”問(wèn)題狮斗』∮“中間人攻擊”的具體過(guò)程如下:
過(guò)程原理:
1、客戶端請(qǐng)求被劫持(如DNS劫持等)看疗,所有請(qǐng)求均發(fā)送到中間人的服務(wù)器
2、中間人服務(wù)器返回中間人自己的證書(shū)
3摔寨、客戶端創(chuàng)建隨機(jī)數(shù)是复,通過(guò)中間人證書(shū)的公鑰對(duì)隨機(jī)數(shù)加密后傳送給中間人竖螃,然后憑隨機(jī)數(shù)構(gòu)造對(duì)稱加密對(duì)傳輸內(nèi)容進(jìn)行加密傳輸
4特咆、中間人因?yàn)閾碛锌蛻舳说碾S機(jī)數(shù)腻格,可以通過(guò)對(duì)稱加密算法進(jìn)行內(nèi)容解密
5菜职、中間人以客戶端的請(qǐng)求內(nèi)容再向正規(guī)網(wǎng)站發(fā)起請(qǐng)求
6酬核、因?yàn)橹虚g人與服務(wù)器的通信過(guò)程是合法的,正規(guī)網(wǎng)站通過(guò)建立的安全通道返回加密后的數(shù)據(jù)
7愁茁、中間人憑借與正規(guī)網(wǎng)站建立的對(duì)稱加密算法對(duì)內(nèi)容進(jìn)行解密
8蚕钦、中間人通過(guò)與客戶端建立的對(duì)稱加密算法對(duì)正規(guī)內(nèi)容返回的數(shù)據(jù)進(jìn)行加密傳輸
9、客戶端通過(guò)與中間人建立的對(duì)稱加密算法對(duì)返回結(jié)果數(shù)據(jù)進(jìn)行解密
由于缺少對(duì)證書(shū)的驗(yàn)證鹅很,所以客戶端雖然發(fā)起的是 HTTPS 請(qǐng)求嘶居,但客戶端完全不知道自己的網(wǎng)絡(luò)已被攔截,傳輸內(nèi)容被中間人全部竊取。
Q: HTTPS 為什么安全邮屁?
A: 因?yàn)?HTTPS 保證了傳輸安全整袁,防止傳輸過(guò)程被監(jiān)聽(tīng)、防止數(shù)據(jù)被竊取佑吝,可以確認(rèn)網(wǎng)站的真實(shí)性坐昙。
Q: HTTPS 的傳輸過(guò)程是怎樣的?
A: 客戶端發(fā)起 HTTPS 請(qǐng)求芋忿,服務(wù)端返回證書(shū)炸客,客戶端對(duì)證書(shū)進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)后本地生成用于改造對(duì)稱加密算法的隨機(jī)數(shù)戈钢,通過(guò)證書(shū)中的公鑰對(duì)隨機(jī)數(shù)進(jìn)行加密傳輸?shù)椒?wù)端,服務(wù)端接收后通過(guò)私鑰解密得到隨機(jī)數(shù)开仰,之后的數(shù)據(jù)交互通過(guò)對(duì)稱加密算法進(jìn)行加解密。
Q: 為什么需要證書(shū)?
A: 防止”中間人“攻擊傻粘,同時(shí)可以為網(wǎng)站提供身份證明。
Q: 使用 HTTPS 會(huì)被抓包嗎?
A: 會(huì)被抓包脖阵,HTTPS 只防止用戶在不知情的情況下通信被監(jiān)聽(tīng),如果用戶主動(dòng)授信充边,是可以構(gòu)建“中間人”網(wǎng)絡(luò),代理軟件可以對(duì)傳輸內(nèi)容進(jìn)行解密。