-
握手協議
鎖定
握手協議是指主要用來讓客户端及服務器確認彼此的身份的一類網絡協議。除此之外,為了保護SSL記錄封包中傳送的數據,握手協議還能協助雙方選擇連接時所使用的加密算法、MAC算法及相關密鑰。在傳送應用程序的數據前,必須使用 握手協議來完成上述事項。
[1]
握手協議消息組成
握手協議由一些客户與服務器交換的消息所構成,每一個消息都含有以下三個字段。
(1)類型(type),1個字節:表示消息的類型,總共有十種
(2)長度(length),3個字節:消息的位組長度。
握手協議類型
握手協議定義異步模塊在通信時的接口信號時序,保證異步電路各個組件之間數據流動並且不發生衝突的一種機制。主要包括兩類:四段握手協議(Four-Phase)和兩段握手協議(Two-Phase)。
四段握手協議是基於電平的,只有高電平表示控制信號的請求和應答,因此控制信號有歸零的動作。四段握手協議因此也被稱為歸零(Return-to-Zero,RTZ)握手協議,歸零信號也被稱為“電平信號”。這裏的“四段”(Four-Phase)是指通信動作的次數:①發送端準備好數據後會將請求信號置高;②接收端接收數據後將應答信號置高;③發送端將請求信號置低作為響應(此時數據可以不再保持有效);④接收端通過將應答信號置低來做出應答。此時,發送端就可以開始下一個通信週期。四段握手協議的缺點是多餘的歸零翻轉造成了不必要的時間和能量的損耗。
兩段握手協議是基於事件的,控制信號的請求和應答通過上升沿或者下降沿來表示。兩段握手協議中,請求和應答信號使用信號線上的電平翻轉沿來進行編碼。在這種編碼中的。0→1和1→0翻轉是沒有區別的,它們都代表一次信號事件。理想情況下,兩段握手協議應該比四段握手協議電路速度更快,但是由於不同問題所對應的電路往往復雜多變,因此不能簡單地説哪種協議是最好的。
[2]
握手協議工作過程
握手協議在客户和服務器進程之間協商它們在安全信道中要使用的安全參數,這些參數包括要採用的協議版本、加密算法和密鑰。另外客户要認證服務器,服務器則可以選擇認證或不認證客户。握手協議工作過程如下:
(1)客户端發送Client Hello報文給服務器端,服務器回答Server Hello。這個過程協商的安全參數包括協議版本、加密算法和壓縮方法。
(3)服務器端請求客户端證書時,客户端要返回證書或返回沒有證書的指示。然後客户端發送密鑰交換報文,改變加密規範協議報文和Encrypted Handshake報文,表示客户端握手消息交換已經完成。發送改變加密規範協議報文的作用是允許使用已經協商的加密算法和加密密鑰。
(4)服務器此時要返回改變加密規範協議報文和Encrypted Handshake報文,以示完整的握手消息交換已經全部完成。