写点什么

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

  • 2020-05-07
  • 本文字数:2101 字

    阅读完需:约 7 分钟

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


2020-05-07 16:161904
用户头像

发布了 728 篇内容, 共 464.5 次阅读, 收获喜欢 1541 次。

关注

评论

发布
暂无评论
发现更多内容

Kafka之为什么需要消息队列

编程江湖

大数据 kafka

Kyligence + 亚马逊云科技丨实现云上的精细化运营和数字化指挥

Kyligence

Aeron 是如何实现的?—— Ipc Subscription

BUG侦探

共享内存 Aeron Ipc Subscription

【IT运维】公司内网服务器可以远程桌面连接吗?怎么连接?

行云管家

云计算 运维 IT运维 远程运维

JavaScript 中的 .forEach() 和 for...of

devpoint

JavaScript foreach for...of 12月日更

谈谈对微软Dapr的理解

行云创新

微软 服务网格 dapr

网易云信发布两大元宇宙解决方案,打响进军元宇宙第一枪

网易云信

人工智能 音视频 元宇宙

7.《重学JAVA》--运算符

杨鹏Geek

Java 25 周年 28天写作 12月日更

飞桨双十二礼包,上海“拆箱”啦!

百度大脑

人工智能

老电影和图片变清晰的秘密!分辨率提升400%的AI算法

百度大脑

人工智能

尚硅谷Maxwell视频教程发布!

@零度

大数据 Maxwell

主机入侵检测策略之基线检测

网络安全学海

网络安全 信息安全 渗透测试 安全漏洞 暴力猜解

Rust 元宇宙 14 —— 创建角色和同步

Miracle

rust 元宇宙

腾讯音乐iOS开发四次面试记录

iOSer

ios 腾讯 面试题 iOS面试 腾讯音乐

【等保小知识】信息安全等级保护四级系统有哪些?

行云管家

网络安全 等级保护

npm进阶(一) 更换成淘宝镜像源以及 cnpm

No Silver Bullet

npm 12月日更

Python代码阅读(第68篇):指定值出现次数

Felix

Python 编程 列表 阅读代码 Python初学者

十年期货股票行情数据轻松处理——TDengine在同心源基金的应用

TDengine

数据库 tdengine 时序数据库

SpringBoot中如何优雅的使用多线程

编程江湖

JAVA开发 springboot

中科柏诚持续推进数字网络技术,蓄力元宇宙布局

联营汇聚

大厂高频面试题Spring Bean生命周期最详解

Tom弹架构

Java spring 源码

List 去重的 6 种方法

编程江湖

List java 编程

es单机安装及配置其系统服务

elasticsearch

恒源云(GPUSHARE)_【功能更新】实例日志上线,操作一目了然

恒源云

深度学习 算力加速

Go语言学习查缺补漏ing Day5

恒生LIGHT云社区

golang 编程语言

跨越可观测性鸿沟|高手们都在用的“火焰图”是什么

尔达Erda

程序员 微服务 云原生 可观测性 链路追踪

netty系列之:性能为王!创建多路复用http2服务器

程序那些事

Netty 程序那些事 http2 12月日更

南瓜电影 7 天内全面 Serverless 化实践

Serverless Devs

阿里云 ECS 南瓜电影 SAE

常见杀毒软件及其引擎的特点

喀拉峻

网络安全 病毒扫描

如何搭建批流一体大数据分析架构?

Kyligence

元宇宙浪潮之下,数字身份至关重要

CECBC

Netflix如何在网络不好时提供更安全、更流畅的流媒体体验?_安全_Netflix技术博客_InfoQ精选文章