1. 程式人生 > >SSL的工作原理

SSL的工作原理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

 6.2  SSL的工作原理

SSL的工作原理:當一個使用者在Web上用Netscape瀏覽器漫遊時,瀏覽器利用HTTP協議與Web伺服器溝通。例如,瀏覽器發出一個HTTP GET命令給伺服器,想下載一個首頁的HTML檔案,而伺服器會將檔案的內容傳送給瀏覽器來響應。GET這個命令的文字和HTML檔案的文字會通過會話層(Socket)的連線來傳送,Socket使兩臺遠端的計算機能利用Internet來通話。通過SSL,資料在傳送出去之前就自動被加密了,它會在接收端被解密。對沒有解金鑰的人來說,其中的資料是無法閱讀的。

SSL採用TCP作為傳輸協議提供資料的可靠傳送和接收。SSL工作在Socket層上,因此獨立於更高層應用,可為更高層協議,如Telnet、FTP和HTTP提供安全業務。SSL提供的安全業務和TCP層一樣,採用了公開金鑰和私人金鑰兩種加密體制對Web伺服器和客戶機(選項)的通訊提供保密性、資料完整性和認證。在建立連線過程中採用公開金鑰,在會話過程中使用私人金鑰。加密的型別和強度則在兩端之間建立連線的過程中判斷決定。在所有情況下,伺服器通過以下方法向客戶機證實自身:給出包含公開金鑰的、可驗證的證明;演示它能對用此公開金鑰加密的報文進行解密。

為了支援客戶機,每個客戶機都要擁有一對金鑰,這要求在Internet上通過Netscape分配。由於Internet中的伺服器數遠少於客戶機數,因此能否處理簽字及金鑰管理的業務量是很重要的,並且與客戶聯絡比給商家以同樣保證更重要。

SSL協議提供的服務可以歸納為如下3個方面。

(1)使用者和伺服器的合法性認證

使得使用者和伺服器能夠確信資料將被髮送到正確的客戶機和伺服器上。客戶機和伺服器都有各自的識別號,由公開金鑰編排。為了驗證使用者,安全套接層協議要求在握手交換資料中做數字認證,以此來確保使用者的合法性。

(2)加密資料以隱藏被傳送的資料

安全套接層協議採用的加密技術既有對稱金鑰,也有公開金鑰。具體來說,就是客戶機與伺服器交換資料之前,先交換SSL初始握手資訊。在SSL握手資訊中採用了各種加密技術,以保證其機密性和資料的完整性,並且經數字證書鑑別,這樣就可以防止非法使用者破譯。

(3)維護資料的完整性

安全套接層協議採用密碼雜湊函式和機密共享的方法,提供完整資訊性的服務,來建立客戶機與伺服器之間的安全通道,使所有經過安全套接層協議處理的業務,在傳輸過程中都能完整、準確無誤地到達目的地。

 

 

6.3  SSL記錄層協議

SSL記錄層協議限定了所有傳送和接收資料的打包,它提供了通訊、身份認證功能,它是一個面向連線的可靠傳輸協議,如TCP/IP提供安全保護。

在SSL中,所有資料被封裝在記錄中。一個記錄由兩部分組成:記錄頭和非零長度的資料。記錄頭可以是2位元組或3位元組(當有填充資料時使用)。SSL握手層協議的報文要求必須放在一個SSL記錄層的記錄裡,但應用層協議的報文允許佔用多個SSL。記錄來傳送。

1.SSL記錄頭格式

SSL記錄頭可以是2個或3個位元組長的編碼。SSL記錄頭包含的資訊有記錄頭的長度、記錄資料的長度,以及記錄資料中是否有填充資料,其中填充資料是在使用塊加密(blocken-cryption)演算法時,填充實際資料,使其長度恰好是塊的整數倍。最高位為1時,不含有填充資料,記錄頭的長度為2個位元組,記錄資料的最大長度為32767個位元組;最高位為0時,含有填充資料,記錄頭的長度為3個位元組,記錄資料的最大長度為16383個位元組。

SSL記錄層結構如圖11-10所示。

 
圖11-10  SSL記錄層結構

當資料頭長度是3個位元組時,次高位有特殊的含義。次高位為1時,表示所傳輸的記錄是普通的資料記錄;次高位為0時,表示所傳輸的記錄是安全空白記錄(被保留用於將來協議的擴充套件)。

記錄頭中資料長度編碼不包括資料頭所佔用的位元組長度。記錄頭長度為2個位元組時,記錄長度的計算公式為:記錄長度((Byte[0]&0x7f)<<8)|Byte[1]。其中Byte[0]、Byte[1]分別表示傳輸的第一個、第二個位元組。

