曾几何时,我一直猎奇,像爱奇艺、腾讯视频、优酷这些视频渠道是如何操控版权的,就比方,如何避免用户下载后发布到其他途径,最近触摸了DRM技能,瞬间就懂了。

DRM介绍

DRM(Digital Rights Management),即数字版权办理,是在数字内容买卖进程中,对知识产权进行维护的技能、东西和处理进程。它的意图是避免数字内容被未经授权的用户仿制、修正和分发,以维护知识产权一切者的权益。在日常生活中,咱们常常与 DRM 技能打交道。比方,电影上映前,咱们不能在视频网站上观看电影,只能去电影院。这是内容供给(发行)商对自己的数字内容进行办理的一种结果。

DRM工作原理

先贴一张图,然后咱们再做简略的阐明

聊聊Android中的DRM东西-Widevine

上图中,RAM想要给SHYAM传递小纸条,但由于距离较远,中间需求三个人进行传达,为了避免这三个人偷看小纸条内容,他们找来了HARI,HARI手上有一本密码本,每次RAM传递小纸条之前先找HARI拿到密码本,然后依据密码本的规则对小纸条内容进行加密,然后再将加密后的小纸条传递给SHYAM,这样,即使中间三个人偷看了小纸条,由于没有密码本,所以也看不懂纸条的内容。SHYAM收到小纸条后,再向HARI获取密码本,然后对小纸条内容进行解密,这样SHYAM就能看到原始内容了。

现在,咱们把RAM看成是视频发行商,SHYAM看成是观众,HARI看成是版权办理商,就有了以下这种关系图

聊聊Android中的DRM东西-Widevine

从上图中能够看出,咱们想要向认证用户安全地发送一部电影。需求:

  • 向DRM厂商的服务器恳求密码本
  • 然后运用密码本加密视频
  • 将电影视频发送给用户
  • 用户向DRM厂商的服务器恳求密码本解密视频
  • 现在用户就能够观看电影了

这下视频版权办理是不是就一目了然了。但以上只是最初DRM的设计思想,现实中却无法正常运行,由于还没有处理多种分辨率的问题,这就需求对视频进行切片(ABR)和打包。

视频切片和打包

ABR: 经过运用ABR技能,电影能够被编码成不同的码率-分辨率组合(也称为码率阶梯)并被分割成小的视频块或许切片。每个视频切片包含几秒钟视频,能够被独自解码。

打包是指将电影分割成小的视频切片,并运用清单(manifest)或许播映列表对其进行描绘。当用户想要播映电影的时候,他需求按照播映列表的信息播映。

依据可用带宽,播映器恳求特定码率版别的视频切片,CDN响应后回来被恳求切片。

聊聊Android中的DRM东西-Widevine

这就完毕了吗?不,这儿边还存在很大的一个问题需求处理,视频的加密问题。

视频加密

前面说,视频发行商在发布视频时,需求向DRM服务商获取密码本,这儿的密码本实际上是一种授权,便是说经过DRM服务商的授权,他才会对你的视频进行版权维护,并不是对视频内容进行加密,真正的视频加密还得涉及到密码学相关的技能,最常用的加密方式是AES,AES归于对称加密,这就涉及到密钥的保存。在DRM中,密钥也保存在DRM服务商手上,跟着视频清单一同发送给视频播映器

聊聊Android中的DRM东西-Widevine

好了,DRM的中心原理大概便是这些,假如想了解更详细的内容,可阅读下面的参考文献。

DRM厂商

上述DRM工作原理图中,有一个很重要的人物便是DRM服务商,现在首要有三大服务商,分别对应自己的DRM技能方案,分别是:

  • Apple FairPlay

  • Google Widevine

  • Microsoft PlayReady

国内爱奇艺最近也自主研发了自己的DRM处理方案:iQIYI DRM-S。而国内的视频渠道简直都是打包了一切的的DRM方案,以针对不同的渠道和体系。以下是爱奇艺的整体DRM处理方案

