日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
HTTPS-TLS1.3為何性能和安全性更高?

2008 年 8 月 TLS v1.2 發(fā)布,時(shí)隔 10 年,TLS v1.3 于 2018 年 8 月發(fā)布,在性能優(yōu)化和安全性上做了很大改變,同時(shí)為了避免新協(xié)議帶來(lái)的升級(jí)沖突,TLS v1.3 也做了兼容性處理,通過增加擴(kuò)展協(xié)議來(lái)支持舊版本的客戶端和服務(wù)器。

安全性

TLS v1.2 支持的加密套件很多,在兼容老版本上做的很全,里面有些加密強(qiáng)度很弱和一些存在安全漏洞的算法很可能會(huì)被攻擊者利用,為業(yè)務(wù)帶來(lái)潛在的安全隱患。TLS v1.3 移除了這些不安全的加密算法,簡(jiǎn)化了加密套件,對(duì)于服務(wù)端握手過程中也減少了一些選擇。

  • 移除 MD5、SHA1 密碼散列函數(shù)的支持,推薦使用 SHA2(例如,SHA-256)。
  • 移除 RSA 及所有靜態(tài)密鑰(密鑰協(xié)商不具有前向安全特性)。
  • 溢出 RC4 流密碼、DES 對(duì)稱加密算法。
  • 密鑰協(xié)商時(shí)的橢圓曲線算法增加 https://www.wanweibaike.net/wiki-X25519 支持。
  • 支持帶 Poly1305消息驗(yàn)證碼 的 ChaCha20 流加密算法,流加密也是一種對(duì)稱加密算法。
  • 移除了 CBC 分組模式,TLS v1.3 對(duì)稱加密僅支持 AES GCM、AES CCM、ChaCha20**-**Poly1305 三種模式。
  • 服務(wù)端 “Server Hello” 之后的消息都會(huì)加密傳輸,因此常規(guī)抓包分析就會(huì)有疑問為什么看不到證書信息。

性能優(yōu)化

性能優(yōu)化一個(gè)顯著的變化是簡(jiǎn)化了 TLS 握手階段,由 TLS v1.2 的 2-RTT 縮短為 1-RTT,同時(shí)在第一次建立鏈接后 TLS v1.3 還引入了 0-RTT 概念。

來(lái)源 https://www.a10networks.com/wp-content/uploads/differences-between-tls-1.2-and-tls-1.3-full-handshake.png

密鑰協(xié)商在 TLS v1.2 中需要客戶端/服務(wù)端雙方交換隨機(jī)數(shù)和服務(wù)器發(fā)送完證書后,雙方各自發(fā)送 “Clent/Server Key Exchange” 消息交換密鑰協(xié)商所需參數(shù)信息。在安全性上,TLS v1.3 移除了很多不安全算法,簡(jiǎn)化了密碼套件,現(xiàn)在已移除了 “Clent/Server Key Exchange” 消息,在客戶端發(fā)送 “Client Hello” 消息時(shí)在擴(kuò)展協(xié)議里攜帶支持的橢圓曲線名稱、臨時(shí)公鑰、簽名信息。服務(wù)器收到消息后,在 “Server Hello” 消息中告訴客戶端選擇的密鑰協(xié)商參數(shù),由此可少了一次消息往返(1-RTT)。

 
 
 
  1.    Client                                           Server 
  2.  
  3. Key  ^ ClientHello 
  4. Exch | + key_share* 
  5.      | + signature_algorithms* 
  6.      | + psk_key_exchange_modes* 
  7.      v + pre_shared_key*       --------> 
  8.                                                   ServerHello  ^ Key 
  9.                                                  + key_share*  | Exch 
  10.                                             + pre_shared_key*  v 
  11.                                         {EncryptedExtensions}  ^  Server 
  12.                                         {CertificateRequest*}  v  Params 
  13.                                                {Certificate*}  ^ 
  14.                                          {CertificateVerify*}  | Auth 
  15.                                                    {Finished}  v 
  16.                                <--------  [Application Data*] 
  17.      ^ {Certificate*} 
  18. Auth | {CertificateVerify*} 
  19.      v {Finished}              --------> 
  20.        [Application Data]      <------->  [Application Data] 
  21.                                                  
  22.                        The basic full TLS handshake 

