SSL工作原理詳解
SSL 工作原理詳解SSL 的工作原理:當(dāng)一個使用者在Web 上用Netscape 瀏覽器漫游時,瀏覽器利用HTTP 協(xié)議與Web 服務(wù)器溝通。例如,瀏覽器發(fā)出一個HTTP GET命令給服務(wù)器,想下載
SSL 工作原理詳解
SSL 的工作原理:當(dāng)一個使用者在Web 上用Netscape 瀏覽器漫游時,瀏覽器利用HTTP 協(xié)議與Web 服務(wù)器溝通。例如,瀏覽器發(fā)出一個HTTP GET命令給服務(wù)器,想下載一個首頁的HTML 檔案,而服務(wù)器會將檔案的內(nèi)容傳送給瀏覽器來響應(yīng)。GET 這個命令的文字和HTML 檔案的文字會通過會話層(Socket )的連接來傳送,Socket 使兩臺遠程的計算機能利用Internet 來通話。通過SSL ,資料在傳送出去之前就自動被加密了,它會在接收端被解密。對沒有解密鑰的人來說,其中的資料是無法閱讀的。
SSL 采用TCP 作為傳輸協(xié)議提供數(shù)據(jù)的可靠傳送和接收。SSL 工作在Socket 層上,因此獨立于更高層應(yīng)用,可為更高層協(xié)議,如Telnet 、FTP 和HTTP 提供安全業(yè)務(wù)。SSL 提供的安全業(yè)務(wù)和TCP 層一樣,采用了公開密鑰和私人密鑰兩種加密體制對Web 服務(wù)器和客戶機(選項)的通信提供保密性、數(shù)據(jù)完整性和認證。在建立連接過程中采用公開密鑰,在會話過程中使用私人密鑰。加密的類型和強度則在兩端之間建立連接的過程中判斷決定。在所有情況下,服務(wù)器通過以下方法向客戶機證實自身:給出包含公開密鑰的、可驗證的證明;演示它能對用此公開密鑰加密的報文進行解密。
為了支持客戶機,每個客戶機都要擁有一對密鑰,這要求在Internet 上通過Netscape 分配。由于Internet 中的服務(wù)器數(shù)遠少于客戶機數(shù),因此能否處理簽字及密鑰管理的業(yè)務(wù)量是很重要的,并且與客戶聯(lián)系比給商家以同樣保證更重要。
SSL 協(xié)議提供的服務(wù)可以歸納為如下3個方面。
(1)用戶和服務(wù)器的合法性認證
使得用戶和服務(wù)器能夠確信數(shù)據(jù)將被發(fā)送到正確的客戶機和服務(wù)器上??蛻魴C和服務(wù)器都有各自的識別號,由公開密鑰編排。為了驗證用戶,安全套接層協(xié)議要求在握手交換數(shù)據(jù)中做數(shù)字認證,以此來確保用戶的合法性。
(2)加密數(shù)據(jù)以隱藏被傳送的數(shù)據(jù)
安全套接層協(xié)議采用的加密技術(shù)既有對稱密鑰,也有公開密鑰。具體來說,就是客戶機與服務(wù)器交換數(shù)據(jù)之前,先交換SSL 初始握手信息。在SSL 握手信息中采用了各種加密技術(shù),以保證其機密性和數(shù)據(jù)的完整性,并且經(jīng)數(shù)字證書鑒別,這樣就可以防止非法用戶破譯。
(3)維護數(shù)據(jù)的完整性
安全套接層協(xié)議采用密碼雜湊函數(shù)和機密共享的方法,提供完整信息性的服務(wù),來建立客戶機與服務(wù)器之間的安全通道,使所有經(jīng)過安全套接層協(xié)議處理的業(yè)務(wù),在傳輸過程中都能完整、準確無誤地到達目的地。
,SSL 記錄層協(xié)議
SSL 記錄層協(xié)議限定了所有發(fā)送和接收數(shù)據(jù)的打包,它提供了通信、身份認證功能,它是一個面向連接的可靠傳輸協(xié)議,如TCP/IP提供安全保護。
在SSL 中所有數(shù)據(jù)被封裝在記錄中。一個記錄由兩部分組成:記錄頭和非零長度的數(shù)據(jù)。記錄頭可以是2字節(jié)或3字節(jié)(當(dāng)有填充數(shù)據(jù)時使用)。SSL 握手層協(xié)議的報文要求必須放在一個SSL 記錄層的記錄里,但應(yīng)用層協(xié)議的報文允許占用多個SSL 記錄來傳送。
1.SSL 記錄頭格式
SSL 記錄頭可以是2個或3個字節(jié)長的編碼。SSL 記錄頭包含的信息有記錄頭的長度、記錄數(shù)據(jù)的長度,以及記錄數(shù)據(jù)中是否有填充數(shù)據(jù),其中填充數(shù)據(jù)是在使用塊加密
(blocken-cryption )算法時,填充實際數(shù)據(jù),使其長度恰好是塊的整數(shù)倍。最高位為1時,不含有填充數(shù)據(jù),記錄頭的長度為2個字節(jié),記錄數(shù)據(jù)的最大長度為32767個字節(jié);最高位為0時,含有填充數(shù)據(jù),記錄頭的長度為3個字節(jié),記錄數(shù)據(jù)最長為16383個字節(jié)。
當(dāng)數(shù)據(jù)頭長度是3個字節(jié)時,次高位有特殊的含義。次高位為1時,表示所傳輸?shù)挠涗浭瞧胀ǖ臄?shù)據(jù)記錄;次高位為0時,表示所傳輸?shù)挠涗浭前踩瞻子涗洠ū槐A粲糜趯韰f(xié)議的擴展)。
記錄頭中數(shù)據(jù)長度編碼不包括數(shù)據(jù)頭所占用的字節(jié)長度。記錄頭長度為2個字節(jié)時,記錄長度的計算公式為:記錄長度? ((Byte[0]&0x7f)<<8)|Byte[1]。其中Byte[0]、Byte[1]分別表示傳輸?shù)牡谝粋€、第二個字節(jié)。
記錄頭長度為3個字節(jié)時,記錄長度的計算公式是:記錄長度=((Byte[0]&0x3f<<8)) |Byte[1]。其中Byte[0]、Byte[1]的含義同上。判斷是否是安全空白記錄的計算公式是:(Byte[0]&0x40)!?0。填充數(shù)據(jù)的長度為傳輸?shù)牡谌齻€字節(jié)。
,2.SSL 記錄數(shù)據(jù)格式
SSL 記錄數(shù)據(jù)部分有3個分量:MAC-DATA 、ACTUAL-DATA 和PADDING-DATA 。 MAC 數(shù)據(jù)用于數(shù)據(jù)完整性檢查。計算MAC 所用的散列函數(shù)由握手協(xié)議中的
CIPHER-CHOICE 消息確定。若使用MD2和MD5算法,則MAC 數(shù)據(jù)長度是16個字節(jié)。MAC 的計算公式為:MAC 數(shù)據(jù)=Hash[密鑰, 實際數(shù)據(jù), 填充數(shù)據(jù), 序號]。
當(dāng)會話的客戶端發(fā)送數(shù)據(jù)時,密鑰是客戶的寫密鑰(服務(wù)器用讀密鑰來驗證MAC 數(shù)據(jù));而當(dāng)會話的客戶端接收數(shù)據(jù)時,密鑰是客戶的讀密鑰(服務(wù)器用寫密鑰來產(chǎn)生MAC 數(shù)據(jù))。序號是一個可以被發(fā)送和接收雙方遞增的計數(shù)器,每個通信方向都會建立一對計數(shù)器,分別被發(fā)送者和接收者擁有。計數(shù)器有32位,計數(shù)值循環(huán)使用,每發(fā)送一個記錄,計數(shù)值遞增一次,序號的初始值為0。
ACTUAL-DATA 是被傳送的應(yīng)用數(shù)據(jù),PADDING-DATA 是當(dāng)采用分組碼時所需要的填充數(shù)據(jù),在明文傳送下只有第二項。
3.記錄協(xié)議的作用
記錄協(xié)議層封裝了高層協(xié)議的數(shù)據(jù),協(xié)議數(shù)據(jù)采用SSL 握手協(xié)議中協(xié)商好的加密算法及MAC 算法來保護。記錄協(xié)議傳送的數(shù)據(jù)包括一個序列號,這樣就可以檢測消息的丟失、改動或重放。如果協(xié)商好了壓縮算法,那么SSL 記錄協(xié)議還可以執(zhí)行壓縮功能。
SSL V3版的高層由記錄傳遞的消息組成,這包括改變密碼規(guī)范協(xié)議、警報協(xié)議和握手協(xié)議。改變密碼規(guī)范協(xié)議指明對使用的密碼規(guī)范的改變,協(xié)議中還包括了一個用當(dāng)前密碼規(guī)范加密的單獨消息??蛻艉头?wù)器都要發(fā)送改變密碼規(guī)范消息來表明它們準備使用一個新的密碼規(guī)范和密鑰。警報協(xié)議傳送與事件相關(guān)的消息,包括事件嚴重性及事件描述。這里的事件主要是指錯誤情形,如錯誤的MAC 碼、證書過期或是非法參數(shù)。警報協(xié)議也用于共享有關(guān)預(yù)計連接終止的信息。
,SSL 握手協(xié)議
握手協(xié)議是關(guān)于客戶和服務(wù)器如何協(xié)商它們在安全信道中要使用的安全參數(shù),這些參數(shù)包括要采用的協(xié)議版本、加密算法和密鑰。另外,客戶要認證服務(wù)器,服務(wù)器則可以選擇認證/不認證客戶。PKI 在客戶—服務(wù)器認證階段就開始運作了,這就是握手協(xié)議的實質(zhì)。
1.握手協(xié)議工作過程
① 客戶(client )端發(fā)送ClientHello 信息給服務(wù)器(Server )端,Server 回答ServerHello 。這個過程建立的安全參數(shù)包括協(xié)議版本、“佳話”標識、加密算法、壓縮方法。另外,還交換兩個隨機數(shù):C1ientHello.Random 和ServerHello.Random ,用于計算機“會話主密鑰”。 ② Hello消息發(fā)送完后,Server 端會發(fā)送它的證書和密鑰交換信息。如果Server 端被認證,它就會請求Client 端的證書,在驗證以后,Server 就發(fā)送HelloDone 消息,以示達成了握手協(xié)議,即雙方握手接通。
③ Server請求Client 證書時,Client 要返回證書或返回沒有證書的指示,這種情況用于單向認證,即客戶端不裝有證書。然后,Client 發(fā)送密鑰交換消息。
④ 服務(wù)器Server 此時要回答“握手完成”消息(Finished ),以示完整的握手消息交換已經(jīng)全部完成。
⑤ 握手協(xié)議完成后,Client 端即可與Server 端傳輸應(yīng)用加密數(shù)據(jù),應(yīng)用數(shù)據(jù)加密一般是用第②步密鑰協(xié)商時確定的對稱加/解密密鑰,如DES 、3DE 等。目前,商用加密強度為
其中,帶*號的命令是可選的,或依據(jù)狀態(tài)而發(fā)的消息,而改變加密算法協(xié)議
(ChangeCipherSpec )并不在實際的握手協(xié)議之中,它在第③步與第④步之間,用于Client 與Server 協(xié)商新的加密數(shù)據(jù)包時而改變原先的加密算法。
2.握手協(xié)議的作用
SSL 中的握手協(xié)議,將公鑰加密技術(shù)與對稱密鑰加密技術(shù)的應(yīng)用有效、巧妙地結(jié)合在一起,有機地組成了互聯(lián)網(wǎng)(或其他網(wǎng)絡(luò))上信息安全傳輸?shù)耐ǖ?。這種信息安全通道,有其實用價值,比如,利用對稱加密技術(shù)比公鑰加密技術(shù)對大容量信息的加/解密速度要快,而公鑰技術(shù)卻提供了更好的身份認證技術(shù)。SSL 的握手協(xié)議可以非常有效地讓客戶與服務(wù)器之間完成身份認證。
通過SSL 客戶端與服務(wù)器傳送自己的數(shù)字證書,互驗合法性,特別是驗證服務(wù)器的合法性,可以有效地防止互聯(lián)網(wǎng)上虛假網(wǎng)站的網(wǎng)上釣魚事件;同時,服務(wù)器端也可以嚴格驗證客戶端的真實身份。其作用如下:
① 客戶端的瀏覽器向服務(wù)器傳送客戶端SSL 協(xié)議的版本號、加密算法的種類、產(chǎn)生的隨機數(shù),以及其他服務(wù)器和客戶端之間通信所需要的各種信息。
② 服務(wù)器向客戶端傳送SSL 協(xié)議的版本號、加密算法的種類、隨機數(shù)及其他相關(guān)信息,同時,服務(wù)器還將向客戶端傳送自己的證書。
③ 客戶利用服務(wù)器傳過來的信息驗證服務(wù)器的合法性。服務(wù)器的合法性包括:證書是否過期,發(fā)行服務(wù)器證書的CA 是否可靠,發(fā)行者證書的公鑰能否正確解開服務(wù)器證書的“發(fā)行者的數(shù)字簽名”,服務(wù)器證書上的域名是否和服務(wù)器的實際域名相匹配。如果合法性驗證沒有通過,則通信將斷開;如果合法性驗證通過,則將繼續(xù)進行第④步。
④ 客戶端隨機產(chǎn)生一個用于后面通信的“對稱密碼”,然后用服務(wù)器的公鑰(從步驟②中服務(wù)器的證書中獲得)對其加密,再將加密后的“預(yù)主密碼”傳給服務(wù)器。
⑤ 如果服務(wù)器要求客戶的身份認證(在握手過程中為可選),用戶則可以建立一個隨機數(shù),然后對其進行數(shù)字簽名,將這個含有簽名的隨機數(shù)和客戶自己的證書,以及加密過的“預(yù)主密碼”一起傳給服務(wù)器。
⑥ 如果服務(wù)器要求客戶的身份認證,服務(wù)器則必須檢驗客戶證書和簽名隨機數(shù)的合法性。具體的合法性驗證包括:客戶的證書使用日期是否有效,為客戶提供證書的CA 是否可靠,發(fā)行CA 的公鑰能否正確解開客戶證書的發(fā)行CA 的數(shù)字簽名,檢查客戶的證書是否在證書撤銷列表(CRL )中。檢驗如果沒有通過,則通信立刻中斷;如果驗證通過,則服務(wù)器將用自己的私鑰解開加密的“預(yù)主密碼”,然后執(zhí)行一系列步驟來產(chǎn)生主通信密碼(客戶端也將通過同樣的方法產(chǎn)生相同的主通信密碼)。
⑦ 服務(wù)器和客戶端用相同的主密碼,即“通話密碼”,一個對稱密鑰用于SSL 協(xié)議的安全數(shù)據(jù)通信的加/解密通信。同時,在SSL 通信過程中還要完成數(shù)據(jù)通信的完整性,以防止數(shù)據(jù)通信中的任何變化。
,⑧ 客戶端向服務(wù)器端發(fā)出信息,指明后面的數(shù)據(jù)通信將使用步驟⑦中的主密碼為對稱密鑰,同時通知服務(wù)器客戶端的握手過程結(jié)束。
⑨ 服務(wù)器向客戶端發(fā)出信息,指明后面的數(shù)據(jù)通信將使用步驟⑦中的主密碼為對稱密鑰,同時通知客戶端服務(wù)器端的握手過程結(jié)束。
⑩ SSL的握手部分結(jié)束,SSL 安全通道的數(shù)據(jù)通信開始,客戶和服務(wù)器開始使用相同的對稱密鑰進行數(shù)據(jù)通信,同時進行通信完整性的檢驗。
,SSL 協(xié)議的安全性分析
SSL 協(xié)議所采用的加密算法和認證算法使它具有較高的安全性,但也存在一些問題。
1.SSL 協(xié)議采用的加密算法和認證算法
(1)加密算法和會話密鑰
SSL V2協(xié)議和SSL V3協(xié)議支持的加密算法包括RC4、RC2、IDEA 和DES ,而加密算法所用的密鑰由消息散列函數(shù)MD5產(chǎn)生。RC4、RC2是由RSA 定義的,其中RC2適用于塊加密,RC4適用于流加密。
(2)認證算法
認證算法采用X.509電子證書標準,是通過RSA 算法進行數(shù)字簽名來實現(xiàn)的。 服務(wù)器的認證
在上述的兩對密鑰中,服務(wù)器方的寫密鑰和客戶方的讀密鑰、客戶方的寫密鑰和服務(wù)器方的讀密鑰分別是一對私有、公有密鑰。對服務(wù)器進行認證時,只有用正確的服務(wù)器方寫密鑰加密,ClientHello 消息形成的數(shù)字簽名才能被客戶正確地解密,從而驗證服務(wù)器的身份。
若通信雙方不需要新的密鑰,則它們各自所擁有的密鑰已經(jīng)符合上述條件。若通信雙方需要新的密鑰,首先服務(wù)器方在ServerHello 消息中的服務(wù)器證書中提供了服務(wù)器的公有密鑰,服務(wù)器用其私有密鑰才能正確地解密由客戶方使用服務(wù)器的公有密鑰加密的MASTER-KEY ,從而獲得服務(wù)器方的讀密鑰和寫密鑰。
客戶的認證
同上,只有用正確的客戶方寫密鑰加密的內(nèi)容才能被服務(wù)器方用其讀密鑰正確地解開。當(dāng)客戶收到服務(wù)器方發(fā)出的REQUEST-CERTIFICATE 消息時,客戶首先使用MD5消息散列函數(shù)獲得服務(wù)器方信息的摘要,服務(wù)器方的信息包括:KEY-MATERIAL-0、
KEY-MATERIAL-1、KEY-MATERIAL-2、CERTIFICATE-CHALLENAGE-DATA (來自于REQUEST-CERTIFICATE 消息)、服務(wù)器所賦予的證書(來自于ServerHello )消息。 其中KEY-MATERIAL-l 、KEY-MATERIAL-2是可選的,與具體的加密算法有關(guān)。然后客戶使用自己的讀密鑰加密摘要形成數(shù)字簽名,從而被服務(wù)器認證。
2.SSL 安全優(yōu)勢
(1)監(jiān)聽和中間人式攻擊
SSL 使用一個經(jīng)過通信雙方協(xié)商確定的加密算法和密鑰,對不同的安全級別應(yīng)用都可找到不同的加密算法,從而用于數(shù)據(jù)加密。它的密鑰管理處理比較好,在每次連接時通過產(chǎn)生一個密碼雜湊函數(shù)生成一個臨時使用的會話密鑰,除了不同連接使用不同密鑰外,在一次連接的兩個傳輸方向上也使用各自的密鑰。盡管SSL 協(xié)議為監(jiān)聽者提供了很多明文,
,但由于采用RSA 交換密鑰具有較好的密鑰保護性能,以及頻繁更換密鑰的特點,因此對監(jiān)聽和中間人式攻擊而言,具有較高的防范性。
(2)流量數(shù)據(jù)分析式攻擊
流量數(shù)據(jù)分析式攻擊的核心是通過檢查數(shù)據(jù)包的未加密字段或未加保護的數(shù)據(jù)包屬性,試圖進行攻擊。在一般情況下該攻擊是無害的,SSL 無法阻止這種攻擊。
(3)截取再拼接式攻擊
對需要較強的連接加密,需要考慮這種安全性。SSL V3.0基本上可阻止這種攻擊。
(4)報文重發(fā)式攻擊
報文重發(fā)式攻擊比較容易阻止,SSL 通過在MAC 數(shù)據(jù)中包含“系列號”來防止該攻擊。
3.SSL 協(xié)議存在的問題
(1)密鑰管理問題
設(shè)計一個安全秘密的密鑰交換協(xié)議是很復(fù)雜的,因此,SSL 的握手協(xié)議也存在一些密鑰管理問題。SSL 的問題表現(xiàn)在:
客戶機和服務(wù)器在互相發(fā)送自己能夠支持的加密算法時,是以明文傳送的,存在被攻擊修改的可能。
SSL V3.0為了兼容以前的版本,可能降低安全性。
所有的會話密鑰中都將生成MASTER-KEY ,握手協(xié)議的安全完全依賴于對
MASTER-KEY 的保護,因此在通信中要盡可能少地使用MASTER-KEY 。
(2)加密強度問題
Netscape 依照美國內(nèi)政部的規(guī)定,在它的國際版的瀏覽器及服務(wù)器上使用40位的密鑰。以SSL 所使用的RC4演繹法所命名的RC4法規(guī),對多于40位長的加密密鑰產(chǎn)品的出口加以限制,這項規(guī)定使Netscape 的128位加密密鑰在美國之外的地方變成不合法。一個著名的例子是一個法國的研究生和兩個美國柏克萊大學(xué)的研究生破譯了一個SSL 的密鑰,才使人們開始懷疑以SSL 為基礎(chǔ)的系統(tǒng)安全性。
Microsoft 公司想利用一種稱為私人通信技術(shù)(PCT,Private Communication
Technology )的SSLsuperset 協(xié)議來改進SSL 的缺點。PCT 會衍生出第二個專門為身份驗證用的密鑰,這個身份驗證并不屬于RC4規(guī)定的管轄范圍。PCT 加入比目前隨機數(shù)產(chǎn)生器更安全的產(chǎn)生器,因為它也是SSL 安全鏈中的一個弱環(huán)節(jié)。這個隨機數(shù)產(chǎn)生器提供了產(chǎn)生加密密鑰的種子數(shù)目(Seed Number)。
(3)數(shù)字簽名問題
SSL 協(xié)議沒有數(shù)字簽名功能,即沒有抗否認服務(wù)。若要增加數(shù)字簽名功能,則需要在協(xié)議中打“補丁”。這樣做,在用于加密密鑰的同時又用于數(shù)字簽名,這在安全上存在漏洞。后來PKI 體系完善了這種措施,即雙密鑰機制,將加密密鑰和數(shù)字簽名密鑰二者分開,成為雙證書機制。這是PKI 完整的安全服務(wù)體系。