原始文章:
数字版权管理DRM
DRM在安卓上
DRM是安卓的(2) ——HAL
DRM-Playready总结
ExoPlayer Shaka-packager播放自制的DRM视频
1 .前言Widevine是谷歌在ics(Android4.0 )版本中新推出的DRM数字版权管理功能。 有了这个功能,就可以从谷歌指定的服务器上下载视频和APP等谷歌加密的版权文件。
谷歌发布这一功能的主要目的是为了在APP内容上更好地与苹果竞争。 目前安卓的开放性使得几乎所有的安卓APP都可以立即扩散并免费安装,很难让给安卓开发APP的开发者和个人充分获利,而苹果为了保护它,在苹果的APP应用商店里进行了因此,谷歌推出了它,最终目的是可以收费。
如图所示,Widevine根据安全级别分为三个级别的支持。
第1级采用安全引导加载器和arm trust zone,密钥保护方法为factory provisioning,主机CPU不接触密钥,视频流受到保护。
Level 2与level 1的不同之处只是视频流的保护,所以谷歌没有单独提供Level 2的库。 Level 2都是通过level 1的库实现的。
第3级使用的是可信引导加载器。 密钥保护方法为现场配置,主机CPU与密钥接触,因此不需要保护视频流。
总体而言,level 3是一种低安全级别的实现,谷歌不推荐实现。 仅用于已发货且希望支持widevine的设备。 谷歌建议所有新设备都在第1级实现。
以下内容基于AndroidQ进行了记述。
2 .体系结构widevine是一个DRM插件,在Android中使用。 使用的体系结构是固定的DRM体系结构,具体请参见《DRM在Android中》和《DRM在Android中——HAL》。 这里具体化widevine在Android中的位置。
L3:
在基于AndroidQ的版本中,widevine使用Android.hardware.DRM @ 1.2-servo ce/wide vine,通常不使用default service。
如果不使用lazy hal,设备启动时将加载widevine服务。 上图为未使用lazy hal的示意图,但使用lazy hal时,widevine服务将在使用时启动,使用后将结束服务。 使用lazy hal的服务是Android.hardware.DRM @ 1.2-service-lazy.wide vine。
L1:
博文为ganqiuye原创,转载请附上原文出处链接和本声明。
3 .移植L3的实现与硬件基本无关,但L1需要secuer os与drm buffer等相结合,先调试L3码再调试L1。
L3:
获取源代码(从谷歌获取)是参照DRM过程构成调试广播路径,媒体播放器一般不使用)是将源代码附带的Exoplayerdemo、单元测试demo等方法L1:
L1的原理简单地说就是将解密部分的代码移植到secure os中进行,这需要tee模块,通过各种各样的ta来实现,通过命令发送到secure os进行动作。 另外,还必须适应timer模块、log模块等、secure os的几个规则、buffer等。
另外,这样将解码部分的代码移植到secure os中进行,最终使用cpu的运算能力时,需要进行硬件运算的情况下,需要调试CE硬件解码模块,在CE硬件上运算widevine内的解码算法
移植后需要进行各种测试。
应用谷歌认证测试在GMSnetflix等播放器案例中测试几种vip源制造商、HBO等