TLS四次握手相關總結
一、為什么要使用TLS/SSL
明文傳播的通信信息存在三大風險:
- 竊聽風險
- 篡改風險
- 冒充風險
SSL/TLS協議是為了解決這三大風險而設計的:
- 所有信息加密傳播,第三方無法竊聽
- 具有校驗機制,一旦被篡改,通信雙方會立即發現
- 配備身份證書,防止被冒充
二、AES256-ECB運行機制
三、TLS/SSL的運行機制
1、客戶端請求(Client Hello)
客戶端向服務端發出加密通信請求消息:Client Hello,提供以下內容:
(1) Version:支持的協議版本,比如TLS 1.2版。
(2) Random:客戶端生成的隨機數,生成"會話密鑰"的第一個參數。
(3) Cipher Suites:支持的加密方法,比如RSA公鑰加密或DIffie-Hellman算法。
(4) Compression Methods:支持的壓縮方法。
2、服務端請求(Server Hello)
服務器收到客戶端請求后,向客戶端發出回應,服務器的回應包含以下內容:
SeverHello
(1) Version:確認使用的加密通信協議版本,比如TLS 1.2版本。如果瀏覽器與服務器支持的版本不一致,服務器關閉加密通信。
(2) Random:一個服務器生成的隨機數,生成"會話密鑰"的第二個參數。
(3) **CiperSuite:確認使用的加密方法,比如RSA公鑰加密或DIffie-Hellman算法。
(4) Compression Methods:使用的壓縮方法。
Other
(1) Certificate:服務器證書。存放CA加密后的服務器公鑰和服務器身份信息。
(2) Server Key Exchange(DIffie-Hellman):發送加密的服務端DH參數給客戶端,后續客戶端與服務端之間通過冪運算(DHE)或點乘運算(ECDHE)算出相同的值,做為生成"會話密鑰"的第三個參數。
(3) Certificate Request:請求客戶端證書。
(4) Server Hello Done:消息發送完畢,等待客戶端消息。
3、客戶端響應
客戶端收到服務器回應以后,首先驗證服務器證書。如果證書不是可信機構頒布、或者證書中的域名與實際域名不一致、或者證書已經過期,就會向訪問者顯示一個警告,由其選擇是否還要繼續通信。
如果證書沒有問題,客戶端就會從證書中取出服務器的公鑰。然后,向服務器發送下面三項信息。
(1) Certificate:客戶端證書。存放CA加密后的服務器客戶端公鑰和服務器客戶端身份信息。
(2) Client Key Exchange(DIffie-Hellman):發送加密的客戶端DH參數服務端,后續客戶端與服務端之間通過冪運算(DHE)或點乘運算(ECDHE)算出相同的值,做為生成"會話密鑰"的第三個參數。
(3) Certificate Verify:私鑰簽名之前所有的握手數據發給服務器驗證,證明這個客戶端證書是自己發的。
(4) Change Cipher Spec:編碼改變通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發送。
(5) Finished:客戶端握手結束通知,表示客戶端的握手階段已經結束。這一項同時也是前面發送的所有內容的hash值,用來供服務器校驗。
4、服務器響應
此時客戶端和服務端都收到了對端發送的DH參數,經過數學運算,兩端會算數相同的pre-master key。根據:
- client random(明文)
- server random(明文)
- pre-master key(未經信道傳輸,而是計算而出的密文)
服務器和客戶端會根據以上三個參數計算生成本次會話所用的"會話密鑰"。
服務端向客戶端最后發送下面信息:
(1)Change Cipher Spec:編碼改變通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發送。
(2)Finished:服務器握手結束通知,表示服務器的握手階段已經結束。這一項同時也是前面發送的所有內容的hash值,用來供客戶端校驗。
上面第一項的隨機數,是整個握手階段出現的第三個隨機數,又稱"pre-master key"。有了它以后,客戶端和服務器就同時有了三個隨機數,接著雙方就用事先商定的加密方法,各自生成本次會話所用的同一把"會話密鑰"。
至此,整個握手階段全部結束。接下來,客戶端與服務器進入加密通信,就完全是使用普通的HTTP協議,只不過用會話密鑰加密內容。
FAQ
TLS加密套件
ADD TTTLSPOLICY
ECDHE-RSA-AES256-GCM-SHA384-1
ECDHE-ECDSA-AES256-GCM-SHA384-1
DHE-RSA-AES256-GCM-SHA384-1
ECDHE-RSA-AES128-GCM-SHA256-1
ECDHE-ECDSA-AES128-GCM-SHA256-1
DHE-RSA-AES128-GCM-SHA256-1
| 冪運算 | 點乘運算 | 非對稱算法 | 分組算法 | 對稱算法 | 散列算法 |
|---|---|---|---|---|---|
| DHE | ECDHE | RSA;ECDSA | DES;AES | ECB;CBC;GCM | MD5;SHA |
| 密鑰交換算法 | 簽名算法 | 加密算法 | 摘要算法 |
|---|---|---|---|
| DHE;ECDHE;RSA | RSA;ECDSA | RSA;ECB;CBC;GCM | MD5; SHA |
DHE 算法
使用一個質數p的整數模n乘法群以及其原根g
服務端與客戶端協定使用 p=23以及base g=5。
服務端選擇一個加密后的整數a=6,計算A = ga mod p并發送給客戶端。
Server Key Exchange:A = 56 mod 23 = 8
客戶端選擇一個加密后的整數b=15,計算B = gb mod p并發送給服務端。
Client Key Exchange:B = 515 mod 23 = 19
服務端計算S1 = Ba mod p
196 mod 23 = 2
客戶端計算S2 = Ab mod p
815 mod 23 = 2
得 S1 == S2 = 2, 即為生成"會話密鑰"的第三個參數

浙公網安備 33010602011771號