HTTPS具體過程,7次握手产禾,以及如何防止中間人攻擊的

三次握手

image.png

客戶端向服務(wù)器發(fā)送SYN請求
服務(wù)器發(fā)送ACK回應(yīng)請求排作,并同時(shí)發(fā)送一個(gè)SYN的請求給客戶端
客戶端回應(yīng)ACK應(yīng)答

四次揮手

image.png

客戶端主動關(guān)閉,發(fā)送FIN請求
服務(wù)器回應(yīng)ACK應(yīng)答
服務(wù)器被動關(guān)閉亚情,發(fā)送FIN請求
客戶端回應(yīng)ACK應(yīng)答

看到上述流程妄痪,可能有一個(gè)疑問:為什么連接和關(guān)閉的握手次數(shù)不一樣?其實(shí)楞件,不論是連接還是關(guān)閉拌夏,客戶端和服務(wù)器端都是發(fā)送了一次請求(SYN/FIN)僧著,回應(yīng)了一次應(yīng)答(ACK),它們是對稱的障簿。但是,在連接的時(shí)候服務(wù)器端的請求和應(yīng)答是在一次握手中同時(shí)完成的栅迄,而關(guān)閉的時(shí)候卻是分兩次完成的站故,所以就造成了連接和關(guān)閉的握手次數(shù)不對稱。

現(xiàn)在毅舆,新問題又來了:為什么連接時(shí)復(fù)用一次握手西篓,而關(guān)閉的時(shí)候不復(fù)用握手?這個(gè)則是因?yàn)檫B接和關(guān)閉的行為不是一樣所造成的憋活。

在連接過程中岂津,客戶端是主動連接,服務(wù)器端是被動連接悦即,這個(gè)順序是確定了的吮成,因此,可以復(fù)用第二次握手辜梳。
在關(guān)閉的過程中粱甫,客戶端和服務(wù)器端可能同時(shí)主動關(guān)閉,此時(shí)就不能復(fù)用第二次握手了作瞄,因此請求和應(yīng)答需要單獨(dú)的發(fā)送茶宵。

image.png

Client Hello
握手第一步是客戶端向服務(wù)端發(fā)送 Client Hello 消息,這個(gè)消息里包含了一個(gè)客戶端生成的隨機(jī)數(shù) Random1宗挥、客戶端支持的加密套件(Support Ciphers)和 SSL Version 等信息

Server Hello
第二步是服務(wù)端向客戶端發(fā)送 Server Hello 消息乌庶,這個(gè)消息會從 Client Hello 傳過來的 Support Ciphers 里確定一份加密套件,這個(gè)套件決定了后續(xù)加密和生成摘要時(shí)具體使用哪些算法契耿,另外還會生成一份隨機(jī)數(shù) Random2瞒大。注意,至此客戶端和服務(wù)端都擁有了兩個(gè)隨機(jī)數(shù)(Random1+ Random2)宵喂,這兩個(gè)隨機(jī)數(shù)會在后續(xù)生成對稱秘鑰時(shí)用到糠赦。

Certificate
這一步是服務(wù)端將自己的證書下發(fā)給客戶端,讓客戶端驗(yàn)證自己的身份锅棕,客戶端驗(yàn)證通過后取出證書中的公鑰拙泽。

Certificate Request
Certificate Request 是服務(wù)端要求客戶端上報(bào)證書,這一步是可選的裸燎,對于安全性要求高的場景會用到顾瞻。

Server Hello Done
Server Hello Done 通知客戶端 Server Hello 過程結(jié)束。

Certificate Verify
客戶端收到服務(wù)端傳來的證書后德绿,先從 CA 驗(yàn)證該證書的合法性荷荤,驗(yàn)證通過后取出證書中的服務(wù)端公鑰退渗,再生成一個(gè)隨機(jī)數(shù) Random3,再用服務(wù)端公鑰非對稱加密 Random3 生成 PreMaster Key蕴纳。

