Categories
程式開發

Netflix如何在網絡不好時提供更安全、更流暢的流媒體體驗?


Netflix如何在網絡不好時提供更安全、更流暢的流媒體體驗? 1

本文最初發佈於Netflix技術博客,由InfoQ中文站翻譯並分享。

Netflix專注於提供最好的流媒體體驗。我們希望可以立即開始回放(playback),並且在任何網絡環境中都不會意外停止。我們還致力於在不犧牲任何回放體驗的情況下保護用戶隱私和服務安全。為實現這一目標,我們正使用ABR(自適性串流)來實現更好的播放體驗。同時,我們還使用DRM(數字版權管理)來保護我們的服務,用TLS(傳輸層安全)來保護客戶隱私並創建一個更安全的流媒體體驗。

在諸如電視、機頂盒等消費類電子設備上,Netflix最近才在流媒體業務上使用TLS 1.2。現在,為獲得更安全、更流暢的體驗,我們已經支持TLS 1.3。

TLS是什麼?

要實現雙方間的安全通信,就要有一個安全通道。該通道需要具有以下三個特性。

  • 身份驗證:驗證通信雙方的身份。
  • 保密性:通過通道發送的數據僅對端點可見。
  • 完整性:通過通道發送的數據如果被攻擊者修改可以檢測到。

TLS協議旨在通過提供實現上述特性的工具和方法,來提供兩個對等點之間的安全通道。

TLS 1.3

TLS 1.3是傳輸層安全協議(Transport Layer Security)的最新版本。與前一個版本相比,它更簡單、更安全、更高效。

Perfect Forward Secrecy

對Netflix而言,我們認為非常重要的一點是提供PFS (Perfect Forward Secrecy)。

PFS是密鑰交換算法的一個特性,即使服務器的私鑰被破壞,它也可以確保會話密鑰不被破壞。通過為每個會話生成新的密鑰,PFS可以保護過去的會話不受未來密鑰洩露的影響。

TLS 1.2支持具備PFS特性的密鑰交換算法,但是它也允許不支持PFS的密鑰交換算法。即使在TLS 1.2的前一個版本中,Netflix也總是會選擇一個提供PFS的密鑰交換算法,比如ECDHE(Elliptic Curve Diffie Hellman Ephemeral)。不過,TLS 1.3刪除了所有不提供PFS的密鑰交換算法(如靜態RSA),進一步強化了這一概念。

認證加密

對於加密,TLS 1.3刪除了所有弱密碼,只使用帶有關聯數據(AEAD)的認證加密。這保證了數據的保密性、完整性和真實性。我們使用AES Galois/Counter模式,因為它同時還提供良好的性能和高吞吐量。

安全握手

雖然上述更改很重要,但TLS 1.3中最重要的變化可能是重新設計了握手協議。

TLS 1.2的握手並不是為了保護整個握手過程的完整性而設計的。它只保護cipher suite negotiation後的握手部分,這就增加了降級攻擊的可能性,讓攻擊者能強制使用不安全的cipher suites。

使用TLS 1.3,服務器會對整個握手過程(包括cipher suite negotiation)進行簽名,從而防止攻擊者降低cipher suite的級別。

同樣,在TLS 1.2中,擴展在ServerHello中是明文發送的。現在,在TLS 1.3中,甚至連擴展都加密了,ServerHello後的所有握手消息都加密了。

減少握手

TLS 1.2支持許多密鑰交換算法、cipher suites 和數字簽名,包括易受攻擊的數字簽名。因此,它執行一次握手需要更多的消息和兩次網絡往返。

相比之下,TLS 1.3中的握手現在只需要一次往返,它簡化了設計,去掉了所有易受攻擊的算法。

此外,它還有一個針對重新握手的新特性,稱為0-RTT或TLS早期數據。這讓應用程序可以在初始握手消息中包含應用程序數據,而不必等到握手完成。

在Netflix,我們通過高效地恢復TLS會話並謹慎地將0-RTT用於流數據,來減少播放延遲。

Netflix如何在網絡不好時提供更安全、更流暢的流媒體體驗? 2

A/B測試結果

基於對TLS 1.3的協議組合分析,我們確信它會給我們帶來更好的安全性,但是,我們不知道它在流媒體環境下的效果如何。

由於TLS 1.3的性能特性是支持重新握手的0-RTT模式,所以我們假設TLS 1.3將減少延遲。我們不需要再等待握手完成,相反,我們可以更早地發送媒體數據HTTP請求,並接收媒體數據的HTTP響應。

為了解TLS 1.3在實際應用時的性能,我們做了一個實驗:

  • 用戶帳戶:每個組50萬個帳戶
  • 設備類型:中端設備(Quad ARM core @ 1.7GHz)
  • 對照組:TLS 1.2
  • 實驗組:TLS 1.3

播放延遲

播放延遲是指需要多少時間才開始播放。以下是在實驗中測得的播放延遲數據。結果表明,在較慢或擁塞的網絡中(即分位數大於0.75),TLS 1.3的增益最大,並且在所有的網絡條件下都有所改善。

Netflix如何在網絡不好時提供更安全、更流暢的流媒體體驗? 3

下面是實驗所用的中端設備在實際應用中的時序平均播放延遲圖。從中可以看出,使用TLS 1.3播放開始得更早。

Netflix如何在網絡不好時提供更安全、更流暢的流媒體體驗? 4

Media Rebuffer(媒體重新緩衝)

在Netflix,我們將媒體重新緩衝定義為非網絡起點的重新緩衝。其發生通常是由於CPU的負載過高導致設備處理媒體數據的速度不夠快。與對照組使用的TLS 1.2相比,使用TLS 1.3的實驗組在媒體重新緩衝方面提高了大約7.4%。

這個結果表明,使用TLS 1.3和0-RTT更高效,可以減少CPU負載。

Netflix如何在網絡不好時提供更安全、更流暢的流媒體體驗? 5

小結

從安全性分析來看,我們相信TLS 1.3的通信安全性比TLS 1.2高。從現場測試來看,我們相信TLS 1.3能為我們提供更好的流媒體體驗。

此時,互聯網正經歷著比平時更高的流量和擁堵。我們相信,即使節省少量的數據和網絡往返也很有意義,如果它還能提供更安全、更高效的流媒體體驗,那就更好了。

因此,我們已經開始在比較新的消費類電子設備上部署TLS 1.3,希望不久的將來可以部署到更多的設備上。

英文原文:

How Netflix brings safer and faster streaming experience to the living room on crowded networks using TLS 1.3