成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

安全性

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

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

性能優化

性能優化一個顯著的變化是簡化了 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

 

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

當訪問之前訪問過的站點時,客戶端可以通過利用先前會話中的 預共享密鑰 (PSK) 將第一條消息上的數據發送到服務器,實現 “零往返時間(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 抓包分析

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

image.png

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

tls-1-3-full-handshake.jpg

Client Hello

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

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

下面看幾個主要的擴展協議:

  • supported_versions:客戶端支持的 TLS 版本,供服務器收到后選擇。
  • supported_groups:支持的橢圓曲線名稱
  • key_share:橢圓曲線名稱和對應的臨時公鑰信息。
  • 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

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

這次的密碼套件看著短了很多 TLS_AES_256_GCM_SHA384,其中用于協商密鑰的參數是放在 key_share 這個擴展協議里的。

  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 

服務端此時拿到了 Client Random、Client Params、Server Random、Server Params 四個參數,可優先計算出預主密鑰。在 TLS v1.2 中是經歷完第一次消息往返之后,客戶端優先發起請求。

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

Certificate、Certificate Verify、Finished

除了 Certificate 外,TLS v1.3 還多了個 “Certificate Verify” 消息,使用服務器私鑰對握手信息做了一個簽名,強化了安全措施。

  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 四個參數計算出最終會話密鑰后,也會發起 “Certificate Verify”、“Finished” 消息,當客戶端和服務端都發完 “Finished” 消息后握手也就完成了,接下來就可安全的傳輸數據了。

image.png

 

責任編輯:趙寧寧 來源: 編程界
相關推薦

2013-02-27 16:27:37

2009-08-20 08:43:54

2020-07-23 10:05:00

物聯網安全醫療安全物聯網設備

2015-05-11 10:42:17

混合云性能混合云安全SLA

2011-06-30 11:04:05

JTS

2014-07-21 09:29:58

中文域名

2023-11-27 08:01:59

2010-12-07 09:51:43

Linux安全性netfilteriptables

2009-11-30 09:41:38

2024-02-26 08:33:51

并發編程活躍性安全性

2009-11-06 09:59:55

2009-12-04 10:17:47

公共DNS服務

2011-03-15 15:11:52

2015-06-15 10:48:25

2010-12-27 14:16:42

2024-01-09 16:00:39

2017-12-29 15:16:28

2022-02-16 11:56:28

HTTPHTTPS數據傳輸

2023-06-01 15:17:17

2018-07-12 05:17:21

區塊鏈數據中心數據安全
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品视频在线观看一区二区三区 | 天天插天天舔 | 91精品国产91久久综合桃花 | a级在线免费 | 欧美一级毛片免费观看 | 粉嫩一区二区三区四区公司1 | 免费三级黄 | 国产成人久久av免费高清密臂 | 一区二区三区精品视频 | 一区二区免费在线观看 | 亚洲精品一区中文字幕乱码 | 国产成人精品一区二三区在线观看 | а_天堂中文最新版地址 | 99久久免费精品国产免费高清 | 一区二区不卡视频 | 国产91丝袜在线播放 | 天天操网| 国产一区二区三区免费观看视频 | 久久久精品网 | 九九九久久国产免费 | 国产精品一区二区三级 | 四虎av电影 | 国产精品视频专区 | 午夜一区二区三区视频 | 成人国产精品久久久 | 欧美福利视频 | 日韩在线看片 | 亚洲一区二区三区免费在线观看 | 日本精品久久 | 国产亚洲精品久久久久动 | 成人在线中文字幕 | 日本在线看片 | 精品久久久久一区二区国产 | 国产一级片在线播放 | 国产成人精品一区二区三区网站观看 | 国产一级电影在线 | 色噜噜亚洲男人的天堂 | 99久久精品国产毛片 | 国产免费福利在线 | 亚洲成人精品一区二区 | 久久婷婷国产麻豆91 |