記錄頭長度為3個位元組時,記錄長度的計算公式是:記錄長度=((Byte[0]&0x3f<<8))

|Byte[1]。其中Byte[0]、Byte[1]的含義同上。判斷是否是安全空白記錄的計算公式是:(Byte[0]&0x40)!0。填充資料的長度為傳輸的第三個位元組。

2.SSL記錄資料格式

SSL記錄資料部分有3個分量:MAC-DATA、ACTUAL-DATA和PADDING-DATA。

MAC資料用於資料完整性檢查。計算MAC所用的雜湊函式由握手協議中的CIPHER-CHOICE訊息確定。若使用MD2和MD5演算法,則MAC資料長度是16個位元組。MAC的計算公式為:MAC資料=Hash[金鑰, 實際資料, 填充資料, 序號]。

當會話的客戶端傳送資料時,金鑰是客戶的寫金鑰(伺服器用讀金鑰來驗證MAC資料);而當會話的客戶端接收資料時,金鑰是客戶的讀金鑰(伺服器用寫金鑰來產生MAC資料)。序號是一個可以被髮送和接收雙方遞增的計數器,每個通訊方向都會建立一對計數器,分別被髮送者和接收者擁有。計數器有32位,計數值迴圈使用,每傳送一個記錄,計數值遞增一次,序號的初始值為0。

ACTUAL-DATA是被傳送的應用資料,PADDING-DATA是當採用分組碼時所需要的填充資料,在明文傳送下只有第二項。

3.記錄協議的作用

記錄協議層封裝了高層協議的資料,協議資料採用SSL握手協議中協商好的加密演算法及MAC演算法來保護。記錄協議傳送的資料包括一個序列號,這樣就可以檢測訊息的丟失、改動或重放。如果協商好了壓縮演算法,那麼SSL記錄協議還可以執行壓縮功能。

SSL V3版的高層由記錄傳遞的訊息組成,這包括改變密碼規範協議、警報協議和握手協議。改變密碼規範協議指明對使用的密碼規範的改變,協議中還包括了一個用當前密碼規範加密的單獨訊息。客戶和伺服器都要傳送改變密碼規範訊息來表明它們準備使用一個新的密碼規範和金鑰。警報協議傳送與事件相關的訊息,包括事件嚴重性及事件描述。這裡的事件主要是指錯誤情形,如錯誤的MAC碼、證書過期或是非法引數。警報協議也用於共享有關預計連線終止的資訊。

 

6.4  SSL握手協議

握手協議是關於客戶和伺服器如何協商它們在安全通道中要使用的安全引數,這些引數包括要採用的協議版本、加密演算法和金鑰。另外,客戶要認證伺服器,伺服器則可以選擇認證/不認證客戶。PKI在客戶-伺服器認證階段就開始運作了,這就是握手協議的實質。

1.握手協議工作過程

SSL握手協議的具體工作過程描述如下。

① 客戶(client)端傳送ClientHello資訊給伺服器(Server)端,Server回答ServerHello。這個過程建立的安全引數包括協議版本、“佳話”標識、加密演算法、壓縮方法。另外,還交換兩個隨機數:C1ientHello.Random和ServerHello.Random,用於計算機“會話主金鑰”。

② Hello訊息傳送完後,Server端會發送它的證書和金鑰交換資訊。如果Server端被認證,它就會請求Client端的證書,在驗證以後,Server就傳送HelloDone訊息,以示達成了握手協議,即雙方握手接通。

③ Server請求Client證書時,Client要返回證書或返回沒有證書的指示,這種情況用於單向認證,即客戶端不裝有證書。然後,Client傳送金鑰交換訊息。

④ 伺服器Server此時要回答“握手完成”訊息(Finished),以示完整的握手訊息交換已經全部完成。

⑤ 握手協議完成後,Client端即可與Server端傳輸應用加密資料,應用資料加密一般是用第②步金鑰協商時確定的對稱加/解密金鑰,如DES、3DE等。目前,商用加密強度為128位,非對稱金鑰一般為RAS,商用強度為1024位,用於證書的驗證。

完整的握手協議訊息交換過程如圖11-11所示。

 
圖11-11  完整的握手協議訊息交換過程

其中,帶*號的命令是可選的,或依據狀態而發的訊息,而改變加密演算法協議(ChangeCipherSpec)並不在實際的握手協議之中,它在第③步與第④步之間,用於Client與Server協商新的加密資料包時而改變原先的加密演算法。

2.握手協議的作用

