OpenSSL-SSL協議

一、OpenSSL簡介

OpenSSL是一個基於密碼學的安全開發包,整個軟件包大概可以分成三個主要的功能部分:SSL協議庫、應用程序以及密碼算法庫。OpenSSL的目錄結構自然也是圍繞這三個功能部分進行規劃的。OpenSSL提供的功能相當強大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用。其核心是對SSL協議的實現。

二、SSL協議

簡介:

    SSL協議(Secure Sockets Layer)安全套接字層協議,是爲網絡通信提供安全及數據完整性的一種安全協議。用以保障在Internet上數據傳輸的安全,利用數據加密(Encryption)技術,確保數據在網絡上的傳輸過程中不會被截取及竊聽。

OpenSSL結構:

       SSL協議位於TCP/IP協議模型的網絡層和應用層之間,使用TCP來提供一種可靠的端到端的安全服務,它使客戶/服務器應用之間的通信不被攻擊竊聽,並且始終對服務器進行認證,還可以選擇對客戶進行認證。SSL協議在應用層通信之前就已經完成加密算法、通信密鑰的協商,以及服務器認證工作,在此之後,應用層協議所傳送的數據都被加密。

SSL協議實際上是SSL握手協議、SSL修改密文協議、SSL報警協議和SSL記錄協議組成的一個協議族。協議結構如下表

握手協議

修改祕文協議

報警協議

SSL記錄協議

TCP

IP

 

SSL握手協議:

握手協議是SSL高層協議中尤爲重要的協議。

握手階段分成五步。

       1)客戶端給出協議版本號、一個客戶端生成的隨機數(Client random),以及客戶端支持的加密方法。

       2)服務端確認雙方使用的加密方法,並給出數字證書、以及一個服務器生成的隨機數(Server random)。

       3)客戶端確認數字證書有效,然後生成一個新的隨機數(Premaster secret),並使用數字證書中的公鑰,加密這個隨機數,發給服務端。

       4)服務端使用自己的私鑰,獲取客戶端發來的隨機數(即Premaster secret)。

       5)客戶端和服務端根據約定的加密方法,使用前面的三個隨機數,生成"對話密鑰"(session key),用來加密接下來的整個對話過程。

 

SSL修改祕文協議:

       爲了保障SSL傳輸過程的安全性,客戶端和服務器雙方應該每隔一段時間改變加密規範。所以有了SSL修改密文協議。SSL修改密文協議是3個高層的特定協議中最簡單的一個。

在客服端和服務器完成握手協議之後,它需要向對方發送相關消息(該消息只包含一個值爲1的單字節),通知對方隨後的數據將用剛剛協商的密碼規範算法和關聯的密鑰處理,並負責協調本方模塊按照協商的算法和密鑰工作。

 

SSL報警協議:

       SSL報警協議是用來爲對等實體傳遞SSL的相關警告。如果在通信過程中某一方發現任何異常,就需要給對方發送一條警示消息通告。警示消息有兩種:

   1)Fatal錯誤,如傳遞數據過程中發現錯誤的MAC,雙方就需要立即中斷會話,同時消除自己緩衝區相應的會話記錄。

   2)Warning消息,這種情況,通信雙方通常都只是記錄日誌,而對通信過程不造成任何影響。SSL握手協議可以使得服務器和客戶能夠相互鑑別對方,協商具體的加密算法和MAC算法以及保密密鑰,用來保護在SSL記錄中發送的數據。

 

SSL記錄協議:

SSL記錄協議爲SSL連接提供兩種服務:機密性和報文完整性。

在SSL協議中,所有的傳輸數據都被封裝在記錄中。記錄是由記錄頭和記錄數據(長度不爲0)組成的。所有的SSL通信都使用SSL記錄層,記錄協議封裝上層的握手協議、報警協議、修改密文協議。SSL記錄協議包括記錄頭和記錄數據格式的規定。

SSL記錄協議定義了要傳輸數據的格式,它位於一些可靠的傳輸協議之上(如TCP),用於各種更高層協議的封裝。主要完成分組和組合、壓縮和解壓縮,以及消息認證和加密等。

SSL記錄協議主要操作流程如圖所示。


SSL記錄協議的操作流程

圖中的五個操作簡單介紹如下:

1)每個上層應用數據被分成214字節或更小的數據塊。記錄中包含類型、版本號、長度和數據字段。

2)壓縮是可選的,並且是無損壓縮,壓縮後內容長度的增加不能超過1024字節。

3)在壓縮數據上計算消息認證MAC。

4)對壓縮數據及MAC進行加密。

5)增加SSL記錄。

 

SSL記錄協議字段的結構如下表所示:

內容類型

主要版本

次要版本

壓縮長度

明文(可壓縮)

MAC(0,16或20位)

SSL記錄協議字段的結構

由上表可看出SSL記錄協議字段結構主要由內容類型、主要版本、次要版本、壓縮長度組成,具體內容如下:

1)內容類型(8位):封裝的高層協議。

2)主要版本(8位):使用的SSL主要版本。對於SSL v3已經定義的內容類型是握手協議、警告協議、改變密碼格式協議和應用數據協議。

3)次要版本(8位):使用的SSL次要版本。對於SSL v3.0,值爲0。

4)壓縮長度(16位):明文數據(如果選用壓縮則是壓縮數據)以字節爲單位的長度。

MAC:

       Message Authentication Codes消息認證碼爲了避免網絡中傳輸的數據被非法篡改,SSL利用基於MD5或SHA的MAC算法來保證消息的完整性。MAC算法是在密鑰參與下的數據摘要算法,能將密鑰和任意長度的數據轉換爲固定長度的數據。

利用MAC算法驗證消息完整性的過程:

       1)發送者在密鑰的參與下,利用MAC算法計算出消息的MAC值,並將其加在消息之後發送給接收者。

       2)接收者利用同樣的密鑰和MAC算法計算出消息的MAC值,並與接收到的MAC值比較。

       3)如果二者相同,則報文沒有改變;否則,報文在傳輸過程中被修改,接收者將丟棄該報文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章