1. 程式人生 > >SSL安全套接層分析

SSL安全套接層分析

簡介

        SSL(Secure Sockets Layer 安全套接層),及其繼任者TLS(Transport Layer Security 傳輸層安全),是為網路通訊提供安全及資料完整性的一種安全協議。TLS與SSL在傳輸層對網路連線進行加密。
Secure Socket Layer,為Netscape所研發,用以保障在Internet上資料傳輸之安全,利用資料加密(Encryption)技術,可確保資料在網路上之傳輸過程中不會被擷取及竊聽。一般通用之規格為40 bit之安全標準,美國則已推出128 bit之更高安全標準,但限制出境。

協議分層:

上層:
SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等。
SSL密碼變化協議(SSL change cipher spec protocol):client和server端通過password變化協議通知對端。隨後的報文都將使用新協商的加密套件和金鑰進行保護和傳輸。
SSL告警協議(SSL Alert protocol)客戶機和伺服器發現錯誤時,向對方傳送一個警報訊息。如果是致命錯誤,則演算法立即關閉SSL連線,雙方還會先刪除相關的會話號,祕密和金鑰。每個警報訊息共2個位元組,第1個位元組表示錯誤型別,如果是警報,則值為1,如果是致命錯誤,則值為2;第2個字節制定實際錯誤型別。
底層:


SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。

SSL握手協議:

抓包分析:

一、建立安全能力:


客戶端傳送CilentHello資訊:
1、客戶端可以支援的SSL最高版本號
2、一個用於生成主祕密的32位元組的隨機數。
3、一個確定會話的會話ID。
4、一個客戶端可以支援的密碼套件列表。
密碼套件格式:每個套件都以“SSL”開頭,緊跟著的是金鑰交換演算法。用“With”這個詞把金鑰交換演算法、加密演算法、雜湊演算法分開,例如:SSL_DHE_RSA_WITH_DES_CBC_SHA, 表示把DHE_RSA(帶有RSA數字簽名的暫時Diffie-HellMan)定義為金鑰交換演算法;把DES_CBC定義為加密演算法;把SHA定義為雜湊演算法。
5、一個客戶端可以支援的壓縮演算法列表。

伺服器應答客戶端ServerHello資訊:
1、一個SSL版本號。取客戶端支援的最高版本號和服務端支援的最高版本號中的較低者。
2、一個用於生成主祕密的32位元組的隨機數。
3、會話ID
4、從客戶端的密碼套件列表中選擇的一個密碼套件
5、從客戶端的壓縮方法的列表中選擇的壓縮方法

這個階段之後,客戶端服務端知道了下列內容:
1、SSL版本
2、金鑰交換、資訊驗證和加密演算法
3、壓縮方法
4、有關金鑰生成的兩個隨機數。


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


伺服器啟動SSL握手第2階段,伺服器是本階段唯一發送方,客戶機是唯一接收方。該階段分為4步:
1、證書(可選):伺服器將數字證書和到根CA整個鏈發給客戶端,使客戶端能用伺服器證書中的伺服器公鑰認證伺服器。
2、伺服器金鑰交換(可選):這裡視金鑰交換演算法而定
3、證書請求(可選):服務端可能會要求客戶自身進行驗證。
4、伺服器握手完成:第二階段的結束,第三階段開始的訊號


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


客戶機啟動SSL握手第3階段,客戶機是本階段唯一發送方,伺服器是唯一接收方。該階段分為3步:
1、證書(可選):為了對伺服器證明自身,客戶要傳送一個證書資訊,這是可選的,在IIS中可以配置強制客戶端證書認證。
2、客戶機金鑰交換:這裡客戶端將預備主金鑰傳送給服務端,注意這裡會使用服務端的公鑰進行加密。
3、證書驗證(可選),對預備祕密和隨機數進行簽名,證明擁有(a)證書的公鑰。


四、完成


客戶機啟動SSL握手第4階段,使伺服器結束。該階段分為4步,前2個訊息來自客戶機,後2個訊息來自伺服器。
1、客戶機改變密碼規格值
2、完成
3、伺服器改變密碼規格值
4、完成

SSL密碼變化協議:

        SSL修改密文協議的報文由值為1的單一位元組組成,SSL修改密文協議的設計目的是為了保障SSL傳輸過程的安全性,因為SSL協議要求客戶端或伺服器端每隔一段時間必須改變其加解密引數。當某一方要改變其加解密引數時,就傳送一個簡單的訊息通知對方下一個要傳送的資料將採用新的加解密引數,也就是要求對方改變原來的安全引數。

SSL告警協議:

SSL報警協議報文由嚴重級別和警告程式碼兩部分組成:


        SSL告警協議中嚴重級別分為Fatal和Waming為兩種。其中,Fatal級報警即致命級報警,它要求通訊雙方都要採取緊急措施,並終止會話,如在資料傳輸過程中,若發現有錯誤的MAC,雙方就需要立即中斷會話,同時消除自己緩衝區相應的會話記錄;而對Warning級報警即警告級報警的處理,通常是通訊雙方都只進行日誌記錄,它對通訊過程不造成影響。
以下是一些警告資訊:
(1)unexpected_message:接收了不合適的報文。
(2)bad_record_mac:收到了不正確的MAC。
(3)decompression_failure:解壓縮函式收到不適當的輸入。
(4)illegal_parameter:握手報文中的一個欄位超出範圍或與其他欄位不相容。
(5)certificate_revoked:證書已經被廢棄。
(6)bad_certificate:收到的證書是錯誤的。
(7)certificate_expired:證書已經過期。

SSL記錄協議:

        記錄協議在客戶機和伺服器握手成功後使用,即客戶機和伺服器鑑別對方和確定安全資訊交換使用的演算法後,進入SSL記錄協議,記錄協議向SSL連線提供兩個服務:
1、保密性:使用握手協議定義的祕密金鑰實現
2、完整性:握手協議定義了MAC,用於保證訊息完整性
記錄協議的過程: