通用加密格式CENC是基于ISO/IEC 14496-12的一种加密格式。
加密机制
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单元无关。
box定义
1、Protection System Specific Header Box (‘pssh’)
Protection System Specific Header Box(‘pssh’)包含内容保护系统回放内容必要的信息。封装在数据域中的信息可以提供解密密钥获取方式,对基于许可证授权的内容保护系统,信息头包括许可证服务器或授权中心的URL信息,嵌入的许可证等。通过为每个DRM系统包含一个‘pssh’,CENC能够支持一份媒体文件被多个密钥和多个DRM系统播放。
2、Track Encryption Box(‘tenc’)
Track Encryption Box包含整个track的IsEncrypted flag、IV_size、以及KID,这三个参数作为track中的sample的加密参数。对于每个track只有一个密钥的文件,Track Encryption Box允许基础加密参数在每个track定义一次,而不需要在每个sample做重复定义。