SSL中的握手協議,將公鑰加密技術與對稱金鑰加密技術的應用有效、巧妙地結合在一起,有機地組成了網際網路(或其他網路)上資訊保安傳輸的通道。這種資訊保安通道,有其實用價值,比如,利用對稱加密技術比公鑰加密技術對大容量資訊的加/解密速度要快,而公鑰技術卻提供了更好的身份認證技術。SSL的握手協議可以非常有效地讓客戶與伺服器之間完成身份認證。

通過SSL客戶端與伺服器傳送自己的數字證書,互驗合法性,特別是驗證伺服器的合法性,可以有效地防止網際網路上虛假網站的網上釣魚事件;同時,伺服器端也可以嚴格驗證客戶端的真實身份。其作用如下:

① 客戶端的瀏覽器向伺服器傳送客戶端SSL協議的版本號、加密演算法的種類、產生的隨機數,以及其他伺服器和客戶端之間通訊所需要的各種資訊。

② 伺服器向客戶端傳送SSL協議的版本號、加密演算法的種類、隨機數及其他相關資訊,同時,伺服器還將向客戶端傳送自己的證書。

③ 客戶利用伺服器傳過來的資訊驗證伺服器的合法性。伺服器的合法性包括:證書是否過期,發行伺服器證書的CA是否可靠,發行者證書的公鑰能否正確解開伺服器證書的“發行者的數字簽名”,伺服器證書上的域名是否和伺服器的實際域名相匹配。如果合法性驗證沒有通過,則通訊將斷開;如果合法性驗證通過,則將繼續進行第④步。

④ 客戶端隨機產生一個用於後面通訊的“對稱密碼”,然後用伺服器的公鑰(從步驟②中伺服器的證書中獲得)對其加密,再將加密後的“預主密碼”傳給伺服器。

⑤ 如果伺服器要求客戶的身份認證(在握手過程中為可選),使用者則可以建立一個隨機數,然後對其進行數字簽名,將這個含有簽名的隨機數和客戶自己的證書,以及加密過的“預主密碼”一起傳給伺服器。

⑥ 如果伺服器要求客戶的身份認證,伺服器則必須檢驗客戶證書和簽名隨機數的合法性。具體的合法性驗證包括:客戶的證書使用日期是否有效,為客戶提供證書的CA是否可靠,發行CA的公鑰能否正確解開客戶證書的發行CA的數字簽名,檢查客戶的證書是否在證書撤銷列表(CRL)中。檢驗如果沒有通過,則通訊立刻中斷;如果驗證通過,則伺服器將用自己的私鑰解開加密的“預主密碼”,然後執行一系列步驟來產生主通訊密碼(客戶端也將通過同樣的方法產生相同的主通訊密碼)。

⑦ 伺服器和客戶端用相同的主密碼,即“通話密碼”,一個對稱金鑰用於SSL協議的安全資料通訊的加/解密通訊。同時,在SSL通訊過程中還要完成資料通訊的完整性,以防止資料通訊中的任何變化。

⑧ 客戶端向伺服器端發出資訊,指明後面的資料通訊將使用步驟⑦中的主密碼為對稱金鑰,同時通知伺服器客戶端的握手過程結束。

⑨ 伺服器向客戶端發出資訊,指明後面的資料通訊將使用步驟⑦中的主密碼為對稱金鑰,同時通知客戶端伺服器端的握手過程結束。

⑩ SSL的握手部分結束,SSL安全通道的資料通訊開始,客戶和伺服器開始使用相同的對稱金鑰進行資料通訊,同時進行通訊完整性的檢驗。

 

6.5  SSL協議的安全性分析

SSL協議所採用的加密演算法和認證演算法使它具有較高的安全性,但也存在一些問題。

1.SSL協議採用的加密演算法和認證演算法

(1)加密演算法和會話金鑰

SSL V2協議和SSL V3協議支援的加密演算法包括RC4、RC2、IDEA和DES,而加密演算法所用的金鑰由訊息雜湊函式MD5產生。RC4、RC2是由RSA定義的,其中RC2適用於塊加密,RC4適用於流加密。

(2)認證演算法

認證演算法採用X.509電子證書標準,是通過RSA演算法進行數字簽名來實現的。

伺服器的認證