Client Key Exchange
上面客戶端根據(jù)服務(wù)器傳來的公鑰生成了 PreMaster Key会油,Client Key Exchange 就是將這個(gè) key 傳給服務(wù)端,服務(wù)端再用自己的私鑰解出這個(gè) PreMaster Key 得到客戶端生成的 Random3古毛。至此翻翩,客戶端和服務(wù)端都擁有 Random1 + Random2 + Random3,兩邊再根據(jù)同樣的算法就可以生成一份秘鑰稻薇,握手結(jié)束后的應(yīng)用層數(shù)據(jù)都是使用這個(gè)秘鑰進(jìn)行對稱加密嫂冻。為什么要使用三個(gè)隨機(jī)數(shù)呢?這是因?yàn)?SSL/TLS 握手過程的數(shù)據(jù)都是明文傳輸?shù)娜担⑶叶鄠€(gè)隨機(jī)數(shù)種子來生成秘鑰不容易被暴力破解出來桨仿。

Change Cipher Spec(Client)
這一步是客戶端通知服務(wù)端后面再發(fā)送的消息都會使用前面協(xié)商出來的秘鑰加密了,是一條事件消息案狠。

Encrypted Handshake Message(Client)
這一步對應(yīng)的是 Client Finish 消息服傍,客戶端將前面的握手消息生成摘要再用協(xié)商好的秘鑰加密,這是客戶端發(fā)出的第一條加密消息莺戒。服務(wù)端接收后會用秘鑰解密伴嗡,能解出來說明前面協(xié)商出來的秘鑰是一致的。

Change Cipher Spec(Server)
這一步是服務(wù)端通知客戶端后面再發(fā)送的消息都會使用加密从铲,也是一條事件消息瘪校。

Encrypted Handshake Message(Server)
這一步對應(yīng)的是 Server Finish 消息,服務(wù)端也會將握手過程的消息生成摘要再用秘鑰加密名段,這是服務(wù)端發(fā)出的第一條加密消息阱扬。客戶端接收后會用秘鑰解密伸辟,能解出來說明協(xié)商的秘鑰是一致的麻惶。

Application Data
到這里,雙方已安全地協(xié)商出了同一份秘鑰信夫,所有的應(yīng)用層數(shù)據(jù)都會用這個(gè)秘鑰加密后再通過 TCP 進(jìn)行可靠傳輸

中間人攻擊

服務(wù)器向客戶端發(fā)送公鑰窃蹋。
攻擊者截獲公鑰,保留在自己手上静稻。
然后攻擊者自己生成一個(gè)【偽造的】公鑰警没,發(fā)給客戶端。
客戶端收到偽造的公鑰后振湾,生成加密hash值發(fā)給服務(wù)器杀迹。
攻擊者獲得加密hash值,用自己的私鑰解密獲得真秘鑰押搪。
同時(shí)生成假的加密hash值树酪,發(fā)給服務(wù)器浅碾。
服務(wù)器用私鑰解密獲得假秘鑰。

這里就需要一個(gè)強(qiáng)大的公證人续语,就是CA垂谢,操作系統(tǒng)會做CA證書的判斷。

http://www.reibang.com/p/7158568e4867
http://www.reibang.com/p/9c52693a09dc

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疮茄,一起剝皮案震驚了整個(gè)濱河市埂陆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌娃豹,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件购裙,死亡現(xiàn)場離奇詭異懂版,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)躏率,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門躯畴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人薇芝,你說我怎么就攤上這事蓬抄。” “怎么了夯到?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵嚷缭,是天一觀的道長。 經(jīng)常有香客問我耍贾,道長阅爽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任荐开,我火速辦了婚禮付翁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晃听。我一直安慰自己百侧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布能扒。 她就那樣靜靜地躺著佣渴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赫粥。 梳的紋絲不亂的頭發(fā)上观话,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音越平,去河邊找鬼频蛔。 笑死灵迫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晦溪。 我是一名探鬼主播瀑粥,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼三圆!你這毒婦竟也來了狞换?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤舟肉,失蹤者是張志新(化名)和其女友劉穎修噪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體路媚,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡黄琼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了整慎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脏款。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖裤园,靈堂內(nèi)的尸體忽然破棺而出撤师,到底是詐尸還是另有隱情,我是刑警寧澤拧揽,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布剃盾,位于F島的核電站,受9級特大地震影響强法,放射性物質(zhì)發(fā)生泄漏万俗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一饮怯、第九天 我趴在偏房一處隱蔽的房頂上張望闰歪。 院中可真熱鬧,春花似錦蓖墅、人聲如沸库倘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽教翩。三九已至,卻和暖如春贪壳,著一層夾襖步出監(jiān)牢的瞬間饱亿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彪笼,地道東北人钻注。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像配猫,于是被迫代替她去往敵國和親幅恋。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容