自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTTPS - TLS 1.3 為何性能和安全性更高?

安全 數(shù)據(jù)安全 通信技術(shù)
TLS v1.2 支持的加密套件很多,在兼容老版本上做的很全,里面有些加密強(qiáng)度很弱和一些存在安全漏洞的算法很可能會被攻擊者利用,為業(yè)務(wù)帶來潛在的安全隱患

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

安全性

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

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

性能優(yōu)化

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

來源 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 移除了很多不安全算法,簡化了密碼套件,現(xiàn)在已移除了 “Clent/Server Key Exchange” 消息,在客戶端發(fā)送 “Client Hello” 消息時在擴(kuò)展協(xié)議里攜帶支持的橢圓曲線名稱、臨時公鑰、簽名信息。服務(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)訪問之前訪問過的站點時,客戶端可以通過利用先前會話中的 預(yù)共享密鑰 (PSK) 將第一條消息上的數(shù)據(jù)發(fā)送到服務(wù)器,實現(xiàn) “零往返時間(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ù)報文,且對報文做了解密處理,否則 “Change Cipher Spec” 報文后的數(shù)據(jù)都已經(jī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é)議做到了 “向前兼容“,客戶端請求的時候告訴服務(wù)器它支持的協(xié)議、及一些其它擴(kuò)展協(xié)議參數(shù),如果老版本不識別就忽略。

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

  • supported_versions:客戶端支持的 TLS 版本,供服務(wù)器收到后選擇。
  • supported_groups:支持的橢圓曲線名稱
  • key_share:橢圓曲線名稱和對應(yīng)的臨時公鑰信息。
  • 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ù)端收到客戶端請求后,返回選定的密碼套件、Server Random、選定的橢圓曲線名稱及對應(yīng)的公鑰(Server Params)、支持的 TLS 版本。

這次的密碼套件看著短了很多 TLS_AES_256_GCM_SHA384,其中用于協(xié)商密鑰的參數(shù)是放在 key_share 這個擴(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ù)端此時拿到了 Client Random、Client Params、Server Random、Server Params 四個參數(shù),可優(yōu)先計算出預(yù)主密鑰。在 TLS v1.2 中是經(jīng)歷完第一次消息往返之后,客戶端優(yōu)先發(fā)起請求。

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

Certificate、Certificate Verify、Finished

除了 Certificate 外,TLS v1.3 還多了個 “Certificate Verify” 消息,使用服務(wù)器私鑰對握手信息做了一個簽名,強(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 四個參數(shù)計算出最終會話密鑰后,也會發(fā)起 “Certificate Verify”、“Finished” 消息,當(dāng)客戶端和服務(wù)端都發(fā)完 “Finished” 消息后握手也就完成了,接下來就可安全的傳輸數(shù)據(jù)了。

image.png

 

責(zé)任編輯:趙寧寧 來源: 編程界
相關(guān)推薦

2013-02-27 16:27:37

2009-08-20 08:43:54

2020-07-23 10:05:00

物聯(lián)網(wǎng)安全醫(yī)療安全物聯(lián)網(wǎng)設(shè)備

2011-06-30 11:04:05

JTS

2015-05-11 10:42:17

混合云性能混合云安全SLA

2014-07-21 09:29:58

中文域名

2023-11-27 08:01:59

2024-02-26 08:33:51

并發(fā)編程活躍性安全性

2009-11-06 09:59:55

2010-12-07 09:51:43

Linux安全性netfilteriptables

2009-11-30 09:41:38

2009-12-04 10:17:47

公共DNS服務(wù)

2011-03-15 15:11:52

2022-02-16 11:56:28

HTTPHTTPS數(shù)據(jù)傳輸

2010-12-27 14:16:42

2024-01-09 16:00:39

2015-06-15 10:48:25

2017-12-29 15:16:28

2023-06-01 15:17:17

2018-07-12 05:17:21

區(qū)塊鏈數(shù)據(jù)中心數(shù)據(jù)安全
點贊
收藏

51CTO技術(shù)棧公眾號