SSL TLS 互動說明

2021-09-02 00:13:00 字數 3223 閱讀 7660

安全傳輸層協議(tls)用於在兩個通訊應用程式之間提供保密性和資料完整性,是ssl的後續版本。

該協議由兩層組成: tls 記錄協議(tls record)和 tls 握手協議(tls handshake)。

record協議:包括對訊息的分段、壓縮、訊息認證和完整性保護、加密等 。

handshake協議:包括協商安全引數和密碼套件、伺服器身份認證(客戶端身份認證可選)、金鑰交換等。

主要用於解決:

流程簡要說明:

具體可以參見:

1、2:tls執行在tcp基礎之上,需要乙個完整的來回互動(rtt),完成tcp 三次握手「 。

3:tcp連線建立後,客戶端傳送clienthello,包括:

(1)客戶端支援的ssl的最高版本號,如tls1.2版。

(2)客戶端支援的加密套件列表,如rsa公鑰加密。

(3)確定的會話id(用於恢復會話使用,server端會儲存關於session id的對應的通訊秘鑰,當匹配的時候,會使用快取的對稱秘鑰)

(4)客戶端所支援的壓縮演算法列表

(5)乙個用於生成對話秘鑰的32位隨機數

4:伺服器傳送serverhello,包含:

(1)服務端選擇的ssl的版本(選擇方式為選擇客戶端和服務端最高版本中的較低的那乙個)

(2)服務端選擇的加密套件,如rsa公鑰加密。

(3)會話id(用於恢復會話使用,server端會儲存關於session id的對應的通訊秘鑰,當匹配的時候,會使用快取的對稱秘鑰)

(4)客戶端選擇的壓縮演算法

(5)乙個用於生成對話秘鑰的32位隨機數

5:雙方協商好乙個共同的tls版本和加密演算法,客戶端使用伺服器提供的證書,生成新的對稱金鑰,並用伺服器的公鑰進行加密,通知伺服器切換到加密通訊流程。

以上,除了對稱金鑰是伺服器端的公鑰加密,其他都是明文。

6:伺服器用自己的私鑰解密客戶端發過來的對稱金鑰,通過驗證mac檢查訊息的完整性,並返回給客戶端乙個加密的「finished」的訊息。客戶端採用對稱金鑰解密訊息,並驗證mac,如果一切ok,加密隧道就建立好了。

7:使用加密隧道傳輸資料

注: tls1.2 基於rsa加密,tls1.3 基於ecdh,減少了乙個rtt互動過程。

rsa說明 見:rsa原理說明

2.2.1.1、簡要說明:

ecdh是基於ecc(elliptic curve cryptosystems,橢圓曲線密碼體制,參看ecc)的dh( diffie-hellman)金鑰交換演算法。交換雙方可以在不共享任何秘密的情況下協商出乙個金鑰。

ecc是建立在基於橢圓曲線的離散對數問題上的密碼體制,給定橢圓曲線上的乙個點p,乙個整數k,求解q=kp很容易;給定乙個點p、q,知道q=kp,求整數k確是乙個難題。ecdh即建立在此數學難題之上。

2.2.1.2、秘鑰交換過程:

假設金鑰交換雙方為alice、bob,其有共享曲線引數(橢圓曲線e、階n、基點g)。

1.alice生成隨機整數a,計算a=a*g。bob生成隨機整數b,計算b=b*g。

2.alice將a傳遞給bob。a的傳遞可以公開,即攻擊者可以獲取a。由於橢圓曲線的離散對數問題是難題,所以攻擊者不可以通過a、g計算出a。bob將b傳遞給alice。同理,b的傳遞可以公開。

3.bob收到alice傳遞的a,計算q=b*a

4.alice收到bob傳遞的b,計算q『=a*b

alice、bob雙方即得q=b*a=b*(a*g)=(b*a)*g=(a*b)*g=a*(b*g)=a*b=q' (交換律和結合律),即雙方得到一致的金鑰q。

流程簡要說明:

具體可以參見:

1、2:tls執行在tcp基礎之上,需要乙個完整的來回互動(rtt),完成tcp 三次握手「 。

3:tcp連線建立後,客戶端傳送clienthello,包括:

(1)客戶端支援的ssl的最高版本號

(2)客戶端支援的加密套件列表

(3)確定的會話id

(4)客戶端所支援的壓縮演算法列表

其中key_share記錄了a*g,其中g是乙個大家都知道的大數。伺服器拿到a*g,計算得到q=b*a*g(核心思想,實際邏輯要比這複雜),得到對稱秘鑰。

4:伺服器傳送serverhello,包含:

(1)服務端選擇的ssl的版本(選擇方式為選擇客戶端和服務端最高版本中的較低的那乙個)

(2)服務端選擇的密碼套件

(3)會話id

(4)客戶端選擇的壓縮演算法

其中key_share記錄了b*g,客戶端拿到b*g就可以計算得到q=a*b*g(核心思想,實際邏輯要比這複雜),得到對稱秘鑰。

5:客戶端會返回驗證資訊、證書資訊等給伺服器。

6:使用加密隧道傳輸資料

SSL Tls協議互動過程

client hello server hello 協商演算法及證書返回用於客戶端驗證 client key change 利用客戶端和伺服器端的 28位元組隨機數生成主金鑰 利用主金鑰生成 mac加密金鑰,生成資料加密金鑰都是對稱金鑰 change cipher spce 客戶端後面的資料採用對稱...

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 ...