首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Netflix如何在网络不好时提供更安全、更流畅的流媒体体验?

本文最初发布于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用于流数据,来减少播放延迟。

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的增益最大,并且在所有的网络条件下都有所改善。

下面是实验所用的中端设备在实际应用中的时序平均播放延迟图。从中可以看出,使用TLS 1.3播放开始得更早。

Media Rebuffer(媒体重新缓冲)

在Netflix,我们将媒体重新缓冲定义为非网络起点的重新缓冲。其发生通常是由于CPU的负载过高导致设备处理媒体数据的速度不够快。与对照组使用的TLS 1.2相比,使用TLS 1.3的实验组在媒体重新缓冲方面提高了大约7.4%。

这个结果表明,使用TLS 1.3和0-RTT更高效,可以减少CPU负载。

小结

从安全性分析来看,我们相信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

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/pEtk8Z6ktMMvipKP51Gr
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券