APP下载

一种基于H.265的高效选择性加密算法

2019-07-05赵春晖

沈阳大学学报(自然科学版) 2019年3期
关键词:后缀加密算法残差

赵春晖, 高 阳

(哈尔滨工程大学 信息与通信工程学院, 黑龙江 哈尔滨 150001)

H.265,又称高效视频编码(high efficiency video coding, HEVC)[1],是最新的视频编码标准,相比它的前身H.264/AVC[2],H.265在相同视频质量的技术上可以提供2倍的数据压缩率,或是以同样的比特率大幅提高视频质量.H.265还支持超高清分辨率的视频.鉴于此,越来越多的多媒体视频应用或系统采用H.265作为其视频编码解码的标准.

信息爆炸的时代,互联网技术日新月异,视频作为重要的信息载体与媒介,广泛存在于社会生活的每一个角落,在视频的用途越来越广泛的同时,视频信息的隐私性与安全性也越来越受人重视,视频加密技术应运而生.视频加密算法可以分为全部加密算法与选择性加密算法[3].全部加密算法即将视频文件看作数据,使用传统加密算法,如高级加密标准(advanced encryption standard,AES)[4]加密完整的视频流.这种算法计算数据量大,耗时长,且完全不考虑视频格式,加密完毕后无法正常播放,必须设计专门的解码器.选择性加密算法则是在保证视频格式规范的同时,通过对视频数据中的某些对视频质量敏感的语法元素进行加密来保证安全性,目前已逐渐成为视频加密算法的主流研究方向.

对H.265的视频比特流而言,为保证符合码流兼容性,并非所有语法元素都能被加密.我们必须选择那些对码流兼容性没有影响的元素进行加密[5].H.265编码过程的最后一步是熵编码,它利用统计特性对数据进行无损压缩,即用几个比特表示出现频率高的数据,更长的比特表示出现频率低的数据.在熵编码过程中,H.265使用的是基于上下文的自适应二进制算术编码(context based adaptive binary arithmetic coding, CABAC)框架.

绝大多数的H.265选择性加密算法都是通过研究H.265的编码框架,对H.265编码比特流的部分语法元素进行加密.Z.Shahid和W.Puech使用AES算法加密了CABAC码流中的量化参数变化量的截断莱斯码[6],对兼容性造成一定影响.G.Van Wallendael加密了运动矢量残差的符号、残差系数的符号、运动矢量预测候选的索引和运动矢量索引[7],可以达到较好的视觉加密效果.A.I.Sallam等人使用RC6算法对编码过程中的运动矢量差和DCT系数的符号位及幅值残差后缀进行了加密[8],比大多数AES算法更快.杨明宣对编码后的H.265格式的视频中的帧内预测模式、运动矢量差和量化参数变化量的符号位和幅值后缀进行了AES加密[9],计算复杂度低且加密效果好.

本文提出了一种低计算复杂度、码流兼容且高效的H.265选择性加密算法,使用RC6-CFB算法对量化参数变化量的符号位及残差后缀、MVD的符号位和绝对值后缀以及DCT系数符号位和幅值绝对值残差后缀进行加密,保证了对帧内和帧间的编码过程的加密,且符号位本身的取值范围为{0,1}比特,相当于省略了二值化步骤,量化参数的残差后缀和DCT系数幅值残差后缀使用0阶指数哥伦布编码进行二值化,MVD绝对值后缀使用1阶指数哥伦布编码进行二值化,易于加密且保证了码流兼容性.使用RC6算法的CFB模式,可以保证数据量不变,从而使压缩率不变,且与AES算法相比,提高了加密速度.

1 加密算法

根据加密和解密过程中使用的密钥是否相同,加密算法可分为对称加密算法(symmetric cipher)和非对称加密算法(asymmetric cipher).对称加密算法计算复杂度低,加密速度快,且加密安全性也很好,能够抵抗多种攻击,因此在信息安全领域得到了广泛应用.对称加密算法根据对待加密数据的处理手段不同,又分为分组密码(block cipher)和流密码(stream cipher).其中的分组密码将明文分为固定长度的比特组,称为“块”,对每个块通过对称密钥进行固定的加密变换.确定性算法分组密码是将明文消息编码表示后的数字序列划分成固定大小的组后,在密钥的控制下对各组分别进行加密变换,从而获得输出数字序列.目前常用的分组密码有AES、数据加密标准(data encryption standard, DES)[10]、RC6等.分组密码由于其分块加密的特性,特别适用于大容量数据加密.

1.1 AES加密算法

高级加密标准AES,是在2001年由美国国家标准与技术研究所(NIST)提出的电子数据加密规范.

AES算法作为Rijndael算法的一个变体,其明文分组块固定为128位,密钥长度可以是128、192或256位.密钥长度决定加密轮数,128位密钥的加密轮数为10轮,192位密钥的加密轮数为12轮,256位密钥的加密轮数为14轮[11].随着加密轮数的增大,加密强度增强,安全性提高,计算的复杂度亦提高.

图1为128位AES算法的加密流程框图.首先将待加密的明文按每128位分成明文块,并将每个明文块按列主序组成一个 4×4 的矩阵;每轮加密包括4个步骤:字节替换(sub bytes)、行左移(shift rows) 、列混合(mix columns)以及轮密钥加(add round key),其中第一轮只进行轮密钥加,最后一轮没有列混合.每一轮加密得到的结果,称为状态(state).

图1 128位AES算法加密流程框图Fig.1 Flow diagram of 128-bit AES encryption algorithm

1.2 RC6加密算法

RC6加密算法是1998年作为AES标准的候选算法提交给NIST的一种分组密码[12].RC6的加密轮数、块大小、密钥大小均可修改,完整定义为RC6-w/r/b,其中w为字长,r为加密轮数,b为密钥字节长度.对于128位加密算法,定义为RC6-32/20/128,即使用32位加密块,每块加密20轮,加密密钥为128位.

RC6继承了RC5的循环移位思想,同时将AES的要求结合,使用了4个32位寄存器对128比特的字块进行加密.由于不需使用S盒,故计算复杂度比AES算法低,速度更快.长度为b的加密密钥被分为子密钥并加载到数组S[0,…,2r+3]中.明文存入A,B,C,D四个寄存器中.加密过程的伪代码如下:

Input(A,B,C,D)

B=B+S[0]D=D+S[1]

fori=1 tordo

t=(B×2B+1)<<

u=(D×2D+1)<<

A=(A+t)<<

C=(C+u)<<

(A,B,C,D)=(B,C,D,A)

A=A+S[2i+2]

C=C+S[2i+3]

Output(A,B,C,D)

其中输入的A,B,C,D为字长为w的明文段,S为子密钥,r为加密轮数,输出的A,B,C,D为加密后数据.

2 加密语法元素选择

2.1CABAC

CABAC作为H.265编码标准中的熵编码方式[13],编码过程分为3部分:二值化、上下文建模、二进制算术编码,如图2所示.

熵编码器首先将输入的非二值化的语法元素进行二值化,得到比特流.比特流按照H.265的规则,选择常规编码模式或旁路编码模式进行算数编码.由于二进制算术编码本身对错误敏感,加密后很可能导致码流不兼容,故选择二值化后的比特流进行加密.又由于常规编码模式下需要进行上下文模型的更新,若对采取常规编码的语法元素加密,会进一步影响后续编码,从而影响压缩性能,故本算法仅对旁路编码模式的语法元素进行加密.表1为二值化编码方式的示例[14].

图2 CABAC编码框图Fig.2 CABAC encoding diagram

序号一元码截断一元码cmax=7截断莱斯码cmax=7k阶指数哥伦布码k=0定长编码cmax=7000000000110100101000121101101000110103111011101010010001141111011110110000101100511111011111011010011010161111110111111011100001111107111111101111111111010001000111

