簡介TLS 1.3

0x00 前言

最近在閱讀論文,其中閱讀了 WWW2021的一篇文章「TLS 1.3 in Practice: How TLS 1.3 Contributes to the Internet」。在本篇文章中,作者對當下TLS 1.3在實際中的採用率、安全性、性能和實現進行了大規模的測量。下面是對TLS 1.3 的一些優勢與特性的總結。

論文下載地址://yonghwi-kwon.github.io/data/tls_www21.pdf

0x01 什麼是TLS?

TLS代表傳輸層安全性並且是SSL(安全套接字層)的後繼者。TLS提供了Web瀏覽器和伺服器之間的安全通訊。連接本身是安全的,因為使用對稱密碼術對傳輸的數據進行加密。密鑰是為每個連接唯一生成的,並且基於在會話開始時協商的共享機密(也稱為TLS握手)。

0x02 TLS 1.3 &&TLS 1.2

在過去十年中,部署了最新的TLS版本1.3 ,解決了其前身(即TLS 1.2 )的關鍵漏洞,如BEAST和FREAK攻擊。TLS 1.3的標準化工作始於2013年8月,隨著安全性和性能的提高,於2018年8月完成。

安全性提高

  1. 廢除不支援前向安全性的 RSA 和 DH 密鑰交換演算法;
  2. MAC 只使用 AEAD 演算法;
  3. 禁用 RC4 / SHA1 等不安全的演算法;
  4. 加密握手消息;
  5. 兼容中間設備 TLS 1.2;
  6. 加密握手消息。

另外,TLS 1.2容易受到中間人攻擊和降級攻擊(FREAK)。TLS 1.3 彌補了TLS 1.2 的缺陷,使其不易受到攻擊。

降級攻擊(FREAK)原理

image-20210421192808608

主要原因,TLS1.2 握手部分協商使用哪種密碼,並沒有進行加密數字簽名。而 TLS 1.3 對握手資訊進行了加密處理。

Phase 1:在客戶端發出的Hello消息中,它會請求標準的加密,中間人攻擊者會改變請求內容,轉而請求「40 bit 密鑰的出口級的加密演算法」(弱加密演算法)

Phase 2:服務端會回復一個出口級的密鑰,由於OpenSSL/Secure傳輸的bug,客戶端會接受這個存在漏洞的密鑰

Phase 3:攻擊者進行爆破40bit密鑰,以便能夠偽造mac,進行消息修改。詳見TLS 1.2 握手過程.

Phase 4:服務端進行響應消息,中間攻擊者可以查看.

所有的流量都使用弱加密演算法,並將經過中間人,中間人可以隨意查看與修改。

Export 加密演算法

Export是一種老舊的弱加密演算法,是被美國法律標示為可出口的加密演算法,其限制對稱加密最大強度位數為40位,限制密鑰交換強度為最大512位。這是一個現今被強制丟棄的演算法。

性能提高

TLS和加密連接在網路性能方面總是會增加一些開銷。HTTP / 2確實可以解決此問題,但是TLS 1.3通過諸如TLS錯誤啟動和零往返時間(0-RTT)之類的功能,甚至可以進一步提高加密連接的速度。

1-RTT模式

簡而言之,對於TLS 1.2,需要兩次往返來完成TLS握手。在1.3版本中,它只需要一個往返, 這反過來又將加密延遲減少了一半。這有助於使那些加密的連接比以前更靈活。

image-20210421192437167

image-20210421192322160

具體來說,在TLS 1.2的第二次往返中,客戶機Hello和伺服器Hello消息與密鑰交換消息相結合。

0-RTT恢復

TLS1.3通過引入early_data擴展0-RTT恢復與先前訪問的網站的會話 ,對於恢復的會話,在發送應用程式數據之前沒有握手過程。它允許客戶端將應用程式數據與第一個握手消息一起發送。相比之下,TLS 1.2在發送應用程式數據之前需要一個RTT。

在TLS 1.2中,有兩種恢復連接的方法:會話ID和會話票據。TLS 1.3把這倆結合在一起形成了新模式,稱為PSK(預共享密鑰)恢復。具體是,在建立會話之後,客戶端和伺服器可以派生一個共享的密鑰,叫做「恢復主密鑰」。可以將其存儲在伺服器上(會話ID的形式),也可以使用僅伺服器已知的密鑰進行加密(會話票據形式)。此會話票據將發送給客戶端,並在恢復連接時進行交換。

對於恢復連接,雙方共享恢復的主密鑰,不需要進行密鑰交換。客戶端下一次連接到伺服器時,它可以從上一個會話中獲取密鑰,並使用它來加密應用程式數據和會話票據一起發送到伺服器。具體如圖:

image-20210421212235290

0-RTT恢復不具有前向安全性,且消息可能被用作重放攻擊,所以安全性較低,需慎重使用。

0-RTT 重放攻擊原理

這裡借用cloudflare的原理圖

image-20210421201446262

如果攻擊者捕獲了發送到伺服器的0-RTT數據包,則他們可以重放該數據包,並且伺服器可能會將其視為有效。這可能會產生負面後果。

0x03 參考文獻

TLS 1.3 in Practice: How TLS 1.3 Contributes to the Internet

詳細了解RFC 8446(又名TLS 1.3)

TLS Session Resumption: Full-speed and Secure

「歷史遺留」漏洞:淺析新型SSL/TLS漏洞FREAK

HTTPS 溫故知新(三) —— 直觀感受 TLS 握手流程(上)

TLS 詳解握手流程