您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何理解https與抓包”,在日常操作中,相信很多人在如何理解https與抓包問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何理解https與抓包”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
0x00 HTTP之殤
數(shù)據(jù)明文傳輸,易嗅探
數(shù)據(jù)完整性無(wú)驗(yàn)證,易篡改
網(wǎng)站身份無(wú)認(rèn)證,易假冒
由此誕生HTTPS。
0x01 什么是HTTPS
HTTP + SSL/TLS
TLS是SSL的升級(jí)版
二圖勝千言:
作用:防嗅探,防篡改,身份認(rèn)證
0x02 https握手過程
建立https連接(明文),再用對(duì)稱加密傳輸數(shù)據(jù)。
TCP三次握手
C->S:[client hello] C發(fā)送hello消息(協(xié)議版本,隨機(jī)數(shù)c,加密組件列表等)給S,請(qǐng)求建立SSL會(huì)話。
S->C: [server hello]返回響應(yīng)(確認(rèn)加密組件,隨機(jī)數(shù)s等)。
S->C: [certificate]返回響應(yīng)certificate(網(wǎng)站證書)。
S->C: [server key exchange]指定密鑰協(xié)商(交換)協(xié)議(密鑰協(xié)商方式),發(fā)送密鑰協(xié)商(交換)算法的公鑰給C。
S->C: [server hello done]發(fā)送serverhellodone,開始C的密鑰協(xié)商。
C->S: [clientkeyexchange]C生成密鑰協(xié)商(交換)算法公私鑰,發(fā)送公鑰給S,此時(shí)C和S可以協(xié)商出相同的密鑰pre master secret,現(xiàn)在C和S可以通過c,s,pre master三個(gè)隨機(jī)數(shù)算出對(duì)稱加密的密鑰。(這里本人還看到一個(gè)版本是C生成pre master secret 后用密鑰交換/協(xié)商算法加密發(fā)送到S,本人認(rèn)為不需要發(fā)送,S通過C發(fā)送的密鑰協(xié)商的公鑰和自己生成的一個(gè)隨機(jī)數(shù)xs可以自己計(jì)算出這個(gè)pre master secret。還有一個(gè)版本是對(duì)稱加密的密鑰是C用S的證書公鑰加密給S用私鑰解密獲得,這里本人認(rèn)為此對(duì)稱密鑰S也可由c,s,pre master自己生成不需要C發(fā)送。)
C->S: [changecipherspec]通知S此消息以后C以加密方式發(fā)送數(shù)據(jù)。
C->S: C用生成的對(duì)稱密鑰加密之前所有握手消息hash,發(fā)送給S解密驗(yàn)證hash。
S->C: [changecipherspec]通知C此消息后S以加密方式發(fā)送數(shù)據(jù)。
S->C: S用對(duì)稱密鑰加密之前所有握手消息hash,發(fā)送給C進(jìn)行解密驗(yàn)證hash。
開始對(duì)稱加密傳輸數(shù)據(jù)……(Application Data)
0x03 抓包分析https握手流程
以瀏覽器打開https://www.52pojie.cn為例
1. dns解析和tcp三次握手
2. clienthello:
可以看出瀏覽器發(fā)送了支持的協(xié)議版本TLS1.2,32字節(jié)隨機(jī)數(shù)c,加密組件cipher等信息給S。
3. serverhello:
可以看出S選擇了TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384加密組件,解釋如下:
密鑰交換算法,用于決定客戶端與服務(wù)器之間在握手的過程中如何認(rèn)證,用到的算法包括RSA,Diffie-Hellman,ECDH,PSK等,這里選擇了ECDHE。
加密算法,用于加密消息流,該名稱后通常會(huì)帶有兩個(gè)數(shù)字,分別表示密鑰的長(zhǎng)度和初始向量的長(zhǎng)度,比如DES 56/56, RC2 56/128, RC4 128/128, AES 128/128, AES 256/256。這里選擇了AES。
報(bào)文認(rèn)證信息碼(MAC)算法,用于創(chuàng)建報(bào)文摘要,確保消息的完整性(沒有被篡改),算法包括MD5,SHA等。這里選擇了SHA384。
PRF(偽隨機(jī)數(shù)函數(shù)),用于生成“master secret”。
S還發(fā)送了32字節(jié)隨機(jī)數(shù)s。
4.certificate:
第一個(gè)cert是52pojie網(wǎng)站的證書,第二個(gè)cert是頒發(fā)者trustasia機(jī)構(gòu)的證書。
這里可以獲得證書的詳細(xì)信息
5. serverkeyexchange和serverhellodone:
可以看出使用ECDH密鑰交換算法,指定橢圓曲線secp256r1,還有發(fā)送了DH算法協(xié)商的公鑰給C。
6. Clientkeyexchange和client change cipher spec:
這里C發(fā)送了DH算法協(xié)商的公鑰給S,以及加密了握手消息給S進(jìn)行驗(yàn)證。
7. server change cipher spec:
服務(wù)端使用Ticket方式存儲(chǔ)session狀態(tài),在Server Change Cipher Spec之前就需要發(fā)送New Session Ticket消息,這部分就不細(xì)說了。這里S加密握手消息給C進(jìn)行驗(yàn)證。
8. application data:
這里可以看出雙方握手完畢,以后的消息都進(jìn)行對(duì)稱加密,已經(jīng)無(wú)法看出明文了。
0x04 其他
由于握手流程導(dǎo)致https速度比http慢,本人認(rèn)為其帶來的安全性更為重要,而速度雖然較慢,但是用戶幾乎感覺不到,而且有很多優(yōu)化措施可以提升速度。
有了https并不能完全保證網(wǎng)站安全,安全是多因素,多環(huán)節(jié)的,即使有https,某個(gè)‘短板’就可以淪陷一個(gè)網(wǎng)站,并且https自身也非安全,如著名的心臟出血漏洞。
https也非絕對(duì)防止MITM,如偽造證書,導(dǎo)出明文密碼等。
到此,關(guān)于“如何理解https與抓包”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。