H.265使用的二值化方式一共有5种:一元码、截断一元码、截断莱斯码、k阶指数哥伦布码和定长编码.一元码和截断一元码对每个输入值的编码长度不同,故不能达到加密前后比特率相同的条件[15].定长编码长度固定,故只要加密后的值仍在码表范围内,就可保证兼容性.k阶指数哥伦布码虽然为变长编码,二值化后的码字格式为“前缀+‘1’+后缀”,其中后缀部分长度固定,故也可进行加密,同样可以保证兼容性和压缩率不变.综合以上几点分析,最终选择了帧内预测模式、DCT系数符号位和幅值绝对值残差后缀以及MVD的符号位和绝对值后缀作为加密语法元素.图3为加密算法的流程图.

2.2 语法元素加密步骤

因为上下文模型的重置在片内实现,所以本文提出的算法在片的熵编码阶段独立完成.每个语法元素的具体加密步骤如下.

(1) 量化参数

① 量化参数符号位.由于符号位取值范围为{0,1},不需要特别进行二值化,故将符号位比特提取出来后写为字符串,直接用RC6算法进行加密,把符号位用密文替代,进入旁路编码.

② 量化参数变化量残差后缀.量化系数绝对值后缀使用0阶指数哥伦布编码进行二值化,故将其后缀比特及长度提取出来,将后缀内容写为字符串,使用RC6进行加密,加密完毕后按比特长度替换原内容,进入旁路编码.

(2) MVD

① MVD符号位.与量化系数符号位加密步骤相同.

② MVD幅值绝对值后缀.MVD的幅值绝对值的后缀部分使用1阶指数哥伦布编码进行二值化.对该部分二值化后的码字后缀进行RC6加密,按比特长度替代后进入旁路编码.

图3 H.265选择性RC6加密算法流程图Fig.3 RC6 H.265 partial encryption flow diagram

(3) DCT系数

① DCT系数符号位.与DCT系数符号位加密步骤相同.

② DCT幅值绝对值残差后缀.DCT的幅值绝对值残差的后缀部分使用0阶指数哥伦布编码进行二值化.对该部分二值化后的码字后缀进行RC6加密,按比特长度替代后进入旁路编码.

3 实验分析

本算法选取了4个不同分辨率和帧率的YUV视频序列进行验证,如表2所示.

表2 YUV视频序列Table 2 YUV video sequences

本文的实验平台为Microsoft Visual Studio 2017集成开发环境上运行的HM16.14标准测试模型,编码档次为基本(main profile),采用的配置文件为encoder_lowdelay_main.cfg.测试序列的实验平台的内存为4.00GB,CPU为Inter(R) Core(TM) i7-6560U CPU@2.20GHz.

本文对4个标准测试序列的加密效果从视觉效果、峰值信噪比(peak signal-to-noise ratio,PSNR)和结构相似性(structural similarity index,SSIM)、直方图、RC6算法的破解性及加密效率进行分析,验证算法的兼容性、安全性和实时性.

3.1 视觉效果

四个视频序列经加密均满足H.265的视频编解码标准,可以由标准解码器正常解码播放,满足了兼容性,其视觉效果如图4所示.图4a~图4d的上排图像分别为BasketballDrill,Soccer,Foreman,Bus的原始视频图像的第10帧,下排图像为经过加密后标准解码器播放出来的第10帧图像.从图中可以看出,解码后的视频内容基本无法辨认,视觉加密效果良好.

3.2 PSNR与SSIM

PSNR是最常用的图像质量客观评价标准,PSNR值越小,视频质量越差,加密算法安全性越好.其公式见式(1).

(1)

其中:I表示原始视频图像;I′表示加密后视频图像;M,N表示图像尺寸;I(i,j)表示原始图像中任意一点,max(I2)表示信号的峰值,取对数,可将PSNR值换算成标准单位(dB).

SSIM是一种基于人眼视觉特性(human visual system,HVS)的图像质量客观评价准则.SSIM提供了一种基于图像结构失真的方法来评价图像质量,综合考虑了亮度、对比度和结构3个因素,简化后的公式见式(2).

(2)

其中:x,y为原始视频图像和待测视频图像的子图像;C1,C2为常数;μ和σ分别表示均值和方差.SSIM系数通常可以表征两幅图像的主观视觉相似度,取值范围是[-1,1],相似度越高的两幅图像的系数越接近于1,否则其值越小.

表3为4个测试序列加密前后的PSNR均值和SSIM均值,从中可以看出,加密后的PSNR均值在10 dB左右,SSIM均值在0.3左右,加密效果良好.

图4 测试序列加密前后第10帧图像Fig.4 Frame #10 of test sequences before and after encryption(a)—BasketballDrill; (b) Soccer; (c)—Foreman; (d)—Bus.

表3 测试序列加密前后PSNR均值与SSIM均值

3.3 直方图

视频帧直方图是视频帧内像素在每个颜色强度级别上的分布的图形表示.原始视频帧的灰度直方图和加密视频帧的灰度直方图是不同的[16].图5为Bus原始与加密视频序列第10帧的RGB分量的灰度直方图,左侧为原始序列,右侧为加密序列.从图5可以看出,RGB分量的直方图均存在很大差异,说明加密效果良好.

3.4 破解性分析

RC6算法作为AES候选算法的一种,它的密钥为128位,密钥空间为2128,这就保证了在现有技术下,RC6不会被暴力攻击破解.而本文算法还可以对语法元素空间进行穷举,各符号位的穷举空间为2,量化参数变化量绝对值残差穷举空间为2k+1,MVD幅值绝对值残差穷举空间为2l+1,其中k为量化参数变化量后缀的长度,l为MVD残差后缀的长度,此处未考虑DCT的符号位和量化参数的符号位以便计算.对于一个W×H分辨率的视频,假设有m个帧内编码单元和n个帧间编码单元(PU尺寸为32×32),则一帧图像的穷举空间的计算公式为

其中k,l,m,n均大于0,故S的取值范围应大于2WH/1024,对于一个352×288的视频序列,它的每一帧的穷举空间S≥299,也很难通过穷举将加密语法元素破解.

3.5 加密效率

表3为4个视频序列每一帧的原始编码时间和使用本算法后的加密编码时间,并计算得出了加密时间与编码时间的比值(encryption compression time ratio, ECTR).从中可以看出,视频序列的分辨率越高,加密数据量越大,时间越长,而且由于HM16.14作为一个非商用的参考软件,本身的编码速度就不高,所以加密编码时间长.但算法的ECTR在2%~3%,说明加密时间占比很低,基本满足了实时性的要求.

表3 测试序列每帧原始耗时、加密耗时与ECTR

图5 Bus第10帧加密前后RGB直方图Fig.5 The RGB histogram of the tenth frame of the Bus video before and after encryption(a)—Bus第10帧R分量直方图; (b)—Bus 第10帧G分量直方图; (c)—Bus 第10帧B分量直方图.

4 结 论

本文提出一种基于H.265编码的高效选择性加密算法,该算法在编码流程的熵编码片内实现,通过RC6算法加密量化变换系数的符号位和幅值绝对值后缀、MVD的符号位与幅值绝对值残差以及DCT系数的符号位和幅值绝对值残差后缀,在保证了码流兼容性的前提下,实现了压缩率不变且近实时的效果.通过对4个分辨率不同YUV测试序列进行加密实验,证明算法加密的效果良好,加密视频序列的PSNR值与SSIM值下降明显,加密后的PSNR值在10左右,SSIM值在0.3左右,直方图差异明显,RC6算法的安全性可靠,且计算复杂度较低,加密速度快,进一步满足了视频加密的实时性需求.

猜你喜欢

后缀加密算法残差
基于双向GRU与残差拟合的车辆跟驰建模
基于DES加密算法的改进研究
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
基于整数矩阵乘法的图像加密算法
混沌参数调制下RSA数据加密算法研究
倍增法之后缀数组解决重复子串的问题
两种方法实现非常规文本替换
基于小波变换和混沌映射的图像加密算法
说“迪烈子”——关于辽金元时期族名后缀问题