SSL 是用于安全傳輸數據的一種通信協議。它采用公鑰加密技術、對稱密鑰加密技術等保護兩個應用之間的信息傳輸的機密性和完整性。但是,SSL 也有一個不足,就是它本身不能保證傳輸信息的不可否認性。
SSL 協議包括服務器認證、客戶認證、SSL 鍊路上的數據完整性、SSL 鍊路上的數據保密性等幾個方面,通過在浏覽器和 Web 服務器之間建立一條安全的通道來保證 Internet數據傳遞的安全。目前,利用公鑰加密的 SSL 技術,已經成為 Internet 上進行保密通信的工業标準。SSL 協議常常用于增強 Web 服務的安全性。
在 TCP/IP 協議中,SSL 協議建立在傳輸層即 TCP 之上、應用層之下。SSL 協議有一個突出的優點,就是它與應用層協議相獨立,高層的應用層協議如 HTTP 等可以透明地建立在 SSL 協議之上進行工作。
通過 SSL 協議建立的傳輸通道具有如下的基本安全性:
(1)通道是保密的,經過握手确定密鑰之後,所有的消息被加密。SSL 協議在應用層協議工作之前就已經完成了加密算法、密鑰的協商、服務器認證等工作,而此後的所有應用層所傳送的數據都是經過加密的,因此 SSL 協議具有很好的保密性。
(2)通道是被認證的,通信中的服務器端總是被認證,客戶端可選認證。在基于 SSL 協議的通信過程中,服務器端認證是必須進行的,所以,即使在一次會話過程中不進行客戶端認證,該會話的确認性也能夠有很好的保證。
(3)通道是可靠的,用 MAC 對傳送的消息進行完整性檢查,保證通道上數據的完整性。基于 SSL 協議的通信過程,因為傳遞的消息中包括消息完整性檢查數據(即 MAC 數據),因此,可以保證該通信是可靠的。
SSL 協議由 SSL 記錄協議、SSL 握手協議、SSL 密碼變更說明協議、SSL 警告協議等組成。
1.SSL 記錄協議
在 SSL 記錄協議中,所有要傳輸的數據都被封裝在記錄中,記錄是由紀錄頭和長度不為0 的記錄數據組成的。所有的 SSL 通信,包括握手消息、安全空白記錄、應用數據等都需要使用 SSL 記錄。
2.SSL 協議記錄頭格式
SSL 協議記錄頭包括的數據有記錄頭長度、記錄數據長度、記錄數據中是否有粘貼數據等。SSL 協議記錄頭長度既可以是 2 字節、也可以是 3 字節長。當記錄頭的最高位為 1 時,表示不含有粘貼數據,記錄頭長度為 2 字節,記錄數據最大長度為 32 767 字節;當記錄頭的最高位為 0 時,則含有粘貼數據,記錄頭長度為 3 字節,記錄數據最大長度為 16 383字節。當記錄頭的最高位為 0 時,次高位有特殊的含義。當次高位為 1 時,表示所傳輸的記錄是普通記錄;當次高位為 0 時,表示所傳輸的記錄是安全空白記錄。
SSL 協議記錄頭格式如圖所示。
記錄頭中數據長度編碼不包括數據頭所占用的字節長度。記錄頭長度為 2 字節時記錄長度的計算方法為:記錄長度=(( byte[0]&0x7f) <<8))|byte[1]
記錄頭長度為 3 字節時記錄長度的計算方法為:記錄長度=(( byte[0]&0x3f) <<8))|byte[1]
以上計算式中,byte[0]、byte[1]也分别表示所傳輸的第一、二個字節。
另外,粘貼數據的長度為傳輸的第三個字節。
3.SSL 記錄數據的格式
SSL 記錄數據包含三個部分:MAC 數據和實際數據和粘貼數據。
MAC 數據用于數據完整性檢查。計算 MAC 所用的散列函數由握手協議中的消息确定。
若使用 MD5 算法,則 MAC 數據長度是 16 字節。MAC 數據的産生方式為:
MAC 數據= HASH(密鑰、實際數據、粘貼數據、序号)其中,當會話的客戶端發送數據時,密鑰是客戶的寫密鑰(服務器用讀密鑰來驗證 MAC數據);而當會話的客戶端接收數據時,密鑰是客戶的讀密鑰(服務器用寫密鑰來驗證 MAC數據)。序号是一個可以被發送和接收雙方遞增的計數器。每個通信方都會建立一個計數器,分别屬于發送者和接收者。計數器有 32 位,計數值循環使用,每發送一個記錄計數值遞增一次,序号的初始值為 0。
4.SSL 握手協議
SSL 握手協議建立在 SSL 記錄協議之上,用于在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。SSL 握手的過程可以分為兩個階段,第一階段用于建立秘密的通信信道,第二階段用于客戶驗證。
在 SSL 協議中,同時使用了對稱密鑰加密算法和公鑰加密算法,這是為了綜合利用對稱密鑰加密算法的高速度和公鑰加密算法的安全性的優點。SSL 協議使用公鑰加密算法使服務器端身份在客戶端得到驗證,并且傳遞用于會話中對數據加密的對稱密鑰。然後再利用對稱密鑰在通信過程中對收到和發送的數據進行比較快速的加密,從而減小系統開銷,保證通信效率。
SSL 支持各種加密算法。在“握手”過程中,使用 RSA 公開密鑰系統。密鑰交換後,可以使用多種密碼,例如,RC2、RC4、IDEA、DES、3DES 及 MD5 信息摘要算法等。
SSL 協議可以非常有效地保護通信過程。但是,如果某種攻擊是利用 SSL 協議通信進行的,那麼,這種攻擊也會受到 SSL 協議的保護,從而使得攻擊更加隐蔽,難于被發現。
當然,這種攻擊也能夠很好地穿透防火牆、躲過入侵檢測系統的檢查。
另外,SSL 在通信過程中,要進行許多加密、解密的操作,這些計算的複雜性随着密碼的強度不同而不同,但是高強度的計算會增加服務器負載、增加網絡帶寬,從而使服務器性能下降,吞吐量也下降。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!