一种面向视频流的混合编码加密方法

文档序号:7862924阅读:790来源:国知局
专利名称:一种面向视频流的混合编码加密方法
技术领域
本发明是一种对视频数据进行混合编码加密的方法,其作用是在视频数据的采集应用中保证数据安全性的同时满足实时性的要求。属于视频数据安全领域。
背景技术
随着无线传感技术快速发展以及网络日益普及化,视频传输模式正在得到越来越广泛地应用。如何保证视频数据在这样的网络中不被别人窃取或篡改,如何保证视频传输的安全性成了亟待解决的问题。同时,智能业务的应用越来越广泛,对一些视频应用的实时性要求也越来越高,如视频会议,网络视频等。若采用传统的加密方法,在整个视频进行H. 264 (一种视频压缩标准)编码完成后进行数据加密,则计算复杂、处理时间长的特性不能满足实时性的要求,不具有广泛的应用前景。事实上,图像块在经过整数变换、量化后得到的系数能量大部分集中系数矩阵对角线的左上角,即少部分数据包含了大部分能量,因此, 考虑到H. 264视频编码结构的特殊性,我们提出仅对少量部分重要数据在编码过程中同时进行加密的方法,研究与实践表明该方法能够保证视频数据安全性的同时,满足视频应用对实时性的要求。

发明内容
技术问题本发明的目的是提出一种面向视频流的混合编码加密方法,使得在对视频数据进行H. 264编码的过程中增加加密的功能,实现两者的结合。这样既能保证视频数据的安全性,又能满足应用环境对实时性的要求。目前的加密方法一般没有考虑视频数据帧间的关联性,对数据全部加密,这样会带来较大的延迟。技术方案本发明的面向视频流的混合编码加密方法,该方法将加密算法嵌入在标准的图像压缩编码方法H. 264中,加密与编码同时进行,且仅加密部分低频数据,以满足视频流实时传输的要求;该方法中,首先对视频流按照H. 264编码方式进行帧内和帧间预测编码,然后对编码产生的部分低频数据进行加密,最终获得加密的编码数据,整个加解密算法运行在嵌入式系统上;其具体方法为I)将加密算法嵌入在H. 264编码模块中;2)加密算法采用一种高级加密方式AES的输出反馈模式;3)待加密的低频数据为编码后的起始帧中的直流差分系数,以及帧间预测帧、帧间双向预测帧中的预测块的直流差分系数;其中,起始帧为I帧,帧间预测帧为P帧,帧间双向预测帧为B帧;解密即为加密的逆过程,具体如下4)视频流解码时,按照帧的类型即I帧、P帧、B帧的不同,分别进行解密。基于H. 264的混合编码加密实现方法,采用的加密方法为AES加密算法的输出反馈模式OFB模式;AES明文数据块和密钥长度设定为128bit比特、192比特、256比特中得任意一个,令Nk= (4,6,8)表示三种密钥的长度,则AES作为密钥的比特流长度为32 XNk(Nk= (4, 6,8));令Nb= (4, 6,8)表示三种分组块的长度,即长为32XNb (Nb= (4, 6,8))的明文数据可进行加密,得到的密文长度仍然为32XNb ;AES加密过程中重复轮的数目用队表示,Nr=IO, 12,14为分别采用三种长度密钥运算时的重复轮数;定义输入有k比特的密钥K,n比特的初始向量IV以及r比特的明文分组块X1……xu(l彡r彡η),产生r比特密文数据块C1……Cu 是第j个输入块,Oj是第j个输出块,CIPHk(X)为密钥K对数据块χ进行加密的前向加密函数;
AES加密算法需包含多轮重复和变换,即密钥扩展、初始轮、重复轮、最终轮;重复的每一轮又包括字节变换、行移动、列混合、轮密钥加,然而最终轮中不包含列混合;OFB模式的加密过程为①IV— I1,对于KjS n,给定明文分组Xj ;②对于2彡j彡n,Oj^1 — Ij ;③对于I彡j彡n,CIPHk(Ij) — Oj, Oj最左侧的r比特一tj ;④对于I ( j彡n-1,—,导出r比特的密文分组Cj ;⑤对于最一个密文块,^ = P MSB {On)。最后一个明文块,可能是一个特殊的只含有u个比特的块,因此最后一个输出块中的u比特跟此明文块进行加密操作,余下的r-u比特将被丢弃。所述对视频数据进行加密是根据帧的类型对数据进行不同的加密处理;选择编码后的I帧中的8X8块直流差分系数,以及P帧、B帧宏块中块间块的直流差分系数作为视频加密的对象,即对经过整数变换、量化后得到的位于对角线左上角、且集中大部分能量的直流系数,也即编码后的亮度/色度的残差数据进行加密。解密过程也需要根据帧的类型进行不同处理;其中,对于I帧,使用AES算法份OFB模式对加密后的I帧中8X8块的直流差分系数进行解密处理;对于P帧和B帧,对加密后宏块中的帧间块的直流差分系数分别进行解密处理,通过输入的密文及密钥并通过密钥扩展获取各轮密钥,与扩展密钥进行轮密钥加变换,并进行相应的重复轮,重复的解密轮包括逆行变换、逆S盒变换、轮密钥加变换以及逆列变换;最后一个解密轮的顺序为逆行变换、逆S盒变换、轮密钥加变换;OFB模式的解密过程为IV— I1,对于I ( j彡n,对接收到的密文Cj进行计算对于2彡j彡n,O” — Ij ;③对于I彡j彡n,CIPHk(Ij) — Oj, Oj最左侧的r比特一t」; 对于I < j <4 5,得到χ」!⑤对于最一个明文块,if = 十MSzVv(。最后一个密文块,可能是一个特殊的只含有u个比特的块,因此最后一个输出块中的u比特和这个密文块进行解密操作,余下的r-u比特将被丢弃。所述的编码加密算法是运行在嵌入式系统S3C6410平台上,并采用通用的视频压缩编码软件框架FFMpeg+x264作为本系统的软件平台。有益效果采用AES的OFB模式对部分重要数据在H. 264编码过程中进行加密处理能够减少加密处理的数据量,满足实时性的要求,同时又能够保证视频数据的安全性,此外OFB模式还能够抵制密文比特错误而带来的错误传播。


图IH. 264编码标准的整体框架,图2 AES加密算法的加解密流程图,图3 AES OFB模式加解密流程图,
图4混合编码加密算法流程图,图5 S3C6410接口分布示意图,图6 ffmpeg编码原理流程图。
具体实施例方式视频加密的过程既需要保证视频传输的安全性,同时也要兼顾到获取视频数据的实时性和信道变化导致密文比特错误而带来的错误传播现象,本发明针对主流的视频压缩编码标准H. 264的特点及无线网络应用的要求,提出一种采用AES (高级加密标准)的OFB(输出反馈)模式对H. 264编码数据中的部分重要数据进行加密的实现方法。通过对现有的视频加密及当前视频数据应用环境的性能要求进行分析和比较,可以得出以下结论 I)当前视频应用对实时性的要求越来越高随着计算机技术和移动技术的快速发展,智能业务的应用越来越广泛,对一些视频应用的实时性要求也越来越高,如视频会议,网络视频等。若仍然采用以前较安全的加密算法(比如完全加密算法)在整个视频编码完成后进行数据加密,则计算复杂、处理时间长的特性不能满足当下对实时性的要求。因此,这种繁琐的加密的方法不可取,而只能选择少部分比较重要的视频数据进行加密。视频数据间具有相关性,加密了部分重要数据后具有相关性的数据也就不易破解,起到保护的作用,这样就能够达到了既满足视频传输实时性的要求,同时又保证视频数据安全性的目的。2)视频图像能量集中在少部分数据上由于图像中无论是在色度还是亮度上相邻像素间的变化都不会特别大,只有少部分的像素会出现突变,所以这个图像块在经过整数变换、量化后得到的系数能量大部分集中在对角线上。把图像块从时域变换到频域后,图像的能量大部分集中在低频部分,即低频系数包含了图像的重要信息系数矩阵对角线的左上角包含了图像的大部分信息,这部分系数在图像变换中的地位至关重要;而频域中高频区域的少部分系数包含了图像较少的能量,对图像清晰度的影响也较小。由于像素间强烈的相关性,越是远离DC系数的数据包含的能量就越少,因此较高频率的系数基本上趋于零或等于O。3)选取最少的加密数据达到最高的效果在H. 264编码标准中,I帧是独立编码的,而P帧和B帧的编解码都依赖于相应的I块。若只对I帧进行加密,因视频数据的相关性,特别是没有对那些P/B帧的I块进行加密,使得加密后的视频还能够看到视频内容,只是稍有些模糊。若结合第2点的分析,直接对DC系数进行加密的话,也能达到满意的加密效果,但是在数据压缩性能上的效果略显不足。此外,在H. 264中进行熵编码的数据是亮度/色度的残差数据,且这些残差数据经过了预测变换、量化操作。鉴于以上原因,本发明选择了编码后的I帧(帧内编码模式)中的DC差分系数和P帧(帧间预测编码模式)、B帧(帧间双向预测编码模式)中的I块DC差分系数作为视频加密的对象。这样做既能保证需要加密的数据尽量少,又能够保护视频数据,保证较好的安全性能。4) OFB加密模式的优越性AES数据加密标准要求需要加密的数据必须是分组的整数倍,也就是说,如果数据长度不是分组的整数倍,必须进行消息填充,这就使得需要加密的数据比实际数据多,增加了编解码的时延。而AES加密算法的OFB模式没有此要求,这种加密方式具有流密码特性,不需要对消息数据进行填充,能够实时运行,从而能够减小系统开销。并且,OFB的反馈是由本地移位寄存器产生的,密文中如果某块有一位发生了错误,不会影响IV即造成错误传播,因此使用AES加密算法的OFB模式对上述部分码流进行加密,能够在一定程度上抵御由于接收到的密文发生错误而产生的错误传播。AES加密包含很多轮的重复和变换,大致步骤如下密钥扩展(KeyExpansion)Jr始轮(Initial Round),重复轮(Rounds),最终轮(FinalRound)。重复的每一轮又包括字节变换(SubBytes)、行移动(ShiftRows)、列混合(MixCoIumns)、轮密钥加(AddRoundKey),但最终轮中是不包含列混合(MixColumns)的。AES OFB模式的加密过程为①IV— I1,对于I彡j彡n,给定明文分组Xj对于2彡j彡n,CV1 — Ij ;③对于I彡j彡n,CIPHk(Ij) — Oj, Oj最左侧的r比特一tj ;④对于— 导出r比特的密文分组Cj ;⑤对于最一个密文块, C = Pl MSBu{0)。最后一个明文块,可能是一个特殊的只含有u个比特的块,所以最后一个输出块中的u比特跟此明文块进行加密操作,而剩下来的r-u比特将被丢弃。AES加密算法的解密过程为首先获取输入的明文及密钥并通过密钥扩展获取各轮密钥,与扩展密钥进行轮密钥加变换,之后进行一系列的重复轮。重复的解密轮包括逆行变换、逆S盒变换、轮密钥加变换以及逆列变换;最后一个解密轮的顺序为逆行变换、逆S盒变换、轮密钥加变换。AES OFB模式的解密过程为IV — I1,对于I彡j彡η,对接收到的Cj进行计算;(D对于2彡j彡n,O” — Ij ;③对于I彡j彡n,CIPHk(Ij) — Oj, Oj最左侧的r比特一t」; 对于I彡j彡n-1, Cj tj -Ty,得到Xj !⑤对于最一个明文块,< = MSBn{()^。最后一个密文块,可能是一个特殊的只含有U个比特的块,所以最后一个输出块中的U比特和这个密文块进行解密操作,而输出块中多余的r-u比特就被丢弃了。本发明的一种基于H. 264的混合编码加密实现方法在软件流程上步骤为 (I)读取视频帧,进行编码H. 264采用的是基于4X4子块为单位的变换,同样在高精度扩展中采用整数8X8变换,然后对每个块分别进行预测,经过整数变换、量化后得到将被加密传输的明文数据。(2)获取加密对象对图像块进行编码、量化后,得到DC和AC系数,DC系数包含的是图像的大致信息,而AC系数包含的是图像的细节信息。H. 264中进行熵编码的是经过预测后的残差数据,选择I帧(帧内编码模式)中的DC差分系数和P帧(帧间预测编码模式)、B帧(帧间双向预测编码模式)中的I块DC差分系数作为视频加密的对象。(3)根据帧的类型进行加密处理得到将要加密的明文后,编码过程中需要判断即将加密的是哪种类型的帧。如果是I帧,对8 X 8块的DC差分系数使用AES加密算法的OFB模式进行加密;如果是P帧或者B帧,对宏块中Intra块的DC差分系数使用AES加密算法的OFB模式进行加密;加密之后进行Zig-zag扫描。AES OFB模式的加密过程为①IV— I1,对于KjS n,给定明文分组Xj对于2彡j彡n,CV1 — Ij ;③对于I彡j彡n,CIPHk(Ij) — Oj, Oj最左侧的r比特一tj ;④对于— 导出r比特的密文分组Cj ;⑤对于最一个密文块,< =P MSBtXOn)。最后一个明文块,可能是一个特殊的只含有u个比特的块,所以最后一个输出块中的u比特跟此明文块进行加密操作,而剩下来的r-u比特将被丢弃。本发明的一种基于H. 264的混合编码加密实现方法解密流程为(I)接收端接收的数据判断帧的类型,如果是I帧,使用AES算法份OFB模式对加密后的I帧中8X8块的DC差分系数进行解密处理;如果是P帧或者B帧,对加密后的宏块中Intra块的DC差分系数进行解密处理。(2)对解密后的数据进行H. 264解码处理,主要步骤为CAVLC/CABAC解码,逆变换,动态补偿,去方块滤波。 AES OFB模式的解密过程为IV — I1,对于I彡j彡η,对接收到的Cj进行计算;(D对于2彡j彡n,O” — Ij ;③对于I彡j彡n,CIPHk(Ij) — Oj, Oj最左侧的r比特一t」; ·对于I < j < n-1, Cj tj xj,得到χ」!⑤对于最一个明文块,< =< MSBhKPk)。最后一个密文块,可能是一个特殊的只含有u个比特的块,所以最后一个输出块中的u比特和这个密文块进行解密操作,而输出块中多余的r-u比特就被丢弃了。在S3C6410嵌入式平台上实现混合编码加密算法具体实施方式
中采用S3C6410平台,128M字节的DDR内存空间以及IG字节大小的NANDFLASH闪存空间,另外还保留了 256K N0RFLASH,这为应用研发提供了足够的扩展空间。用于采集视频数据的摄像头是WEBEYE V2000,内部处理芯片为美国Omnivision公司0V7620采集芯片和0V511处理芯片。其中0V7620是将采集到的彩色CMOS图像转换成640X480的图像阵列的芯片,它的速率能够达到30帧/s。0V511主要功能是对传送过来的多种格式的图像进行处理。Linux给视频类设备提供了一套标准的API (应用编程接口),即V4L2进行打开和关闭、采集并处理视频图像信息等操作,处理过程如下I)打开视频采集设备$以13_€(1=(^611(8以13_(16¥;^6,0_1 110以可读写的方式打开视频设备/dev/videoO,并将打开后设备的描述符值赋给grab_fd。2)获取视频设备相关属性执行ioctl (grab_fd, VIDIOCGCAP,&grab_cap)函数读取结构体video_capability中有关摄像头的信息。3)定义采集图像格式调用传递命令参数为VIDE0_S_FMT的ioctl函数对需要采集的视频图像的属性进行定义,包括其大小及格式。4)内存映射调用带VIDI0C_REQBUFS命令参数的ioctl函数分配缓存数量,分配用户内存后使用for循环依次对各个缓存进行映射,再通过-ap O函数对分配的缓存与用户内存间建立映射关系。5)视频的采集当应用程序获得“采集”命令开始通过摄像头采集所需的视频数据时,内核就会执行ioctl函数,如果该函数的IOCTL控制字匹配到“VIDI0C_STREAM0N”则开始调用4中的缓存进行图像数据的采集存放。选用FFMpeg+x264作为本系统的软件编解码器,并移植到S3C6410平台上。I)对ffmpeg根目录下的configure文件进行配置修改,包括定义安装路径,根据需要选择工具库,定义开发板的相应信息等。A. ^installation paths
Prefix—default="/usr/local/ffmpeg-5-arm"B. #toolchainar=Vopt/arm_2008q3/bin/arm-none-linux-gnueabi-ar"cc—default=〃/opt/arm-2008q3/bin/arm-none_linux-gnueabi-gcc〃host—cc—default="gcc"In—s="ln_sf " nm—default=〃/opt/arm-2008q3/bin/arm-none-linux-gnueabi_nm〃ob jformat="elf " raniib=〃/opt/arm_2008q3/bin/arm-none-linux-gnueabi-ranlib〃Strip=V opt/arm_2008q3/bin/arm-none-l inux-gnueabi-strip"yasmexe=〃yasm〃C. #machine#arch=' uname-m'#cpu="armv412"2)通过执行命令· /configure—enable-gpl—enable-shared—enable~x264—cc=arm-l inux-gcc—disable-strip 来完成配置工作。3)编译安装 ffmpeg$make&$make instal I在定义的安装路径中会生成FFmpeg、FFserverΛ libavcodec. so、libavformat. so与libutil. so文件,这些可执行命令程序和动态链接库文件均可以在ARM平台上运行调用。此外,为了能够顺利的调用到库文件,在移植结束后还需要在系统中添加库环境变量,执行export LD—LIBRARY—PATH=$LD—LIBRARY—PATH:/Directory4)调试ffmpeg是否能够正常工作执行·/ffmpeg-f video41inux2_s 352x288~r 20~i/dev/videoO/tmp/test, yuv通过Video4Linux2驱动接口,从摄像头设备为/dev/videoO釆集CIF格式(352 X 288)的视频,釆集的速率为20巾贞/s,并将视频保存为/tmp/test, yuv中。对x264-snapshot-20090301_2245· tar 代码包,对根目录下的 configure 文件做配置修改prefix="/usr/local/x264"cross—prefix=〃/opt/arm-2008q3/bin/arm-none_linux-gnueabi-〃修改完后依次执行操作进行配置安装. /configure—enable-sharedmakemake install执行命令./ffmpeg-fvideo41inux2-s 352x288~r 20_i test, avi-vcodecx264test. 264可直接调用x264编码。调用C库编写的AES加密算法的OFB模式函数接口,实现在编码过程中对相关系数进行加密处理。
权利要求
1.一种面向视频流的混合编码加密方法,其特征在于该方法将加密算法嵌入在标准的图像压缩编码方法H. 264中,加密与编码同时进行,且仅加密部分低频数据,以满足视频流实时传输的要求;该方法中,首先对视频流按照H. 264编码方式进行帧内和帧间预测编码,然后对编码产生的部分低频数据进行加密,最终获得加密的编码数据,整个加解密算法运行在嵌入式系统上; 其具体方法为 1)将加密算法嵌入在H.264编码模块中; 2)加密算法采用一种高级加密方式AES的输出反馈模式; 3)待加密的低频数据为编码后的起始帧中的直流差分系数,以及帧间预测帧、帧间双向预测帧中的预测块的直流差分系数;其中,起始帧为I帧,帧间预测帧为P帧,帧间双向预测帧为B帧; 解密即为加密的逆过程,具体如下 4)视频流解码时,按照帧的类型即I帧、P帧、B帧的不同,分别进行解密。
2.根据权利要求I所述的面向视频流的混合编码加密方法,其特征在于基于H.264的混合编码加密实现方法,采用的加密方法为AES加密算法的输出反馈模式OFB模式;AES明文数据块和密钥长度设定为128bit比特、192比特、256比特中得任意一个,令Nk= (4,6,8)表示三种密钥的长度,则AES作为密钥的比特流长度为32XNk(Nk=(4,6,8));令Nb= (4,6,8)表示三种分组块的长度,即长为32XNb (Nb= (4, 6,8))的明文数据可进行加密,得到的密文长度仍然为32XNb ;AES加密过程中重复轮的数目用队表示,队=10,12,14为分别采用三种长度密钥运算时的重复轮数; 定义输入有k比特的密钥K,η比特的初始向量IV以及r比特的明文分组块X1……xu(l彡r彡η),产生r比特密文数据块C1……Cu 是第j个输入块,Oj是第j个输出块,CIPHk(X)为密钥K对数据块X进行加密的前向加密函数; AES加密算法需包含多轮重复和变换,即密钥扩展、初始轮、重复轮、最终轮;重复的每一轮又包括字节变换、行移动、列混合、轮密钥加,然而最终轮中不包含列混合; OFB模式的加密过程为①IV — I1,对于I彡j彡n,给定明文分组Xj ;②对于2彡j彡n,Oj^1 — Ij ;③对于KjS n, CIPHk(Ij) — OjjOj最左侧的r比特一t」;④对于I彡j彡n_l,xj rj — cj *导出r比特的密文分组Cj ;⑤对于最一个密文块QMSWv(On)。最后一个明文块,可能是一个特殊的只含有u个比特的块,因此最后一个输出块中的u比特跟此明文块进行加密操作,余下的r-u比特将被丢弃。
3.根据权利要求I所述的面向视频流的混合编码加密方法,其特征在于所述对视频数据进行加密是根据帧的类型对数据进行不同的加密处理;选择编码后的I帧中的8 X 8块直流差分系数,以及P帧、B帧宏块中块间块的直流差分系数作为视频加密的对象,即对经过整数变换、量化后得到的位于对角线左上角、且集中大部分能量的直流系数,也即编码后的亮度/色度的残差数据进行加密。
4.根据权利要求I所述的面向视频流的混合编码加密方法,其特征在于解密过程也需要根据帧的类型进行不同处理;其中,对于I帧,使用AES算法份OFB模式对加密后的I帧中8X8块的直流差分系数进行解密处理;对于P帧和B帧,对加密后宏块中的帧间块的直流差分系数分别进行解密处理,通过输入的密文及密钥并通过密钥扩展获取各轮密钥,与扩展密钥进行轮密钥加变换,并进行相应的重复轮,重复的解密轮包括逆行变换、逆S盒变换、轮密钥加变换以及逆列变换;最后一个解密轮的顺序为逆行变换、逆S盒变换、轮密钥加变换; OFB模式的解密过程为IV — I1,对于n,对接收到的密文&进行计算;②对于2彡j彡η,O” — Ij ;③对于I彡j彡n,CIPHk(Ij) — Oj, Oj最左侧的r比特一t」;④对于I < j < η-1,— xJ,得到Xj逾对于最一个明文块,< =十MSBh{()‘;、。最后一个密文块,可能是一个特殊的只含有u个比特的块,因此最后一个输出块中的u比特和这个密文块进行解密操作,余下的r-u比特将被丢弃。
5.根据权利要求I所述的面向视频流的混合编码加密方法,其特征在于所述的编码加密算法是运行在嵌入式系统S3C6410平台上,并采用通用的视频压缩编码软件框架FFMpeg+x264作为本系统的软件平台。
全文摘要
本发明是一种对视频数据进行混合编码加密的方法,该方法将加密算法嵌入在标准的图像压缩编码方法H.264中,加密与编码同时进行,且仅加密部分低频数据,以满足视频流实时传输的要求;该方法中,首先对视频流按照H.264编码方式进行帧内和帧间预测编码,然后对编码产生的部分低频数据进行加密,最终获得加密的编码数据,整个加解密算法运行在嵌入式系统上;其作用是在视频数据的采集应用中保证数据安全性的同时满足实时性的要求。采用AES的OFB模式对部分重要数据在H.264编码过程中进行加密处理能够减少加密处理的数据量,满足实时性的要求,同时又能够保证视频数据的安全性,此外OFB模式还能够抵制密文比特错误而带来的错误传播。
文档编号H04N7/50GK102905133SQ20121039104
公开日2013年1月30日 申请日期2012年10月15日 优先权日2012年10月15日
发明者吴蒙, 张春梅, 梅珏洁 申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1