SSL/TLS 握手協議簡述

一、參數協商算法

首先客戶端和服務端肯定一個雙方都支持的最高的協議版本,同時肯定他們使用的密碼套件----組合算法 (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算法的輸入,再講求的值的摘要發送給對方。對方使用私鑰解密dom

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

  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祕鑰協商過程抓包blog

相關文章
相關標籤/搜索