SSL TLS協議簡介

2021-10-24 12:46:00 字數 2878 閱讀 9719

ssl(secure sockets layer 安全套接字協議),及其繼任者傳輸層安全(transport layer security,tls)是為網路通訊提供安全及資料完整性的一種安全協議。tls與ssl在傳輸層與應用層之間對網路連線進行加密。

ssl協議位於tcp/ip協議與各種應用層協議之間,為資料通訊提供安全支援。ssl協議可分為兩層: ssl記錄協議(ssl record protocol):它建立在可靠的傳輸協議(如tcp)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。 ssl握手協議(ssl handshake protocol):它建立在ssl記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等。

最新版本的tls(transport layer security,傳輸層安全協議)是ietf(internet engineering task force,internet工程任務組)制定的一種新的協議,它建立在ssl 3.0協議規範之上,是ssl 3.0的後續版本。tls與ssl3.0之間存在著顯著的差別,主要是它們所支援的加密演算法不同,所以tls與ssl3.0不能互操作。

1.tls與ssl的差異

1)版本號:tls記錄格式與ssl記錄格式相同,但版本號的值不同,tls的版本1.0使用的版本號為sslv3.1。

2)報文鑑別碼:sslv3.0和tls的mac演算法及mac計算的範圍不同。tls使用了rfc-2104定義的hmac演算法。sslv3.0使用了相似的演算法,兩者差別在於sslv3.0中,填充位元組與金鑰之間採用的是連線運算,而hmac演算法採用的是異或運算。但是兩者的安全程度是相同的。

3)偽隨機函式:tls使用了稱為prf的偽隨機函式來將金鑰擴充套件成資料塊,是更安全的方式。

4)報警**:tls支援幾乎所有的sslv3.0報警**,而且tls還補充定義了很多報警**,如解密失敗(decryption_failed)、記錄溢位(record_overflow)、未知ca(unknown_ca)、拒絕訪問(access_denied)等。

5)密文族和客戶證書:sslv3.0和tls存在少量差別,即tls不支援fortezza金鑰交換、加密演算法和客戶證書。

6)certificate_verify和finished訊息:sslv3.0和tls在用certificate_verify和finished訊息計算md5和sha-1雜湊碼時,計算的輸入有少許差別,但安全性相當。

7)加密計算:tls與sslv3.0在計算主密值(master secret)時採用的方式不同。

8)填充:使用者資料加密之前需要增加的填充位元組。在ssl中,填充後的資料長度要達到密文塊長度的最小整數倍。而在tls中,填充後的資料長度可以是密文塊長度的任意整數倍(但填充的最大長度為255位元組),這種方式可以防止基於對報文長度進行分析的攻擊。

ssl/tls協議的基本過程是這樣的:

(1) 客戶端向伺服器端索要並驗證公鑰。

(2) 雙方協商生成"對話金鑰"。

(3) 雙方採用"對話金鑰"進行加密通訊。

前面兩步稱為握手階段(handshake) ,握手階段的所有通訊都是明文的。

握手階段涉及四次通訊,

客戶端發出請求(clienthello)

客戶端(通常是瀏覽器)先向伺服器發出加密通訊的請求,請求包含以下資訊:

(1) 支援的協議版本,比如tls 1.0版。

(2) 乙個客戶端生成的隨機數,稍後用於生成"對話金鑰"。

(3) 支援的加密方法,比如rsa公鑰加密。

(4) 支援的壓縮方法。

2023年,tls協議加入了乙個server name indication擴充套件,允許客戶端向伺服器提供它所請求的網域名稱,在此之前客戶端傳送的資訊中心不包含伺服器的網域名稱。

2. 伺服器回應(severhello)

伺服器收到客戶端請求後向客戶端發出回應,回應包含以下內容:

(1) 確認使用的加密通訊協議版本,比如tls 1.0版本。如果瀏覽器與伺服器支援的版本不一致,伺服器關閉加密通訊。

(2) 乙個伺服器生成的隨機數,稍後用於生成"對話金鑰"。

(3) 確認使用的加密方法,比如rsa公鑰加密。

(4) 伺服器證書。

如果伺服器需要確認客戶端的身份,就會再包含一項請求,要求客戶端提供"客戶端證書"。比如,金融機構往往只允許認證客戶連入自己的網路,就會向正式客戶提供usb金鑰,裡面就包含了一張客戶端證書,證書將在下一步客戶端回應中提供。

3. 客戶端回應

客戶端收到伺服器回應以後,首先驗證伺服器證書。如果證書不是可信機構頒布、或者證書中的網域名稱與實際網域名稱不一致、或者證書已經過期,就會向訪問者顯示乙個警告,由其選擇是否還要繼續通訊。

如果證書沒有問題,客戶端就會從證書中取出伺服器的公鑰。然後,向伺服器傳送下面三項資訊。

(1) 乙個隨機數。該隨機數用伺服器公鑰加密,防止被竊聽。

(2) 編碼改變通知,表示隨後的資訊都將用雙方商定的加密方法和金鑰傳送。

(3) 客戶端握手結束通知,表示客戶端的握手階段已經結束。這一項同時也是前面傳送的所有內容的hash值,用來供伺服器校驗。

4.伺服器回應

伺服器收到客戶端的第三個隨機數pre-master key之後,計算生成本次會話所用的"會話金鑰"。然後,向客戶端最後傳送下面資訊。

(1)編碼改變通知,表示隨後的資訊都將用雙方商定的加密方法和金鑰傳送。

(2)伺服器握手結束通知,表示伺服器的握手階段已經結束。這一項同時也是前面傳送的所有內容的hash值,用來供客戶端校驗。

至此,整個握手階段全部結束。接下來,客戶端與伺服器進入加密通訊,就完全是使用普通的http協議,只不過用"會話金鑰"加密內容。

SSL TLS 協議初識

ssl協議位於tcp ip協議與各種應用層協議之間,為資料通訊提供安全支援。ssl協議可分為兩層 ssl記錄協議 ssl record protocol 它建立在可靠的傳輸協議 如tcp 之上,為高層協議提供資料封裝 壓縮 加密等基本功能的支援。ssl握手協議 ssl handshake proto...

SSL TLS 協議介紹

ssl tls 協議 rfc2246 rfc4346 處於 tcp ip 協議與各種應用層協議之間,為資料通訊提供安全支援。從協議內部的功能層面上來看,ssl tls 協議可分為兩層 1.ssl tls 記錄協議 ssl tls record protocol 它建立在可靠的傳輸層協議 如 tcp ...

SSL TLS協議概覽

ssl tls協議是什麼 計算機網路的osi七層模型和tcp ip四層模型想必大家都知道。其中ssl tls是一種介與於傳輸層 比如tcp ip 和應用層 比如http 的協議。它通過 握手協議 handshake protocol 和 傳輸協議 record protocol 來解決傳輸安全的問題...