什么是HTTPS
HTTPS(全稱: Hyper Text Transfer Protocol over SecureSocket Layer),是以安全為目標(biāo)的HTTP通道罕邀,在HTTP的基礎(chǔ)上通過(guò)傳輸加密和身份認(rèn)證保證了傳輸過(guò)程的安全性。HTTPS在HTTP的基礎(chǔ)之上加入SSL,HTTPS的安全基礎(chǔ)是SSL盹牧,因此加密的詳細(xì)內(nèi)容就需要SSL。HTTPS存在不同于HTTP的默認(rèn)端口咪橙,及一個(gè)加密/身份驗(yàn)證層(在HTTP于TCP之間)。這個(gè)系統(tǒng)提供了身份驗(yàn)證與加密通訊方法。它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊,例如交易支付等方面旬蟋。
HTTPS連接建立流程
- Client向Server發(fā)送報(bào)文,包含TLS版本號(hào)革娄,支持的加密算法咖为,隨機(jī)數(shù) C秕狰。
- Server返回握手報(bào)文消息,包含最終決定的加密算法(這個(gè)加密算法一定是Client發(fā)送給Server加密算法的子集)躁染、隨機(jī)數(shù) S、Server數(shù)字證書架忌。
- Client驗(yàn)證Server證書(證書包含的信息有:公鑰吞彤、頒發(fā)機(jī)構(gòu)、過(guò)期時(shí)間等)叹放。
- Client生成預(yù)設(shè)主密鑰(premaster key)饰恕,再加上隨機(jī)數(shù)C和隨機(jī)數(shù)S,按照一定的算法生成會(huì)話密鑰井仰。
- Client發(fā)送報(bào)文給Server,內(nèi)容包括通過(guò)Server的公鑰對(duì)預(yù)主密鑰進(jìn)行加密的數(shù)據(jù)埋嵌。
- Server通過(guò)私鑰解密,得到預(yù)主密鑰俱恶。
- Server通過(guò)隨機(jī)數(shù)C 雹嗦、隨機(jī)數(shù) S 和預(yù)設(shè)主密鑰組成會(huì)話秘鑰, 跟客戶端會(huì)話秘鑰相同。
- Client發(fā)送會(huì)話秘鑰加密的握手消息合是,主要驗(yàn)證服務(wù)端是否正常接受客戶端加密的消息了罪。
- 同樣服務(wù)端也會(huì)通過(guò)會(huì)話秘鑰加密一條消息回傳給客戶端,如果客戶端能夠正常接受的話表明SSL層連接建立完成了
Charles抓包原理
Charles利用HTTPS中間人攻擊的漏洞來(lái)做的聪全,Charles是中間人泊藕。
- 本地請(qǐng)求被劫持(如DNS劫持等),所有請(qǐng)求均發(fā)送到中間人的服務(wù)器
- 中間人服務(wù)器返回中間人自己的證書
- 客戶端創(chuàng)建隨機(jī)數(shù)难礼,通過(guò)中間人證書的公鑰對(duì)隨機(jī)數(shù)加密后傳送給中間人娃圆,然后憑隨機(jī)數(shù)構(gòu)造對(duì)稱加密對(duì)傳輸內(nèi)容進(jìn)行加密傳輸
- 中間人因?yàn)閾碛锌蛻舳说碾S機(jī)數(shù),可以通過(guò)對(duì)稱加密算法進(jìn)行內(nèi)容解密
- 中間人以客戶端的請(qǐng)求內(nèi)容再向官方網(wǎng)站發(fā)起請(qǐng)求
- 因?yàn)橹虚g人與服務(wù)器的通信過(guò)程是合法的蛾茉,官方網(wǎng)站通過(guò)建立的安全通道返回加密后的數(shù)據(jù)
- 中間人憑借與官方網(wǎng)站建立的對(duì)稱加密算法對(duì)內(nèi)容進(jìn)行解密
- 中間人通過(guò)與客戶端建立的對(duì)稱加密算法對(duì)官方內(nèi)容返回的數(shù)據(jù)進(jìn)行加密傳輸
- 客戶端通過(guò)與中間人建立的對(duì)稱加密算法對(duì)返回結(jié)果數(shù)據(jù)進(jìn)行解密
為什么客戶端會(huì)信任中間人下發(fā)的證書呢讼呢?
問(wèn)題就在與根證書的安裝信任上。
比如在用Charles抓包HTTPS請(qǐng)求時(shí)臀稚,需要下載Charles的CA根證書吝岭,安裝在iPhone手機(jī)中,并點(diǎn)擊信任該證書吧寺。而Charles下發(fā)的證書就是由這個(gè)根證書簽發(fā)的窜管,手機(jī)就會(huì)認(rèn)為其是合法的,因此校驗(yàn)通過(guò)稚机。
參考資料:
《計(jì)算機(jī)網(wǎng)絡(luò)(第5版)》Andrew S. Tanenbaum David J. Wetherall
https協(xié)議 和 Charles 進(jìn)行https抓包原理
《面試官系列 - https 真的安全嗎幕帆,可以抓包嗎,如何防止抓包嗎》