(十)SSL协议(待修)
SSL協議
?
SSL(Secure Sockets Layer)為“安全套接層協議 ”,它是網景(Netscape)公司提出的基于 WEB 應用的安全協議。SSL協議指定了一種在應用程序協議(如HTTP、Telnet、NNTP和FTP等)和TCP/IP協議之間提供數據安全性分層的機制,它為TCP/IP連接提供數據加密、服務器認證、消息完整性以及可選的客戶機認證。SSL可以和應用層的http協議配合形成https,也可以保證郵件協議的安全。當前版本為3.0。
SSL協議主要用于提高應用程序之間數據的安全性。該安全協議主要提供對用戶和服務器的認證;對傳送的數據進行加密和隱藏;確保數據在傳送中不被改變。它能使客戶一服務器應用之間的通信不被攻擊者竊聽。SSL協議提供的服務主要有:
1)鑒別機制:認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2)保護隱私:加密數據以防止數據中途被竊取;
3)數據完整性:確保數據在傳輸過程中不被改變。
SSL 提供的安全服務:
1) SSL 服務器鑒別,允許用戶證實服務器的身份。支持 SSL 的客戶端通過驗證來自服務器的證書,來鑒別服務器的真實身份并獲得服務器的公鑰。
2) SSL 客戶鑒別,SSL 的可選安全服務,允許服務器證實客戶的身份。
3) 加密的 SSL 會話,對客戶和服務器間發送的所有報文進行加密,并檢測報文是否被篡改。
1、SSL協議結構
安全套接層協議SSL:SSL/TLS位于傳輸層和應用層之間,可以細分為兩個子層,分別是SSL記錄協議層、SSL握手協議層。 SSL記錄協議層:主要的作用是進行數據的封裝,壓縮,加密等;SSL握手協議層:主要的作用是進行通信雙方的身份認證,秘鑰管理協商等。
?從體系結構圖可以看出SSL安全協議實際是SSL握手協議、SSL修改密文協議、SSL警告協議和SSL記錄協議組成的一個協議族。
SSL記錄協議為SSL連接提供了兩種服務:一是機密性,二是消息完整性。為了實現這兩種服務,SSL記錄協議接收傳輸的應用報文,將數據分片成可管理的塊,進行數據壓縮(可選),應用MAC(校驗消息),接著利用IDEA、DES、3DES或其他加密算法進行數據加密,最后增加由內容類型、主要版本、次要版本和壓縮長度組成的首部。被接收的數據剛好與接收數據工作過程相反,依次被解密、驗證、解壓縮和重新裝配,然后交給更高級用戶。
SSL記錄協議主要用來實現對數據塊的分塊、加密解密、壓縮與解壓縮、完整性檢查及封裝各種高層協議。SSL記錄協議工作原理--將消息分割為多個片段;對每個片段進行壓縮;加上片段編號(防止重放攻擊)計算消息驗證碼MAC值(保證數據完整性),追加在壓縮片段;對稱密碼加密;加上數據類型、版本號、壓縮后的長度組成的報頭, 就是最終的報文數據;
SSL修改密文協議是使用SSL記錄協議服務的SSL高層協議的3個特定協議之一,也是其中最簡單的一個。協議由單個消息組成,該消息只包含一個值為1的單個字節。該消息的唯一作用就是使未決狀態拷貝為當前狀態,更新用于當前連接的密碼組。為了保障SSL傳輸過程的安全性,雙方應該每隔一段時間改變加密規范。
SSL報警協議是用來為通信的對方傳遞SSL的相關警告。如果在通信過程中某一方發現任何異常,就需要給對方發送一條警示消息通告。警示消息有兩種:一種是Fatal錯誤,如傳遞數據過程中,發現錯誤的MAC,雙方就需要立即中斷會話,同時消除自己緩沖區相應的會話記錄;第二種是Warning消息,這種情況,通信雙方通常都只是記錄日志,而對通信過程不造成任何影響。SSL握手協議可以使得服務器和客戶能夠相互鑒別對方,協商具體的加密算法和MAC算法以及保密密鑰,用來保護在SSL記錄中發送的數據。
SSL握手協議允許通信實體在交換應用數據之前協商密鑰的算法、加密密鑰和對客戶端進行認證的協議,為下一步記錄協議要使用的密鑰信息進行協商,使客戶端和服務器建立并保持安全通信的狀態信息。SSL握手協議是在任何應用程序數據傳輸之前使用的。SSL握手協議包含四個階段:第一個階段建立安全能力;第二個階段服務器鑒別和密鑰交換;第三個階段客戶鑒別和密鑰交換;第四個階段完成握手協議。
2、SSL協議的特性
SSL提供了兩臺機器間的安全連接。支付系統通過在SSL連接上傳輸信用卡卡號的方式來構建,在線銀行和其他金融系統也常常構建在SSL之上。大部分Web瀏覽器和Web服務器都內置了SSL協議,比較容易應用。SSL協議建立在可靠的傳輸層協議(如TCP)之上,與應用層協議無關。它在應用層協議通信之前就已經完成加密算法、通信密鑰的協商以及服務器認證工作。高層的應用層協議(如HTTP,FTP,TELNET等)可以透明地建立于SSL協議之上。應用層協議所傳送的數據都會被加密,從而保證通信的私密性。SSL協議提供的安全信道有以下三種特性:
私密性:在握手協議定義了會話密鑰后,所有的消息都被加密。
確認性:盡管會話的客戶端認證是可選的,但是服務器端始終是被認證的。
可靠性:傳送的消息包括消息完整性檢查。
3、SSL的會話與連接
1)SSL連接:用于提供某種類型的服務數據的傳輸,是一種點對點的關系。一般來說,連接的維持時間比較短暫,并且每個連接一定與某一個會話相關聯。
2)SSL會話:是指客戶和服務器之間的一個關聯關系。會話通過握手協議來創建。它定義了一組安全參數。
一次會話過程通常會發起多個SSL連接來完成任務,例如一次網站的訪問可能需要多個HTTP/SSL/TCP連接來下載其中的多個頁面,這些連接共享會話定義的安全參數。這種共享方式可以避免為每個SSL連接單獨進行安全參數的協商,而只需在會話建立時進行一次協商,提高了效率。
每一個會話(或連接)都存在一組與之相對應的狀態,會話(或連接)的狀態表現為一組與其相關的參數集合,最主要的內容是與會話(或連接)相關的安全參數的集合,用會話(或連接)中的加密解密、認證等安全功能的實現。在SSL通信過程中,通信算法的狀態通過SSL握手協議實現同步。
根據SSL協議的約定,會話狀態由以下參數來定義:
- (1)會話標識符:是由服務器選擇的任意字節序列,用于標識活動的會話或可恢復的會話狀態。
- (2)對方的證書:會話對方的X.509v3證書。該參數可為空。
- (3)壓縮算法:在加密之前用來壓縮數據的算法。
- (4)加密規約(Cipher Spec):用于說明對大塊數據進行加密采用的算法,以及計算MAC所采用的散列算法。
- (5)主密值:一個48字節長的秘密值,由客戶和服務器共享。
- (6)可重新開始的標識:用于指示會話是否可以用于初始化新的連接。
連接狀態由以下參數來定義:
- (1)服務器和客戶器的隨機數:是服務器和客戶為每個連接選擇的用于標識連接的字節序列。
- (2)服務器寫MAC密值:服務器發送數據時,生成MAC使用的密鑰,長度為128 bit。
- (3)客戶寫MAC密值,服務器發送數據時,用于數據加密的密鑰,長度為128 bit 。
- (4)客戶寫密鑰:客戶發送數據時,用于數據加密的密鑰,長度為128 bit。
- (5)初始化向量:當使用CBC模式的分組密文算法是=時,需要為每個密鑰維護初始化向量。
- (6)序列號:通信的每一端都為每個連接中的發送和接收報文維持著一個序列號。
4、建立和恢復SSL連接的具體步驟
建立安全能力
1)客戶端發送初始信息
客戶端通過SSL協議把服務器需要的客戶端的SSL版本信息,加密算法設置,與會話有關的數據,發送給服務器。
2)服務器發送初始信息及自己證書,請求客戶端證書
服務器通過SSL協議把自己的SSL的版本信息,加密算法設置,與會話有關的數據和其它通信需要的信息發給客戶端。服務器把自己的證書發給客戶端(從USBKey中讀取)。同時,服務器端請求客戶端的證書。
服務器鑒別與密鑰交換
3)客戶端驗證服務器證書
客戶端使用這些服務器發來的信息認證服務器。如果服務器不能被認證,那么客戶將被提示一個警告,并且通知客戶不能建立加密和認證連接。如果服務器被成功認證,客戶端將進入第四步。
4)客戶端生成握手的初始密鑰
使用到目前為止的所有數據生成握手過程。客戶端(和服務器合作之下)為會話創建一個pre-master secret(一個用在對稱加密密鑰生成中的46字節的隨機數字)。使用服務器的公共密鑰加密(在第二步的服務器的證書中獲得公共密鑰),然后把這個加了密的pre-master secret發送給服務器。
客戶機鑒別與密鑰交換
5)客戶端發送自己證書
由于系統中服務器請求客戶端認證,客戶端也需要標記一個特殊的數據包,客戶端和服務器都知道的。在這個過程中,客戶端發送一個通過pre-master secret加密過的標記的數據包和客戶端自己的證書(從USBKey中讀取)給服務器。
6)服務器驗證客戶端證書
服務器就認證客戶端證書。如果客戶端認證不通過,會話將被終止。如果客戶端被認證通過,服務器將使用私有密鑰解密pre-master secret,然后執行一系列步驟生成master secret。
7)雙方生成會話密鑰
客戶端和服務器端使用master secret去生成會話密鑰。會話密碼是在ssl 會話的時候對稱密鑰,被用來加密、解密信息、校驗信息完整性(檢查會話過程中任何數據改變)。這樣做的主要原因是對稱加密比非對稱加密的運算量低一個數量級以上,能夠顯著提高雙方會話時的運算速度。
8)客戶端通知服務器SSL準備完成
客戶端發送一個信息給服務器端,通知服務器端以后的信息將被會話密碼加密,然后客戶端發送一個單獨(加密)信息表示客戶端部分的握手會話已經完成。
9)服務器通知客戶端SSL準備完成
服務器發送一個信息通知客戶端未來的會話信息將被會話密碼加密,然后服務器發送一個單獨(加密)信息表示服務器部分的握手會話部分已經完成。
完成
10)握手結束,正式會話
SSL握手會話結束,開始正式的會話。客戶端和服務器端使用會話密鑰加密解密數據并且互相傳送校驗完整性。
11)終止
這是一個正常的操作過程和加密隧道。在任何時候,當內部或者外部觸發條件(不是自動就是用戶手動),任何一端就要重新協商會話,所有的流程將從新開始。
SSL會話恢復:
會話恢復是指只要客戶端和服務器已經通信過一次,它們就可以通過會話恢復的方式來跳過整個握手階段二直接進行數據傳輸。
5、SSL協議的工作流程:
服務器認證階段:
1)客戶端向服務器發送一個開始信息“Hello”以便開始一個新的會話連接;
2)服務器根據客戶的信息確定是否需要生成新的主密鑰,如需要則服務器在響應客戶的“Hello”信息時將包含生成主密鑰所需的信息;
3)客戶根據收到的服務器響應信息,產生一個主密鑰,并用服務器的公開密鑰加密后傳給服務器;
4)服務器恢復該主密鑰,并返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。
用戶認證階段:
在此之前,服務器已經通過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名后的提問和其公開密鑰,從而向服務器提供認證。
6、SSL協議規范
SSL的體系結構中包含兩個協議子層,其中底層是SSL記錄協議層(SSL Record Protocol Layer);高層是SSL握手協議層(SSL HandShake Protocol Layer)
①SSL記錄協議
SSL記錄協議是為高層協議提供基本的安全服務。SSL記錄協議針對HTTP協議進行了特別的設計,使得超文本的傳輸協議HTTP能夠在SSL運行。記錄封裝各種高層協議,具體實施壓縮解壓縮、加密解密、計算和校驗MAC等與安全有關的操作。
在SSL協議中,所有的傳輸數據都被封裝在記錄中。記錄是由記錄頭和記錄數據組成的。所有的SSL通信包括握手消息、安全空白記錄和應用數據都使用SSL記錄層。
②SSL握手協議
SSL握手協議的作用是協調客戶和服務器的狀態,使雙方能夠達到狀態的同步。SSL握手協議層包括SSL握手協議(SSL HandShake Protocol)、SSL密碼參數修改協議(SSL Change Cipher Spec Protocol)、應用數據協議(Application Data Protocol) 和 SSL告警協議(SSL Alert Protocol)。握手層的這些協議是對SSL管理信息的交換,允許應用協議傳送數據之間相互驗證,協商加密算法和生成密鑰等。
SSL握手協議包含兩個階段,第一個階段用于建立私密性通信信道,第二個階段用于客戶認證。
第一階段是通信的初始化階段,首先SSL要求服務器向瀏覽器出示證書。證書包含有一個公鑰,這個公鑰是由一家可信證書授權機構簽發的。通過內置的一些基礎公共密鑰,客戶的瀏覽器可以判斷服務器證書正確與否。然后,瀏覽器中的SSL軟件發給服務器一個隨機產生的傳輸密鑰,此密鑰由已驗證過的公鑰加密。由于傳輸密鑰只能由對應的私有密鑰來解密,這證實了該服務器屬于一個認證過的公司。隨機產生的傳輸密鑰是核心機密,只有客戶的瀏覽器和此公司的Web服務器知道這個數字序列。這個兩方共享密鑰的密文可以通過瀏覽器安全地抵達Web服務器,Internet上的其他人無法解開它。
第二階段的主要任務是對客戶進行認證,此時服務器已經被認證了。服務器方向客戶發出認證請求消息。客戶收到服務器方的認證請求消息后,發出自己的證書,并且監聽對方回送的認證結果。而當服務器收到客戶的證書后,給客戶回送認證成功消息,否則返回錯誤消息。到此為止,握手協議全部結束。
③SSL交易過程
接下來的通信中,SSL采用該密鑰來保證數據的保密性和完整性。這就是SSL提供的安全連接。這時客戶需要確認訂購并輸入信用卡號碼。SSL保證信用卡號碼以及其他信息只會被此公司獲取。客戶還可以打印屏幕上顯示的已經被授權的訂單,這樣就可以得到這次交易的書面證據。大多數在線商店在得到客戶的信用卡號碼后出示收到的憑據,這是客戶已付款的有效證據。至此,一個完整的SSL交易過程結束。
但是,SSL提供的保密連接有根大的漏洞。SSL除了傳輸過程以外不能提供任何安全保證,SSL并不能使客戶確信此公司接收信用卡支付是得到授權的。在Internet上,經常會出現一些陌生的店鋪,正因如此,網上商店發生欺詐行為的可能性要比街頭店鋪大得多。進一步說,即使是一個誠實的網上商店,在收到客戶的信用卡號碼后如果沒有采用好的方法保證其安全性,那么信用卡號也很容易被黑客通過商家服務器竊取。
從SSL?協議所提供的服務及其工作流程可以看出,SSL協議運行的基礎是商家對消費者信息保密的承諾,這就有利于商家而不利于消費者。在電子商務初級階段,由于運作電子商務的企業大多是信譽較高的大公司,因此這問題還沒有充分暴露出來。但隨著電子商務的發展,各中小型公司也參與進來,這樣在電子支付過程中的單一認證問題就越來越突出。雖然在SSL3.0中通過數字簽名和數字證書可實現瀏覽器和Web服務器雙方的身份驗證,但是SSL協議仍存在一些問題,比如,只能提供交易中客戶與服務器間的雙方認證,在涉及多方的電子交易中,SSL協議并不能協調各方間的安全傳輸和信任關系。在這種情況下,Visa和?MasterCard兩大信用卡公組織制定了SET協議,為網上信用卡支付提供了全球性的標準。
SSL購物流程
參考:
SSL協議原理詳解
總結
以上是生活随笔為你收集整理的(十)SSL协议(待修)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [工具]更新音乐下载软件工具音乐下载网站
- 下一篇: 微型计算机中的i3和i5指的是,i3和i