视频内容加密封装技术研究

郭晓霞  王 磊  沈 阳

(国家新闻出版广电总局广播科学研究院)

【摘要】基于http的动态自适应流媒体技术面向多种智能终端提供视频服务是目前互联网视频服务的主流模式,内容加密封装是互联网视频数字版权保护的关键技术之一,本文对主流互联网视频格式的封装方法、加密方法进行分析,并提出基于网络提取层的视频内容加密方案,为互联网视频服务提供商实现视频内容保护提供技术支撑。

【关键词】内容加密;数字版权管理;互联网视频;HLS;MPEG-DASH;CENC

1 引言

目前,采用基于http的动态自适应流媒体技术面向智能手机、平板电脑、智能电视机顶盒、以及PC等提供多屏互动的视频服务已经成为互联网视频服务的主流模式。互联网视频服务的广泛开展, 亟需有效的技术手段抑制网络视频盗版问题,保障互联网视频服务运营可管可控。内容加密封装是互联网视频内容版权保护的关键技术之一,互联网视频的加密内容封装格式,加密后的内容应包含内容标识及获取许可证所必须的信息。根据不同的应用场景,需要定义不同的加密内容封装格式,目前主流的加密封装格式包括:基于ISO基础媒体文件格式的通用加密格式(CENC)、基于HTTP动态自适应流媒体协议(MPEG DASH)的加密内容封装格式、Apple公司的加密内容格式(HLS)。

2 视频封装格式概述

目前主流的视频压缩编码格式是H.264/AVC ,H.264/AVC是ITU-T VCEG 和ISO/IEC MPEG 共同开发的视频处理标准,ITU-T作为标准建议H.264,ISO/IEC作为国际标准14496-10(MPEG-4 第10部分)高级视频编码(AVC)。H.264的算法在概念上可以分为两层:视频编码层(VCL:Video Coding Layer)和网络提取层(NAL:Network Abstraction Layer),NAL层为视频内容提供了与网络无关的统一接口,支持多种网络情况下的传输。

视频信号以H.264编码压缩到NAL单元中,NAL层之上是根据不同的内容封装格式或传输格式对NAL单元的打包。例如视频流可以被打包到PES包中,PES包又被封装成188个字节大小TS包作为TS流输出;视频流也可以被打包成Sample,然后增加头部信息等封装成mp4文件,如图1所示。

图1 视频内容格式

对于视频内容的加密,可以有多种选择。例如对VCL层视频编码数据的加密,如对编码的DCT系数进行加密,对熵编码的数据进行加密等;在编码层对NAL单元不同类型的帧选择性加密;对mp4文件的sample进行加密,例如基于14496-12基本文件格式的CENC加密和PDCF打包格式;更上层的加密,如MPEG-DASH加密等。

视频加密方案的具体选择需要结合视频来源的内容格式来考虑,如果视频来源是ES基本码流,则选择在编码层对NAL单元加密可以提供与上层封装及切片无关的加密方案;如果视频来源是已经封装好的内容格式,例如TS包或mp4文件,则应该根据具体的封装格式选择相应的加密方案。

3  DASH加密

3.1 DASH概述

基于HTTP的动态自适应流媒体DASH以媒体流模式提交媒体内容,其控制只依赖于客户端。客户端通过HTTP协议从标准的web服务器请求数据,服务器不需要做适应于DASH的配置。23009-1中定义了从标准HTTP服务器到HTTP客户端间媒体内容分发和缓存所需的格式,主要包括MPD和媒体分片格式。MPEG-DASH的加密格式在23009-4中描述。

3.2 数据加密

ISO/IEC 23009-4定义了DASH的内容保护框架,用于获取媒体段的解密方法以及解密参数。MPD文件提供加密接口,定义key/IV的获取方式,并支持多个加密系统加密同一份内容。

(1)加密方式

DASH段加密有两种方式:基础段加密方式和基于许可证的DRM方式。

•基础段加密