當(dāng)訪問之前訪問過的站點(diǎn)時(shí),客戶端可以通過利用先前會(huì)話中的 預(yù)共享密鑰 (PSK) 將第一條消息上的數(shù)據(jù)發(fā)送到服務(wù)器,實(shí)現(xiàn) “零往返時(shí)間(0-RTT)”。

 
 
 
  1. Client                                               Server 
  2.  
  3. ClientHello 
  4. + early_data 
  5. + key_share* 
  6. + psk_key_exchange_modes 
  7. + pre_shared_key 
  8. (Application Data*)     --------> 
  9.                                                 ServerHello 
  10.                                            + pre_shared_key 
  11.                                                + key_share* 
  12.                                       {EncryptedExtensions} 
  13.                                               + early_data* 
  14.                                                  {Finished} 
  15.                         <--------       [Application Data*] 
  16. (EndOfEarlyData) 
  17. {Finished}              --------> 
  18. [Application Data]      <------->        [Application Data] 
  19.  
  20.               Message Flow for a 0-RTT Handshake 

TLS v1.3 抓包分析

以一次客戶端/服務(wù)端完整的 TLS 握手為例,通過抓包分析看下 TLS v1.3 的握手過程。下圖是抓取的 www.zhihu.com 網(wǎng)站數(shù)據(jù)報(bào)文,且對(duì)報(bào)文做了解密處理,否則 “Change Cipher Spec” 報(bào)文后的數(shù)據(jù)都已經(jīng)被加密是分析不了的。抓包請(qǐng)參考 “網(wǎng)絡(luò)協(xié)議那些事兒 - 如何抓包并破解 HTTPS 加密數(shù)據(jù)?”。

image.png

TLS v1.3 握手過程如下圖所示:

tls-1-3-full-handshake.jpg

Client Hello

握手開始客戶端告訴服務(wù)端自己的 Random、Session ID、加密套件等。

除此之外,TLS v1.3 需要關(guān)注下 “擴(kuò)展協(xié)議”,TLS v1.3 通過擴(kuò)展協(xié)議做到了 “向前兼容“,客戶端請(qǐng)求的時(shí)候告訴服務(wù)器它支持的協(xié)議、及一些其它擴(kuò)展協(xié)議參數(shù),如果老版本不識(shí)別就忽略。

下面看幾個(gè)主要的擴(kuò)展協(xié)議:

  • supported_versions:客戶端支持的 TLS 版本,供服務(wù)器收到后選擇。
  • supported_groups:支持的橢圓曲線名稱
  • key_share:橢圓曲線名稱和對(duì)應(yīng)的臨時(shí)公鑰信息。
  • signature_algorithms:簽名
 
 
 
  1. Transport Layer Security 
  2.     TLSv1.3 Record Layer: Handshake Protocol: Client Hello 
  3.         Version: TLS 1.0 (0x0301) 
  4.         Handshake Protocol: Client Hello 
  5.             Handshake Type: Client Hello (1) 
  6.             Version: TLS 1.2 (0x0303) 
  7.             Random: 77f485a55b836cbaf4328ea270082cdf35fd8132aa7487eae19997c8939a292a 
  8.             Session ID: 8d4609d9f0785880eb9443eff3867a63c23fb2e23fdf80d225c1a5a25a900eee 
  9.             Cipher Suites (16 suites) 
  10.                 Cipher Suite: Reserved (GREASE) (0x1a1a) 
  11.                 Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301) 
  12.                 Cipher Suite: TLS_AES_256_GCM_SHA384 (0x1302) 
  13.                 Cipher Suite: TLS_CHACHA20_POLY1305_SHA256 (0x1303) 
  14.             Extension: signature_algorithms (len=18) 
  15.             Extension: supported_groups (len=10) 
  16.                 Supported Groups (4 groups) 
  17.                     Supported Group: Reserved (GREASE) (0xcaca) 
  18.                     Supported Group: x25519 (0x001d) 
  19.                     Supported Group: secp256r1 (0x0017) 
  20.                     Supported Group: secp384r1 (0x0018) 
  21.             Extension: key_share (len=43) 
  22.                 Type: key_share (51) 
  23.                 Key Share extension 
  24.                     Client Key Share Length: 41 
  25.                     Key Share Entry: Group: Reserved (GREASE), Key Exchange length: 1 
  26.                     Key Share Entry: Group: x25519, Key Exchange length: 32 
  27.                       Group: x25519 (29) 
  28.                       Key Exchange Length: 32 
  29.                       Key Exchange: 51afc57ca38df354f6d4389629e222ca2654d88f2800cc84f8cb74eefd473f4b 
  30.             Extension: supported_versions (len=11) 
  31.                 Type: supported_versions (43) 
  32.                 Supported Versions length: 10 
  33.                 Supported Version: TLS 1.3 (0x0304) 
  34.                 Supported Version: TLS 1.2 (0x0303) 

