基于H.264的帧异或视频加密算法,满足了视频实时通信时的加密要求,帧异或加密算法的基本思路是将密钥决定的另一帧图像异或在原始图像帧上,对视觉重叠图像进行精心处理使其不明显降低H.264视频编码效率,在保持视频流能够正常解码的同时使非授权的图像理解变得不可行。

帧异或视频加密算法过程

输入:待加密原始图像序列Ori_Seq[N];由密钥种子k生成的流密钥Key_Str[t];滑动窗口大小为2w

输出:加密后的图像序列Cry_Seq[N]

寄存器说明:i,j,t分别用于标记当前操作的原始图像帧,异或图像帧和流密钥比特位;

1)从原始图像序列中取出下一组以I帧开始的待加密原始图像帧组,记为Ori_Seq[x]至Ori_Seq[y],i=x,转步骤2);

2)根据滑动窗口和流密钥确定一个以I帧开始的时空相关性较强的异或图像帧组,具体操作为:

根据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)若i≤y,按序取出原始图像帧组中的一帧图像Ori_Seq[i],根据Key_Str[t]至Key_Str[t+log2m-n]的[log2m-n ]bit流密钥定位Xor_Seq[m]至Xor_Seq[n]中的一个异或图像帧Xor_Seq[j],转步骤4)将Ori_Seq[i]与Xor_Seq[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]在相应位置宏块的像素值。

6)只要Ori_Seq[i]或Xor_Seq[j]中的一个由于细节过于分散不便宏观“抠出”,即使用微观套取方式。按右下—左上逆序选择Xor_Seq[j]中的4×4细粒度宏块,按左上—右下顺序异或在Ori_Seq[i]的4×4宏块上,若Xor_Seq[j]4×4宏块过多,丢弃剩余部分,若块数较少,则循环使用,生成Cry_Seq[i],i++,转步骤3);

7)帧间预测一律采用微观“套取”。其中的宏块按照运动补偿分割尺寸的不同分为如下五组:

浅析帧异或视频加密算法的过程

Ori_Seq[i]中的运动补偿块同样按照此分割划入五个类中,各组仍按右下—左上的逆序分别异或,即Ori_Seq[i]中16×16的运动补偿分割只与Xor_Seq[j]中的16×16分割异或,Xor_Seq[j]各组材料过多丢弃,不足则循环使用,对于B组和D组中的分割块,异或时若出现二者尺寸颠倒的情况,将Xor_Seq[j]相应分割块顺序翻转90°后使用,生成Cry_Seq[i],i++,转步骤3)。

帧异或视频加密算法的去异或(解密)过程与加密过程相反且类似,是一个由加密图像序列Cry_Seq[N]和异或图像序列Xor_Seq[n]再次异或恢复原始图像序列Ori_Seq[N]的过程,不再展开。