DASH中基础的段加密方式采用AES-CBC算法实现,使用HTTP(S)实现密钥传输。DASH的客户端能够识别出每个段的KEY和IV,并发起请求获取KEY实现媒体段的解密,如图2所示。

图2 DASH基础段加密

•DRM系统加密

DASH支持基于许可证的DRM系统。在这种方式中,客户端获取许可证,通过许可证获取KEYID,并通过KEY和MPD中包含的加密信息实现媒体段的解密。每个DRM系统可以采用该系统的许可证和KEYID的映射方式。

(2)段加密

DASH中媒体分块如果是加密的,其加密相关信息通过ContentProtection来指定。

内容加密方法定义:通过SegmentEncryption@schemeIdUri指定,DASH规定客户端应该强制支持AES-128 CBC加密,可选支持AES-128 GCM加密。

Key/IV的获取:MPD优先从License元素获取key/IV信息,如果License元素不存在,则从CryptoPeriod和CryptoTimeline获取key/IV信息。

许可证获取:对于基于许可证的内容保护系统,通过License元素可获取许可证URL,DASH支持相同内容的多个内容保护系统加密。

密码有效期:每个加密段都同一个密码有效期关联,同一个密码有效期的加密段使用相同的key/IV,密码有效期的持续时间以段的数目为量度。

4  ISO媒体内容通用加密方法(CENC)

4.1 CENC概述

通用加密格式CENC是基于ISO/IEC 14496-12的一种加密格式,CENC加密标准在ISO 23001-7及补充文档ISO 23001-7 Amendment1中描述[4][5][6]。

4.2 加密机制

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’)引用。

4.3 加密方式

CENC定义了两种加密方式:全样本加密和子样本加密。全样本加密把整个sample作为一个完整的单元加密;子样本加密中的sample分为一个或多个subsample,每一个subsample都由不加密区域和加密区域交替组成,Sample中的所有加密区域被看做为一个逻辑上连续的块,计数器值的增加与切换NAL单元无关。

4.4 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做重复定义。

5  HLS中的内容加密

5.1 HLS概述

HLS是Apple公司推出的动态码率自适应技术,HLS内容格式在HTTP Live Streaming draft-pantos-http-live-streaming-10中描述[1]。

5.2 加密方式

HTTP Live Streaming中内容加密有两种,一种是对TS切片文件直接加密;另一种是对H.264编码文件中类型为1和5的NAL单元进行加密,其它类型的NAL单元不加密[2]。

5.3 加密机制

HLS中媒体分块如果是加密的,其加密密钥通过M3U8文件中的#EXT-X-KEY来指定,密钥文件由客户端从服务器请求认证获得。一个播放列表可以有一个以上的#EXT-X-KEY,同一个媒体段也可以有多个不同KEYFORMAT属性值的#EXT-X-KEY。如果播放列表仅有一个#EXT-X-KEY,则密钥文件的生命期从当前#EXT-X-KEY开始到播放列表结束;如果播放列表有两个或以上的#EXT-X-KEY,则密钥文件的生命期从当前#EXT-X-KEY开始到下一个#EXT-X-KEY结束。

#EXT-X-KEY的格式如下:

#EXT-X-KEY:<attribute-list>

属性包括METHOD、URI、IV、KEYFORMAT、KEYFORMATVERSIONS,属性说明见表8。

表8属性说明

属性 说明 是否强制
METHOD 用字符串来标识媒体加密方法:NONE、 AES-128、 SAMPLE-AES。 如果#EXT-X-KEY存在则该属性必须存在。
URI 获取密钥的URI字符串。 METHOD非NONE情况下必须存在。
IV 十六进制整数,代表加密初始向量。 可选。
KEYFORMAT 标识密钥在密钥文件中的存储方式。默认是”identity”,密钥文件中的AES-128密钥是以二进制方式存储的16个字节的密钥。 可选,不存在时默认为”identity”。
KEYFORMATVERSIONS 由”/”分隔的字符串(如”1/3”),如果同一KEYFORMAT有多个版本,则该属性存在,用来区分KEYFORMAT的不同版本。 可选,KEYFORMAT有多个版本时存在。

METHOD属性为NONE时,表示媒体内容未加密,这种情况下不允许出现URI、IV、KEYFORMAT、KEYFORMATVERSIONS等属性;

METHOD属性为AES-128时,表示媒体内容采用AES-128方式对TS切片文件直接加密,这种情况下URI属性必须出现,IV属性可以出现也可以不出现;

METHOD属性为SAMPLE-AES时,表示对媒体段的部分或全部ES流加密,ES可以为音频、视频或其他样本,每一种ES的具体加密方式依赖于媒体编码,这种情况下IV属性可以出现也可以不出现。

IV为十六进制整数,代表加密初始向量。采用AES-128方式加密时,如果IV属性存在,则必须使用IV作为初始向量实现加密;如果IV属性不存在,使用媒体段的序列码作为初始向量实现加密。

KEYFORMAT标识密钥在密钥文件中的存储方式。默认是”identity”。GY/T 277-2014中增加扩展,如果KEYFORMAT=”chinadrm”,表示URI中给出的ChinaDRM规定的获取许可证的相关信息,包括许可证服务器地址和内容标识。

(1)TS层加密

如果属性METHOD的值为AES-128,并且播放列表中包含#EXT-X-I-FRAMES-ONLY标签(只包含I帧流),则整个媒体段使用AES-128 CBC加密。

如果属性METHOD的值为AES-128,并且播放列表中不包含#EXT-X-I-FRAMES-ONLY标签,则CBC不能跨越媒体段,每个媒体段单独使用AES-128 CBC加密,从而实现整个媒体段全部内容的加密。

上述的两种加密方式,对TS切片文件直接加密,这种加密方式在切片时实现,需要在网络电视台及CDN系统编码器中集成加密功能,实施复杂度大,成本高。

(2)ES流加密

METHOD属性为SAMPLE-AES时,表示媒体在内容打包封装之前对ES流加密。ES层的加密对每个包含16字节整数倍的数据块以AES-128 CBC方式加密。对于视频数据,媒体段从第一个16字节数据块开始,每间隔10的整倍数的16字节的数据块加密(即1,16,26。。。),对于音频数据,所有的16字节数据块都必须加密。

SAMPLE-AES加密方式加密后的ES流不受上层封装及切片的影响,因此可以在不影响网络电视台现有系统及CDN部署的情况下实现对视频内容的加密,满足网络电视台等对视频内容保护的要求。

•视频流的加密

ES类型为视频流时,H.264编码文件中类型为1和5的NAL单元必须加密,其它类型的NAL单元不加密。

加密的NAL单元需要增加预防二义性的前缀,该前缀是未加密的。NAL单元中第一个字节的NAL_unit_type和随后的31个字节是不加密的,其后是加密的数据段,数据段的长度必须是16的整数倍,被保护的数据段采用10%跳跃加密,即每16字节的加密数据块,跟随9个16字节不加密的数据块,以此类推。加密H.264流时, 类型为1或5并且长度大于48个字节的NAL单元必须基于上述方式加密,加密完成后为这些加密单元加上前缀码;解密H.264流时,类型为1和5的并且长度大于48字节的NAL单元需要解密,首先移除前缀码,然后按上述方式定位加密数据并解密。

•音频流的加密

ES类型为AAC音频帧时,包含ADTS头的音频帧为加密帧。AAC的加密帧不需要增加预防二义性的前缀,AAC帧中7-9字节的ADTS头,以及之后的首个16字节不加密,其后是加密数据段,加密数据段的长度应该为16的整数倍,余下的0-15个字节不加密。

ES类型为AC-3音频帧时,全部的音频帧都加密。AC-3的加密帧不需要增加预防二义性的前缀,AC-3帧中的首个16字节不加密,其后是加密数据段,加密数据段的长度应该为16的整数倍,余下的0-15个字节不加密。

6 视频加密方案

我们提出的视频内容加密方案是在NAL单元层对视频内容进行加密。H.264 编码的视频流是由连续的 NAL单元组成。每个 NAL 单元包含标志位表示该 NAL 单元数据类型,常见的 NAL 单元数据类型见表9。

