欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

谷歌 Widevine 及其工作原理-03 / Widevine DRM 的组成部分

最编程 2024-03-03 20:48:01
...

Widevine主要由以下几部分构成:

1. CENC、CDM、EME和MSE

我们在《构建DRM系统的重要基石——EME、CDM、AES、CENC和密钥》中已详细介绍了它们,本文就不再赘述了。

2. Widevine许可证服务器

Widevine提供一个许可证服务器,其中包含了安全加密和解密媒体所需的信息。它有两个主要工作:

  • 打包器将媒体打包和加密后,信息被发送到许可证服务器,服务器利用这些信息来识别许可证密钥,并将密钥与电影对应。

  • 在播放期间,许可证服务器负责验证播放器对许可证和加密密钥的请求,从密钥库(数据库)中获取解密密钥,并使用许可证和解密密钥对播放器(客户端)做出响应。打包器、许可证服务器和播放器之间的通信都经过加密并通过 HTTPS 发送。

3. Shaka 打包器

Widevine提供了一个完全开源的MPEG-DASH打包软件——Shaka Packager,它:

  • 将所有的视频文件转换成fMP4格式(这里指的是ABR技术)。

  • 将每个文件分割成同等大小的切片。

  • 使用从Widevine许可证服务器获取的信息,根据CENC加密每个文件。

  • 创建一个mpd文件或者清单文件,其中包括描述DASH打包媒体的所有信息。你也可以插入CENC pssh(Protection System Specific Header)识别使用的DRM系统。

下面是一个使用Widevine DRM的mpd:

<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="eb676abb-cb34-5e96-bbcf-616630f1a3da" xmlns:cenc="urn:mpeg:cenc:2013"/>
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cenc:pssh xmlns:cenc="urn:mpeg:cenc:2013">AAAAW3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADsIARIQ62dqu8s0Xpa7z2FmMPGj2hoNd2lkZXZpbmVfdGVzdCIQZmtqM2xqYVNkZmFsa3IzaioCSEQyAA==</cenc:pssh>
</ContentProtection>

显然上面使用的是CENC(通用加密)。你还可以看到pssh值和密钥ID(KID)。当播放器向许可证服务器请求正确的电影许可证时,这些唯一信息十分重要。

4. OEMCrypto Module

OEMCrypto Module使用来自播放器(以及许可证服务器)的信息解密内容。OEMCrypto Module位于与设备硬件绑定的可信层(Trusted Layer)中。它使用加密的许可证信息来解密媒体,并将媒体发送到视频堆栈(一般情况下,解密后的视频会被立即解码以及渲染)。