05.HTTPS的實現原理-HTTPS的握手流程(TLS1.2)
- 簡介
- 1. TLS握手過程概述
- 2. TLS握手過程細化
- 3. 主密鑰(對稱密鑰)生成過程
- 4. 密碼規范變更
簡介
主要講述了混合加密流程完成后,客戶端和服務器如何共同獲得相同的對稱密鑰,并通過該密鑰進行數據的加密和解密。詳細介紹了HTTPS的加密過程,并進一步闡述了TLS握手過程,包括客戶端發送Client Hello請求給服務器,告知其支持的TLS版本、生成的隨機數以及密碼套件等信息,以便服務器根據這些信息與客戶端協商并建立安全的連接。
1. TLS握手過程概述
TLS握手過程包括四次握手
1.客戶端首先發送Client Hello請求。
2.服務器收到Client Hello后,發送Server Hello、Server Random、Certificate、Server Key Exchange、Server Hello Done等報文。
3.客戶端收到服務器端的報文后,生成主密鑰并加密后發送給服務器端。
4.服務器端收到客戶端的加密數據后,用私鑰解密,得到主密鑰。
5.雙方使用主密鑰進行對稱加密,完成數據傳輸。
2. TLS握手過程細化
在TLS1.2協議中,主密鑰(對稱密鑰)由雙方交換參數、協商算法各自生成。不再由客戶端生成后,加密傳輸給服務端。
1.Client Hello包含TLS版本、隨機數(Client Random)、密碼套件(CipherSuites)等信息。
2.Server Hello確認收到Client Hello,并發送Server Random、ECDHE密鑰交換算法、Certificate、Server Key Exchange、Server Hello Done等報文。
3.Client收到服務器端的報文后,生成客戶端參數(Client Key Exchange),并用服務器端的公鑰加密后發送給服務器端。
4.服務器端收到客戶端的加密數據后,用私鑰解密,生成主密鑰。與此同時,客戶端也生了相同的主密鑰。
5.客戶端和服務器端分別用主密鑰進行數據加密和解密。
3. 主密鑰(對稱密鑰)生成過程
1.客戶端驗證完服務器端的合法性后,生成自己的客戶端參數(Client Key Exchange),并用服務器端的公鑰加密后發送給服務器端。
2.服務器端收到客戶端的加密數據后,用私鑰解密,得到客戶端參數。
3.客戶端和服務器端分別用兩個參數(Client Key Exchange、Server Key Exchange),通過協商好的ECDHE算法生成預主密鑰。然后預主密鑰再次和兩個隨機數(Client Random、Server Random)進行ECDHE算法計算,生成主密鑰。
4.主密鑰用于后續的數據加密和解密。
4. 密碼規范變更
1.在生成主密鑰后,客戶端和服務器端改變密碼規范,從非對稱加密變為對稱加密。
2.使用主密鑰進行數據的加密和解密,提高安全性。
往期文章參考:
01.HTTPS的實現原理-HTTPS的概念
02.HTTPS的實現原理-HTTPS與HTTP的區別詳解
03.HTTPS的實現原理-HTTPS的工作流程
04.HTTPS的實現原理-HTTPS的混合加密流程