SSL TLS 協議介紹

2021-07-11 06:37:39 字數 3527 閱讀 4638

ssl/tls 協議(rfc2246 rfc4346)處於 tcp/ip 協議與各種應用層協議之間,為資料通訊提供安全支援。

從協議內部的功能層面上來看,ssl/tls 協議可分為兩層:

1. ssl/tls 記錄協議(ssl/tls record protocol),它建立在可靠的傳輸層協議(如 tcp)之上,為上層協議提供資料封裝、壓縮、加密等基本功能。

2. ssl/tls 握手協議(ssl/tls handshake protocol),它建立在 ssl/tls 記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等初始化協商功能。

從協議使用方式來看,又可以分成兩種型別:

1. ssl/tls 單向認證,就是使用者到伺服器之間只存在單方面的認證,即客戶端會認證伺服器端身份,而伺服器端不會去對客戶端身份進行驗證。首先,客戶端發起握手請求,伺服器收到握手請求後,會選擇適合雙方的協議版本和加密方式。然後,再將協商的結果和伺服器端的公鑰一起傳送給客戶端。客戶端利用伺服器端的公鑰,對要傳送的資料進行加密,並傳送給伺服器端。伺服器端收到後,會用本地私鑰對收到的客戶端加密資料進行解密。然後,通訊雙方都會使用這些資料來產生雙方之間通訊的加密金鑰。接下來,雙方就可以開始安全通訊過程了。

2.ssl/tls 雙向認證,就是雙方都會互相認證,也就是兩者之間將會交換證書。基本的過程和單向認證完全一樣,只是在協商階段多了幾個步驟。在伺服器端將協商的結果和伺服器端的公鑰一起傳送給客戶端後,會請求客戶端的證書,客戶端則會將證書傳送給伺服器端。然後,在客戶端給伺服器端傳送加密資料後,客戶端會將私鑰生成的數字簽名傳送給伺服器端。而伺服器端則會用客戶端證書中的公鑰來驗證數字簽名的合法性。建立握手之後過程則和單向通訊完全保持一致。

ssl/tls 協議建立通訊的基本流程如圖 1 所示,

步驟 1.clienthello – 客戶端傳送所支援的 ssl/tls 最高協議版本號和所支援的加密演算法集合及壓縮方法集合等資訊給伺服器端。

步驟 2.serverhello – 伺服器端收到客戶端資訊後,選定雙方都能夠支援的 ssl/tls 協議版本和加密方法及壓縮方法,返回給客戶端。

(可選)步驟 3.sendcertificate – 伺服器端傳送服務端證書給客戶端。

(可選)步驟 4.requestcertificate – 如果選擇雙向驗證,伺服器端向客戶端請求客戶端證書。

步驟 5.serverhellodone – 伺服器端通知客戶端初始協商結束。

(可選)步驟 6.responsecertificate – 如果選擇雙向驗證,客戶端向伺服器端傳送客戶端證書。

步驟 7.clientkeyexchange – 客戶端使用伺服器端的公鑰,對客戶端公鑰和金鑰種子進行加密,再傳送給伺服器端。

(可選)步驟 8.certificateverify – 如果選擇雙向驗證,客戶端用本地私鑰生成數字簽名,並傳送給伺服器端,讓其通過收到的客戶端公鑰進行身份驗證。

步驟 9.createsecretkey – 通訊雙方基於金鑰種子等資訊生成通訊金鑰。

步驟 10.changecipherspec – 客戶端通知伺服器端已將通訊方式切換到加密模式。

步驟 11.finished – 客戶端做好加密通訊的準備。

步驟 12.changecipherspec – 伺服器端通知客戶端已將通訊方式切換到加密模式。

步驟 13.finished – 伺服器做好加密通訊的準備。

步驟 14.encrypted/decrypteddata – 雙方使用客戶端金鑰,通過對稱加密演算法對通訊內容進行加密。

步驟 15.closedconnection – 通訊結束後,任何一方發出斷開 ssl 連線的訊息。

除了以上的基本流程,ssl/tls 協議本身還有一些概念需要在此解釋說明一下。

key:key 是乙個位元(bit)字串,用來加密解密資料的,就像是一把開鎖的鑰匙。

對稱演算法(symmetric cryptography):就是需要雙方使用一樣的 key 來加密解密訊息演算法,常用金鑰演算法有 data encryption standard(des)、triple-strength des(3des)、rivest cipher 2 (rc2)和 rivest cipher 4(rc4)。因為對稱演算法效率相對較高,因此 ssl 會話中的敏感資料都用通過金鑰演算法加密。

非對稱演算法(asymmetric cryptography):就是 key 的組成是公鑰私鑰對 (key-pair),公鑰傳遞給對方私鑰自己保留。公鑰私鑰演算法是互逆的,乙個用來加密,另乙個可以解密。常用的演算法有 rivest shamir adleman(rsa)、diffie-hellman(dh)。非對稱演算法計算量大比較慢,因此僅適用於少量資料加密,如對金鑰加密,而不適合大量資料的通訊加密。

公鑰證書(public key certificate):公鑰證書類似數字護照,由受信機構頒發。受信組織的公鑰證書就是 certificate authority(ca)。多證書可以連線成證書串,第乙個是傳送人,下乙個是給其頒發證書實體,往上到根證書是世界範圍受信組織,包括 verisign, entrust, 和 gte cybertrust。公鑰證書讓非對稱演算法的公鑰傳遞更安全,可以避免身份偽造,比如 c 建立了公鑰私鑰,對並冒充 a 將公鑰傳遞給 b,這樣 c 與 b 之間進行的通訊會讓 b 誤認是 a 與 b 之間通訊。

加密雜湊功能(cryptographic hash functions):加密雜湊功能與 checksum 功能相似。不同之處在於,checksum 用來偵測意外的資料變化而前者用來偵測故意的資料篡改。資料被雜湊後產生一小串位元字串,微小的資料改變將導致雜湊串的變化。傳送加密資料時,ssl 會使用加密雜湊功能來確保資料一致性,用來阻止第三方破壞通訊資料完整性。ssl 常用的雜湊演算法有 message digest 5(md5)和 secure hash algorithm(sha)。

訊息認證碼(message authentication code):訊息認證碼與加密雜湊功能相似,除了它需要基於金鑰。金鑰資訊與加密雜湊功能產生的資料結合就是雜湊訊息認證碼(hmac)。如果 a 要確保給 b 發的訊息不被 c 篡改,他要按如下步驟做 --a 首先要計算出乙個 hmac 值,將其新增到原始訊息後面。用 a 與 b 之間通訊的金鑰加密訊息體,然後傳送給 b。b 收到訊息後用金鑰解密,然後重新計算出乙個 hmac,來判斷訊息是否在傳輸中被篡改。ssl 用 hmac 來保證資料傳輸的安全。

數字簽名(digital signature):乙個訊息的加密雜湊被建立後,雜湊值用傳送者的私鑰加密,加密的結果就是叫做數字簽名。

SSL TLS 協議初識

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

SSL TLS協議簡介

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

SSL TLS協議概覽

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