视频加密通常要求满足实时性和保持码流格式不变。而直接加密视频码流中的DCT系数和MV变长码字会产生非法变长码字从而破坏码流格式,不利于视频通信的正常应用。针对这种矛盾,我们提出了一种使用合法码字随机置换码流中DCT和MV变长码字以达到对其加密的保密方法,从而可以在加密变长码字的同时保持码流格式不变。将此方法同加密定长码字结合起来使用可以构成一个完整的视频加密方案。

一、现有保持视频格式的加密方案

1、Zig-zag置乱算法

用一个随机的置乱序列置乱DCT系数的Zig-Zag扫描顺序,从而达到加密视频图像的效果,它被认为不够安全,另外这种视频文件加密方法显著增加了视频码流大小,减小了视频编码的压缩比。

2、加密符号位

包括仅加密I帧的DCT符号位的VEA算法;除了I帧还要加密PB帧的DCT符号位和运动矢量MV的符号位的MVEA算法;使用分组密码算法对DCT系数或运动矢量MV符号位进行加密的RVEA算法,它对每个宏块限定最多加密64个符号位。加密符号位的方法计算量小,但是仅仅加密上述符号位不够安全,对于加密了上述全部符号位的视频码流,实验表明,如果将帧内块DC符号位全部设置为某个常量(如128),即使其它DCT和MV符号位不解密,由于DC含有像素块的主要能量信息,仍可以看出图像的大致轮廓。

另外还有两种能够保持视频码流格式不变的加密方法:

(1)将码表中变长码字与定长序号——映射将视频码流中的每个变长码字对应的序号组合起来使用公开密钥算法或者对称密钥算法进行加密,接着将加密后的序号通过码表映射成其它变长码字,然后将这些变长码字代替明文视频中原始码字就得到了被加密后的码流。作者仅给出了运动矢量变长码字加密的具体方法。这种方法采用公开密钥算法或对称密钥算法,保密性较好,但由于序号段数据量较大,其计算复杂度较高;

(2)在保持结构信息(如起始码和标志字)不变的前提下,从码流空间位置上置乱压缩后码流的基本数据单元。置乱单元可以是码字、8×8块或者宏块。有时一个包可能只有几个宏块,那么以块或宏块为基本单元置乱时,置乱空间将非常有限,不利于安全性。

二、一种加密变长码字并保持格式不变的加密方案

基于现有的视频加密方案,特别是对运动矢量变长码字序号加密方法的启示下,本文提出了一种计算复杂度较低的变长码字的加密方法。整个方案的基本框架主要由两部分组成:定长码字加密和变长码字加密。定长码字包括帧内块DC码字(INTRADC)、DCT系数符号位(TCOEF_sign)和MV的符号位(MV_sign)。变长码字则包括DCT系数码字(TCOEF_code)和运动矢量码字(MV_code)。其中定长码字加密采用某种分组密码算法(如AES或IDEA)加密。变长码字加密的过程需要定长码字的参与,以利用定长码字的随机性来加密,以下是其加密思路和具体实现方法。

事先对不同长度变长码字预先定义不同的替换表,替换表中都是协议标准中规定的合法码字,用来采用某种方式随机替换码流中的变长码字。假设替换表中有N个码字(2n_=_N),则表中每个码字可以分配一个长度为n(bit)的定长序号index。替换表中的码字长度需要等于或尽量接近被替换码字的长度,这样可以减少码字替换引起的对增加码流大小的影响。例如可以将所有的2bits、3bits和4bits的TCOEF码字组成一个替换表。这样对于码流中所有2~4bits长度的变长码字code,可以通过查表得到它在该替换表中的序号index。如果改变该序号得到index’,也就在替换表中对应了一个相等或相近长度的变长码字code’。而由于序号是定长的,对其直接加密得到任意一个index’也都是有效的(对应一个符合标准的有效码字),因此可以通过index’对应的一个任意码字code’来替换码流中的原始变长码字,从而达到加密的目的。

本方案提出的视频加密原理如图1所示。

一种加密变长码字并保持视频格式的加密方案

加密步骤如下:

(1)从视频码流中逐一提取定长码字组成数据段F和变长码字组成数据段V;

(2)将V中变长码字查找替换表一一映射成序号index并组合成序号数据段I;

(3)将序号数据段I和定长码字数据段F异或,得到序号数据段I’;当F字段长度小于I长度时,在F后循环连接F字段;

(4)将新序号数据段I’中序号index’一一映射成变长码字code’得到数据段V’;

(5)对定长码字数据段F使用分组密码算法(AES/IDEA)加密得到F’;

(6)将加密后的定长码字和新的变长码字一一放回码流中相应位置即得到密文视频码流。

本加密方案具体的数据流程如图2所示。解密则是相反的过程。

一种加密变长码字并保持视频格式的加密方案

