中国的网络视频行业高速增长,收入已突破千亿元。然而网络盗版猖獗,造成的损失已超过正版收入的一半,版权保护的重要性与日俱增。
现有方案的问题
解决盗版问题的一般思路是对视频加密,仅允许授权用户解密播放视频。常见的视频加密方案有以下两类:
- 自研加解密方案:业务自行研发的非通用加解密方案(如调换部分帧的位置)。
- 通用 AES 加解密方案:使用 Dash 的 ClearKey 或 HLS 的普通 AES 加密。
这两种类型方案都有各自的问题与缺陷。
方案类型 | 问题与缺陷 | |
---|---|---|
自研加解密方案 |
|
|
通用 AES 加解密方案 |
|
商业级 DRM
商业级 DRM 是一类利用 License 实现高安全级别的版权保护系统。终端播放视频时,必须先获取 License(License 中包含了解密密钥、密钥有效期及终端信息等),然后使用 License 中的密钥解密播放视频。
使用商业级 DRM 保护视频,有以下优势:
- 视频内容加密:采用 CENC 对内容加密,播放需要密钥解密。
- 密钥不可见:密钥本身被加密,仅 OS 中的解密模块能读取密钥。
- License 终端绑定:License 仅对单个终端有效,其他终端无法使用。
- License 支持过期:支持指定 License 的有效期。
- 解码过程安全:支持硬件级(TEE)解密和解码。
- 知名版权方认证:好莱坞、迪士尼认证。
目前主流的 DRM 系统有 Widevine 和 FairPlay 两种:
DRM 类型 | 适用文件格式 | 适用播放环境 |
---|---|---|
Widevine | Dash | Andriod 播放器、Chrome 和 Firefox 浏览器 |
FairPlay | HLS | iOS 播放器以及 Safari 浏览器 |
- App 后台 上传视频(服务端 API 或控制台),同时指定上传后执行带有 视频加密 任务的任务流。
- 视频处理模块执行视频加密任务,加密后的内容写入到 COS 存储,通知 App 后台视频加密任务完成。
- App 终端向 App 后台请求要播放的视频,后台对终端用户进行鉴权(如是否付费),鉴权通过后派发视频对应的 Token 作为授权播放的凭证。
- 播放器下载从点播 CDN 下载加密的视频内容。
- 播放器向点播请求 License,点播对 Token 鉴权,通过后派发 License,播放器使用 License 解密播放视频内容。
用户鉴权与播放授权
App 后台获取到视频上传和加密完成的通知后,即可在 App 的视频列表中加入该视频。当 App 终端请求播放这个视频时,后台需要对终端做如下校验:
- 播放请求是否来自于 App 的合法用户。
- 该用户是否已付费观看该视频。
校验通过后,App 后台对用户进行授权,即向终端返回 Token(计算方式参见 Token 生成)。终端播放对应 FileId 的视频时,超级播放器 SDK 使用 Token 获取到解密视频需要的 License,完成对视频的解密播放。
播放 DRM 加密的视频
数字版权管理解决方案(Digital Rights Management,DRM),通过技术手段加密内容,用来控制带版权作品的使用、更改和分发,保护带版权内容的安全。适用于音乐、电影等带版权的多媒体内容。
Android 播放器可以播放两种方式加密的输出:
- 基于 Widevine 加密的 Dash 格式
- 基于 SimpleAES 加密的 HLS 格式
关于 DRM 的更多详情,您可以参考 如何对内容做版权保护 方案文档。
Android中的DRM软件架构:
Widevine是google推出的一种DRM,支持从google指定的服务器上,下载经google加密的版权文件,如视频、应用等。
Widevine DRM解决方案结合以下行业标准,提供强大的多平台内容保护:
基于HTTP的动态自适应流技术(DASH)
DASH采用标准HTTP 协议,厂商可在现有网络基础设施(网络服务器、内容分发网络、防火墙等)上方便的实施DASH技术。
DASH为不同DRM系统构建了一个简单有效的系统,以共享密钥,密钥标识符,加密算法,参数和信令,以及将专有数据存储在保护系统特定报头(PSSH)中的位置,但将DRM具体实现留给了系统自身。它为ECM中的每个DRM存储此信息 – 这使得每个DRM能够将其自己的健壮性规则,安全性实施和密钥交换系统应用于相同内容文件的加密内容。通用加密解决方案CENC允许内容提供商每个容器/编解码器加密和打包一次内容,并将其与各种密钥系统,CDM和客户端一起使用:即任何支持公共加密的CDM。例如,使用Playready打包的视频可以使用Widevine CDM在浏览器中播放,从Widevine许可服务器获取密钥。
加密媒体扩展(Encrypted Media Extensions,EME)是 W3C 提出的一种规范,用于在 Web 浏览器和 DRM 代理软件之间提供通信通道。EME提供了一个API,使Web应用程序能够与内容保护系统进行交互,以允许播放加密的音频和视频。EME旨在使相同的应用程序和加密文件能够在任何浏览器中使用,而不管底层保护系统如何。前者是通过标准化的API和流程实现的,而后者是通过公共加密的概念实现的。
媒体源扩展(Media Source Extensions, MSE)是一项 W3C 规范,扩展了HTMLMediaElement,支持HTML5视频和音频,允许 JavaScript 生成媒体流以支持回放。这可以用于自适应流(adaptive streaming)及随时间变化的视频直播流(live streaming)等应用场景。
内容解密模块(Content Decryption Module, CDM)
CENC 声明了一套标准的加密和密钥映射方法,它可用于在多个 DRM 系统上解密相同的内容,只需要提供相同的密钥即可。DRM 提供商(例如,EME 可用于 Edge 平台上的 Playready 和 Chrome 平台上的 Widewine)拥有一套通用的 API,这些 API 能够从 DRM 授权模块读取视频内容加密密钥用于解密。在浏览器内部,基于视频内容的元信息,EME 可以通过识别它使用了哪个 DRM 系统加密,并调用相应的解密模块(Content Decryption Module, CDM)解密 CENC 加密过的内容。解密模块 CDM 则会去处理内容授权相关的工作,获得密钥并解密视频内容。CENC 没有规定授权的发放、授权的格式、授权的存储、以及使用规则和权限的映射关系等细节,这些细节的处理都由 DRM 提供商负责。
Widevine Classic是Google专有的DRM方案,用于直播,点播和下载内容。 它要求内容以Google自己的特定格式打包,Widevine Classic已被Widevine Modular取代。与Widevine Classic一起使用的视频内容格式为:Widevine(.WVM)。Widevine Modular支持MPEG-DASH,CMAF,HLS和Smooth Streaming ABR视频格式,以及公共加密(CENC)等开放标准。
Widevine 测试APK:WidevineSamplePlayer.apk 测试Widevine Classic,ExoPlayerDemo.apk 测试Widevine Modular
Widevine安全级别:
安全级别 | 安全Bootloader | Widevine密钥配置 | 安全硬件或ARM Trust Zone | Widevine密钥箱和视频密钥处理 | 硬件视频路径 |
1级 | 是 | 工厂提供Widevine Keys | 是 | 密钥永远不会暴露给主机CPU | 硬件保护的视频路径 |
2级 | 是 | 工厂提供Widevine Keys | 是 | 密钥永远不会暴露给主机CPU | 硬件保护的视频路径 |
3级 | 是* | 现场提供Widevine Keys | 没有 | 清除暴露给主机CPU的密钥 | 清晰的视频流传送到视频解码器 |
手机厂商可以通过Google的授权以获取Widevine DRM对应的软件包从而将Widevine DRM集成到自己的产品中。
Widevine DRM代码结构大体可分为三部分:
1、Android中的基本框架。包括WVMExtractor等。这部分代码在AOSP(Android 开放源代码项目)中可以看到。主要功能实现封装在Widevine专利代码包。
2、Widevine专利代码包。需要得到Google授权才能得到。该包提供了很多Widevine专用库用于完成Widevine DRM权限检查、解密。它还提供了一些简单App用于测试。
3、手机厂商自身的安全认证。Widevine支持在硬件层与厂商的安全机制绑定,在boot等底层中加入自主研发的安全机制,只有通过可信赖的bootloader才能使用具有正常权限的手机软件,并支持Widevine机制。
Android系统中的Widevine Crypto插件:
安全加密技术概念拓展:
ARM TrustZone® 技术是系统范围的安全方法,此系统方法意味着可以保护安全内存、加密块、键盘和屏幕等外设,从而可确保它们免遭软件攻击。处理器架构上,TrustZone将每个物理核虚拟为两个核,一个非安全核(Non-secure Core, NS Core)安全核(Secure Core)。两个虚拟的核以基于时间片的方式运行,根据需要实时占用物理核,并通过Monitor Mode在安全世界和非安全世界之间切换,Trustzone下的Monitor Mode实现了同一CPU上两个操作系统间的切换。逻辑上,安全世界中,安全系统的OS提供统一的服务,针对不同的安全需求加载不同的安全应用TA(Trusted Application)。
系统上电复位后,先从安全世界开始执行。安全世界会对非安全世界的bootloader进行验证,确保非安全世界执行的代码经过授权而没有被篡改过。然后非安全世界的bootloader会加载非安全世界的OS,完成整个系统的启动。在非安全系统的bootloader加载OS时,仍然需要安全世界对OS的代码进行验证,确保没有被篡改。基于安全考虑,各家TrustZone都实行闭源。
来源: 互联网搜集整理