安全服務
(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的體系結構
SSL被設計成使用TCP來提供一種可靠的端到端的安全服務,不是單個協定,而是二層協定,低層是SSL記錄層,用於封裝不同的上層協定,另一層是被封裝的協定,即SSL
握手協定,它可以讓伺服器和客戶機在傳輸套用數據之前,協商
加密算法和加密密鑰,客戶機提出自己能夠支持的全部加密算法,伺服器選擇最適合它的算法。
記錄協定為不同的更高層協定提供基本的安全服務,其特點是為web客戶/伺服器的互動提供傳輸服務的
超文本傳輸協定(HTTP)可在SSL上面運行。三個更高層協定被定義成SSL的一部分:握手協定、修改密文規約協定和告警協定。
SSL中兩個重要的概念是SSL會話和SSL連線,規約如下:
(1)連線:連線是提供恰當類型服務的傳輸,對於SSL這樣的連線是點對點的關係。連線是短暫的,每個連線與一個會話相聯繫。
(2)會話:SSL的會話是客戶和伺服器之間的關聯,會話通過
握手協定來創建。會話定義了加密安全參數的一個集合,該集合可以被多個連線所共享。會話可用來避免為每個連線進行昂貴的新安全參數的協商。
在任何一對互動實體之間可能存在多個安全連線。理論上,在互動實體中間也可能存在多個同時的會話,實際上每個會話存在一組狀態。一旦建立了會話,就有當前的操作狀態用於讀和寫(即接收和傳送)。另外,在
握手協定期間,創建了掛起讀和寫狀態。一旦握手協定成功,
掛起狀態就變成當前的狀態。
SSL記錄協定
SSL記錄協定為SSL連線提供兩種服務:
(1)機密性:
握手協定定義了共享的、可用於對SSL有效載荷進行常規加密的密鑰。
(2)
報文完整性:握手協定還定義了共享的、可用來形成報文的鑑別碼(MAC)的密鑰。
記錄協定接收傳輸的套用報文,將數據分片成可管理的塊,可選地壓縮數據,套用MAC,加密,增加首部,在TCP
報文段中傳輸結果單元。被接收的數據被解密、驗證、解壓和重新裝配,然後交付給更
高級的用戶。
修改密文規約協定
修改密文規約協定(Change Cipher Spec Protocol)是使用SSL記錄協定的三個SSL有關協定之一,並且它是最簡單的,用於使用新協商的加密方法和完全性方法。這個協定由單個
報文圖4(a)組成,該報文由值為1的單個位元組組成。
告警協定
告警協定是用來將SSL有關的告警傳送給對方實體。和其他使用SSL的情況一樣,告警
報文按照當前狀態說明被壓縮和加密。該協定的每個報文由兩個位元組組成圖4(b)。第一個位元組的值是警告或致命的,用來傳送報文的嚴重級別。如果級別是致命的,SSL立刻中止該連線。同一個會話的其他連線可以繼續,但這個會話不能再建立新的連線了。 第二個位元組包含了指出特定告警的代碼。
SSL中最複雜、最重要的部分是
握手協定。這個協定用於建立會話;協商加密方法、鑑別方法、壓縮方法和初始化操作,使伺服器和客戶能夠相互鑑別對方的身份、協商加密和MAC算法以及用來保護在SSL記錄中傳送數據的加密密鑰。在傳輸任何套用數據之前,使用握手協定。它由一系列在客戶和伺服器之間交換的
報文組成。所有報文都具有圖4(c)顯示的格式。每個報文具有三個欄位:
(1)類型(1位元組):指示10種報文中的一個。表2列出定義的報文類型。
(2)長度(3
位元組):以位元組為單位的報文長度。
(3)內容(大於等於1位元組)。
SSL握手的過程
一次SSL握手將發生以下事件:
A)客戶機和伺服器交換X.509證明以便雙方相互確認。在此過程中可以交換全部的證明鏈,也可以選擇只交換一些底層的證明。證明的驗證包括:檢驗有效日期和驗證證明的簽名許可權。
B)客戶機隨機地產生一組密鑰,它們用於信息加密和MAC計算。這些密鑰要先通過伺服器的
公開密鑰加密再送往伺服器。總共有四個密鑰分別用於伺服器到客戶機以及客戶機到伺服器的通信。
C)信息
加密算法(用於加密)和Hash函式(用於確保信息完整性)是綜合在一起使用的。Netscape的SSL實現方案是:客戶機提供自己支持的所有算法清單,伺服器選擇它認為最有效的密碼。伺服器管理者可以使用或禁止某些特定的密碼。
通過SSL
握手協定、SSL密文協定、SSL告警協定和SSL記錄協定實現了安全套接層的安全,對於web安全我們完全可以採用上述手段,因為它們的安全技術是可靠的。
過程
雙向證書認證的SSL握手過程。
以下簡要介紹SSL協定的工作方式。客戶端要收發幾個握手信號:
傳送一個“ClientHello”訊息,說明它支持的密碼算法列表、壓縮方法及最高協定版本,也傳送稍後將被使用的隨機數。
然後收到一個“ServerHello”訊息,包含伺服器選擇的連線參數,源自客戶端初期所提供的“ClientHello”。
當雙方知道了連線參數,客戶端與伺服器交換證書(依靠被選擇的公鑰系統)。這些證書通常基於
X.509,不過已有草案支持以OpenPGP為基礎的證書。
伺服器請求客戶端公鑰。客戶端有證書即雙向身份認證,沒證書時隨機生成公鑰。
客戶端與伺服器通過公鑰保密協商共同的主私鑰(雙方隨機協商),這通過精心謹慎設計的
偽隨機數功能實現。結果可能使用
Diffie-Hellman交換,或簡化的公鑰加密,雙方各自用私鑰解密。所有其他關鍵數據的加密均使用這個“主密鑰”。
伺服器將握手訊息的MAC地址傳送給客戶端。
數據傳輸中記錄層(Record layer)用於封裝更高層的HTTP等協定。記錄層數據可以被隨意壓縮、加密,與訊息驗證碼壓縮在一起。每個記錄層包都有一個Content-Type段用以記錄更上層用的協定。
TLS和SSL的差異
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包含三個基本階段:
對等協商支援的密鑰算法
在第一階段,客戶端與伺服器協商所用密碼算法。 當前廣泛實現的算法選擇如下:
TLS/SSL有多樣的安全保護措施: