CENC InterTrust DRM 及 player中的应用原理
数字版权保护方法
数字版权保护方法主要有两类,一类是采用数字水印技术,另一类是以数据加密和防拷贝为核心的DRM技术。
数字水印(Digital Watermark)技术是在数字内容中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测工具才能提取。数字水印可以用于图片、音乐和电影的版权保护,在基本不损害原作品质量的情况下,把著作权相关的信息,隐藏在图片、音乐或电影中,而产生的变化通过人的视觉或听觉是发现不了的。但是,目前市场上的数字水印产品在应用方面还不成熟,容易被破坏或破解,而且数字水印方法,只能在发现盗版后用于取证或追踪,不能在事前防止盗版。
DRM (Digital Rights Management)数字版权管理。数据加密和防拷贝为核心的技术,是把数字内容进行加密,只有授权用户才能得到解密的密钥,而且密钥是与用户的硬件信息绑定的。加密技术加上硬件绑定技术,防止了非法拷贝,这种技术能有效地达到版权保护的目的.
CENC
加密机制
CENC加密对sample entry做如下替换:
1、在每个track中添加Protection Scheme Information Box(‘sinf’),标识内容为加密内容。
2、Protection Scheme Information Box(‘sinf’)中包含Scheme Type Box(‘schm’):定义相应的加密算法,其中scheme_type定义了加密类型,scheme_version定义模式版本。CENC加密方式中:
模式类型scheme_type=‘cenc’,CENC采用AES-CTR算法加密;
模式版本scheme_version=0×00010000。
3、 Protection Scheme Information Box(‘sinf’)中应包含Scheme Information Box (‘schi’)。
4、 Scheme Information Box (‘schi’) 中包含Track Encryption Box(‘tenc’):描述该track的加密参数。
CENC通用加密格式定义的相关参数包含在如下box中:
1、 内容保护系统的方案相关信息,例如许可证和授权获取信息,包含在ProtectionSystemSpecificHeaderBox(‘pssh’)中。
2、用于每个track的加密参数(包括KID、初始化向量、加密标志位),包含在TrackEncryptionBox(‘tenc’)中。
3、用于samples groups的加密参数(包括KID、初始化向量、加密标志位)包含在SampleGroupDescriptionBox (‘sgpd’)中。
4、 单独sample的加密参数(包括初始化向量,sub sample加密数据)包含在样本附加信息中,由SampleAuxiliaryInformationSizesBox (‘saiz’) 和SampleAuxiliaryInformationOffsetsBox (‘saio’)引用。
加密方式
CENC定义了两种加密方式:全样本加密和子样本加密。
全样本加密把整个sample作为一个完整的单元加密;
子样本加密中的sample分为一个或多个subsample,每一个subsample都由不加密区域和加密区域交替组成,Sample中的所有加密区域被看做为一个逻辑上连续的块,计数器值的增加与切换NAL单元无关。
DMR系统(DRM / key system)
DRM不是一项技术,而是一类技术。很多机构和联盟都提出过相应的DRM标准。
- Widevine
- Google 2012年收购的对抗苹果的, 在android 4.x之上有强大的内置和强大的系统plugin方式支持。
- Marlin
- Intertrust 索尼和飞利浦联合成立的Intertrust公司, 是Marlin DRM设备和服务解决方案的唯一第三方供应商。发明的 DRM 和可信计算技术广泛的用于包括操作系统、数字媒体平台、消费电子产品、移动计算设备、网络服务和企业安全自动化等各种领域。提供 DRM 云服务器及可以用于 iPhone 、 iPad 、 Android 设备以及智能电视和机顶盒的跨平台客户端解决方案。
- PlayReady
- 微软
- FairPlay
- Apple 后续被 iTunesPlus替代
- OMA DRM
- Open Mobile Alliance
Intertrust(Marlin) Drm
基础代码,网络通信的方式为sock自己实现,非业务http/
CENC与Intertrust / DRM 系统的关系
Common Encryption (CENC) 媒体内容通用加密方法,通用加密格式CENC是基于ISO/IEC 14496-12的一种加密格式,这种加密方式使不同的DRM系统能够解密同一个文件。
CENC就是一个视频加密的规范。内容提供方提供提供视频源,按着cenc的要求,对数据进行加密。加密的同时已经写好了加密的方案AES-CTR和规则。
然后Drm/ key system, 拿到视频内容的时候,判断了当前是一个加密的视频,拿到license后,就按着加密时指定的加密算法(AES-CTR)进行解密,把制定的解密数据给到使用方,使用方可以对数据进行下一步的处理(如解码)。
播放器DRM方案
播放器通用架构方案
通过FFmpeg标准player的结构如下,其内部各个部分主要的工作如下:
其中各个模块的主要供功能可以简单拆解如下:
- PlayerDriver主要是播放器的入口,充当了线程调度的工作,是一个典型的facade封装
- InputSource 主要是IO的输入输出,从网络取到制定的数据及数据皆封装。具体可以分为两大块:
2. 1. IO: 主要是解决视频传输协议的数据下载,如 HTTP,RTMP, HLS, DASH。
2. 2. Demuxer主要的将下载下来的 MP4、FLV、TS、Mp3 等封装的格式解析为视频/音频编码标准数据。如:视频的H265,h264,音频的AAC,mp3等。 - AudioDcoder 主要是讲音频的数据进行解码,归一化等功能,一共audio Render(Android audio track, iOS audioSession) 使用
- VideoDecoder 主要是讲h265,h264的视频压缩格式数据进行解码,以便于VideoRender 使用Surface & metal
Demuxer 方式解密:
不安全的方式,通过流程可以看到,解密后的数据,经过音频和视频解码器后进行输出,此事如果碰到使用硬解的root手机,未加密的数据就可能被黑客得到,结果你懂的。
Codec后内存解密:
如果在codec里面解密,解密后的数据,直接渲染,将会安全很多。
示意图如下:
结语
感谢诸位的阅读,有任何的疑问和建议,欢迎随时和我联系。
CENC InterTrust DRM 及 player中的应用原理相关推荐
- 如何在VMware Player中设置和安装Windows Home Server“ Vail”
The new Windows Home Server Beta is available to the public for testing, and you might not have an e ...
- 无法在VMware Player中安装64位系统
无法在VMware Player中安装64位系统 下载了VMware Player用来安装ubuntu的64位系统,配置完成后,开启VM.提示bios中未开启intel VT-X 也就是intel的虚 ...
- 通过Stratus 服务器在Flash Player中使用RTMFP 开发P2P应用
通过Stratus 服务器在Flash Player中使用RTMFP 开发 点对点应用(网文转摘) 作者:Jozsef Vass 译者:巴巴鲁 (请转载时注明和改编时出处,谢谢) Adobe Flas ...
- 在Windows 7 Media Player中轻松播放Flac,Ogg和其他文件格式
If you're a music fan who likes Flac and Ogg files, you know WMP won't play by them default. Here we ...
- Photon网络中Player中存取数据
网络player中自然在应用中要根据需要存储一些游戏数据,比如头像.击杀对方英雄数,击杀的英雄列表等. Hashtable initialProps = new Hashtable() { { Ast ...
- 在Windows Media Player中使用歌词插件显示歌曲歌词
Looking for a way to display song lyrics in Windows Media Player? Today we look at a very simple met ...
- 在VMware Player中安装启用Aero的操作系统
Have you ever noticed that you normally can not enable Aero in a Windows 7 or Vista virtual machine? ...
- 如何在Windows 7 Media Center和Player中播放FLAC文件
An annoyance for music lovers who enjoy FLAC format, is there's no native support for WMP or WMC. If ...
- java final 实例_Java中final实现原理的深入分析(附示例)
本篇文章给大家带来的内容是关于Java中final实现原理的深入分析(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. final在Java中是一个保留的关键字,可以声明成员变 ...
最新文章
- 不只翻译机,搜狗将在半年内推数款智能硬件产品
- 施有朋:人工智能崛起,AI赋能医疗领域,创业者该如何选择
- java 多线程Callable和Runable执行顺序问题详解
- 同步方法 sleep和wait 线程同步的方法
- 开发海思3520a遇到的问题
- form 窗体增加边框_C#控件美化之路(13):美化Form窗口(上)
- pyqt按钮关闭窗口_PyQt5按钮单击事件,退出程序
- ADB命令中循环执行某个命令
- Linux安装RabbitMQ及问题
- 【数据分析】脑图简介数据处理
- 利用百度搜索结果爬取邮箱
- 开源中文bi_odoo:免费开源ERP入门与实践
- 数字图像处理课程设计
- Python实现图片灰度化
- Freetype字体引擎分析与指南(中文版翻译)
- 求方程ax^2+bx+c=0的实数根
- 工作3年的Java程序员如何成功跳槽,7K一飞到22K
- linux puppy 安装软件,puppy linux(linux操作系统)V5.7.2 官方版
- 阶乘 c语言 fushu,JS递归实现阶乘和菲波那切数列
- matlab gui学生成绩管理系统源码,matlab GUI 学生成绩管理系统.doc