SSL/TLS 握手協議簡述


1、參數協商

首先客戶端和服務端確定一個雙方都支持的最高的協議版本,同時確定他們使用的密碼套件----組合算法 (Cipher Suite)算法的組合分別用在不同目的的三個算法,包含交換秘鑰和身份認證的算法,用於加密程序的對稱加密算法,以及消息驗證的MAC算法。算法組合的規范如下:

  

 身份驗證通過之后,進入秘鑰交換階段,客戶端和服務器之間並不是直接交換秘鑰,屙屎交換升恆米葯品所需要用的信息,這個信息被稱為 Pre-Master Secret (客戶端產生的一個隨機數)如果參數協商階段確定了算法組合使用RSA交換秘鑰,那么客戶端使用公鑰(包含在服務器證書中)加密 Pre-Master Secret,然后再傳給服務器,服務器使用私鑰來解密,所以Pre-Master Secret 是安全的,之后雙方還要計算一個 Master Secret ,最終的秘鑰都是基於Master Secret生成的,Master Secret是通過三對三個隨機數進行計算得到的。除了Pre-Master Secret 之外,另外兩個隨機數則是參數協商階段交換的客戶端隨機數和服務器隨機數。

在SSL/TLS1.2中使用消息驗證碼MAC實現消息防篡改過,原理是在消息發送之前,將消息和一個消息和雙方共享的秘鑰作為一個hash算法的輸入,再講求的值的摘要發送給對方。對方使用私鑰解密

 2、TLS1.2 握手的消息的順序圖

  1.       客戶端發送一個ClientHello消息給服務端 ,消息包含客戶端支持的協議版本,算法的組合列表,客戶端生成的隨機數。
  2.       服務端給客戶端發送ServerHello消息,該消息包含服務器選擇的協議版本號和支持的算法組合,還有服務端生成的隨機數
  3.       如果在上個步驟中算法組合包含的是RSA,則服務器向客戶端發送數字證書,客戶端驗證服務器的身份
  4.       服務器向客戶端發送ServerHelloDon ,表示服務器完成秘鑰協商
  5.       客戶端發送一個隨機的Pre -Master Sercet ,然后向服務器發送一個 ClientKeyExchange消息,包含使用服務器公鑰加密的Pre-Mater Secret
  6.       客戶端和服務器使用各自的Pre Master Secret 步驟一中產生的客戶端隨機數,以及步驟二服務器端產生的隨機數來計算一個 Master secret .之后客戶端和服務端可以使用該秘鑰計算后面使用的秘鑰
  7.       客戶端發送修改秘鑰通知 ChangerCipherSpec通知給服務器,表明客戶端開始使用剛才生成的秘鑰來加密和驗證數據,最后客戶端發送一個 ClientFinish消息
  8.       服務器收到客戶端的ChangeCipherSpec之后,也會對客戶端發送ChangeCipherSpec通知,最后服務器發送一個ClientFinish .

     這樣總結下: 也就是說在客戶端還是在服務端的隨機數是存在兩個的隨機數,就客戶端來說 分別是第一次產生的 Random_C 和后面 發送的 Pre-Master Secret 包含在ClientKeyExchange 中並且使用服務器的公鑰加密。

TLS秘鑰協商過程抓包

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM