一、引言
流式服务中的细粒度可扩展视频编码标准MPEG-4 FGS(Fine Granularity Scalability),它的基本思想是将视频编码分成一个可以单独解码的基本层码流( Base Layer Bitstream)和一个可以在任何地点截断的增强层码流(Enh ancement Layer Bit -stream),其中基本层码流能够适应最低的网络带宽,提供一个基本的图像质量,增强层码流能够覆盖一定网络带宽变化的动态范围,提供从基本层图像到无损失图像质量的细粒度增强,如图1所示。
目前,针对M PEG2/4压缩编码视频流的加密算法,大多采用选择某些关键码字信息进行加密,如DC系数,AC系数或运动向量,以及它们各自的符号位,但是这种加密算法是否安全,缺乏有效的分析和证明,另一方面,从MPEG-4 FGS的结构(图1)可以看到,因为增强层是采用基本层的VOP作为参照层而获得的,从理论上看,只对FGS基本层采用非可扩展视频加密处理,就可以得到对整个FGS视频的加密效果,实际上,如果针对每一个独立的VOP考虑,这种观点是完全正确的,但是如果对整个运动序列和连续的VOP进行观测和处理,情况就完全不同,选择性加密,就是选择压缩视频流的关键数据进行部分加密,这种方式是目前压缩视频流加密的普遍方式,对于这种方式的安全性的讨论目前只限于被动式的安全分析,即视觉效果分析,但是,对于这种方式在主动攻击下的安全性的讨论比较欠缺,这里我们对选择加密算法进行时域一频域相关性的主动攻击的安全性分析。
1、加密算法分析
采用选择加密或者采用完全加密,对于系统安全,或者是对已知明文攻击来说都是鲁棒的,因为对于每帧的加密所采用的伪随机序列都是不同的,并采用了内容独立的RC4密钥设定,选择性加密模式和完全加密模式对于其它攻击方法所表现出的可靠性因素也不同,在完全加密模式下,安全性依赖于加密所运用的具体算法,采用C&S算法是足够安全的,对于选择性加密模式,安全性会根据视频流的具体特点而不同,相关性强的视频,安全性就较弱。
对于Tang的加密算法,即仅仅加密DC系数,会使加密帧的某些边缘信息暴露出来;加密AC系数的符号位只能针对AC系数的非零参数,对QCIF图像的非零AC参数进行测试实验得到,如果将AC参数预测功能开启,序列M iss-A-marican平均30kbps的码率下才有一个非零AC参数,而Coast Guard序列平均每lOOkbps才会出现4.3个非零的AC系数,因此,如果对AC系数的符号位进行穷取攻击,一个8×8的块前一个序列只需要进行2次运算测试,后一个序列只需进行16次运算测试就可以得到,对于符号位的破解在这种情况下是较为容易的,之所以非零AC系数会很少,是因为选择的图像序列具有很强的相关性,同时所限定的码率很小;这样对AC系数的翻转处理就会失去效果。
由于一帧图像内的运动向量的数目是有限的,对于穷取攻击来说,运动向量的符号位加密也不够安全,对于运动向量的残余码进行加密也不会有很好的效果,这是由于运动向量残余码只要很少的位数,而且一个错误的运动向量残余码字不会对整个图像带来很大的视觉混乱。
2、视频基本层加密算法的时域一频域相关性攻击方法
针对基本层的加密,或者时域可扩展FGST编码方式下的选择加密算法,都可以利用压缩视频流的时域、频域相关性,设计主动攻击策略,目前绝大多数的选择加密算法主要是选择压缩视频流的DC信息,AC信息,运动向量,以及其它如量化参数等信息,加密时既能是整个码字,也可以是其符号位。
对选择加密算法的攻击可以先从最薄弱的部分开始,例如选择加密是运动向量的符号位,那么首先对运动向量的符号位进行攻击,如图2所示,当一个球从图的左下角匀速运动到图的右上角,球所包含的宏块的运动向量经过随机翻转加密,那么,从加密算法的随机特性得出,对于像素来说,总会有将近一半的像素具有正确的运动向量(正负符号各半),对一个宏块来说,也总会有将近一半的帧具有正确的运动向量,表现出整体的运动趋势。
对于运动向量码字加密攻击方法,可以根据相同物体在空间和时间的运动相关性进行攻击,设小球内宏块a在frame-1的运动向量为a1,其预测运动向量a’1,编码运动向量为a1''=a1-a1’,如果小球匀速运动,那么宏块a会出现a1''=a2''a3”=a”4,在这种情况下,如果对明文加密的密钥相同,密文也必定相同,那么物体的运动依然保持一定程度的一致性,实际的测试也证明这一点,如果对明文加密的密钥不同,可以采用已知明文攻击的方法,根据明文相关性的特点,进行选择明密文的攻击。
对于DC码字加密攻击方法,由于DCT变换后的DC值表示块内8×8像素的平均亮度和Cr,Cb色差值,仍然可以利用物体的空间相关性,相邻块可能具有相同的DC值,时间相关性表示相邻帧的同一位置的宏块(块)有可能具有相同的DC值,虽然DC也采用差值编码,但是对其的攻击可以采用和MV攻击方法类似的方法进行。
对于AC系数的攻击方法。AC系数符号位的翻转加密,实质上是对8×8块DCT变换后的相应频率的系数进行相位翻转,在i帧中,AC系数和原图像与亮度值相关,那么两个相邻I帧就有可能具有相同的AC参数,相邻块的AC系数也有可能相同,根据这些信息,可以对AC系数的符号位采用相应的方法进行攻击,在P,B帧中,AC系数与当前图像和预测图像的差值相关,AC系数的符号位需要采用穷举的方法进行测试,由于块中有限的非零AC系数的缘故,尤其是在低码率压缩的情况下,测试的数量可以更少。
3、视频基本层加密算法的安全性测试
我们对FGS的基本层加密做以下选择性实验,首先将一个QCIF的视频流压缩为较低码率(50kbps)的基本层,和较高码率的增强层,总码率为1.OMbps。然后将基本层的像素值值设置为0(或者别的固定值),然后进行FGS流的重构。通过对不同类型的视频剪辑的测试,得到了有趣的结果。如果观察每一个单独的量构帧,那么会显示明显的随机特性,不可能获得更多有用的信息,但如果对重构帧进行播放,此时运动对象的轮廓会较为清楚地显现.更为严重的是,这种运动对象和它的行动,可以通过人的观察获得正确语义描述。在许多应用中,视频加密系统的这种信息泄漏是不可接受的,从一个视频流的相邻帧间的强相关性进行解释,当基本层中的参考帧非常相关的情况下,这些序列的增强帧会澄漏较多的有用信息,也就是说,仅仅对基本层进行加密不能保证整个MPEG4FGS视频流的安全。
二、基于主动攻击安全的可扩展FGS加密算法
本文提出的对FGS的基本层和增强层同时进行加密,其加密算法原理图如图3所示,图中分别给出了三种加密模型:基于细粒度时域可扩展编码FGST (fine granularity scalable temporal)的VOP加密模型,基于C&S(chain&sum)的VOP加密模型和基于RC4(二进制加法泷密码算法)的VOP加密模型。从图中看到,基本层既可以是选择加密,也可以是完全加密;增强层采用选择加密,也就是选择伪随机序列异或增强层的DCT系效符号位进行加密,不同的帧采用不同的随机序列,以避免相同的随机序列在不同的帧中重复使用,这种重复使用对于流加密来说是一个最大的安全隐患。
本算法可以应用于任何的网络分布模型,在超分布模型中,内容加密和许可证是分别进行分发的,许可证一般分发到特定的用户;只有合法的被允许的机器才可以对保护的内容进行访问,为了最大意义的安全,对每个节目视频采用不同的加密密钥。
1、基本层加密算法
基本层加密采用C&S加密算法。C&S(chain&sum)加密算法由Jakubowski和Venkatesan最近提出,主要是基于CBC-MAC(块加密链、消息提取码)的加密算法,用于加密单元的加密运算既可以是选择加密,也可以是完全加密,在选择加密情况下,加密域包括:比特位数量DC值(intra_dc_coef-ficient和dct-dc_differential),DCT系效符号位,运动向量符号位(horizontal_mv_data和vertical_mv_data)和运动向量余效(horizontal_mv_residual和vertiC81—mv- residual)。对于每一帧数据,这些数据被提取出来形成消息序列,然后采用C&S的方法进行加密,密文再放圆FGS流的原位置中替换原效据,在完全加密情况下,基本层每帧中除了VOP头信息以外的熵编码视频数据均被C&S算法加密。
基本层采取选择加密或选择完全加密,都不会影响视频效据的熵编码,因为C&S加密算法保持被加密数据的大小,不会对FGS的压缩效率带来负面影响,选择加密算法与MPEG4 FGS格式是全兼容的,就是说,一个FGS的标准播放器可以播放选择加密的视频流,这一点比完全加密算法具有优势。完全加密具有较高的保密性,但在不解密或者是解密错误的情况下,播放加密视频会使标准的FGS播放器崩溃。
通常情况下,采用基本层加密方法必须等到一帧图像的所有加密数据都收集到后才可以进行解密,这就需要缓存区必须存储整个帧的基本层,同时还需要记住每一个加密域的位置和比特效,还必须进行两次基本层数据的提取,其中一次进行解密运算,另一次进行解压缩运算,这对于某些应用环境是不适宜的.如果客户端的处理器能力或资源存在限制,可以采用流加密算法,如使用RC4算法来替代以上两种方式所采用的C&S算法。
本文提出的基本层加密方法如下:在每帧基本层的头信息中,产生不同的随机数,由它和加密密钥作为流加密的密钥,对每帧生成不同的随机序列对帧效据进行异或处理。对于一般长度的视频流,采用32位的随机数对于每帧来说已经足够,确保了一个视频流中不同帧的随机序列不同,除非随机数产生碰撞,但如果选择好的随机序列发生器,这种概率就会非常小,因为RC4存在极大的可能状态(大约2的1700次方)。这就保证了加密内容的安全性.插入的随机数被作为增强层加密所采用的C&S算法的预MAC值。
2、增强层加密算法
增强层加密采用RC4加密算法,RC4是一种二进制加法流密码算法,它使用可变长度密钥,从8到2048位。算法的核心部分是一个密钥流的发生函数,产生的流序列和明文进行异或运算以获得密文。
从基本层获得的预MAC值用于增强帧的加密,它和加密密钥一起作为RC4算法的一个输入,产生一个随机序列来与增强层的DCT系数的符号位进行异或处理,可以设定任意的字串如uenhancement layer一来作为RC4的另一个输入,以保证基本层和增强层产生的RC4随机序列的不同。通过RC4产生的伪随机序列被捧列成和原图像大小相同的二进制矩阵,增强层中DCT系效的符号位一旦在增强层出现,就和伪随机二进制矩阵的相同位置上的位进行异或,这种情况下,即使在传输过程中出现某个包丢失,也可以容易地将所接受到的其它包和正确的随机位对齐,进行解密处理。
对于FGST VOPs的情况,某些FGST VOPs可能使用相同的基本层帧作为参考帧,以上描述的方法会对不同的FGST VOPs产生相同的随机序列,造成对安全性不利的影响,为避免这种情况发生,在每个FGST VOP的头信息中插入帧序列号,这个序列号作为RC4的输入,这样对于具有相同参考基本帧的FGST VOPs就会产生不同伪随机序列。帧计数器可以被不同的FGST VOPs组重复使用,因为由它所参考的基本层获得的预MAC也会作为RC4的密钥输入。对于绝大多效的应用,每帧2到3个比特就足够使用了。这种加入帧计效嚣的方法比利用增强层帧的时间戳要好,因为传输过程的中间阶段一些标准的操作需要改变时间戳,如果某些FGST VOPs被丢失,解密操作就不能对以后的FGST VOPs产生正确的随机序列。
这种增强层加密方法,具有恢复原来未加密的增强层错误的能力,它可以支持FGS压缩所提供的增强层上的所有操作和功能,由于在绝大部分应用当中,基本层一般被重点保护以防止包丢失和位镥误,由于其码率较低,处理的计算负荷不会很大,所以码率切割等操作一般都只在增强层上进行。
三、实验结果
本文所提出的算法方案以C++语言进行实现,所有的测试基于P4 2.8GHZ Dell PC,512M内存,我们在该环境下对许多的QCIF视颁序列进行了测试,结果如下。
对于MPEG提供的akyio序列,基本层的码率为7.65kbps,增强层的码率为2.581Mbps。
采用选择加密算法进行加密时,加密位的数据占基本层全部数据位的15. 72%,基本层加密运算的处理速度为25Mbps,基本层和增强层同时加密时总速度为7905 MbpsI采用完全加密算法进行加密时,基本层加密处理速度为55mbps,基本层和增强层同时加密时总速度为17391 Mbps。加密速度比选择加密时要快,这是由于采用基本层加密时,虽然C&S算法的速度比较快,但是对加密码字的提取和加密后码字的放回需要花费较多的时间。
从实验结果可以看到,加密/解密算法的速度相对于C&S算法/RC4或RC5算法要低,这是因为没有针对某个特定的硬件平台进行汇编代码优化的缘故。
在实验中,我们对视频流中两个连续视频点(a点和b点)的图像进行了抓拍,得到的加密图像如图4所示。
其中图4(a1)、(b1)为两个视频点的原始图像。(a2)、(b2)为加密基本层后得到的图像,(a3),(b3)为同时加密基本层和增强层后得到的图像。从图4中可以看到,采用基本层加密没有获得很好的加密效果,如果采用基本层和增强层同时加密,将获得十分理想的加密效果。
四、结论
本文通过对传统视频流加密算法的安全性分析,提出了针对MPEG4 FGS视顿流的基于主动攻击安全的可扩展FGS加密算法,即基本层和增强层同时进行加密,加密支持FGST特殊情况下的加密要求,支持FGS流格式所具有的可扩展的功能和特性,加密只需一次,就可以使传输的中间阶段直接在密文上进行处理而不需要解密过程,使系统资源得到最大的利用。这种加密方式不会对FGS的视频恢复和压缩效率带来负面影响,而在提高视频安全性的同时,视频回放没有出现掉包现象,获得了理想的效果。
小知识之视频流视频流是指视频数据的传输,例如,它能够被作为一个稳定的和连续的流通过网络处理。因为流动,客户机浏览器或插件能够在整个文件被传输完成前显示多媒体数据。视频流技术基于 2 密钥技术,视频译码技术和可升级的视频分发技术发展。