SSL的握手協議

2021-04-20 11:46:21 字數 2308 閱讀 6631

1. 使用者瀏覽器將其ssl版本號、加密設定引數、與session有關的資料以及其它一些必要資訊傳送到伺服器。

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

3. 客戶端檢查伺服器證書,如果檢查失敗,提示不能建立ssl連線。如果成功,那麼繼續。

4. 客戶端瀏覽器為本次會話生成pre-master secret,並將其用伺服器公鑰加密後傳送給伺服器。

5. 如果伺服器要求鑑別客戶身份,客戶端還要再對另外一些資料簽名後並將其與客戶端證書一起傳送給伺服器。

6. 如果伺服器要求鑑別客戶身份,則檢查簽署客戶證書的ca是否可信。如果不在信任列表中,結束本次會話。如果檢查通過,伺服器用自己的私鑰解密收到的pre-master secret,並用它通過某些演算法生成本次會話的master secret。

7. 客戶端與伺服器均使用此master secret生成本次會話的會話金鑰(對稱金鑰)。在雙方ssl握手結束後傳遞任何訊息均使用此會話金鑰。這樣做的主要原因是對稱加密比非對稱加密的運算量低乙個數量級以上,能夠顯著提高雙方會話時的運算速度。

8. 客戶端通知伺服器此後傳送的訊息都使用這個會話金鑰進行加密。並通知伺服器客戶端已經完成本次ssl握手。

9. 伺服器通知客戶端此後傳送的訊息都使用這個會話金鑰進行加密。並通知客戶端伺服器已經完成本次ssl握手。

10. 本次握手過程結束,會話已經建立。雙方使用同乙個會話金鑰分別對傳送以及接受的資訊進行加、解密。

1 ssl通訊示意圖

ssl通訊示意圖如圖1所示:

2 ssl通訊說明

在該部分,將對圖1所示的示意圖進行說明。為了說明的方便,在本文中稱客戶端為b,伺服器端為s。

step 1: b——〉s(發起對話,協商傳送加密演算法)

你好,s!我想和你進行安全對話,我的對稱加密演算法有des,rc5,我的金鑰交換演算法有rsa和dh,摘要演算法有md5和sha。

step2: s——〉b(傳送伺服器數字證書)

你好,b!那我們就使用des-rsa-sha這對組合進行通訊,為了證明我確實是s,現在傳送我的數字證書給你,你可以驗證我的身份。

step 3: b——〉s(傳送本次對話的金鑰)

(檢查s的數字證書是否正確,通過ca機構頒發的證書驗證了s證書的真實有效性後。生成了利用s的公鑰加密的本次對話的金鑰傳送給s)

s, 我已經確認了你的身份,現在將我們本次通訊中使用的對稱加密演算法的金鑰傳送給你。

step4: s——〉b(獲取金鑰)

(s用自己的私鑰解密獲取本次通訊的金鑰)。

b, 我已經獲取了金鑰。我們可以開始通訊了。

step5: sb(進行通訊)

說明:一般情況下,當b是保密資訊的傳遞者時,b不需要數字證書驗證自己身份的真實性,如

電子銀行的應用,客戶需要將自己的賬號和密碼傳送給銀行,因此銀行的伺服器需要安裝數字證書來表明自己身份的有效性。在某些b2b應用,伺服器端也需要對客戶端的身份進行驗證,這時客戶端也需要安裝數字證書以保證通訊時伺服器可以辨別出客戶端的身份,驗證過程類似於伺服器身份的驗證過程。

此外需要說明的是,在一些電子商務的應用中,可能還會使用到電子簽名,或者為了資訊交換的更加安全,會增加電子簽名和訊息校驗碼(mac)。

hash 編碼是使用hash演算法從任意長度的訊息中計算hash值的乙個過程,hash值可以說是訊息的指紋,因為對於任何不同的訊息,幾乎總有不同的hash值。因此在ssl通訊過程中,

可以對訊息的

hash

值進行加密,確保傳遞的訊息在傳輸過程中沒有被修改。

非對稱加密或稱之為公鑰加密使用數學上相關的兩個數值來對資訊進行編碼(加密),其中乙個數字稱為公鑰,另乙個稱為私鑰。公鑰加密的資訊可以用私鑰解密,私鑰加密的資訊可以用公鑰解密。由於公鑰可以大面積發放,因此公鑰加密在ssl加密通訊中應用於對金鑰的加密或者進行數字簽名。

對稱加密和非對稱加密相比的區別在於對稱加密中,加密資訊和解密資訊使用同樣的金鑰,因此該金鑰無法公開。

但是其具有加密、解密快速的特點。

在ssl

通訊中,首先採用非對稱加密交換資訊,使得伺服器獲得瀏覽器端提供的對稱加密的金鑰,然後利用該金鑰進行通訊過程中資訊的加密和解密。為了保證訊息在傳遞過程中沒有被篡改,可以加密

hash

編碼來確保資訊的完整性。

SSL握手協議

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

SSL協議之握手協議

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

SSL協議之握手協議

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