聊聊Android中的DRM东西-Widevine

Widevine介绍

Widevine仅适用于根据Chromium的操作体系、Android设备以及其他Google相关设备和浏览器。

Widevine的安全等级

  • L1

在L1等级,供给了最高的安全性。内容在设备内进行解密,并运用硬件维护,以避免原始数据泄露。一般用于高质量视频和高分辨率的流媒体。取得L1认证的设备能够播映高质量的内容。像Amazon Prime Video和Netflix等流媒体服务需求L1安全性。假如在未取得认证的设备上观看,无法播映高清或超高清的高质量内容。

  • L2

L2具有较高的安全性,但不像L1那么严厉。即使设备未取得L1认证,依然能够播映内容。一些设备运用软件来维护数据。对于较低分辨率的视频和音乐内容,或许会运用L2。假如想要享受更高质量的内容,主张运用取得L1认证的设备,而不是L2。尽管L2或许不够满足要求,但某些内容依然或许供给高质量的视频。因此,不能一概而论地认为必须运用L1。

  • L3

L3的安全等级最低。首要用于模拟器和一些旧设备等情况,内容维护相对较弱,剖析和仿制相对简单。此外,一些服务如Amazon Prime Video和Netflix也或许运用L3。尽管能够运用L3,但危险较高,不该希望高质量的内容。运用L3时需求谨慎考虑这些要素。

检查Widevine等级

能够运用DRM Info App检查设备的widevine安全等级,该App能够在Google Play上找到,文末贴了App的下载链接。大多数主流制造商的智能手机一般都支撑L1至L3的某一个等级。假如发现您的设备不支撑Widevine,那或许是制造商为了简化流程或许您的智能手机不符合规范。

聊聊Android中的DRM东西-Widevine

假如app打开闪退,阐明设备并不支撑Widevine。

测验Widevine功能

许多流媒体app都运用了Widevine,比方Youku、腾讯视频、IQIYI、YouTube、Netflix等,这儿引荐运用Google的官方播映器ExoPlayer进行测验,文末供给下载链接

聊聊Android中的DRM东西-Widevine

(要点)在Android中集成Widevine

step1:获取Widevine源码

官网下载Widevine源码,注意,AOSP默许是没有Widevine源码的,需求手动集成,由于需求跟Google签订法令协议,然后由Google授权访问Widevine代码库,具体见Google官网流程。

step2:将源码放置到vendor目录下vendor/widevine/

聊聊Android中的DRM东西-Widevine

step3:增加编译配置

device/qcom/{product combo name}/BoardConfig.mk中增加

#这儿设置的L3等级,L1等级需求跟Google签订协议,获取Keybox
BOARD_WIDEVINE_OEMCRYPTO_LEVEL := 3

device/qcom/{product combo name}/{product combo name}.mk中增加

PRODUCT_PROPERTY_OVERRIDES += drm.service.enabled=true
PRODUCT_PACKAGES += com.google.widevine.software.drm.xml 
              com.google.widevine.software.drm
PRODUCT_PACKAGES += libwvdrmengine

vendor/qcom/proprietary/common/config/device-vendor.mk中修正

SECUREMSM += InstallKeybox
#L3等级需求删去oemcrypto库
#SECUREMSM += liboemcrypto
#SECUREMSM += liboemcrypto.a
SECUREMSM += libhdcpsrm

最后编译刷机,运用app东西验证即可,假如能显现Widevine等级,阐明集成成功。

总结

好了,现在你应该完全知道Widevine是怎么回事了

参考链接

中学生也能看懂的DRM

构建DRM体系的重要基石——EME、CDM、AES、CENC和密钥

爱奇艺DRM修炼之路

什么是Widevine?Widevine DRM详解

Google Widevine

Widevine安全等级检查app:

链接:pan.baidu.com/s/1lIJq-_eg… 提取码:fnk6

ExoPlayer:

链接:pan.baidu.com/s/1dUseWHIi… 提取码:nszh