關(guān)于HTTPS的TSL握手
HTTP一般基于TCP協(xié)議,而HTTPS就是在這之間加了SSL/TLS協(xié)議,那么在TCP三次握手建立TCP連接后,就需要TLS握手建立SSL/TLS連接。
TLS握手-流程
基于RSA算法
(1)首先,客戶端向服務(wù)器發(fā)起加密通信請(qǐng)求-ClientHello請(qǐng)求,該請(qǐng)求包括
① 生成隨機(jī)數(shù)(用于后續(xù)會(huì)話密鑰);
② 客戶端支持的密碼套件列表,如RSA加密算法。
③ 客戶端支持的TLS協(xié)議版本;
(2)服務(wù)器收到后,作出響應(yīng)-ServerHello,響應(yīng)包括
① 生成隨機(jī)數(shù)(用于后續(xù)會(huì)話密鑰);
② 確認(rèn)密碼套件列表;
③ 確認(rèn)TLS協(xié)議版本;
同時(shí)發(fā)送Certificate信息,攜帶服務(wù)器的數(shù)字證書。
(3)客戶端收到響應(yīng)后,先通過瀏覽器或OS中的CA公鑰確認(rèn)數(shù)字證書真實(shí)合法,再取出數(shù)字證書中服務(wù)器的公鑰,使用其加密報(bào)文,發(fā)送往服務(wù)器:
① 一個(gè)隨機(jī)數(shù);
② 傳遞后續(xù)通信都以【會(huì)話密鑰】加密通信的信息;
③ 客戶端握手結(jié)束通知;
④ 把之前所有發(fā)送數(shù)據(jù)做個(gè)摘要,并用【會(huì)話密鑰】加密,以保證可用和信息未被篡改過。
綜上的三個(gè)隨機(jī)數(shù),通過前面雙方協(xié)商的加密算法,客戶端生成本次通信的【會(huì)話密鑰】
(4)服務(wù)器收到后,也會(huì)計(jì)算出本次通信的【會(huì)話密鑰】,然后向客戶端發(fā)送信息:
① 傳遞后續(xù)通信都以【會(huì)話密鑰】加密通信的信息;
② 服務(wù)器握手結(jié)束通知
③ 把之前所有發(fā)送數(shù)據(jù)做個(gè)摘要,并用【會(huì)話密鑰】加密,以保證可用和信息未被篡改過。
到這里TLS握手結(jié)束!
不,內(nèi)容還沒。
| RSA | 比較傳統(tǒng)的密鑰交換算法 | 不具前向安全的性質(zhì) | 目前使用較少 |
| ECDHE | 前向安全 | 目前廣泛使用 |
Extra Summary
RSA 和 ECDHE 算法區(qū)別
(1)ECDHE支持前向保密
(2)使用ECDHE可不需等最后一次TLS握手,就可以提前發(fā)送加密的HTTP數(shù)據(jù),節(jié)省一個(gè)消息時(shí)間
(3)ECDHE在第2次握手,會(huì)出現(xiàn)服務(wù)器發(fā)出Server Key Exchange信息
以上RSA都達(dá)不到該效果。
Extra Question
第三次握手生成的【會(huì)話密鑰】是對(duì)稱的還是非對(duì)稱的?
考慮非對(duì)稱加密計(jì)算耗時(shí)量大,在HTTPS后續(xù)通信中使用的會(huì)話密鑰是對(duì)稱加密的。
前向保密是啥?
要求一個(gè)密鑰僅可訪問它所保護(hù)的數(shù)據(jù);用來(lái)產(chǎn)生密鑰的元素一次一換,不能再產(chǎn)生其他密鑰;一個(gè)密鑰被破解,并不影響其他密鑰的安全性。
RSA為什么沒有前向保密性?
因?yàn)镽SA每次對(duì)稱加密傳遞信息,都是基于公鑰加密,私鑰解密的,若干服務(wù)器私鑰被截取了,那么通信數(shù)據(jù)將輕而易舉地被解密。
ECDHE怎么做到前向保密?
關(guān)鍵在于客戶端服務(wù)端都生成一對(duì)公私鑰,且密鑰是實(shí)時(shí)生成的??蛻舳朔?wù)器均為生成隨機(jī)數(shù)作為私鑰,據(jù)特殊公式算出各自的公鑰,然后雙方據(jù)持有的數(shù)據(jù)算出一個(gè)一樣隨機(jī)數(shù)用于后續(xù)對(duì)稱加密的密鑰。
到此這篇關(guān)于關(guān)于HTTPS的TSL握手的文章就介紹到這了,更多相關(guān)HTTPS的TSL握手內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
鴻蒙NEXT元服務(wù)之如何利用App?Linking實(shí)現(xiàn)無(wú)縫跳轉(zhuǎn)與二維碼拉起
本文介紹了如何使用AppLinking技術(shù)實(shí)現(xiàn)元服務(wù)之間的無(wú)縫跳轉(zhuǎn),并通過生成二維碼的方式快速拉起元服務(wù),從而簡(jiǎn)化用戶操作流程,增強(qiáng)應(yīng)用的互動(dòng)性和推廣效率,感興趣的朋友跟隨小編一起看看吧2024-11-11
2020史上最全I(xiàn)DEA插件總結(jié)(推薦收藏)
這篇文章主要介紹了2020史上最全I(xiàn)DEA插件總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2020-06-06
不同的編程語(yǔ)言輸出 “Hello World” 代碼
對(duì)很多人來(lái)說,每當(dāng)學(xué)習(xí)一門新的編程語(yǔ)言,寫下的第一行代碼可能都是“Hello,World!“。因此,”Hello,World!" 已經(jīng)成為一段經(jīng)典程序。在成長(zhǎng)中,程序員通常會(huì)使用多種編程語(yǔ)言,大部分程序員甚至實(shí)現(xiàn)過十幾種”Hello,World!”版本。2022-12-12
WebStorm打開多個(gè)項(xiàng)目的三種方法總結(jié)
WebStorm支持多項(xiàng)目管理,本文介紹了三種方法:使用項(xiàng)目導(dǎo)航面板、窗口分割和多個(gè)WebStorm實(shí)例,項(xiàng)目導(dǎo)航面板可以在同一窗口內(nèi)管理多個(gè)項(xiàng)目,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09
kali-linux?202202?安裝w3af命令行版的詳細(xì)過程
這篇文章主要介紹了kali-linux?202202?安裝w3af命令行版,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06

