SSL協議


體系結構

SSL是一個中間層協議,在開放式互聯參考模型中,SSL介於傳輸層和應用層之間,屬於Socket層的實現,與應用層協議無關,可以透明的建立在應用層協議之上

SSL是一個分層協議,由記錄層和握手層組成。其中,握手層包含SSL握手協議,SSL修改密碼規范協議,SSL告警協議,記錄層包括SSL記錄協議

SSL握手協議

SSL握手協議建立在SSL記錄協議之上,用於在實際的數據傳輸開始前通信雙方進行身份認證,加密算法協商,加密密鑰交換等

握手協議由一系列在客戶和服務器間交換的報文組成。每個報文由類型,長度,內容三部分組成

1.類型(1字節),指SSL握手協議報文類型
2.字節(3字節),以字節為單位的報文長度
3.內容。使用報文有關的內容參數

SSL修改密碼規范協議

為了保障SSL傳輸過程的安全性,客戶端和服務器雙方應該每隔一段時間改變密碼規范。

該協議的報文由單個字節消息組成,是最為簡單的協議

SSL告警協議

如果在通信過程中某一方發現任何異常,就需要給對方發送一條警示消息。

該協議的報文由兩個字節組成,第一個字節指明告警的類別,第二個字節指明告警的類型

警示消息又兩種:

  1. 告警消息。通信雙方僅記錄日志
  2. 致命錯誤。通信雙方立即終斷會話,並消除本方緩存中的會話記錄

SSL記錄協議

記錄協議建立在可靠的傳輸協議之上,包括了記錄頭和記錄數據格式的規定,為高層協議提供基本的安全服務,具體實施數據的封裝,壓縮/解壓縮,加密/解密,計算和校驗MAC等與安全有關的操作。

1.內容類型(8位)。用以說明封裝的高層協議。已經定義的內容類型有:握手協議,修改密碼協議,告警協議和應用數據協議
2.主要版本(8位)。SSL的主要版本
3.次要版本(8位)。SSL的次要版本
4.壓縮長度(16位)。明文數據以字節為單位的長度,如果壓縮則是壓縮后的長度。


SSL協議的安全實現

1.保密性。SSL協議利用對稱密鑰算法對傳輸的數據進行加密
2.身份認證性。SSL協議基於證書對服務器和客戶端進行認證,確保數據發送到正確的客戶端和服務器,其中客戶端認證是可選的
3.完整性。SSL協議使用MAC算法來校驗數據的完整性

SSL協議的握手過程

1.客戶端向服務器發送問候消息,該消息包含SSL版本號,隨機數,會話ID,密碼套件,壓縮方法等信息

  • 隨機數。一個用於生成主密鑰的32字節隨機數
  • 會話ID。客戶端在此次連接中想使用的會話標識符
  • 密碼套件。每個密碼套件以SSL開頭,用WITH分割密鑰交換算法,加密算法,散列算法

2.服務器向客戶端返回問候消息
3.服務器將自己的證書附在問候消息之后,使客戶端能用服務器證書中的公鑰認證服務器
4.密鑰交換方法有6種:無,RSA,匿名Diffle-hellman,固定Diffle-hellman和Fortezza。如果階段一協商的交換算法為Fortezza,則服務器需要向客戶端發送一條服務器密鑰交換消息。
5.如果服務器要求驗證客戶端,則向客戶端發送一個客戶證書請求
6.服務器發送問候結束消息,並等待客戶端響應

7.客戶端利用服務器響應消息認證服務器的真實身份,若果服務器要求認證客戶端,客戶端就對雙方都已知且在握手過程中的唯一一段數據進行簽名,然后把簽名后的數據連同自己的證書發送給服務器。
8.客戶端密鑰交換階段,客戶端根據交互得到的所有信息生成會話預備主密鑰pre_master_sercet,並用服務器的公鑰加密后發送給服務器

9.客戶端利用pre_master_sercet生成主密鑰master_sercet,然后利用主密鑰生成會話密鑰session_sercet,客戶端向服務器發送一條修改密碼規范消息,通知服務器以后從客戶端來的消息將用session_sercet加密
10.客戶端向服務器發送握手結束消息,表明握手過程中客戶端部分已經完成
11.服務端利用私鑰解密pre_master_sercet,利用相同的方式生成主密鑰master_sercet,再生成會話密鑰session_sercet,通知客戶端以后從服務端來的消息將用session_sercet加密
12.服務端向客戶端發送握手結束消息,表明握手過程中服務端部分已經完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM