SSL協議之握手協議

2021-08-28 01:47:09 字數 2591 閱讀 6733

一、握手協議

握手協議是客戶機和伺服器用ssl連線通訊時使用的第乙個子協議,握手協議包括客戶機與伺服器之間的一系列訊息。ssl中最複雜的協議就是握手協議。該協議允許伺服器和客戶機相互驗證,協商加密和mac演算法以及保密金鑰,用來保護在ssl記錄中傳送的資料。握手協議是在應用程式的資料傳輸之前使用的。

每個握手協議包含以下3個字段

1、type:表示10種訊息型別之一。

2、length:表示訊息長度位元組數。

3、content:與訊息相關的引數。

二、握手協議的四個階段

三、握手協議具體過程

1、建立安全能力

ssl握手的第一階段啟動邏輯連線,建立這個連線的安全能力。首先客戶機向伺服器發出client hello訊息並等待伺服器響應,隨後伺服器向客戶機返回server hello訊息,對client hello訊息中的資訊進行確認。

client hello訊息包括version,random,session id,cipher suite,compression method等資訊。

clienthello:客戶傳送cilenthello資訊,包含如下內容:

serverhello:伺服器用serverhello資訊應答客戶,包括下列內容:

這個階段之後,客戶端服務端知道了下列內容:

2、伺服器鑑別與金鑰交換

伺服器啟動ssl握手第2階段,是本階段所有訊息的唯一傳送方,客戶機是所有訊息的唯一接收方。該階段分為4步:

第一步:證書-伺服器將數字證書和到根ca整個鏈發給客戶端,使客戶端能用伺服器證書中的伺服器公鑰認證伺服器。

第二步:伺服器金鑰交換(可選)-這裡視金鑰交換演算法而定。

第三步:證書請求(可選)-服務端可能會要求客戶自身進行驗證。

第四步:伺服器握手完成-第二階段的結束,第三階段開始的訊號。

這個階段的第一步:證書、第二步:伺服器金鑰交換是基於金鑰交換方法的。

ssl中金鑰交換演算法有6種:無效(沒有金鑰交換)、rsa、匿名diffie-hellman、暫時diffie-hellman、固定diffie-hellman、fortezza。

在ssl階段1建立安全能力中,已經確定使哪種金鑰交換演算法。

如果協商過程中確定使用rsa交換金鑰,那麼過程如下圖:

在rsa中,伺服器在它的第乙個資訊中,傳送了rsa加密/解密公鑰證書。不過,因為預備主秘密是由客戶端在下乙個階段生成並傳送的,所以第二個資訊是空的。

3、客戶機鑑別與金鑰交換

客戶機啟動ssl握手第3階段,是本階段所有訊息的唯一傳送方,伺服器是所有訊息的唯一接收方,該階段分為3步。

第一步:證書(可選)-為了對伺服器證明自身,客戶要傳送乙個證書資訊,這是可選的,在iis中可以配置強制客戶端證書認證。

第二步:客戶機金鑰交換(pre-master-secret)-這裡客戶端將預備主金鑰傳送給服務端,注意這裡會使用服務端的公鑰進行加密。

第三步:證書驗證(可選),對預備秘密和隨機數進行簽名,證明擁有第一步證書的公鑰。

下面也重點介紹一下rsa方式的客戶端驗證和金鑰交換。

這種情況,除非伺服器在階段2明確請求,否則沒有證書資訊。客戶端金鑰交換方法包括階段2收到的由rsa公鑰加密的預備主金鑰。

4、完成

客戶機啟動ssl握手第4階段,使伺服器結束。該階段分為4步,前2個訊息來自客戶機,後2個訊息來自伺服器。

5、金鑰生成的過程

這樣握手協議完成,下面看下什麼是預備主金鑰,主金鑰是怎麼生成的。

為了保證資訊的完整性和機密性,ssl需要有六個加密秘密:四個金鑰和兩個iv。

為了資訊的可信性,客戶端需要乙個金鑰(hmac),為了加密要有乙個金鑰,為了分組加密要乙個iv,服務也是如此。

金鑰的生成過程如下:

第一步:從預備主秘密計算主秘密

第二步:從主秘密計算金鑰材料

第三步:從金鑰材料提取加密秘密

SSL協議之握手協議

2.第一步 客戶端向伺服器傳送clienthello clienthello中涉及到的訊息具體如下 客戶端版本,按優先順序列出客戶端支援的協議版本,首選客戶端希望支援的最新協議版本。客戶端隨機數random 會話id session id 如果客戶端第一次連線到伺服器,那麼這個欄位就會保持為空。上圖...

SSL握手協議

握手協議執行過程 第一階段 客戶端向服務端發hello資訊,包含協議版本 隨機數 會話id 密碼套件等資訊 服務端向客戶端發hello資訊,包含協議版本 隨機數 會話id 密碼套件等資訊。第二階段 伺服器發證書給客戶端 包含伺服器自身相關證書 數字簽名 引數等。第三階段 客戶端發證書給服務端 包含客...

SSL的握手協議

1.使用者瀏覽器將其ssl版本號 加密設定引數 與session有關的資料以及其它一些必要資訊傳送到伺服器。2.伺服器將其ssl版本號 加密設定引數 與session有關的資料以及其它一些必要資訊傳送給瀏覽器,同時發給瀏覽器的還有伺服器的證書。如果配置伺服器的ssl需要驗證使用者身份,還要發出請求要...