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的结构如下,其内部各个部分主要的工作如下:
CENC & InterTrust DRM 及 player中的应用原理_第1张图片
其中各个模块的主要供功能可以简单拆解如下:

  1. PlayerDriver主要是播放器的入口,充当了线程调度的工作,是一个典型的facade封装
  2. InputSource 主要是IO的输入输出,从网络取到制定的数据及数据皆封装。具体可以分为两大块:
    2. 1. IO: 主要是解决视频传输协议的数据下载,如 HTTP,RTMP, HLS, DASH。
    2. 2. Demuxer主要的将下载下来的 MP4、FLV、TS、Mp3 等封装的格式解析为视频/音频编码标准数据。如:视频的H265,h264,音频的AAC,mp3等。
  3. AudioDcoder 主要是讲音频的数据进行解码,归一化等功能,一共audio Render(Android audio track, iOS audioSession) 使用
  4. VideoDecoder 主要是讲h265,h264的视频压缩格式数据进行解码,以便于VideoRender 使用Surface & metal

Demuxer 方式解密:

不安全的方式,通过流程可以看到,解密后的数据,经过音频和视频解码器后进行输出,此事如果碰到使用硬解的root手机,未加密的数据就可能被黑客得到,结果你懂的。

Codec后内存解密:

如果在codec里面解密,解密后的数据,直接渲染,将会安全很多。
示意图如下:
CENC & InterTrust DRM 及 player中的应用原理_第2张图片

结语

感谢诸位的阅读,有任何的疑问和建议,欢迎随时和我联系。

你可能感兴趣的:(音视频)