一、參數協商算法
首先客戶端和服務端肯定一個雙方都支持的最高的協議版本,同時肯定他們使用的密碼套件----組合算法 (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
這樣總結下: 也就是說在客戶端仍是在服務端的隨機數是存在兩個的隨機數,就客戶端來講 分別是第一次產生的 Random_C 和後面 發送的 Pre-Master Secret 包含在ClientKeyExchange 中而且使用服務器的公鑰加密。加密
TLS祕鑰協商過程抓包blog