記錄一下 TLS1.3 的加密過程,如何協(xié)商會(huì)話秘鑰
TLS 就是 HTTPS 的那一層加密協(xié)議,前身是SSL,但是現(xiàn)在SSL已經(jīng)淘汰了。之前用wireshark 抓包看,現(xiàn)在的網(wǎng)站多是TLS1.2。
這層協(xié)議的主要流程大概是雙方先通過非對(duì)稱協(xié)商握手,得出一個(gè)對(duì)稱密鑰,然后再通過這個(gè)對(duì)稱密鑰加密進(jìn)行通信。
官方說明文檔:https://www.rfc-editor.org/rfc/rfc8446
(有億點(diǎn)復(fù)雜,麻了,想要知道細(xì)節(jié)的話就去看文檔吧,160頁(yè)的論文)
一. 與 TLS 1.2 的主要區(qū)別
- 對(duì)稱加密算法換成帶有關(guān)聯(lián)數(shù)據(jù)的經(jīng)過身份驗(yàn)證的加密 (AEAD) 算法。可以理解為他將完整性和機(jī)密性結(jié)合了?
- 靜態(tài) RSA 和 Diffie-Hellman 密碼套件已被刪除。所有基于公鑰的密鑰交換機(jī)制現(xiàn)在都提供前向保密。
- 重新設(shè)計(jì)了密鑰派生函數(shù):使用基于HMAC的提取和擴(kuò)展密鑰派生函數(shù) (HKDF) 。
- TLS 1.2 版本協(xié)商機(jī)制已被棄用,TLS1.3和1.2不能兼容。
二. 協(xié)議概述
1.TLS 支持三種基本密鑰交換模式
- (EC)DHE (Diffie-Hellman over either finite fields or elliptic curves)
- PSK-only
- PSK with (EC)DHE
2. 完整 TLS 握手
3. 握手有三個(gè)階段
- Key Exchange(密鑰交換):建立共享密鑰材料并選擇加密參數(shù)。此階段之后的所有內(nèi)容均已加密。
- Server Parameters(服務(wù)器參數(shù)):建立其他握手參數(shù)(客戶端是否認(rèn)證,應(yīng)用層協(xié)議支持等)。
- Authentication(身份驗(yàn)證):驗(yàn)證服務(wù)器(以及可選的客戶端)并提供密鑰確認(rèn)和握手完整性。
由ClientHello 和 ServerHello 協(xié)商的密鑰材料生成最后的共享密鑰。
(EC)DHE and PSK,這兩個(gè)密鑰建立方法,可以單個(gè)使用,也可以同時(shí)。應(yīng)該是由客戶端選擇的,客戶端在ClientHello中添加相應(yīng)的拓展字段。(TLS 1.3 ClientHello 消息總是包含擴(kuò)展(至少是“supported_versions”,否則,它們會(huì)被解釋為TLS 1.2ClientHello 消息)
ClientHello中有
- offered protocol versions:a list of symmetric cipher/HKDF hash pairs.
- Diffie-Hellman key shares (in the “key_share” extension) 或者 pre-shared key labels (in the “pre_shared_key” extension),也可以兩者都有。
三. 密鑰生成
密鑰派生過程使用了為 HKDF [ RFC5869 ] 定義的 HKDF-Extract 和 HKDF-Expand 函數(shù)。
輸入密鑰材料 (IKM),通過 HKDF 生成最終密鑰。
輸入的兩個(gè)參數(shù):
- PSK (a pre-shared key established externally or derived from the
resumption_master_secret value from a previous connection) - (EC)DHE shared secret
四. 密碼套件 CipherSuite
對(duì)稱密碼套件定義了一對(duì) AEAD算法和哈希算法,以與 HKDF 一起使用。
TLS 1.3 有五個(gè)密碼套件:文章來源:http://www.zghlxwxcb.cn/news/detail-429097.html
- TLS_AES_256_GCM_SHA384
- TLS_CHACHA20_POLY1305_SHA256
- TLS_AES_128_GCM_SHA256
- TLS_AES_128_CCM_8_SHA256
- TLS_AES_128_CCM_SHA256
例如:TLS_AES_128_CCM_SHA256
AES-CCM (AES-CTR + CBC-MAC,128-bit) (a AEAD algorithm),
SHA256 is the hash function used in HKDF.文章來源地址http://www.zghlxwxcb.cn/news/detail-429097.html
到了這里,關(guān)于TLS1.3 協(xié)議的加密過程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!