前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Widevine及其工作原理

Google Widevine及其工作原理

作者头像
LiveVideoStack
发布2022-03-25 11:10:40
2.9K0
发布2022-03-25 11:10:40
举报
文章被收录于专栏:音视频技术音视频技术

 点击上方“LiveVideoStack”关注我们

翻译、编辑:Alex 技术审校:刘姗 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。

▲扫描图中二维码或点击阅读原文▲

了解音视频技术大会更多信息

Widevine DRM

Easy-Tech

#018#

Google Widevine是一种常用的DRM解决方案,支持Android操作系统、多种智能电视、浏览器等。Widevine还支持MPEG-DASH、HLS、MSS以及CENC和CMAF,这种广泛的支持使它成为视频传输中非常受欢迎的DRM解决方案。

在本文中,我们将深入了解谷歌的Widevine DRM解决方案——它是一种流行的DRM解决方案,在Web和移动生态系统中获得了广泛支持。

01

Widevine DRM

Widevine DRM是谷歌旗下的DRM解决方案(谷歌于2010年收购了Widevine)。

通过之前文章对DRM的了解,我们已经知道,大部分商业DRM解决方案有着严格的版权管理和内容加密解密系统。但它们无法处理用户身份验证,谷歌的Widevine也不例外。

在本文中,让我们一起来了解Widevine的组成部分以及它的工作原理。

02

Widevine的历史和版本

我们先来了解Widevine的历史及其支持。Widevine一共有两个版本,分别是Classic和Modular。

Widevine Classic

Widevine Classic仅在传统设备中支持,并且要求媒体被打包成专有的.wvm格式。它曾支持旧版本的Android系统(3.1~5.1)、传统智能电视、Google TV等等,现在已不再使用。

Widevine Modular

Widevine Modular是Widevine的当前版本,支持MPEG-DASH、HLS和MSS协议,同时支持CMAF、CENC和HTML5标准(如EME和MSE)。

03

Widevine DRM的构成

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:

代码语言:javascript
复制
<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)中。它使用加密的许可证信息来解密媒体,并将媒体发送到视频堆栈(一般情况下,解密后的视频会被立即解码以及渲染)。

04

Widevine DRM工作原理

这一部分,我们将了解Widevine的工作原理。

第1步:当用户按下“播放”时,第1步便开始了。应用从CDN中下载mpd。在解析mpd之后,便很容易确定该视频是否使用Widevine加密视频。浏览器从内容中提取初始化数据(initData)并将其作为事件发送到播放器。

注意:我们假设这时用户身份已经得到验证。由于Widevine没有该功能,所以由应用来处理。

第2步:播放器无法解密内容,需要专业的解密软件的帮助。所以,它将初始化信息发送给CDM(Content Decryption Module )。还记得CDM吗?我们曾在之前文章中详细讨论过。

第3步:CDM接收到来自播放器的初始化信息,并创建“许可证请求”,然后将其发送回给播放器。

第4步:播放器接收到许可证请求后,将该请求通过代理发送给Widevine许可证服务器。许可证请求也已被加密,所以不会在传输过程中被访问或者破解。

第5步:许可证服务器接收到播放器发送的请求,然后:

  • 解密请求,提取初始化信息,并通过初始化信息找到其数据库中的许可证。
  • 找到许可证后,将它加密,然后发送给播放器。
  • 加密信息包括解密内容的密钥以及许可证信息(过期时间等)。

第6步:播放器接收到许可证服务器发送的许可证,将它传递给CDM(通过EME)。信息既已被加密,播放器和其他软件都无法读取或者滥用信息。

第7步:因为CDM不在设备的可信层中,它必须将信息传递给位于可信层中的OEMCrypto Module。解密实际发生在OEMCrypto Module中。在一些实现中,解码也在OEMCrypto Module中。由浏览器对容器进行实际解析。

第8步:一旦内容被解复用、解密或者解码,便会以视频切片的形式发送给屏幕,并不会存储在设备上。

下面是一张来自Widevine的流程图,说明了我们刚刚所讨论的内容。

05

Widevine安全级别——L1、L2和L3

有趣的是,Widevine还拥有三个安全级别——L1、L2和L3。

在我们学习安全级别之前,让我们先来了解TEE(可信执行环境,Trusted Execution Environment)。维基百科这样定义TEE:

主处理器的安全区域,能够确保加载代码和数据的私密性和完整性。

TEE对于DRM而言至关重要,因为它极大提升了安全性,并为确保解密密钥和解密视频不被盗取和泄露发挥了关键作用。

理解这些之后,让我们来看下Widevine安全级别 L1、L2和 L3的区别。

安全级别L1

  • L1是Widevine中最高的安全级别,提供硬件级别的解密(比软件安全)。
  • 内容解密、媒体解码以及渲染在TEE中完成。
  • 如果你想从服务商那里获得高清内容视频服务,你的设备需要经过认证达到L1标准。

安全级别L2

  • 在L2,只有媒体解密在TEE中执行。
  • 解密视频被发送给应用,进行解码和渲染。

安全级别L3

  • L3最不安全,用于没有TEE的低端硬件。
  • 加密在软件-CDM(像是浏览器中的那些)中进行。
  • 在L3安全级别的设备中,内容供应商阻止加密的高清视频播放。

06

商业规则

下方的数据片段说明可以插入Widevine的商业规则和许可证规则。它非常明确地解释了特定资产的租赁、播放、续订和许可期限。内容供应商可以使用它来创建复杂的规则以满足他们的商业模式。

代码语言:javascript
复制
{   "payload":"<license challenge>",   "content_id":"<content id>",   "provider":"<provider>",   "allowed_track_types":"<types>",   "content_key_specs":[      {         "track_type":"<track type 1>"      },      {         "track_type":"<track type 2>"      },      "..."   ],   "policy_overrides":{      "can_play":"<can play>",      "can persist":"<can persist>",      "can_renew":"<can renew>",      "rental_duration_seconds":"<rental duration>",      "playback_duration_seconds":"<playback duration>",      "license_duration_seconds":"<license duration>",      "renewal_recovery_duration_seconds":"<renewal recovery duration>",      "renewal_server_url":"<renewal server url>",      "renewal_delay_seconds":"<renewal delay>",      "renewal_retry_interval_seconds":"<renewal retry interval>",      "renew_with_usage":"<renew with usage>"   }}

哪里支持Widevine?

Widevine Modular(或Widevine)在多个平台上获得了支持,比如:

  • Android (4.4+)
  • Android TV
  • Amazon Fire TV
  • Chromecast
  • Smart TV
  • Chrome、Firefox、Edge等浏览器

如果硬件厂商想要支持Widevine,他们可以联系谷歌并签订合同以获得需要的支持(如CDM、测试向量等)。

07

结   语

我希望现在你已经很好地理解了谷歌Widevine DRM的工作原理。网上有很多信息(源代码、播放器和SDK)可以帮助你更加深入地了解Widevine。

我们下次再见,保重!

致谢:

本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。

原文链接:

https://ottverse.com/widevine-drm-hUow-does-it-work/


喜欢我们的内容就点个“在看”吧!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据迁移
云数据迁移(Cloud Data Migration,CDM)是腾讯云提供的 TB~PB 级别的数据迁移上云服务。本服务为您提供安全可靠的离线迁移专用设备,满足本地数据中心进行大规模数据迁移上云的需求,解决本地数据中心通过网络传输时间长、成本高、安全性低的问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档