Netflix 專注于提供最好的流媒體體驗(yàn)。我們希望可以立即開(kāi)始回放(playback),并且在任何網(wǎng)絡(luò)環(huán)境中都不會(huì)意外停止。我們還致力于在不犧牲任
Netflix 專注于提供最好的流媒體體驗(yàn)。我們希望可以立即開(kāi)始回放(playback),并且在任何網(wǎng)絡(luò)環(huán)境中都不會(huì)意外停止。我們還致力于在不犧牲任何回放體驗(yàn)的情況下保護(hù)用戶隱私和服務(wù)安全。為實(shí)現(xiàn)這一目標(biāo),我們正使用 ABR(自適性串流)來(lái)實(shí)現(xiàn)更好的播放體驗(yàn)。同時(shí),我們還使用 DRM(數(shù)字版權(quán)管理)來(lái)保護(hù)我們的服務(wù),用 TLS(傳輸層安全)來(lái)保護(hù)客戶隱私并創(chuàng)建一個(gè)更安全的流媒體體驗(yàn)。
在諸如電視、機(jī)頂盒等消費(fèi)類電子設(shè)備上,Netflix 最近才在流媒體業(yè)務(wù)上使用 TLS 1.2。現(xiàn)在,為獲得更安全、更流暢的體驗(yàn),我們已經(jīng)支持 TLS 1.3。
TLS 是什么?
要實(shí)現(xiàn)雙方間的安全通信,就要有一個(gè)安全通道。該通道需要具有以下三個(gè)特性。
身份驗(yàn)證:驗(yàn)證通信雙方的身份。
保密性:通過(guò)通道發(fā)送的數(shù)據(jù)僅對(duì)端點(diǎn)可見(jiàn)。
完整性:通過(guò)通道發(fā)送的數(shù)據(jù)如果被攻擊者修改可以檢測(cè)到。
TLS 協(xié)議旨在通過(guò)提供實(shí)現(xiàn)上述特性的工具和方法,來(lái)提供兩個(gè)對(duì)等點(diǎn)之間的安全通道。
TLS 1.3
TLS 1.3 是傳輸層安全協(xié)議(Transport Layer Security)的最新版本。與前一個(gè)版本相比,它更簡(jiǎn)單、更安全、更高效。
Perfect Forward Secrecy對(duì) Netflix 而言,我們認(rèn)為非常重要的一點(diǎn)是提供 PFS (Perfect Forward Secrecy)。
PFS 是密鑰交換算法的一個(gè)特性,即使服務(wù)器的私鑰被破壞,它也可以確保會(huì)話密鑰不被破壞。通過(guò)為每個(gè)會(huì)話生成新的密鑰,PFS 可以保護(hù)過(guò)去的會(huì)話不受未來(lái)密鑰泄露的影響。
TLS 1.2 支持具備 PFS 特性的密鑰交換算法,但是它也允許不支持 PFS 的密鑰交換算法。即使在 TLS 1.2 的前一個(gè)版本中,Netflix 也總是會(huì)選擇一個(gè)提供 PFS 的密鑰交換算法,比如 ECDHE(Elliptic Curve Diffie Hellman Ephemeral)。不過(guò),TLS 1.3 刪除了所有不提供 PFS 的密鑰交換算法(如靜態(tài) RSA),進(jìn)一步強(qiáng)化了這一概念。
認(rèn)證加密
對(duì)于加密,TLS 1.3 刪除了所有弱密碼,只使用帶有關(guān)聯(lián)數(shù)據(jù)(AEAD)的認(rèn)證加密。這保證了數(shù)據(jù)的保密性、完整性和真實(shí)性。我們使用 AES Galois/Counter 模式,因?yàn)樗瑫r(shí)還提供良好的性能和高吞吐量。
安全握手
雖然上述更改很重要,但 TLS 1.3 中最重要的變化可能是重新設(shè)計(jì)了握手協(xié)議。
TLS 1.2 的握手并不是為了保護(hù)整個(gè)握手過(guò)程的完整性而設(shè)計(jì)的。它只保護(hù) cipher suite negotiation 后的握手部分,這就增加了降級(jí)攻擊的可能性,讓攻擊者能強(qiáng)制使用不安全的 cipher suites。
使用 TLS 1.3,服務(wù)器會(huì)對(duì)整個(gè)握手過(guò)程(包括 cipher suite negotiation)進(jìn)行簽名,從而防止攻擊者降低 cipher suite 的級(jí)別。
同樣,在 TLS 1.2 中,擴(kuò)展在 ServerHello 中是明文發(fā)送的?,F(xiàn)在,在 TLS 1.3 中,甚至連擴(kuò)展都加密了,ServerHello 后的所有握手消息都加密了。
###減少握手TLS 1.2 支持許多密鑰交換算法、cipher suites 和數(shù)字簽名,包括易受攻擊的數(shù)字簽名。因此,它執(zhí)行一次握手需要更多的消息和兩次網(wǎng)絡(luò)往返。
相比之下,TLS 1.3 中的握手現(xiàn)在只需要一次往返,它簡(jiǎn)化了設(shè)計(jì),去掉了所有易受攻擊的算法。
此外,它還有一個(gè)針對(duì)重新握手的新特性,稱為 0-RTT 或 TLS 早期數(shù)據(jù)。這讓?xiě)?yīng)用程序可以在初始握手消息中包含應(yīng)用程序數(shù)據(jù),而不必等到握手完成。
在 Netflix,我們通過(guò)高效地恢復(fù) TLS 會(huì)話并謹(jǐn)慎地將 0-RTT 用于流數(shù)據(jù),來(lái)減少播放延遲。
A/B 測(cè)試結(jié)果
基于對(duì) TLS 1.3 的協(xié)議組合分析,我們確信它會(huì)給我們帶來(lái)更好的安全性,但是,我們不知道它在流媒體環(huán)境下的效果如何。
由于 TLS 1.3 的性能特性是支持重新握手的 0-RTT 模式,所以我們假設(shè) TLS 1.3 將減少延遲。我們不需要再等待握手完成,相反,我們可以更早地發(fā)送媒體數(shù)據(jù) HTTP 請(qǐng)求,并接收媒體數(shù)據(jù)的 HTTP 響應(yīng)。
為了解 TLS 1.3 在實(shí)際應(yīng)用時(shí)的性能,我們做了一個(gè)實(shí)驗(yàn):
用戶帳戶:每個(gè)組 50 萬(wàn)個(gè)帳戶
設(shè)備類型:中端設(shè)備(Quad ARM core @ 1.7GHz)
對(duì)照組:TLS 1.2
實(shí)驗(yàn)組:TLS 1.3
播放延遲
播放延遲是指需要多少時(shí)間才開(kāi)始播放。以下是在實(shí)驗(yàn)中測(cè)得的播放延遲數(shù)據(jù)。結(jié)果表明,在較慢或擁塞的網(wǎng)絡(luò)中(即分位數(shù)大于 0.75),TLS 1.3 的增益最大,并且在所有的網(wǎng)絡(luò)條件下都有所改善。
下面是實(shí)驗(yàn)所用的中端設(shè)備在實(shí)際應(yīng)用中的時(shí)序平均播放延遲圖。從中可以看出,使用 TLS 1.3 播放開(kāi)始得更早。
Media Rebuffer(媒體重新緩沖)
在 Netflix,我們將媒體重新緩沖定義為非網(wǎng)絡(luò)起點(diǎn)的重新緩沖。其發(fā)生通常是由于 CPU 的負(fù)載過(guò)高導(dǎo)致設(shè)備處理媒體數(shù)據(jù)的速度不夠快。與對(duì)照組使用的 TLS 1.2 相比,使用 TLS 1.3 的實(shí)驗(yàn)組在媒體重新緩沖方面提高了大約 7.4%。
這個(gè)結(jié)果表明,使用 TLS 1.3 和 0-RTT 更高效,可以減少 CPU 負(fù)載。
小 結(jié)
此時(shí),互聯(lián)網(wǎng)正經(jīng)歷著比平時(shí)更高的流量和擁堵。我們相信,即使節(jié)省少量的數(shù)據(jù)和網(wǎng)絡(luò)往返也很有意義,如果它還能提供更安全、更高效的流媒體體驗(yàn),那就更好了。
因此,我們已經(jīng)開(kāi)始在比較新的消費(fèi)類電子設(shè)備上部署 TLS 1.3,希望不久的將來(lái)可以部署到更多的設(shè)備上。
關(guān)鍵詞: Netflix