视频加密算法通常需要根据应用场合的需要在安全性、压缩比、实时性、数据格式不变性、数据可操作性等性能要求中做出折中考虑。为此我们提出了一种针对H.264标准的新型视频加密算法,弥补了选择性加密压缩比变化及熵编码加密编码器不通用的问题。
一、帧异或视频加密算法
1、加密算法思想
算法的基本思路是将密钥决定的另一帧图像异或在原始图像帧上,对视觉重叠图像进行精心处理使其不明显降低H.264视频编码效率,在保持视频流能够正常解码的同时使非授权的图像理解变得不可行。
以图1为例说明这一加密原理。图像帧(a)是重叠图像,它虽然并不是近似噪声图像,但在安全要求并不十分高的网络视频应用场合,这样令人烦躁的图像已经达到了足够的加密效果。事实上它是由图像(b)和(b)反转180°并向左下平移后的图像帧(c)叠加产生的。遵循密码协议的设计要求,假设异或平移操作是公开的,但图像(c)需要合法密钥才能获得,则合法用户可以容易地将图像帧(a)与(c)=次异或还原原始图像帧(b),非法用户则只能看到可理解性极低的叠加图像(a)。从密码破译角度看,不知道(c)的情况下从(a)恢复出(b)在计算上是困难的,并且必须包含人工的视觉理解过程。
帧异或视频加密算法在整个视频应用的过程如图2所示。在图像异或过程中如何确保压缩率不变并决定密钥嵌入位置是本文的研究重点。
2、算法过程
首先以伪代码形式说明帧异或视频加密算法的异或(加密)过程。
帧异或视频加密算法
输入:待加密原始图像序列Ori_Seq[N];由密钥种子忍生成的流密钥Key_Str[41;滑动窗口大小为2w。
输出:加密后的图像序列Cry_Seq[N]
寄存器说明:i,j,t分别用于标记当前操作的原始图像帧,异或图像帧和流密钥比特位;
1)从原始图像序列中取出下一组以I帧开始的待加密原始图像帧组(I帧后均为时空相关性较强的P、B帧),记为Ori_Seq[x]至Ori_Seq[y],i-x,转步骤2);
2)根据滑动窗口和流密钥确定一个以I帧开始的时空相关性较强的异或图像帧组,具体操作为:根据Key_Str[i]至Key_Str[升w-1]的wbit流密钥定位Ori_Seq[x]之前的扩个已解码图像帧(滑动窗口)中的一个异或图像帧,:找到距其最近的I帧Xor_Seq[m]及其后的P、B帧,记为Xor_Seq[m]至Xor_Seq[n],t+ -w,转步骤3);
3)若i<y,按序取出原始图像帧组中的一帧图像Ori_Seq[i]:,根据Key_Str[t]至Key_ Str[t.+[logz]一1]的lbit流密钥定位Xor_Seq[m]至Xor_Seq[n]中的一个异或图像帧Xor_Seq[j],转步骤4)将Ori_Seq[i]与XorSeqD]异或;否则转步骤1; 4)若()ri_Seq[i]采用帧内预测,首先检查Ori_Seq[i]和Xor_Seq[j]是否均适用细节集中模型(人脸或细粒度近景一粗粒度背景的典型图像),若是,转步骤5),否则转步骤6);若Ori_Seq[j]采用帧间预测,转步骤7); 5)若均为细节集中模型,采用宏观“套取”策略进行异或,使用矩形套索将Xor_Seq[j]的细节整体“抠出”“套取”在Ori_Seq[i]的细节部分,并向左上各作10像素位平移。(以防细节完全相同情况出现异或无效),将二者异或以产生加密图像Cry_Seq[i]在相应位置宏块的像素值。当Xor_Seq[j]的细节存在多个时,按右下一左上逆序选用以增加图像不可理解度;Xor_Seq[j]细节矩形框大小超过Ori_Seq{[i]细节尺寸时,只截取左上相应大小矩形框;Xor_Seq[j]细节矩形框不足以覆盖Ori_ Seq[i]细节时,将Xor_Seq[j]细节块循环赋值填充达到相应大小;Xor_Seq[j]细节数量多于Ori_Seq[i]时,抛弃剩余细节;Xor_S eqDl细节数量少于Ori_Seq[i]时,循环使用Xor_Seq[j]细节。细节“套取”工作完毕后,加密图像Cry_Seq[i']剩余位置宏块的像素通过直接异或Ori_Seq[ii]和Xor_Seq[j]的对应位置获得,若Xor_Seq[j]在相应位置为4×4细粒度块,则不作异或处理(避免增加图像复杂度):,i+十,转步骤3); 6)只要Ori_Seq[i]或Xor_Seq[j]中的一个由于细节过于分散不便宏观“抠出”,即使用微观套取方式。按右下一左上逆序选择Xor_Seq[j]中的4×4细粒度宏块,按左上c一右下顺序异或在Ori_Seq[i]的4×4宏块上,若Xor_Seq [j]4×4宏块过多,丢弃剩余部分,若块数较少,则循环使用,生成Cry_Seq[i],i++.转步骤3); 7)帧间预测一律采用微观“套取”。将Xor_Seq[j]视为一个材料池,其中的宏块按照运动补偿分割尺寸的不同分为如下五组:A.I6×16、B 16×8或8>< 16、C.8×8、D.8 X4或4×8、E.4'7x4;Ori_Seq[i]中的运动补偿块同样按照此分割划人五个类中,各组仍按右下一左上的逆序分别异或,即Ori_SeqCi]中16×16的运动补偿分割只与Xor_Seq j]中的16 X16分割异或,Xor_Seq[j]各组材料过多丢弃,不足则循环使用,对于B组和D组中的分割块,异或时若出现二者尺寸颠倒的情况,将Xor_Seq[j]相应分割块顺序翻转900后使用,生成Cry_Seq[z],i++,转步骤3)。
帧异或视频加密算法的去异或(解密)过程与加密过程相反且类似,是一个由加密图像序列C ry_Seq[N]和异或图像序列Xor_Seq[n]再次异或恢复原始图像序列Ori_ Seq[N]的过程,不再展开。
二、加密算法实现细节
1、套取策略和分类方式
“套取”是对矩形图像块或宏块异或在原始图像帧上这一工作的形象说明。其工作的原则是:异或图像块(宏块)只是用于降低原始图像可理解度的“材料”,其可理解性不需保持,因而隐藏其宏观图像的“套取”规则更合适;同时,“套取”规则应当保证叠加图像的编码性能相比原图像序列没有明显下降,即保证压缩率不变。
帧异或视频加密算法的“套取”策略和宏块分类方式都是公开确定的,这满足安全密码协议设计的要求,同时也是保证方案正常运行的必要条件,只有解码器端做出与编码器端相同的“套取”判断并将块或宏块以相同方式分类,才能保证去异或操作为异或操作的逆操作。
2、异或图像块使用方式
异或图像的相应块(宏块)是循环使用的,并且无论在宏观“套取’’或微观“套取”过程中,都是按从右下到左上逆序取用的。
这是因为在宏观套取中,不能要求异或图像的细节尺寸大小和数量与原始图像非常近似,因而对异或图像的每个细节,应当按原始图像细节的尺寸大小进行裁剪或拼接(以对原始图像细节达到最小覆盖为标准),逆序使用异或细节块能进一步降低视觉可理解性;同时,如果异或细节比需要的更多,则将多余细节块丢弃,若异或细节块过少(不足以将全部原始图像细节覆盖),则循环使用。
微观套取中只涉及相应尺寸宏块材料的“数量问题”,当异或宏块数量不够时同样需循环使用。需要注意的是在帧间预测模式中,由于尺寸分割方式更多,须将这些“材料”按五种不同“规格”分类,分别逆序循环使用。
3、压缩率保证
一个I帧及其后的一组P、B帧序列表示一组时空相关性较强的视频序列,而P、B帧的使用可以有效降低码率。不难想象,用于异或的相应异或帧组也必须是以一个I帧打头的一组P、B帧序列,中间的P、B帧序列在叠加后具体帧间编码使用情况可以根据叠加帧的相关性重新确定。
1)帧间预测
通过异或叠加在原始帧上的图像同样是有意义的连续视频运动图像,因而运动残差、运动矢量描述和MV预测在减小叠加图像码率方面的处理就仍然是有效的。帧异或视频加密方案只需保证原本使用帧间预测的帧仍适用帧间预测,但具体预测方式可能发生变化。
H. 264的帧间预测较帧内情况稍为复杂,主要原因是其树状结构的运动补偿分割,只能采取微观套取方式:将异或图像视为一个材料池,运动补偿按照分割尺寸的不同分为如下五组:A 16×16、B.16×8和8X16、C 8×8、D.8×4和4×8、E.4×4;而后将原始图像中的运动补偿块同样按照此分割划入五个类中分别异或,即原图像中16×16的运动补偿分割只与异或帧中的16×16分割异或;对于B组和D组中的分割块,取用时若出现尺寸颠倒的情况,将异或帧相应分割块顺序翻转90°后使用。
2)帧内预测
对于帧内预测而言,其亮度预测类型分4×4和16×16两种。叠加图像和原始图像的相同位置宏块可以选择相同尺寸分割中不同的模式进行预测,这种选择仅改变编码数值但不改变码率。帧内编码的图像帧通常是细节较多较复杂的独立图像,图像的不规则叠加会导致均匀渐变色块大小的成倍减少,这对码率的影响是比较明显的。在宏观套取中并不能保证异或图像中细节位置总是与原图像中的细节位置接近,故此时应将异或图像细节平移“套取”在原始图像细节附近。
小知识之H.264
H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。