需要说明的是,使用本方案设计替换表时为保证码字替换后码流格式不变需要注意一些实际问题。以H.263为例,TCOEF的变长码字是一个(LAST, RUN, LEVEL)的组合。LAST为0表示这个码字所在块中还有非零系数,为1表示这个码字就是所在块中的最后一个非零系数,即为该块的边界。RUN表示该码字前连续零系数的个数,一个块中所有码字的RUN的总和不应该超过64。LEVEL是该码字表示的非零系数的大小。如果LAST为1的码字替换了LAST为0的码字,那么解码时会误判为块边界,造成码流格式解码出错。

另外,如果将具有不同RUN值的码字相互替换,则会出现一个块中RUN的总和大于64的情况,同样会解码出错。因此设计替换表时,需要将不同LAST和RUN的码字放在不同的替换表中。对于LAST为1的码字也可以采取忽略的方法,即不予以进行替换加密。对于MV码字则不存在上述问题。另外设计替换表时需要尽量使码表中的码字个数N为2的幂(2n = N),如果一些变长码字的某个集合中码字个数N不是2的整数次幂,那么可以将该集合划分成几个符合上述要求的替换表。例如可以将一个6个码字的集合划分成2个替换表,一个含4个码字,另一个含2个码字。

三、试验与结果分析

本方案在H.263的参考源码TMN8上实现了以下4种方案:

(1)RVEA方案,即对每个宏块最多加密64个MV和TCOEF符号位;

(2)使用本文提出的方法仅加密变长码字(VLC);

(3)仅加密定长码字(FLC),包括帧内块DC码字、TCOEF和MV符号位;

(4)本文提出的完整方案即同时加密VLC和FLC。从图3和图4中可以看出,

一种加密变长码字并保持视频格式的加密方案

1c仅仅加密VLC是不足以置乱或加密整个视频图像的;RVEA和加密FLC的加密效果较好;VLC和FLC同时加密可以置乱整个视频图像,看不出任何内容信息。

从加密后视觉效果上看,RVEA或仅加密FLC和本方案差别不大,但实际上由于本方案加密了代表视频内容主要信息的VLC码字,因此实质上其保密性相对仅加密FLC或RVEA要好得多。例如根据DCT系数分布的特性,容易找出密文码流中TCOEF和MV符号的位置。如果攻击者将这些符号位全部设为0或1,如图5和图6所示。

一种加密变长码字并保持视频格式的加密方案可以看出同时加密FLC和VLC按上述方法被攻击后的视频图像比仅加密FLC被攻击后的视频显露的信息要少。也就是说从攻击者的角度而言,本加密方案比仅加密FLC和RVEA加密或屏蔽了更多的信息。

除观察加密后的视频视觉效果外,衡量视频加密方案性能的3个主要尺度是:保密性,加密速度和对码流大小的影响。在保密性方面,首先由于对定长码字和变长码字都加密了,因此无论从加密的视频显示上还是视频内容的安全性上都具有较高的保密性。另一方面从攻击者的角度来看,本加密算法的保密性主要跟针对关键信息采用的密码算法的保密强度有关。如果采用国际标准的分组加密算法AES,破解视频加密算法同破解AES算法的难度相当,而AES目前被公认是难以破解的。另外,要正确解密一帧视频图像需要对重建图像内容参与主观判断和分析,这也大大增加了攻击时间和难度。

对于加密速度,变长码字加密主要使用异或操作,计算量非常小,主要计算量集中在定长码字的分组加密上,而由于定长码字总共占码流的比例通常为10%左右,本方案的计算量仅相当于全部加密的约10%。表1列出了加密耗时与编码耗时比例和解密耗时与解码耗时比例,可以看出其加解密计算比重是比较小的,能够保证视频实时处理。

一种加密变长码字并保持视频格式的加密方案

对于增加码流大小的影响,一方面加密定长码字不会影响码流大小,因为分组加密算法不改变加密数据的长度。另一方面对于加密变长码字,如果变长码字替换表内码字都是等长的则不会增加码流大小;如果替换表内码字不等长则会增加码流。因为根据变长编码的原理,实际码流短码字出现的频率较高,所以替换时变长码字大部分时候是被一个相对较长的码字替换。在TMN8的测试表明,对不同的序列码流大小增加的比例是变化的,但是如果设计替换表合理,增加的比例通常不会超过25%。

本文提出了一种能够保持码流格式不变的方法解决了视频码流中变长码字加密的问题,本方法结合加密码流中帧内块DC、DCT和MV符号位的加密方案,可以在保密性、计算复杂度和对码流大小影响3个方面到达一种平衡。本方案保持了码流格式不变,密文码流仍然可以被普通解码器顺利解码。本加密方案的软件实现仅有不到2ms的附加延时,完全可以满足视频编解码的实时性要求。

小知识之视频格式视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示、远程教育、网络视频广告等等互联网信息服务领域。