Android设计了一个通用的DRM软件框架,不同的DRM解决方案可通过Plugin的方式集成到Android系统中。DRM Framework API模块通过Binder机制和DRMserver进程中的DRM Manager模块通信,DRM Framework API模块是Framework层暴露给App的接口,其中最主要的类是DrmManagerClient。DRM Manager加载并管理系统中所有的DRM插件。手机可能会集成多个DRM Plugin。因为媒体文件如采用不同DRM解决方案进行加密,手机播放时,DRM Manager需找到对应的DRM Plugin进行解密。
Android中的DRM软件架构:
Widevine是google推出的一种DRM数字版权管理功能,支持从google指定的服务器上,下载经google加密的版权文件,如视频、应用等。现在Widevine已经成为GMS(Google Mobile Service)中必备的内容,所有想要得到GMS的手机厂商,都需要根据GMS的要求搭载Widevine。
Widevine DRM解决方案结合以下行业标准,提供强大的多平台内容保护:
基于HTTP的动态自适应流技术(DASH)
DASH能够使高质量媒体内容通过互联网进行无缝传输。DASH所采用的是标准HTTP 协议,因而厂商可在现有的网络基础设施上便利地利用DASH技术。这些网络基础设施包括网络服务器、内容分发网络、防火墙等。
数据通信常用安全加密技术(CENC)
CENC是一种基于行业标准的内容加密技术。CENC能够识别单个或多个DRM系统上的标准加密范式和关键映射机制,这就使厂商能够使用不同的DRM系统对同样的文件进行解密。CENC技术还能使内容提供者仅通过一次加密就将内容传输至众多用户设备及其DRM系统。
加密媒体扩展协议(EME)
EME是W3C提出的标准,该协议提供的一整套通用API不仅能够用来与DRM系统进行互动,还能管理许可证秘钥交换。EMC允许内容提供者为所有设备设计单一的解决方案。
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等底层中加入自主研发的安全机制,只有通过可信赖的boot loader才能使用具有正常权限的手机软件,并支持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都实行闭源。