李晓举 ,忽海娜 ,刘 丽
(1.郑州航空工业管理学院 郑州 450015;2.许昌学院网络管理中心 许昌 461000)
H.264是2003年3月发布的目前最新的国际视频编码标准。H.264的编码模型与以往的标准没有本质的改变,但它采用了1/8精度运动估计、4×4整数变换、CAVLC和CABAC等新技术,使得压缩效率和图像播放质量有了显著提高。它的应用范围非常广阔,既可用于视频会议、可视电话等即时通信方面,又可用于数字电视广播、数字存储、流媒体等方面。它具有的出色性能,吸引了越来越多人的关注。
随着视频应用的日益广泛,视频的安全性变得越来越重要。基于以往的标准,人们研究了许多加密方法:有用传统密码技术进行全部加密的方法,如VEA算法[1]、CSC算法[2],这类算法虽然有较高的安全性并且不改变压缩比,但是计算复杂度很高;有对DCT系数进行加密的方法,如分段置乱算法[3],这类算法虽然有较低的计算复杂度,但是安全性低于全部加密的算法,压缩比也有所改变;有在熵编码过程中进行加密的方法,如多状态索引方法[4],这类算法虽然计算复杂度低,对压缩比的影响较小,但在已知明文攻击情况下是不安全的。这些方法各有优缺点,而且它们大多是针对MPEG标准的,因此研究适合H.264特点的安全加密技术成为目前研究的热点。
针对现有视频加密算法的不足,基于H.264的CABAC熵编码新技术,本文提出一种与CABAC熵编码过程相结合的安全、高效的视频加密方法。
CABAC的编码流程如图1所示。CABAC使用了399种上下文模型,一种直观的加密思路就是对上下文模型索引号ctxIdx进行加密,但这种方式的明密文空间只有399,极易被攻破。或者我们可以对这些模型进行置乱,置乱空间约达399!,但是通过仔细分析可知,CABAC中每种语法元素分配的上下文模型是有限的,不同的语法元素需要分配特定范围内的ctxIdx,这大大减小了实际的置乱空间。进一步分析又可知,因为语法元素依赖于某些特定的上下文模型,对上下文模型索引值的简单加密和对上下文模型的置乱后将导致符合H.264标准的解码器不能正确解码,显然这两种加密方式都是不可行的,所以本文提出的CABAC加密方案主要在二进制化和算术编码两个步骤中进行加密处理。
CABAC中的二进制化主要采用了一元编码(U)、截断一元编码(TU)、一元及k阶指数哥伦布编码(UEGk)、定长编码 (FL)4种基本编码方案和通过2个基本编码方案分别作前缀和后缀进行串接的串接编码方案,因此只要对基本编码方案进行加密就可以了。
(1)对一元编码(U)的加密
一元编码主要用于二进制化语法元素ref_idx_l0和ref_idx_l1,生成的比特串经由图1中的普通编码路径进行算术编码(RCM)。因为ref_idx_l0和ref_idx_l1表示运动估计时的参考帧索引号,所以对一元编码的加密将影响宏块的帧间预测。一元编码将值为C(C≥0)的语法元素用长度为C+1的二进制码表示,码位小于C的位用“1”表示,第C位用“0”表示,即前面连续 C 个“1”,后面跟一个“0”,如“3”被编码为“1110”。
对一元编码的加密方式如下:
C′i为第 i次一元编码加密时生成的密文值,C′i必须被限定在参考帧列表的最大索引号以内;EU为加密函数;Ci-1′为第i-1次一元编码加密时生成的密文值;Ci为第i次一元编码加密时的语法元素值;Keyi为加密密钥。
(2)截断一元编码(TU)的加密
截断一元编码主要用于二进制化语法元素intra_chroma_pred_mode,生成的比特串经由图1中的普通编码路径进行算术编码。对截断一元编码的加密将影响色度块预测模式,从而影响色度块的预测。截断一元编码在一元编码的基础上设定了一个阈值cMax,当语法元素值C小于cMax时,编码方式与一元编码相同;当语法元素值C等于cMax时,所有码位全用“1”表示,cMax为该语法元素所能取得的最大值。
对截断一元编码的加密方式如下:
C′i为第i次截断一元编码加密时生成的密文值,0≤C′i≤cMax;ETU为加密函数;Ci-1′为第 i-1 次截断一元编码加密时生成的密文值;Ci为第i次截断一元编码加密时的语法元素值,0≤Ci≤cMax;Keyi为加密密钥。
(3)对一元及k阶指数哥伦布编码(UEGk)的加密
一元及k阶指数哥伦布编码主要用于二进制化语法元素运动矢量差mvd_lx和残差系数绝对值减1后的值coeff_abs_level_minus1,其二进制码由前缀和后缀构成(有些情况下没有后缀)。前缀采用截断一元编码方式,其码形为 M 个“1”后跟一个“0”,其中 M=Floor(log2(S/2k+1)),S 为语法元素的值,生成的比特串经由图1中的普通编码路径进行算术编码;后缀INFO由M个比特构成,INFO=S-2k(2M-1),生成的比特串经由图1中的辅助编码路径进行算术编码。在运动矢量的编码中,TU码的阈值cMax等于9,指数k为3;在残差系数的编码中,TU码的阈值cMax等于 14,指数 k为 0。
对一元及k阶指数哥伦布编码加密影响的是运动矢量或残差系数。当语法元素值小于cMax时,按截断一元编码方式加密;当语法元素值大于等于cMax时,只对后缀进行加密,加密方式如下:
INFOi′为第i次UEGk加密时生成的密文串,其长度为 Mi;EUEGk为加 密函数 ;INFOi-1为 第 i-1 次 UEGk 加密时生成的密文串;INFOi为第i次UEGk加密时的定长比特串;Keyi为加密密钥。
(4)对定长编码(FL)的加密
定长编码用于二进制化4×4亮度块的帧内预测模式和残差系数符号等语法元素,其中残差系数符号的比特串经由图1中的辅助编码路径进行算术编码,其他语法元素的比特串经由图1中的普通编码路径进行算术编码。定长码的长度 L=Ceil(log2(cMax+1)),其中 cMax的值与语法元素有关。
对定长编码的加密如下:
bitStri′为第i次定长编码加密时生成的L比特密文串;EFL为加密函数;bitStri-1′为第 i-1次定长编码加密时生成的密文串;bitStri为第i次定长编码加密时的定长比特串;Keyi为加密密钥。
(5)对串接编码的加密
串接码由基本编码方式串接而成,包含前缀和后缀,前缀经由图1中的普通编码路径进行算术编码,后缀经由图1中的辅助编码路径进行算术编码。对前缀和后缀分别使用与前述4种基本编码相对应的加密方式进行加密。
4个加密函数 EU、ETU、EFL和 EUEGk采用了密文反馈模式。加密函数的具体操作可以根据实际情况采用不同的方式,比如进行置换或按位异或操作。密钥可以是流密钥,或每个函数采用特殊的密钥生成算法。
以上5种加密分别对应了H.264中的不同语法元素,而各语法元素的重要性是不同的。如果有选择地使用上述5个加密操作,则可以分成若干个加密级别。其中对一元及k阶指数哥伦布编码(UEGk)的加密关系到运动矢量和残差系数,因而这个加密操作最为重要。由于人眼对色度不是很敏感,因此色度预测模式加密不是很重要。
本文实验中的加密函数EU、ETU、EFL和EUEGk均采用简单的与明文和密钥进行等比特异或操作的方式,密钥统一由流密钥提供。F-FCSR是欧洲ECRYPT(European network of excellence for cryptology)流密码计划征集到的候选算法之一,该算法的输入密钥为128 bit,序列周期可达2128,具有很好的性能和较高的安全性,目前已经进入流密码计划的第三阶段的评估。本文采用F-FCSR-H流密码算法作为流密钥的生成算法,加密算法嵌入在JM12.0测试模型[5]里。实验所用计算机平台为:Intel PIII800E CPU,256 Mbyte SDRAM,Windows XP操作系统,VC6.0。实验所用标准测试视频序列为foreman.qcif(176×144)和container.qcif(176×144)。
在图2中,(a)所示为foreman序列加密前的第一帧图像,(b)所示为 foreman序列加密后的第一帧图像,(c)所示为 container序列加密前的第一帧图像,(d)所示为container序列加密后的第一帧图像。从图像来看,加密后的图像完全不可辨认。
(1)计算复杂度
设视频帧宽度为W,高度为H。每个视频帧有W×H/(16×16)个亮度宏块和 1/2×W×H/(8×8)个色度块。对于I帧,全部采用帧内预测,需要进行 W×H/(16×16)×16 个亮度预测模式的加密、1/2×W×H/(8×8)×4 个色度预测模式的加密和 W×H/(16×16)×256+1/2×W×H/(8×8)×64 个残差系数的加密。对于 P、B 帧,还需要对 W×H/(16×16)×16 个运动矢量进行加密。如果采用异或方式进行,则加密操作是很快的。
(2)安全性
对于密钥分析,选用高度安全的流密钥算法完全可以保证安全性。再加上加密操作采用了密文反馈模式,大大增强了抗分析攻击的能力。对于穷举攻击,对每个帧内亮度宏块需要尝试 9 种预测模式,共需要进行次尝试,对于每个帧内色度块需要尝试4种预测模式,共需要进行次尝试。可以看出,穷举计算量非常大因此本方案具有很高的安全性。
(3)编码压缩性能
分析各级的加密情况可知,对一元及k阶指数哥伦布编码和定长编码的加密不会增加码长,对一元编码和截断一元编码可能减少码长或增加码长,但增加量是非常小的,因此该方案对压缩效率几乎没有影响。
(4)数据的可操作性
本方案加密后的码流仍然符合H.264标准,故加密后的码流的数据操作性非常强,可以正常解码播放。
CABAC是H.264的另一种熵编码方法,它的压缩效率比CAVLC要好。本文提出的CABAC加密方案可以根据实际应用选择不同部分的数据进行加密,因而加密操作可分为若干个级别。加密函数具有密文反馈功能,大大提高了加密的安全性。CABAC加密方案与CAVLC加密方案构成了基于H.264熵编码的两个重要加密方案,覆盖了H.264的全部应用。
1 Qao L,Nahrstedt K.A new algorithm for MPEG video encryption.In:Proceeding of the First International Conference on Imaging Science,Systems and Technology(CISST’97),LasVegas,Nevada,1997:21~29
2 Chiaraluce F,Ciccarelli L,Gambi E,et al.A new chaotic algorithm for video encryption.IEEE Transactions on Consumer Electronics,2002,48(4):838~844
3 Tosum A S,Feng Wu-Chi.Efficient multi-layer coding and encryption of MPEG video stream.In:IEEE International Conference on Multimedia and Expo,New York,2000
4 Wu Chunping,Kuo C J.Efficient multimedia encryption via entropy codec design.In:SPIE International Symposium on Electronic Imaging 2001,San Jose,CA,USA,2001
5 H.264/AVC joint model 12 (JM-12)reference software,http://iphome.hhi.de/suehring/tml/,2007