DRM-widevine 总结
相关原创文章:
数字版权管理DRM
DRM在Android中
DRM在Android中(2)——HAL
DRM-Playready总结
ExoPlayer+Shaka-packager播放自制DRM视频
1. 前言
Widevine是google在ICS(android4.0)版本上新推出的一种DRM数字版权管理功能,有这个功能的话,就能从google指定的服务器上,下载经过google加密的版权文件,例如视频、应用等等。
google推出这个功能主要的目的是为了在应用内容上可以和苹果更好的竞争,由于目前android的开放性,导致基本上所有的android应用都可以很快的扩散并免费安装,因此导致给android开发应用的开发商以及个人很难从中充分获利,而苹果这点保护的很好,因此苹果的应用商店中的应用内容质量和档次明显更高。因此google推出它,最终目的就是可以进行收费。
Widevine按照安全级别分为三种层次的支持,如图所示:
Level 1使用secure bootloader和arm trust zone,key保护方法是factory provisioning,host cpu接触不到key,视频流受到保护。
Level 2与level 1不同的只是视频流的保护,所以google不单独提供level 2的库,level 2都是用level 1的库来实现的。
Level 3使用trusted bootloader,key保护方法是field provisioning,host cpu接触到key,视频流不需要保护。
总体来说,level 3是安全级别很低的实现,google已不推荐实现,只是用于那些已经出厂,又想支持widevine的设备。Google推荐新设备都使用level 1实现。
以下内容是基于AndroidQ进行描述。
2. 架构
widevine是DRM的一种插件,在Android中应用,使用的架构是固定的DRM架构,具体可参看《DRM在Android中》和《DRM在Android中——HAL》。这里对widevine在Android中的位置具体化:
L3:
基于AndroidQ的版本,widevine使用的是android.hardware.drm@1.2-servoce/widevine
,一般不使用default service
。
如果不使用lazy hal,widevine服务会在设备启动的时候就加载,上图是没有使用lazy hal的示意图,而使用了lazy hal后,widevine服务会在使用到的时候才启动,使用完后就会关闭服务。使用lazy hal的服务是:android.hardware.drm@1.2-service-lazy.widevine
。
L1:
博文为ganqiuye原创,转载请附上原文出处链接和本声明。
3. 移植
由于L3的实现基本不涉及到硬件,而L1需要搭配secuer os和drm buffer等,故先调试L3代码,之后再调试L1。
L3:
- 获取源码(向google获取)
- 参考DRM步骤进行配置
- 调试播放通路,mediacodec(mediaplayer一般不使用)
- 使用源码中自带的Exoplayerdemo,单元测试demo等方法进行测试。
L1:
L1的原理,简单的归纳就是将解密部分的代码移植到secure os
上进行,这就需要tee模块
,通过各种ta
实现,通过命令发送到secure os
中运行。同时,要适配好secure os
里的一些规则,例如,timer模块
,log模块
等,buffer
等。
另外,这样将解密部分代码移植到secure os
上进行,最终使用的也是cpu的运算能力,那么如果需要硬件运算,又需要调试CE硬件解密模块,将widevine里的解密算法,调试到CE硬件上运算。
移植完后,需要进行各种测试。
4. 应用
- google认证测试GMS
- netflix等播放器
- 盒子上一些vip片源
- 片源商,HBO等
DRM-widevine 总结相关推荐
- MTK DRM常见问题介绍
[DESCRIPTION] 主要介绍mtk支持的DRM Widevine Level; WV与DRM feature option的开关;play movies play videos popups ...
- 谷歌:昔日屠龙者正在成为“恶龙”?
曾经,IE 浏览器.Firefox.Opera 的辉煌一一被谷歌 Chrome 终结.如今,这个步步上位的屠龙者也开始展现出"恶龙"姿态,傲慢俯视着这群开发者和这片土地. 2018 ...
- 智能家居控制系统MECOOL KA1智能音响
MECOOL KA1是智能音箱和4K安卓电视流媒体设备的结合.该设备采用Amlogic S905Y4 SoC四核ARM Cortex -A35处理器,支持远场语音和免提电视控制. MECOOL KA1 ...
- 深入理解 DRM (1) --了解Widevine与OEMCrypto
基本术语定义 Device Id 以空结尾的唯一标识设备的C字符串.最大32个字符,包括NULL终止. Device Key 由Widevine分配的128位AES密钥,用于保护授权. Keybox ...
- Google Widevine DRM 逆向破解原理
本人业余爱好,文章写的不够完善望大佬指导,轻喷哦,我会努力学习~ 一.介绍 Google Widevine DRM 是谷歌旗下数字版权加密(DRM)解决方案,于2010年收购Widevine!Wide ...
- Chrome 隐藏 SSL 证书信息 禁止禁用 DRM
Google Chrome 浏览器最近做出了多项并不招人喜欢的改变: 1)隐藏 SSL 证书信息,用户无法从地址栏的HTTPS连接状态获取到相关的证书信息,而在这之前,用户点击 HTTPS 连接的绿色 ...
- 构建DRM系统的重要基石——EME、CDM、AES、CENC和密钥
▼扫描下图二维码了解音视频技术大会更多信息▼ 翻译.编辑:Alex 技术审校:刘姗.周亚桥 本文来自OTTVerse,作者为Krishna Rao Vijayanagar. Easy-Tech#016 ...
- 周源:视频加密和DRM实施实践
在上周落幕的LiveVideoStackCon音视频技术大会,阿里云高级技术专家周源进行了<视频加密和DRM的实施实践>专题分享.周源,有十多年音视频研发经验,之前在淘宝视频负责开放平台, ...
- Android DRM框架分析
Android DRM框架分析 1. DRM框架 2.DRM架构 3.DRM插件 4. 实现 5.DRM插件详情 6.MediaDrm 7.MediaCrypto 8.参考链接 1. DRM框架 An ...
- MTK支持的DRM简介
一.DRM 基本信息: 1.MTK支持的DRM类型 a.OMA DRM V1.0 (Open Mobile Alliance) DRM b.Widevine(Google Widevine) L32. ...
最新文章
- WPF 动画显示控件
- 数据结构: 插值查找算法
- AD RMS保护电子邮件安全
- 开服侠显示服务器已停止,蜘蛛侠:极限(已关服)无法连接服务器是什么原因...
- numpy函数中的linspace
- sql decimal函数例子_leetcode题库-sql练习精讲系列--三、经典排名问题
- SAP Spartacus新建org unit之后,排序不正确的问题分析
- SharePoint 2010 Form Authentication (SQL) based on existing database
- null 和{}的那点事
- 创建一个滚动的文本字幕。
- C++输入输出流学习笔记
- IntelliJ IDEA 创建 maven 创建java web 项目
- oracle 12c transaction guard,保障业务连续性的神器
- java8 新特性之 -- lamdba 表达式 -- Optional类 --遍历 Map List
- mysql 日文乱码_Mysql 导入日文数据乱码问题
- java 日期格式化 英文_Java中使用SimpleDateFormat输出英文日期(原创)
- android开发手顺3--Package name must have at least two identifiers 原因及解决方法
- 关于Ubuntu18.04双系统安装后无法连接WiFi问题解决方法
- 基于Django框架实现前后端分离(三)
- html微信非法昵称代码,微信撤回消息并亲了你一下改名提示非法字符解决办法...