表9 NAL单元类型

NAL_unit_type NAL类型
1 非IDR图像
5 IDR图像
6 辅助增强信息sei
7 序列参数集sps
8 图像参数集pps
9 访问单元分隔符
12 填充数据

选择NAL类型为1和5的帧进行加密,加密后重新封装为新的NAL单元,其余NAL单元保持不变,如图3。

图3 基于NAL层的加密方案

加密后NAL单元描述为:

aligned(8) class CrypNAL {

bit(1) forbidden_zero_bit;

bit(2) NAL_ref_idc;

bit(5) NAL_unit_type;

unsigned int(8 * IV_length) IV;

unsigned int(8 * key_indicator_length) key_indicator;

unsigned int(8) data[];

}

1)forbidden_zero_bit:1bits

定义为0;H.264规范声明1时说明有比特流错误或为错误语法;

2)NAL_ref_idc:2bits

00 表示该NALU不是用来构造I帧预测的参考帧,这种NALU可以丢弃而不影响参考帧的完整性;非00 用来保持参考帧的完整性。

3)NAL _unit_type:5bits

加密后的NAL单元类型采用自定义的值:

加密前NAL_unit_type=1,加密后NAL_unit_type=25;

加密前NAL_unit_type=5,加密后NAL_unit_type=26;

4)IVIV为初始向量,在AES-128 CTR模式[114-115]下,该值用来计算counter的值。

5)Key_indicator

内容加密密钥标示,用以标示该NAL单元由哪个具体的内容加密密钥加密。

7 总结

互联网视频服务的开展,亟需有效的数字版权管理技术支撑,保护运营各方的合法权益,保障互联网视频服务运营的可管可控。内容加密封装是互联网视频内容版权保护的关键技术之一,本文研究了主流互联网视频格式的内容加密封装技术,并在此基础上提出适应多码率、多格式、多切片加密封装需求的内容加密方案,为开展多元化、灵活的互联网视频服务提供有效的技术支撑。

参考文献

【1】Internet-Draft: HTTP Live Streaming: draft-pantos-http-live-streaming[S],2012.

【2】HLS https://developer.apple.com/library/ios/documentation/audioVideo/conce ptual/HLS_Sample_Encryption/Introduction/Introduction.html

【3】GY/T 277-2014 互联网电视数字版权管理技术规范[S],2014.

【4】ISO 14496-12  信息技术——音视频对象编码  第12部分:ISO基础媒体文件格式[S],2005.

【5】ISO 23001-7  信息技术——MPEG系统技术  第7部分:ISO基本媒体文件格式文件通用加密[S],2012.

【6】ISO 23001-7 Amendment1  信息技术——MPEG系统技术  第7部分:ISO基本媒体文件格式文件通用加密 补充1:AES-CBC-128和密钥循环[S],2012.

【7】ISO 23009-1  信息技术——基于HTTP的动态自适应流媒体(DASH)  第1部分:媒体展现描述与分段格式[S],2012.

【8】ISO 23009-4 信息技术——基于HTTP的动态自适应流媒体(DASH)  第4部分:分段加密与认证[S],2013.