Server Hello

服務(wù)端收到客戶端請(qǐng)求后,返回選定的密碼套件、Server Random、選定的橢圓曲線名稱及對(duì)應(yīng)的公鑰(Server Params)、支持的 TLS 版本。

這次的密碼套件看著短了很多 TLS_AES_256_GCM_SHA384,其中用于協(xié)商密鑰的參數(shù)是放在 key_share 這個(gè)擴(kuò)展協(xié)議里的。

 
 
 
  1. TLSv1.3 Record Layer: Handshake Protocol: Server Hello 
  2.     Content Type: Handshake (22) 
  3.     Handshake Protocol: Server Hello 
  4.         Handshake Type: Server Hello (2) 
  5.         Version: TLS 1.2 (0x0303) 
  6.         Random: 1f354a11aea2109ba22e26d663a70bddd78a87a79fed85be2d03d5fc9deb59a5 
  7.         Session ID: 8d4609d9f0785880eb9443eff3867a63c23fb2e23fdf80d225c1a5a25a900eee 
  8.         Cipher Suite: TLS_AES_256_GCM_SHA384 (0x1302) 
  9.         Compression Method: null (0) 
  10.         Extensions Length: 46 
  11.         Extension: supported_versions (len=2) 
  12.             Supported Version: TLS 1.3 (0x0304) 
  13.         Extension: key_share (len=36) 
  14.             Type: key_share (51) 
  15.             Key Share extension 
  16.                 Key Share Entry: Group: x25519, Key Exchange length: 32 
  17.                     Group: x25519 (29) 
  18.                     Key Exchange: ac1e7f0dd5a4ee40fd088a8c00113178bafb2df59e0d6fc74ce77452732bc44d 

服務(wù)端此時(shí)拿到了 Client Random、Client Params、Server Random、Server Params 四個(gè)參數(shù),可優(yōu)先計(jì)算出預(yù)主密鑰。在 TLS v1.2 中是經(jīng)歷完第一次消息往返之后,客戶端優(yōu)先發(fā)起請(qǐng)求。

在計(jì)算出用于對(duì)稱加密的會(huì)話密鑰后,服務(wù)端發(fā)出 Change Cipher Spec 消息并切換到加密模式,之后的所有消息(證書、證書驗(yàn)證)傳輸都會(huì)加密處理,也減少了握手期間的明文傳遞。

Certificate、Certificate Verify、Finished

除了 Certificate 外,TLS v1.3 還多了個(gè) “Certificate Verify” 消息,使用服務(wù)器私鑰對(duì)握手信息做了一個(gè)簽名,強(qiáng)化了安全措施。

 
 
 
  1. Transport Layer Security 
  2.     TLSv1.3 Record Layer: Handshake Protocol: Certificate 
  3.     TLSv1.3 Record Layer: Handshake Protocol: Certificate Verify 
  4.         Handshake Protocol: Certificate Verify 
  5.             Signature Algorithm: rsa_pss_rsae_sha256 (0x0804) 
  6.                 Signature Hash Algorithm Hash: Unknown (8) 
  7.                 Signature Hash Algorithm Signature: Unknown (4) 
  8.             Signature length: 256 
  9.             Signature: 03208990ec0d4bde4af8e2356ae7e86a045137afa5262ec7c82d55e95ba23b6eb5876ebb… 
  10.     TLSv1.3 Record Layer: Handshake Protocol: Finished 
  11.         Handshake Protocol: Finished 
  12.             Verify Data 

客戶端切換加密模式

客戶端獲取到 Client Random、Client Params、Server Random、Server Params 四個(gè)參數(shù)計(jì)算出最終會(huì)話密鑰后,也會(huì)發(fā)起 “Certificate Verify”、“Finished” 消息,當(dāng)客戶端和服務(wù)端都發(fā)完 “Finished” 消息后握手也就完成了,接下來(lái)就可安全的傳輸數(shù)據(jù)了。

image.png


當(dāng)前名稱:HTTPS-TLS1.3為何性能和安全性更高?
標(biāo)題URL:http://www.dlmjj.cn/article/djedsjo.html