VOD 深度剖析 第 8 部分:DRM 内容保护 —— 为什么 Netflix 无法被录屏

深入讲解 Widevine、FairPlay、PlayReady。涵盖 CENC/CBCS 统一加密、许可证流程、L1/L2/L3 安全级别、HDCP、SPEKE 集成,以及针对短视频的轻量级保护方案。

zhuermu··22 分钟
vodstreamingdrmwidevinefairplayencryption

本文是 VOD 流媒体深度剖析 系列的第 8 部分。


为什么视频需要”加密 + 授权”

当你每月支付 15 美元订阅 Netflix 时,Netflix 必须保证:

  • 只有你能观看(不能拷贝给朋友)
  • 只在订阅期内能看(取消订阅即失效)
  • 只在授权设备上能看(不能导出到非法播放器)
  • 4K 只在安全设备上能看(防止高画质内容泄露)

这就是 DRM(数字版权管理,Digital Rights Management)。其核心思路是:

  1. 用内容加密密钥(CEK)加密视频
  2. 密钥分发需要严格校验(你是谁?是否订阅?设备是否安全?)
  3. 密钥永远不离开硬件安全区 —— 对应用层代码完全不可见

三样都叫”加密”的东西 —— 只有一样才是 DRM

名称是 DRM 吗?强度
HTTPS / TLS否 —— 仅传输层加密可用代理工具截获
HLS AES-128否 —— 轻量级加密密钥 URL 泄露即完蛋
CENC + Widevine/FairPlay/PlayReady是 —— 真正的 DRM

HLS AES-128(轻量级)

#EXT-X-KEY:METHOD=AES-128,URI="https://api.example.com/key?ep=123",IV=0x1234...
#EXTINF:6.000,
seg_00001.ts

分片使用 AES-128-CBC 加密,16 字节密钥从一个 URL 获取。方案简单、支持广泛,但在 Web 上密钥在 JavaScript 中是可见的。用来防范随手盗链已经足够,但不足以保护优质内容。


三大 DRM 系统

DRM厂商平台
WidevineGoogleAndroid、ChromeOS、Chrome、Firefox、Edge、大多数智能电视
FairPlay StreamingAppleiOS、iPadOS、macOS(Safari)、tvOS
PlayReadyMicrosoftWindows、Xbox、Edge、部分智能电视

问题来了:同一部电影,在 iPhone 和 Android 上是否需要分别加密两次?

不需要。 这正是 CENC 要解决的问题。


CENC:一次加密,处处播放

CENC(通用加密,Common Encryption),即 ISO/IEC 23001-7,定义了一种三大 DRM 系统都能解密的统一加密格式。

模式算法DRM 支持
cencAES-128 CTRWidevine、PlayReady(经典)
cbcsAES-128 CBC + PatternFairPlay(必需)、Widevine(现代)、PlayReady(现代)

使用 cbcs 模式:只需一次加密 → Widevine + FairPlay + PlayReady 全部通吃。这就是 CMAF + CBCS 的黄金组合。


完整的 DRM 流程

┌─────────────┐                         ┌──────────────┐
│  Packager   │── KID + CEK ──────────► │   Key Store  │
│ (encrypts)  │                         │   (KMS)      │
└─────────────┘                         └──────────────┘
       │                                      ▲
       │ Encrypted segments                   │
       ▼                                      │
┌─────────────┐                         ┌──────────────┐
│     CDN     │                         │  License     │
│             │                         │  Server      │
└──┬──────────┘                         └──────────────┘
   │                                          ▲
   │ ① fetch manifest                         │
   │ ② fetch encrypted segment                │
   ▼                                          │ ④ license request
┌──────────────────┐                          │
│    Player        │                          │
│  ┌──────────┐    │                          │
│  │   CDM    │────┼───── ③ challenge ───────┘
│  │ (secure) │◄───┼────── ⑤ license + CEK
│  │          │    │
│  │ Inside   │    │
│  │ TEE      │    │
│  └──────────┘    │
└──────────────────┘

关键概念

  • KID(Key ID,密钥 ID):标识哪个密钥加密了哪个分片
  • CEK(Content Encryption Key,内容加密密钥):16 字节的 AES 密钥
  • CDM(Content Decryption Module,内容解密模块):播放器内部的 DRM 组件,运行在硬件安全区(TEE)内
  • License(许可证):服务器返回的响应,包含加密后的 CEK + 使用规则

流程如下:

  1. Packager 从 Key Store 获取 KID + CEK,加密分片,并将 DRM 元数据写入 manifest
  2. 播放器加载 manifest,检测到 DRM,初始化 CDM
  3. CDM 生成一个 challenge(挑战)(包含设备指纹、公钥)
  4. 播放器将 challenge 发送给 License Server
  5. License Server 校验:是否已订阅?设备是否足够安全?
  6. 校验通过 → 返回许可证(用 CDM 公钥加密后的 CEK)
  7. CDM 在 TEE 内解密许可证 → 解密分片 → 将画面帧直接送往 GPU

CEK 从不进入应用内存,也不进入 JavaScript。 这是 DRM 的根本安全保障。


Widevine L1 / L2 / L3

级别解密解码安全性最高画质
L1TEE(硬件)TEE最高4K / HDR
L2TEE软件1080p
L3软件软件最低480p / 720p

为什么 4K 只限 L1? 一路 Netflix 4K 流意味着数百万美元的授权价值。如果 L3 设备也能解码 4K,攻击者就能通过虚拟机和逆向工程把流提取出来。

Netflix 和 Disney+ 会在 License Server 中强制要求 securityLevel >= L1,之后才会下发 4K 密钥。

FairPlay 没有级别之分 —— 所有 Apple 设备都使用 Secure Enclave,实际上等同于 L1。

PlayReady 分为 SL150(≈L3)、SL2000(≈L2)、SL3000(≈L1)。


HDCP:连你的 HDMI 线也要被检查

HDCP(高带宽数字内容保护,High-bandwidth Digital Content Protection) 保护设备与显示器之间的 HDMI/DisplayPort 链路。

当你用 HDMI 把 iPad 连接到电视并播放 Netflix 时:

  • HDMI 线只支持 HDCP 1.4 → Netflix 可能限制在 1080p
  • 线缆和显示器都支持 HDCP 2.2 → 允许 4K

License Server 通常会对 4K 内容强制要求 requireHdcp: "2.2"


SPEKE:Packager ↔ 密钥服务器协议

SPEKE(安全打包器与编码器密钥交换,Secure Packager and Encoder Key Exchange) 是 AWS 为 Packager 与密钥服务器通信制定的标准接口。

使用 SPEKE 时:配置一个指向 EZDRM/PallyCon 的 SPEKE 端点的 URL → Packager 自动请求 KID + CEK → 生成启用 DRM 的 manifest。

这是 DRM 集成的行业标准做法。


离线播放(下载观看)

下载同样要走 DRM:

  • 客户端将加密分片下载到本地存储
  • License Server 下发一个持久化许可证(“离线有效 48 小时”)
  • CDM 将许可证存放在硬件安全区中
  • 离线播放使用存储的许可证

“我能把 SD 卡里下载好的文件拷到另一部手机上吗?” —— 不能。没有许可证,加密分片毫无用处,而许可证是绑定到设备上的。


短视频的轻量级保护

短视频平台面临的经济模型截然不同:

  • 单集价值很低(几分钱到几美元)
  • 海量用户基数 = 巨大的许可证请求量
  • “先看后付”模式(任何阻力都会导致用户流失)

对短视频而言,完整 DRM 往往是杀鸡用牛刀。常见的分级方案如下:

L0 (free preview):    Clear HLS + Signed URL
                      (first few episodes)

L1 (standard paid):   HLS AES-128 + dynamic IV + Signed URL
                      + client SDK key derivation + anti-sniffing
                      (majority of paid content)

L2 (premium):         Full Multi-DRM (CBCS + Widevine + FairPlay)
                      (exclusive blockbusters)

补充性保护手段:密钥轮换(每隔 N 秒更换密钥)、防录屏(Android 上的 FLAG_SECURE、iOS 上的 UIScreen.isCaptured)、反调试/越狱检测,以及动态水印(叠加 user_id + 时间戳以便追溯泄露源头)。


选型指南

What is your content?

├── Hollywood movies / premium exclusive long-form
│     → Full Multi-DRM (CBCS + Widevine L1 + FairPlay + PlayReady SL3000)
│     → Enforce HDCP 2.2 + securityLevel=L1 for 4K

├── Standard VOD (B-movies, documentaries, courses)
│     → Widevine L3 + FairPlay + PlayReady (relax hardware requirements)

├── Paid short-form / mid-value content
│     → HLS AES-128 + Signed URL + anti-screen-recording

├── Subscription self-produced content
│     → Per rights-holder requirements (usually DRM + watermark)

└── Free / UGC
      → No encryption, Signed URL anti-hotlinking only

要点回顾

  1. DRM = 内容加密 + 严格的密钥分发 + 硬件级解密。
  2. HLS AES-128 并不是真正的 DRM —— 只是轻量级加密。
  3. 三大 DRM 系统:Widevine(Google)、FairPlay(Apple)、PlayReady(Microsoft)。
  4. CENC(CBCS 模式) 让同一个 CMAF 文件适配全部三种 DRM 系统。
  5. Widevine L1 = 4K 权限;L3 最高只到 720p。
  6. HDCP 2.2 是 4K 外接显示输出的必要条件。
  7. 短视频通常使用轻量级加密 + 防录屏,而非完整 DRM。
  8. 生产环境使用 SPEKE 来对接托管型 DRM 服务(EZDRM、PallyCon)。

上一篇: 第 7 部分:CDN 分发

下一篇: 第 9 部分:视频播放器

参考资料

  1. Widevine DRM — Google
  2. FairPlay Streaming — Apple Developer
  3. Secure Packager and Encoder Key Exchange (SPEKE) — AWS Documentation