安全服務
(1)信息保密,通過使用公開密鑰和對稱密鑰技術以達到信息保密。SSL客戶機和服務器之間的所有業務都使用在SSL握手過程中建立的密鑰和算法進行加密。這樣就防止了某些用戶通過使用IP數據包嗅探工具非法竊聽。盡管數據包嗅探仍能捕捉到通信的内容,但卻無法破譯。
(2)信息完整性,确保SSL業務全部達到目的。應确保服務器和客戶機之間的信息内容免受破壞。SSL利用機密共享和hash函數組提供信息完整性服務。
(3)雙向認證,客戶機和服務器相互識别的過程。它們的識别号用公開密鑰編碼,并在SSL握手時交換各自的識别号。為了驗證證明持有者是其合法用戶(而不是冒名用戶),SSL要求證明持有者在握手時對交換數據進行數字式标識。證明持有者對包括證明的所有信息數據進行标識,以說明自己是證明的合法擁有者。這樣就防止了其他用戶冒名使用證明。證明本身并不提供認證,隻有證明和密鑰一起才起作用。
(4)SSL的安全性服務對終端用戶來講做到盡可能透明。一般情況下,用戶隻需單擊桌面上的一個按鈕或聯接就可以與SSL的主機相連。與标準的HTTP連接申請不同,一台支持SSL的典型網絡主機接受SSL連接的默認端口是443,而不是80。
優勢
SSL協議的優勢在于它是與應用層協議獨立無關的。高層的應用層協議(例如:HTTP、FTP、Telnet等等)能透明的建立于SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密算法、通信密鑰的協商以及服務器認證工作。在此之後應用層協議所傳送的數據都會被加密,從而保證通信的私密性。
體系結構
SSL被設計成使用TCP來提供一種可靠的端到端的安全服務,不是單個協議,而是二層協議,低層是SSL記錄層,用于封裝不同的上層協議,另一層是被封裝的協議,即SSL握手協議,它可以讓服務器和客戶機在傳輸應用數據之前,協商加密算法和加密密鑰,客戶機提出自己能夠支持的全部加密算法,服務器選擇最适合它的算法。
記錄協議為不同的更高層協議提供基本的安全服務,其特點是為web客戶/服務器的交互提供傳輸服務的超文本傳輸協議(HTTP)可在SSL上面運行。三個更高層協議被定義成SSL的一部分:握手協議、修改密文規約協議和告警協議。
SSL中兩個重要的概念是SSL會話和SSL連接,規約如下:
(1)連接:連接是提供恰當類型服務的傳輸,對于SSL這樣的連接是點對點的關系。連接是短暫的,每個連接與一個會話相聯系。
(2)會話:SSL的會話是客戶和服務器之間的關聯,會話通過握手協議來創建。會話定義了加密安全參數的一個集合,該集合可以被多個連接所共享。會話可用來避免為每個連接進行昂貴的新安全參數的協商。
在任何一對交互實體之間可能存在多個安全連接。理論上,在交互實體中間也可能存在多個同時的會話,實際上每個會話存在一組狀态。一旦建立了會話,就有當前的操作狀态用于讀和寫(即接收和發送)。另外,在握手協議期間,創建了挂起讀和寫狀态。一旦握手協議成功,挂起狀态就變成當前的狀态。
記錄協議
SSL記錄協議為SSL連接提供兩種服務:
(1)機密性:握手協議定義了共享的、可用于對SSL有效載荷進行常規加密的密鑰。
(2)報文完整性:握手協議還定義了共享的、可用來形成報文的鑒别碼(MAC)的密鑰。
記錄協議接收傳輸的應用報文,将數據分片成可管理的塊,可選地壓縮數據,應用MAC,加密,增加首部,在TCP報文段中傳輸結果單元。被接收的數據被解密、驗證、解壓和重新裝配,然後交付給更高級的用戶。
告警協議
告警協議是用來将SSL有關的告警傳送給對方實體。和其他使用SSL的情況一樣,告警報文按照當前狀态說明被壓縮和加密。該協議的每個報文由兩個字節組成圖4(b)。第一個字節的值是警告或緻命的,用來傳送報文的嚴重級别。如果級别是緻命的,SSL立刻中止該連接。同一個會話的其他連接可以繼續,但這個會話不能再建立新的連接了。第二個字節包含了指出特定告警的代碼。
SSL中最複雜、最重要的部分是握手協議。這個協議用于建立會話;協商加密方法、鑒别方法、壓縮方法和初始化操作,使服務器和客戶能夠相互鑒别對方的身份、協商加密和MAC算法以及用來保護在SSL記錄中發送數據的加密密鑰。在傳輸任何應用數據之前,使用握手協議。它由一系列在客戶和服務器之間交換的報文組成。所有報文都具有圖4(c)顯示的格式。每個報文具有三個字段:
(1)類型(1字節):指示10種報文中的一個。表2列出定義的報文類型。
(2)長度(3字節):以字節為單位的報文長度。
(3)内容(大于等于1字節)。
握手過程
一次SSL握手将發生以下事件:
(A)客戶機和服務器交換X.509證明以便雙方相互确認。在此過程中可以交換全部的證明鍊,也可以選擇隻交換一些底層的證明。證明的驗證包括:檢驗有效日期和驗證證明的簽名權限。
(B)客戶機随機地産生一組密鑰,它們用于信息加密和MAC計算。這些密鑰要先通過服務器的公開密鑰加密再送往服務器。總共有四個密鑰分别用于服務器到客戶機以及客戶機到服務器的通信。
(C)信息加密算法(用于加密)和Hash函數(用于确保信息完整性)是綜合在一起使用的。Netscape的SSL實現方案是:客戶機提供自己支持的所有算法清單,服務器選擇它認為最有效的密碼。服務器管理者可以使用或禁止某些特定的密碼。
通過SSL握手協議、SSL密文協議、SSL告警協議和SSL記錄協議實現了安全套接層的安全,對于web安全我們完全可以采用上述手段,因為它們的安全技術是可靠的。
雙向證書認證
雙向證書認證的SSL握手過程。
1.以下簡要介紹SSL協議的工作方式。客戶端要收發幾個握手信号:
2.發送一個“ClientHello”消息,說明它支持的密碼算法列表、壓縮方法及最高協議版本,也發送稍後将被使用的随機數。
3.然後收到一個“ServerHello”消息,包含服務器選擇的連接參數,源自客戶端初期所提供的“ClientHello”。
4.當雙方知道了連接參數,客戶端與服務器交換證書(依靠被選擇的公鑰系統)。這些證書通常基于X.509,不過已有草案支持以OpenPGP為基礎的證書。
5.服務器請求客戶端公鑰。客戶端有證書即雙向身份認證,沒證書時随機生成公鑰。
客戶端與服務器通過公鑰保密協商共同的主私鑰(雙方随機協商),這通過精心謹慎設計的僞随機數功能實現。結果可能使用Diffie-Hellman交換,或簡化的公鑰加密,雙方各自用私鑰解密。所有其他關鍵數據的加密均使用這個“主密鑰”。
6.服務器将握手消息的MAC地址發送給客戶端。
數據傳輸中記錄層(Record layer)用于封裝更高層的HTTP等協議。記錄層數據可以被随意壓縮、加密,與消息驗證碼壓縮在一起。每個記錄層包都有一個Content-Type段用以記錄更上層用的協議。
與TSL的差異
SSL(Secure Sockets Layer)是網景公司(Netscape)設計的主要用于Web的安全傳輸協議。這種協議在Web上獲得了廣泛的應用。IETF将SSL作了标準化,即RFC2246,并将其稱為TLS(Transport Layer Security),其最新版本是RFC5246,版本1.2。從技術上講,TLS1.0與SSL3.0的差異非常微小。
TLS利用密鑰算法在互聯網上提供端點身份認證與通訊保密,其基礎是公鑰基礎設施(public key infrastructure,PKI)。不過在實現的典型例子中,隻有網絡服務者被可靠身份驗證,而其客戶端則不一定。這是因為公鑰基礎設施普遍商業運營,電子簽名證書通常需要付費購買。協議的設計在某種程度上能夠使主從式架構應用程序通訊本身預防竊聽、幹擾(Tampering)、和消息僞造。
TLS包含三個基本階段:
1.對等協商支援的密鑰算法
2.基于非對稱密鑰的信息傳輸加密和身份認證、基于PKI證書的身份認證
3.基于對稱密鑰的數據傳輸保密
在第一階段,客戶端與服務器協商所用密碼算法。當前廣泛實現的算法選擇如下:n
1.公鑰私鑰非對稱密鑰保密系統:RSA、Diffie-Hellman、DSA及Fortezza;
2.對稱密鑰保密系統:RC2、RC4、IDEA、DES、Triple DES、AES以及Camellia;
3.單向散列函數:MD5、SHA1以及SHA256。
TLS/SSL有多樣的安全保護措施:
所有的記錄層數據均被編号,用于消息驗證碼校驗。



















