溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

TLS協(xié)商過(guò)程是怎樣的

發(fā)布時(shí)間:2021-06-23 10:29:22 來(lái)源:億速云 閱讀:209 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“TLS協(xié)商過(guò)程是怎樣的”,在日常操作中,相信很多人在TLS協(xié)商過(guò)程是怎樣的問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”TLS協(xié)商過(guò)程是怎樣的”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

0. 前置知識(shí)

  1. 非對(duì)稱加密(比如RSA系列)算法運(yùn)作機(jī)制:RSA(PrivateKey,MSG)=ENCODE,只能RSA(PublicKey,ENCODE)=MSG;RSA(PublicKey,MSG)=ENCODE,只能RSA(PrivateKey,ENCODE)=MSG

  2. RSA的難于破解基于這一數(shù)學(xué)事實(shí):

對(duì)于兩個(gè)大質(zhì)數(shù)p*q =n,與N互質(zhì)的數(shù)數(shù)量為(p-1)(q-1),當(dāng)p或者q在1024位以上的時(shí)候要想尋找N的兩個(gè)因子概率就太低了,而找到恰好的兩個(gè)因子對(duì)(PublicKey,PrivateKey)就更難了。。。

1. 流程(報(bào)文及解釋說(shuō)明,以訪問(wèn)https://www.baidu.com 為例子)

1.1. ClientHello(C2S)

TLS協(xié)商過(guò)程是怎樣的

字段解釋
VersionTLS1.0采用的TLS版本
Random0acc....客戶端生成的隨機(jī)值client_random
Cipher SuitesTLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256客戶端支持的加解密算法組合列表,分為3個(gè)部分密鑰交換算法(ECDHE_RSA),批量加密算法(AES_128_GCM),消息認(rèn)證碼算法(SHA256)

TIP: Cipher Suite 分為3個(gè)部分:

  1. 密鑰交換算法:決定客戶端與服務(wù)器之間在握手時(shí)如何身份驗(yàn)證;

  2. 批量加密算法:加密消息流,TLS完成之后使用的HTTP消息加密算法(對(duì)稱加密)

  3. 消息認(rèn)證碼算法:創(chuàng)建消息摘要, 報(bào)文的信息摘要算法,也就是信息的校驗(yàn)碼用于信息完整性校驗(yàn)

1.2. ServerHello(S2C)

TLS協(xié)商過(guò)程是怎樣的

字段解釋
VersionTLS1.2采用的TLS版本
Random22c9c....服務(wù)端生成的隨機(jī)值server_random
Cipher SuiteTLS_ECDHE_RSA_WITH_CHACHA20_POLY1205_SHA256從客戶端上報(bào)的算法組中選擇一個(gè)

1.3. CertAndServerExchange(S2C)

TLS協(xié)商過(guò)程是怎樣的

服務(wù)器證書下發(fā)->Certifacate:

字段解釋
VersionTLS1.2采用的TLS版本
Certificates....CA證書鏈,從根證書到服務(wù)器證書

證書鏈(這里可以看到和上面的證書連是一致的):

TLS協(xié)商過(guò)程是怎樣的

TIP:

證書鏈的信任邏輯:

  1. 購(gòu)買CA證書其實(shí)就是讓CA機(jī)構(gòu)使用自己的privateKey給你的Pubkey的做次加密生成一個(gè)簽名;

  2. 基于這樣一個(gè)邏輯:首先A是可信任的,那么A說(shuō)B是可以信任的那么B就是可以信任的,B再說(shuō)C是可以信任的那么C也是可信任的;

證書的驗(yàn)證大體:

  1. 讀取CA證書文件的公鑰簽名及證書的頒發(fā)機(jī)構(gòu);

  2. 根據(jù)頒發(fā)機(jī)構(gòu)獲取該機(jī)構(gòu)的根證書ROOTCA讀取根證書(已信任)的公鑰

  3. 使用根證書的公鑰對(duì)簽名解密出CA的實(shí)際公鑰,和CA文件直接讀取的進(jìn)行匹配

  4. 如果匹配則繼續(xù)讀取其他的配置判斷是否過(guò)期等等

證書基本信息(公鑰,簽名,使用人,頒發(fā)機(jī)構(gòu)等等):

TLS協(xié)商過(guò)程是怎樣的

ServerKeyExchange:

字段解釋
VersionTLS1.2采用的TLS版本
Pubkey22c9c....Diffie-Hellman生成的安全數(shù)x 使用函數(shù)(p,g,pubKey=g^x mod p)計(jì)算pubkey后發(fā)送給Client,pubkey是使用ECDHE_RSA算法加密的,客戶端需要用同樣的算法和Certificate的公鑰進(jìn)行進(jìn)行解密
Signature*....本段報(bào)文的簽名算法及簽名

1.4 ServerHelloDone(S2C)

TLS協(xié)商過(guò)程是怎樣的

1.5 ClientKeyExchange,CiperSpecHandShakeMsg(C2S)

TLS協(xié)商過(guò)程是怎樣的

ClientKeyExchange:

字段解釋
Pubkey...Diffie-Hellman生成的安全數(shù)y,根據(jù)函數(shù)pubKey=g^y mod p 生成pubkey發(fā)送給服務(wù)端,使用ECDHE_RSA算法公鑰加密后發(fā)送給服務(wù)器

ChangeCipherSpec: 切換信息加密算法(對(duì)稱加密,在此例中為CHACHA20_POLY1205)

2.后續(xù)

2.1 生成對(duì)稱加密密鑰

在協(xié)商過(guò)程中生成的各種隨機(jī)數(shù)會(huì)被用來(lái)生成一個(gè)會(huì)話密鑰(這個(gè)算法是通用的...);

2.2 使用對(duì)稱加密來(lái)生成加密HTTP報(bào)文

后續(xù)所有請(qǐng)求都是基于對(duì)稱加密算法(在此例中為CHACHA20_POLY1205)的密文了(不會(huì)使用效率比較低的非對(duì)稱算法)

3. TLS協(xié)商流程簡(jiǎn)化

  1. 客戶端發(fā)送一個(gè)隨機(jī)數(shù)給服務(wù)端(明文),支持的算法組

  2. 服務(wù)端收到后也發(fā)送一個(gè)隨機(jī)數(shù)給客戶端(明文),要使用的算法,及數(shù)據(jù)簽名

  3. 服務(wù)端發(fā)送證書文件(CA證書鏈)

  4. 客戶端對(duì)證書合法性進(jìn)行校驗(yàn)(驗(yàn)簽名等等)

  5. 校驗(yàn)完成后再生成第三個(gè)隨機(jī)數(shù),第三個(gè)隨機(jī)數(shù)用證書的公鑰加密后發(fā)送給服務(wù)端,服務(wù)端用私鑰解密得到第三個(gè)隨機(jī)數(shù)(密文)。

  6. 服務(wù)端和客戶端手握三個(gè)隨機(jī)數(shù)然后各自生成會(huì)話密鑰進(jìn)行會(huì)話加密。

  7. 以后數(shù)據(jù)的機(jī)密解密就會(huì)使用會(huì)話密鑰進(jìn)行對(duì)稱加解密了

4. 抓包文件

TLS-wareshark

到此,關(guān)于“TLS協(xié)商過(guò)程是怎樣的”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

tls
AI