SSL協議詳解及***

轉自:http://kb.cnblogs.com/page/162080/
web

http://blog.163.com/lixiangdong2510@126/blog/static/3499482120117227100332/
算法

在SSL中會使用密鑰交換算法交換密鑰;使用密鑰對數據進行加密;使用散列算法對數據的完整性進行驗證,使用數字證書證實本身的身份。好了,下面開始介紹SSL協議。瀏覽器

  SSL介紹:安全

  安全套接字(Secure Socket Layer,SSL)協議是Web瀏覽器與Web服務器之間安全交換信息的協議,提供兩個基本的安全服務:鑑別與保密。服務器

  SSL是Netscape於1994年開發的,後來成爲了世界上最著名的web安全機制,全部主要的瀏覽器都支持SSL協議。網絡

  目前有三個版本:二、三、3.1,最經常使用的是第3版,是1995年發佈的。併發

  SSL協議的三個特性dom

  ① 保密:在握手協議中定義了會話密鑰後,全部的消息都被加密。ide

  ② 鑑別:可選的客戶端認證,和強制的服務器端認證。web安全

  ③ 完整性:傳送的消息包括消息完整性檢查(使用MAC)。

  SSL的位置

  SSL介於應用層和TCP層之間。應用層數據再也不直接傳遞給傳輸層,而是傳遞給SSL層,SSL層對從應用層收到的數據進行加密,並增長本身的SSL頭。

  SSL的工做原理

  握手協議(Handshake protocol)

  記錄協議(Record protocol)

  警報協議(Alert protocol)

  一、握手協議

  握手協議是客戶機和服務器用SSL鏈接通訊時使用的第一個子協議,握手協議包括客戶機與服務器之間的一系列消息。 SSL中最複雜的協議就是握手協議。該協議容許服務器和客戶機相互驗證,協商加密和MAC算法以及保密密鑰,用來保護在SSL記錄中發送的數據。握手協議 是在應用程序的數據傳輸以前使用的。

  每一個握手協議包含如下3個字段

  (1)Type:表示10種消息類型之一

  (2)Length:表示消息長度字節數

  (3)Content:與消息相關的參數

  握手協議的4個階段

  1.1 創建安全能力

  SSL握手的第一階段啓動邏輯鏈接,創建這個鏈接的安全能力。首先客戶機向服務器發出client hello消息並等待服務器響應,隨後服務器向客戶機返回server hello消息,對client hello消息中的信息進行確認。

  Client hello消息包括Version,Random,Session id,Cipher suite,Compression method等信息。

  ClientHello 客戶發送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服務器用ServerHello信息應答客戶,包括下列內容

  (1)一個SSL版本號。取客戶端支持的最高版本號和服務端支持的最高版本號中的較低者。

  (2)一個用於生成主祕密的32字節的隨機數。(客戶端一個、服務端一個)

  (3)會話ID

  (4)從客戶端的密碼套件列表中選擇的一個密碼套件

  (5)從客戶端的壓縮方法的列表中選擇的壓縮方法

  這個階段以後,客戶端服務端知道了下列內容:

  (1)SSL版本

  (2)密鑰交換、信息驗證和加密算法

  (3)壓縮方法

  (4)有關密鑰生成的兩個隨機數。

  1.2 服務器鑑別與密鑰交換

  服務器啓動SSL握手第2階段,是本階段全部消息的惟一發送方,客戶機是全部消息的惟一接收方。該階段分爲4步:

  (a)證書:服務器將數字證書和到根CA整個鏈發給客戶端,使客戶端能用服務器證書中的服務器公鑰認證服務器。

  (b)服務器密鑰交換(可選):這裏視密鑰交換算法而定

  (c)證書請求:服務端可能會要求客戶自身進行驗證。

  (d)服務器握手完成:第二階段的結束,第三階段開始的信號

  這裏重點介紹一下服務端的驗證和密鑰交換。這個階段的前面的(a)證書 和(b)服務器密鑰交換是基於密鑰交換方法的。而在SSL中密鑰交換算法有6種:無效(沒有密鑰交換)、RSA、匿名Diffie-Hellman、暫時 Diffie-Hellman、固定Diffie-Hellman、Fortezza。

  在階段1過程客戶端與服務端協商的過程當中已經肯定使哪一種密鑰交換算法。

  若是協商過程當中肯定使用RSA交換密鑰,那麼過程以下圖:

  這個方法中,服務器在它的第一個信息中,發送了RSA加密/解密公鑰證書。不過,由於預備主祕密是由客戶端在下一個 階段生成併發送的,因此第二個信息是空的。注意,公鑰證書會進行從服務器到客戶端的驗證。當服務器收到預備主祕密時,它使用私鑰進行解密。服務端擁有私鑰 是一個證據,能夠證實服務器是一個它在第一個信息發送的公鑰證書中要求的實體。

  其餘的幾種密鑰交換算法這裏就不介紹了。能夠參考Behrouz A.Forouzan著的《密碼學與網絡安全》。

   1.3 客戶機鑑別與密鑰交換:

  客戶機啓動SSL握手第3階段,是本階段全部消息的惟一發送方,服務器是全部消息的惟一接收方。該階段分爲3步:

  (a)證書(可選):爲了對服務器證實自身,客戶要發送一個證書信息,這是可選的,在IIS中能夠配置強制客戶端證書認證。

  (b)客戶機密鑰交換(Pre-master-secret):這裏客戶端將預備主密鑰發送給服務端,注意這裏會使用服務端的公鑰進行加密。

  (c)證書驗證(可選),對預備祕密和隨機數進行簽名,證實擁有(a)證書的公鑰。

  下面也重點介紹一下RSA方式的客戶端驗證和密鑰交換。

  這種狀況,除非服務器在階段II明確請求,不然沒有證書信息。客戶端密鑰交換方法包括階段II收到的由RSA公鑰加密的預備主密鑰。

  階段III以後,客戶要有服務器進行驗證,客戶和服務器都知道預備主密鑰。

  1.4 完成

  客戶機啓動SSL握手第4階段,使服務器結束。該階段分爲4步,前2個消息來自客戶機,後2個消息來自服務器。

  1.5 密鑰生成的過程

  這樣握手協議完成,下面看下什麼是預備主密鑰,主密鑰是怎麼生成的。爲了保證信息的完整性和機密性,SSL須要有六 個加密祕密:四個密鑰和兩個IV。爲了信息的可信性,客戶端須要一個密鑰(HMAC),爲了加密要有一個密鑰,爲了分組加密要一個IV,服務也是如此。 SSL須要的密鑰是單向的,不一樣於那些在其餘方向的密鑰。若是在一個方向上有***,這種***在其餘方向是沒影響的。生成過程以下:

  二、記錄協議 

  記錄協議在客戶機和服務器握手成功後使用,即客戶機和服務器鑑別對方和肯定安全信息交換使用的算法後,進入SSL記錄協議,記錄協議向SSL鏈接提供兩個服務:

  (1)保密性:使用握手協議定義的祕密密鑰實現

  (2)完整性:握手協議定義了MAC,用於保證消息完整性

  記錄協議的過程:

  三、警報協議

  客戶機和服務器發現錯誤時,向對方發送一個警報消息。若是是致命錯誤,則算法當即關閉SSL鏈接,雙方還會先刪除相關的會話號,祕密和密鑰。每 個警報消息共2個字節,第1個字節表示錯誤類型,若是是警報,則值爲1,若是是致命錯誤,則值爲2;第2個字節制定實際錯誤類型。

  總結

  SSL中,使用握手協議協商加密和MAC算法以及保密密鑰 ,使用握手協議對交換的數據進行加密和簽名,使用警報協議定義數據傳輸過程當中,出現問題如何去解決。


由於SSL v2.0協議存在許多安全漏洞問題,容易遭遇中間人***和容易被破解。可是,因爲許多系統和Web服務器都還支持SSL v2.0協議,因此爲了加強用戶瀏覽網頁的安全,目前全部主流新版瀏覽器都已經不支持不安全的SSL v2.0協議。

微軟從IE 7開始就已經把瀏覽器的缺省設置不支持SSL 2.0,但多是考慮到有些網站還只支持SSL 2.0,因此IE瀏覽器留了一個能夠由用戶設置支持SSL 2.0的選項,以便能正常訪問只支持SSL 2.0的網站。IE7/IE8支持SSL 3.0和TLS1.0,而IE9還支持TLS1.1和1.2。蘋果瀏覽器Safari採用IE瀏覽器一樣安全配置。

目前我國部署了SSL證書的網站廣泛存在的問題是並無關閉不安全的SSL 2.0協議,仍然是支持的。雖然新版瀏覽器已經不支持SSL 2.0,但舊版本瀏覽器還會支持,並且***要***的話固然是直接使用SSL 2.0協議來***。

相關文章
相關標籤/搜索