视频内容加密封装技术研究相关推荐

  1. 声表面波滤波器圆片级互连封装技术研究

    陈作桓,于大全,张名川 厦门大学,厦门云天半导体科技有限公司 摘要 射频前端模块是无线通信的核心,滤波器作为射频前端的关键器件,可将带外干扰和噪声滤除以保留特定频段内的信号,满足射频系统的通讯要求.本 ...

  2. ibe加密原理_基于身份加密_IBE_技术研究

    www.cismag.com.cn 64 学术研究 A cademic R esearch 曾 兵,杨 宇,曹云飞 ( 保密通信重点实验室,四川 成都 610041) [ 摘 要 ] 随着信息安全中的 ...

  3. 视频内容安全保护技术分析与实现

    近年来,视频已逐渐成为互联网内容的主流,如何保障视频内容的安全,防止非法盗版,传播成为众多企业关注的重点.在LiveVideoStackCon 2018 大会中,OnVideo视频云创作平台联合创始人 ...

  4. 430f149有几种封装类型_高速光调制器的发展与封装技术研究

    共读好书 汪冰 黄平 杨磊 摘 要: 文章分析了100 Gbps(以下简称100 G)以太网光通信光调制器及其封装的技术发展动向,对比分析了10 G/40 G/100 G高速光调制器及其封装的结构特点 ...

  5. 赋能普通用户,面向专业级的视频内容制作技术

    随着人们对视频的依赖程度日益增长,对专业级视频内容的制作要求.批量制作视频的需求也在不断提高.在制作视频中,如何即保证效率,又保证效果:即有模板支持,又能自由化的搭配设计.对此,LiveVideoSt ...

  6. 微信团队分享:微信每日亿次实时音视频聊天背后的技术解密

    本文内容整理自腾讯专家研究员 & 微信视频技术负责人谷沉沉在 2017 ArchSummit 全球架构师峰会上的技术分享. 1.前言 2012 年 7 月,微信 4.2 版本首次加入了实时音视 ...

  7. 视频内容理解在Hulu的应用与实践

    对于一家在线视频服务公司来讲,理解视频的内容其重要性不言而喻.只有深度理解用户观看的内容到底是什么,才能更好地给用户提供个性化的内容推荐.更好的交互体验等产品服务. Hulu自2016年开始系统性地在 ...

  8. 【专题介绍】视频内容生产与消费创新(Part2)

    " "音视频+无限可能"是一扇 LiveVideoStackCon面向新兴领域开启的大门,在移动互联网红利消失.内卷的局面下,智能车.制造.金融.医疗.出海等新兴领域还在 ...

  9. 【专题介绍】视频内容生产与消费创新(Part1)

    " "音视频+无限可能"是一扇 LiveVideoStackCon面向新兴领域开启的大门,在移动互联网红利消失.内卷的局面下,智能车.制造.金融.医疗.出海等新兴领域还在 ...

最新文章

  1. 在mysql 服务器上安装sysbench-0.4.12,报错。
  2. 基于DM8168 EVM的智能视频跟踪系统
  3. 区分:AndroidDriver, iOSDriver, AppiumDriver and Remote WebDriver
  4. Java并发编程-volatile关键字介绍
  5. 作者:纪珍(1982-),女,中国科学院国家空间科学中心副研究员
  6. 帆软高级函数应用之其他函数
  7. UTF-8 汉字编码与其16进制对照
  8. android 混淆报错记录
  9. 人生的意义到底是什么?
  10. lingo入门教程之二 --- 集合运用
  11. [git]warning: LF will be replaced by CRLF in 解决办法
  12. ARM中断向量表与响应流程
  13. MySQL备份恢复之mysqldump备份_SQL语句模式
  14. 在线订舱物流详情 广州力其
  15. Java IOS客户端上传多张图片到服务端
  16. 【Python学习笔记】1:黑洞数和啤酒问题
  17. 聪明如我,一眼就看穿了快递小哥的分堆算法
  18. 一篇文章说清Python数据分析,这个学习路线绝了
  19. SAP批次双单位CWM的系统实现
  20. java把字符串转换为数组

热门文章

  1. mysql 查询各个时间段的数据
  2. php实现图片背景换色功能
  3. Vue--v-if和v-for不能同时使用--原因/解决方案/实例
  4. 工作/管理-生活方式:30个生活方式 : 教你如何让生活丰富多彩
  5. 【目标检测·yolo系列】YOLOV1目标检测论文(参考 同济子豪兄的解读)笔记
  6. android视频快速压缩视频教程,Android上的快速视频压缩
  7. BCSP-玄子前端开发之JavaScript+jQuery入门CH13_表单校验
  8. 【IT修真院】接口文档规范以及示例
  9. 忘记linux里mysql账号密码忘记_Linux下MySQL忘记root用户密码
  10. dnf如何查询服务器角色信息,DNF助手如何查询他人角色 查看陌生人详情方法