针对现有视频加密算法的不足,我们提出了一种基于H.264的帧异或视频加密算法,该加密算法通过与保密的异或图像异或产生低可理解度的叠加图像达到加密效果,满足了视频实时通信时的加密要求,并且能够作为通用插件植入现有的H.264编解码器中。
一、基于H.264的帧异或视频加密算法
1、加密算法思想
加密算法的基本思路是将密钥决定的另一帧图像异或在原始图像帧上,对视觉重叠图像进行精心处理使其不明显降低H.264视频编码效率,在保持视频流能够正常解码的同时使非授权的图像理解变得不可行。
以图1为例说明这一加密原理。图像帧(a)是重叠图像,它虽然并不是近似噪声图像,但在安全要求并不十分高的网络视频应用场合,这样令人烦躁的图像已经达到了足够的加密效果。事实上它是由图像(b)和(b)反转180°并向左下平移后的图像帧(c)叠加产生的。遵循密码协议的设计要求,假设异或平移操作是公开的,但图像(c)需要合法密钥才能获得,则合法用户可以容易地将图像帧(a)与(c)二次异或还原原始图像帧(b),非法用户则只能看到可理解性极低的叠加图像(a)。从密码破译角度看,不知道(c)的情况下从(a)恢复出(b)在计算上是困难的,并且必须包含人工的视觉理解过程。
帧异或视频加密算法在整个视频应用的过程如图2所示。
2、加密算法过程
首先以伪代码形式说明帧异或视频加密算法的异或(加密)过程。
帧异或视频加密算法
输入:待加密原始图像序列Ori_Seq[N];由密钥种子k生成的流密钥Key_Str[t];滑动窗口大小为2w
输出:加密后的图像序列Cry_Seq[N]
寄存器说明:i,j,k分别用于标记当前操作的原始图像帧,异或图像帧和流密钥比特位;
1)从原始图像序列中取出下一组以I帧开始的待加密原始图像帧组(I帧后均为时空相关性较强的P、B帧),记为Ori_Seq[r]至Ori_Seq[y],i-x,转步骤2);
2)根据滑动窗口和流密钥确定一个以I帧开始的时空相关性较强的异或图像帧组,具体操作为t根据Key_Str[t]至Key_Str[t十w-1]的wbit流密钥定位Ori_Seq[x]之前的2w个巳解码图像帧(滑动窗口)中的一个异或图像帧,找到距其最近的I帧Xor_Seq[m]及其后的P、B帧,记为Xor_Seq[m]至Xor_Seq[n],t+-w,转步骤3);
3)若f≤y,按序取出原始图像帧组中的一帧图像Ori_Seq[i],根据Key_Str[t]至Key_Str[t+[log2m-n]-1的[log2m-n]bit流密钥定位Xor_Seq[m]至Xor_Seq[n]中的一个异或图像帧Xor_Seq[j],转步骤4)将ori_Seq[i]与XorSeq[j]异或;否则转步骤1;
4)若ori_Seq[i]采用帧内预测,首先检查Ori_Seq[i]和Xor_Seq[j]是否均适用细节集中模型(人脸或细粒度近景一粗粒度背景的典型图像),若是,转步骤5),否则转步骤6);若Ori_Seq[i]采用帧间预测,转步骤7);
5)若均为细节集中模型,采用宏观“套取”策略进行异或,使用矩形套索将Xor_Seq[j]的细节整体“抠出”“套取”在Ori_ Seq[i]的细节部分,并向左上各作10像素位平移(以防细节完全相同情况出现异或无效),将二者异或以产生加密图像Cry_Seq[i]在相应位置宏块的像素值。当Xor_Seq[j]的细节存在多个时,按右下—左上逆序选用以增加图像不可理解度,Xor_SeqDl细节矩形框大小超过Ori_Seq[i]细节尺寸时,只截取左上相应大小矩形框;Xor_Scq[j]细节矩形框不足以覆盖Ori_Seq[i]细节时,将Xor_Seq[j]细节块循环赋值填充达到相应大小;Xor_Seq[j]细节数量多于Ori_Seq[i]时,抛弃剩余细节,ori_Seq[j]细节数量少于Ori_Seq[i]时,循环使用Xor_Scq[j]细节。细节“套取”工作完毕后,加密图像Cry_Seq[i]剩余位置宏块的像素通过直接异或Ori_Seq[i]和Xor_Seq[j]的对应位置获得,若Xor_Seq[j]在相应位置为4×4细粒度块,则不作异或处理(避免增加图像复杂度),i++,转步骤3);
6)只要Ori_Scq[i]或Xor_Seq[j]中的一个由于细节过于分散不便宏观“抠出”,即使用微观套取方式。按右下一左上逆序选择Xor_Seq[j]中的4×4细粒度宏块,按左上一右下顺序异或在ori_Seq[i]的4X4宏块上,若Xor_Seq[j]4×4宏块过多,丢弃剩余部分,若块数较少,则循环使用,生成Cry_Seq[i],i++,转步骤3);
7)帧间预测一律采用微观“套取”。将Xor_ScqFj]视为一个材料池,其中的宏块按照运动补偿分割尺寸的不同分为如下五组:八16×16、Bb 16×8或8×16、C.8×8、D.8×4或4X8、E 4X4;Ori_Seq[i]中的运动补偿块同样按照此分割划人五个类中,各组仍按右下—左上的逆序分别异或,即Ori_Seq[i]中16×16的运动补偿分割只与Xor_Seq[i]中的16×16分割异或,Xor_Seq[j]各组材料过多丢弃,不足则循环使用,对于B组和D组中的分割块,异或时若出现二者尺寸颠倒的情况,将Xor_Seq[j]相应分割块顺序翻转900后使用,生成Cry_Seq[i],i++,转步骤3)。
帧异或视频加密算法的去异或(解密)过程与加密过程相反且类似,是一个由加密图像序列Cry_Seq[N]和异或图像序列Xor_Seq[n]再次异或恢复原始图像序列Ori_Seq[N]的过程,不再展开。
二、基于H.264的帧异或视频加密算法实现细节
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的帧异或视频加密算法的实验结果及性能分析
为满足视频应用的要求,视频加密算法一般在安全性、实时性、压缩比及数据可操作性方面有一定要求。本文使用标准的foreman_qcif. yuv视频文件作为实验对象进行测试,H.264编解码器选用通用的JM86程序,原始图像、加密图像和解密图像分别如图3中(a)、(b)、(c)所示。
在安全性方面,该加密算法的安全性是由异或操作固有特性决定的。从实验结果看,加密图像(b)已经难以辨认原始图像轮廓,加密效果明显,解码后的宏块像素值并不完全等同于原始图像,将其与异或图像去异或生成的原始解密图像(c)会产生椒盐噪声和色彩失真,需经图像降噪和平滑处理输出最终图像(d)。
在数据可操作性方面,由于方案并未干预H.264编解码过程,加密后的图像序列可以在不解密的情况下直接进行定位暂停操作,在不解密情况下直接进行剪切、删除操作也是可行的。帧异或视频加密算法可作为独立通用插件固化在H.264编解码器的输入输出端,具有一般熵编码方案没有的优良可移植性。
在操作实时性方面,原始图像序列和加密图像序列对3帧示例视频序列的H.264编解码耗费时间分别如表1所示。方案只在编码时间上相对原始码流稍有延迟,考虑到网络应用编码一般为事先完成,少许延迟几乎不会对实际应用造成影响,而两者的解密时间非常接近;异或和去异或本身耗费的时间可以忽略不计,因此完全能够满足网络视频应用实时性要求。
在压缩比方面,示例加密序列为展现方案的最坏情况统一使用了微观“套取”方式,比较结果如表2所示。可见在最坏情况下,当前方案还是会导致一定的压缩比下降,但H.264编码压缩在此时仍是有效的,下一步的工作将考虑如何进一步减小方案对压缩率的影响。
综上所述,帧异或视频加密方案在安全性方面完全能够满足一般网络视频应用需求,是一种具有应用价值的改进视频加密方案。
小知识之H.264
H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一。H.264是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)的联合视频组(JVT:joint video team)开发的一个数字视频编码标准。该标准最早来自于ITU-T的称之为H.26L的项目的开发。H.26L这个名称虽然不太常见,但是一直被使用着。H.264是ITU-T以H.26x系列为名称命名的标准之一,AVC是ISO/IEC MPEG一方的称呼。