在上述的兩對金鑰中,伺服器方的寫金鑰和客戶方的讀金鑰、客戶方的寫金鑰和伺服器方的讀金鑰分別是一對私有、公有金鑰。對伺服器進行認證時,只有用正確的伺服器方寫金鑰加密,ClientHello訊息形成的數字簽名才能被客戶正確地解密,從而驗證伺服器的身份。
若通訊雙方不需要新的金鑰,則它們各自所擁有的金鑰已經符合上述條件。若通訊雙方需要新的金鑰,首先伺服器方在ServerHello訊息中的伺服器證書中提供了伺服器的公有金鑰,伺服器用其私有金鑰才能正確地解密由客戶方使用伺服器的公有金鑰加密的MASTER-KEY,從而獲得伺服器方的讀金鑰和寫金鑰。

客戶的認證

同上,只有用正確的客戶方寫金鑰加密的內容才能被伺服器方用其讀金鑰正確地解開。當客戶收到伺服器方發出的REQUEST-CERTIFICATE訊息時,客戶首先使用MD5訊息雜湊函式獲得伺服器方資訊的摘要,伺服器方的資訊包括:KEY-MATERIAL-0、KEY-MATERIAL-1、KEY-MATERIAL-2、CERTIFICATE-CHALLENAGE-DATA(來自於REQUEST-CERTIFICATE訊息)、伺服器所賦予的證書(來自於ServerHello)訊息。
其中KEY-MATERIAL-l、KEY-MATERIAL-2是可選的,與具體的加密演算法有關。然後客戶使用自己的讀金鑰加密摘要形成數字簽名,從而被伺服器認證。

2.SSL安全優勢

(1)監聽和中間人式攻擊

SSL使用一個經過通訊雙方協商確定的加密演算法和金鑰,對不同的安全級別應用都可找到不同的加密演算法,從而用於資料加密。它的金鑰管理處理比較好,在每次連線時通過產生一個密碼雜湊函式生成一個臨時使用的會話金鑰,除了不同連線使用不同金鑰外,在一次連線的兩個傳輸方向上也使用各自的金鑰。儘管SSL協議為監聽者提供了很多明文,但由於採用RSA交換金鑰具有較好的金鑰保護效能,以及頻繁更換金鑰的特點,因此對監聽和中間人式攻擊而言,具有較高的防範性。

(2)流量資料分析式攻擊

流量資料分析式攻擊的核心是通過檢查資料包的未加密欄位或未加保護的資料包屬性,試圖進行攻擊。在一般情況下該攻擊是無害的,SSL無法阻止這種攻擊。

(3)擷取再拼接式攻擊

對需要較強的連線加密,需要考慮這種安全性。SSL V3.0基本上可阻止這種攻擊。

(4)報文重發式攻擊

報文重發式攻擊比較容易阻止,SSL通過在MAC資料中包含“系列號”來防止該攻擊。

3.SSL協議存在的問題

(1)金鑰管理問題


設計一個安全祕密的金鑰交換協議是很複雜的,因此,SSL的握手協議也存在一些金鑰管理問題。SSL的問題表現在:

客戶機和伺服器在互相傳送自己能夠支援的加密演算法時,是以明文傳送的,存在被攻擊修改的可能。

SSL V3.0為了相容以前的版本,可能降低安全性。

所有的會話金鑰中都將生成MASTER-KEY,握手協議的安全完全依賴於對MASTER-KEY的保護,因此在通訊中要儘可能少地使用MASTER-KEY。

(2)加密強度問題

Netscape依照美國內政部的規定,在它的國際版的瀏覽器及伺服器上使用40位的金鑰。

以SSL所使用的RC4演繹法所命名的RC4法規,對多於40位長的加密金鑰產品的出口加以限制,這項規定使Netscape的128位加密金鑰在美國之外的地方變成不合法。一個著名的例子是一個法國的研究生和兩個美國柏克萊大學的研究生破譯了一個SSL的金鑰,才使人們開始懷疑以SSL為基礎的系統安全性。

Microsoft公司想利用一種稱為私人通訊技術(PCT,Private Communication Technology)的SSLsuperset協議來改進SSL的缺點。PCT會衍生出第二個專門為身份驗證用的金鑰,這個身份驗證並不屬於RC4規定的管轄範圍。PCT加入比目前隨機數產生器更安全的產生器,因為它也是SSL安全鏈中的一個弱環節。這個隨機數產生器提供了產生加密金鑰的種子數目(Seed Number)。

(3)數字簽名問題

SSL協議沒有數字簽名功能,即沒有抗否認服務。若要增加數字簽名功能,則需要在協議中打“補丁”。這樣做,在用於加密金鑰的同時又用於數字簽名,這在安全上存在漏洞。後來PKI體系完善了這種措施,即雙金鑰機制,將加密金鑰和數字簽名金鑰二者分開,成為雙證書機制。這是PKI完整的安全服務體系。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述