随着可伸缩视频编码SVC( Scalable Video Coding)的普及,针对可伸缩视频的安全问题也越来越受到重视。目前大部分加密方案都是针对H.264/AVC编码标准来设计的。为此我们分析SVC新采用的技术,并率先提出了一种针对其特点的新的分层加密方案。

一、H.264 SVC的新特性

1、空间可分级

在H.264/AVC的SVC扩展中,空间可伸缩性采用的是分层的方法,通过金字塔式的空间分解来生成多个不同空间分辨率的信号。每个空间分辨率都是一个新的空间编码层。空间多分辨率信号的产生是通过下采样滤波器来实现的,图1所示为一个两层空间分级的SVC编码结构。

视频分层加密算法

H264/SVC在空间分层结构的基础上,对每一层分别实现时间可分级和质量可分级。每一层内的编码都使用了H264/AVC中帧内和帧间预测编码技术,而相邻层之间使用了SVC独有的层间预测编码技术。由于低层是由高层通过下采样得到的,因此在相同的分辨率情况下,每一个高层帧都有与之相对应的低层帧,两者之间存在着显而易见的相关性,即层间冗余。显然,为了获得更高的压缩效率,有必要通过各种层间预测技术来消除层间冗余,这也是空间可伸缩性技术的关键所在。设计层间预测算法的目的是尽可能利用基本层的信息提高增强层的编码效率。

2、质量可分级

在每一个空间层中,SVC将利用MGS编码来实现质量可分级( SNR Scalability)o MGS将压缩效率与漂移效应中,通过引入关键帧达到较好的效果。关键帧即时域最基本层的图像(图2(d)的两个条纹标识的帧为关键帧)。这些关键帧的重构是通过基本层实现的。因此增强层帧的丢弃造成的漂移仅仅只能作用在当前关键帧到下一个关键帧之间,实现了对漂移效应限制。图2描述了在质量可分级时可能的几种选择。

视频分层加密算法

(a)基础层预测

所有的预测全都在基本层完成。这样做的明显缺陷就是编码的效率低下。因为所有的参考帧都是基本层,所以参考帧品质差,那么残差也会大,进而编码出的比特就会多。

(b)增强层预测

克服了(a)的缺点,所有参考帧都用最“清楚”的图像,这样编码效率最好。但这种结构仍然有问题,一旦解码端只收到基本层,而增强层都丢失了。那么就会造成解码出问题,并且这种问题会一直传播下去直到下一个IDR,即漂移效应。

(c)双循环预测

通过分析想到用这种结构来克服(a)和(b)的问题。但这样的结构仍然会存在漂移效应。

(d)关键帧预测

SVC标准使用的方法,实际是一种(a)和(b)的折中方案。关键帧就是时间层id为O的图像(图中用条纹标明)o对关键帧而言,它们将采用基本层来实现预测,而非关键帧,则全部使用最“清楚”的图像作为参考帧。

二、针对SVC新特性实现的分层加密方案

针对SVC出现的新特性,目前还没有出现相关的加密方案,而本文将利用空间可分级中的层间预测以及质量可分级这些新的技术特征来设计一个新的分层加密方案。本方案的分层加密共分三层,保密性依次加强。加密的对象是一个二层空间分级编码视频,为了在解码的过程中不产生混乱,在对质量可分级以及层间预测进行加密的时候采用不同的密钥K、K'。

1、第一层加密:层间预测运动向量

为了提高编码效率,H.264/AVC采用运动估计的技术,在编码一个宏块的时候,首先要获得运动向量MV,MV是当前帧中需要编码的宏块,与参考帧中和该宏块最相似的宏块之间的位移矢量,编码过程中获得MV之后,由当前宏块与参考宏块做相减得到残差,然后MV与残差将被送往码流进行传输。这种预测方式在AVC中称为帧间预测。SVC相对AVC做了大幅的改动,由于可伸缩视频在编码的过程中将分成多个空间层,而空间层中的低层是由高层通过下采样得到的,两者具有显而易见的相关性,而且冗余大部分时候比帧间冗余要小很多,因此在大部分的预测过程中,SVC采用相同帧中较低的空间层通过上采样得到的重建图像作为较高的空间层的参考图像,这种方式称为层间预测。 SVC提供三种层间预测的方法:层间帧内预测、层间宏块模式和运动参数预测、层间残差预测。针对AVC的加密方案,所挑选的加密信息均为帧间预测中的信息,而由上面分析可知,SVC中的大部分预测是在层间进行的,因此,本方案的第一层加密,是针对层间预测中的运动向量来进行的。加密操作如图3所示。在修改了层间的参考图像的运动向量之后,上层的残差也会有相应的变化,因而导致图像的编码是不准确的。

视频分层加密算法

加密原理就是在解码的时候采用错误的预测值,所呈现出来的结果将会是大部分宏块的偏移。由于SVC的层间预测有三种方式,不是每个宏块都会采用层间运动向量预测模式,因此,每帧中采用该预测模式的宏块数量是不确定的,所以我们将采用流加密的方式,这样的加密方式会比较灵活,取密钥K中的一位与宏块的运动矢量的符号位进行异或,下文中P为符号位:

视频分层加密算法

2、第二层加密:MGS关键帧

在SVC质量可分级的MGS模式中,基础层的关键帧会作为增强层帧编码时候的参考帧,而基础层的非关键帧又是使用增强层的帧作为参考帧,因此改变关键帧的重建帧将使得增强层所有的帧以及基层非关键帧受到累加化的影响。H.264中规定,宏块是由16 x16像素组成的,而宏块中的每个像素都由一个亮度值和两个色度值来表征,亮度值表征像素的灰度,色度值表征像素的颜色,宏块中的亮块和色块分别是由块中像素的亮度值和色度值组成,如果对关键帧的重建帧中宏块的亮块和色块进行改变,则增强层中的所有帧以及基本层的非关键帧都会受到很大影响,致使视频质量大幅下降。由于宏块大小固定为16 x16像素,所以亮块与色块的数据量也是固定的,因此本方案第二层加密采用的是AES分块加密技术对重建帧中宏块的亮块和色块进行加密,这样可以保证加密过程迅速完成并拥有很高的安全性。以下为实现代码。

K' = getKey();

UInt size;

pcFrame - > getFuIIPeIYuvBuffer ( ) - > getYuvBufferCtrl ( ). getSize( size) ;

slze = size/8; 11 8 data constitute a AES encrytion block Xpel temp = temp' = new Xpel[8] ;

for(int i = 0; i < size; i++) { temp [1.8] = pcFrame - > getFuIIPeIYuvBuffer( )

- > getBuffer( ) [i* 8. . (i+l) * 8 -1] ; //get 8 data from YUV array

AES_Encrpt( temp [ 1. . 8 ] , K', temp' [1. . 8 ] ) ; //AES encryp-tion

pcFrame - > getFulIPeIYuvBuffer( ) - > getBuffer( ) [i* 8. . ( i + 1) *8 -1] = temp'[1..8];

}

3、第三层加密:层间预测运动向量以及MGS关键帧

在SVC的编码流程中,视频首先会被分成若干个空间层,空间层之间彼此采用层间预测的模式,而每个空间层中,会单独进行质量可分级,采用MGS的模式,因此第三级的方案将会利用层间预测的运动向量加密以及MGS中的关键帧加密同时进行,兼顾了层间与层内的保密性,并且可以互相叠加,加密级别更高,安全性更显著。图4为本方案的分层加密结构图。

视频分层加密算法

小知识之SVC

SVC是Switching Virtual Circuit的缩写,意思是交换虚拟电路。