基于局域网的混沌视频加密研究与实现
【摘要】提出了在嵌入式平台上实现混沌视频保密通信的新方式,将基于H.264的视频编解码器移植到Cortex-A8 ARM开发板上,利用H.264编码器对已经混沌加密的视频进行压缩,再通过局域网传输到另一块ARM开发板上进行解码和解密。实验结果证明:该系统不但加密效果好,而且也能快速可靠地传输,满足了实时视频加密通信的要求。
【关键词】ARM;混沌加密;H.264;局域网
Abstract:This paper presents a new method of implementing chaotic video encryption based on embedded system,which transplants the H.264 codec to Cortex-A8 ARM board.The codec is used to compress encrypted video data,which is transported to and decrypted on another ARM board.Result shows that the system transfers encrypted videos quickly and reliably,and meets the requirement of real-time video encryption.
Key words:ARM;Chaotic encryption;H.264;LAN
近年来,随着视频会议,IPTV视频邮件等数字视频业务的迅猛发展,视频流的安全问题正受到越来越多的关注[1]。现有的视频加密传输系统大都采用传统密码学中的加密方案进行软件加密并网络传输,而现在的视频实时监控也已经从传统模拟集中监控方式转变为数字化视频监控[2]。混沌系统由于具有对初始条件和系统参数的极端敏感性,以及混沌序列长期演化结果的不可预测性,使得混沌系统极具密码学应用价值。基于混沌理论的图像及视频加密方案得到了迅速的发展。混沌密码主要分为两大类,即,混沌流密码和混沌块密码。其中混沌块密码的加密方案往往要反复迭代多次才能达到较好的加密效果,导致加密速度下降,而流密码则加密速度比较快。但是有的混沌流密码往往因为使用的混沌系统过于简单而安全性不高,需要进一步的改进[1]。
本文提出了一种基于猫映射和改进Wang-Chen算法混合流密码加密的方案,利用Wang-Chen算法产生的混沌序列对视频帧y分量进行加密,利用猫映射的拉伸与折叠对视频帧u、v分量进行数据置乱,从而实现对每一帧原始视频图像的加密,然后对加密后的视频流通过H.264编码器压缩,从而获得较低比特流的视频数据,方便数据的传输。
1.系统设计
1.1 嵌入式软件平台设计
图1-1 C/S(客户-服务器)架构
本文使用的是由广州友善之臂公司设计的Ting210V2开发板,处理器为基于Cortex-A8架构的三星S5PV210。S5PV210处理器系统开发的软硬件平台能满足服务器的高处理速度和大存储量的要求,并采用高压缩率的H.264图像编码格式,其较高的压缩率能解决视频数据量大这一网络多媒体系统开发的瓶颈。嵌入式系统开发通常由宿主机目标板结合开发,合并在交叉编译环境下进行。首先,在运行Linux操作系统的宿主机上搭建交叉编译环境,接下来将引导加载程序、Linux内核、文件系统的可执行映像依次存放在系统的存储设备上。
1.2 嵌入式硬件设计
本文的视频保密通信系统采用C/S(客户-服务器)架构,如图1-1所示。服务器端和客户端都采用嵌入式系统,其硬件主要分两部分:服务器端完成视频的混沌加密,以及视频的编码;客户端完成视频的解码,以及混沌解密。这两个硬件部分通过路由器实现网络连接。
2.混沌加密原理
2.1 猫映射加密算法
猫映射的数学表达式如下:
(1)
其中:,mod 1表示只取实数的小数部分。为将猫映射用于加密,需要对它进行适当处理。首先将猫映射扩展到矩阵,并进行离散化,有:
(2)
在实际视频加密中,为让视频加密效果更好,需要经过N次迭代计算完成N阶猫映射算法。需要注意的是,应用猫映射算法加密的视频格式必须是的,否则会产生像素混叠导致解密失败。
猫映射的逆映射如式(3)所示:
(3)
其中:。只需要将猫映射加密的视频按逆映射迭代相应次数就可以对视频解密。
2.2 Wang-Chen系统加密算法
本文Wang-Chen系统是使用系统中的y作为驱动变量来实现驱动-响应同步,产生混沌序列的三维离散时间系统方程如下所示。
(4)
其中a11=0.2,a12=-0.3,a13=0.1,a21=0.3,a22=-0.2,a23=-0.1,a31=-0.1,a32=-0.1,a33=0.2,e=1.0e5,d=1.6e3为离散时间系统方程的参数,为混沌系统的控制量[3]。该系统使用的是驱动-响应式同步方法,服务器端方程中的y 变量经过多次迭代产生混沌序列,经过处理后生成密密钥,与视频数据进行异或运算后得到p,即加密后的视频数据。将加密后的视频数据通过局域网传输到客户端后,利用接收到的加密数据p驱动接收端的混沌系统,使两端的系统同步。在客户端的解密过程就是加密过程的逆过程,但是解密算法和加密算法一样。
3.H.264算法
3.1 算法简介
H.264是由ITU-T视频编码专家组和ISO/IEC运动图像专家组联合开发,2003年3月正式被ITU-T所通过并在国际上正式颁布的新一代视频压缩编码标准。该算法既保留了以往压缩技术的优点,又具有其他压缩技术无法比拟的许多优点:码流是其优点之一;其次是高质量的图像;另外,H.264的容错能力强,H.264提供有解决在不稳定网络环境下容易发生的丢包等错误的必要工具;而且网络适应性强,H.264提供有网络适应层(NAL),该特点使得H.264的文件能容易地在不同的网络上传输[5]。
3.2 H.264编码器
如图3-1所示,编码器框架中有前向编码部分和后向恢复部分。对于前向编码部分,Fn表示当前输入的那一顿图像,F"n-1是在当前帧之前已经编码并重建的帧,通常作为参考帧,P是预测值。在帧间预测模式下,预测值P由参考帧F"n-1经过运动补偿得到;在帧内预测模式下,预测值P则是由当前帧中己经编码并重建的宏块进行预测得到的[6]。待编码的当前帧与预测值相减得到残差Dn,残差Dn通过变换器进行DCT变换后经过量化器进行量化即可得到一组量化系数X,对这组量化系数X先后进行重排序和熵编码即可得到编码完成的264码流。在后向恢复部分中量化系数X先后通过反量化器和逆DCT变化可以得到恢复的残差值D"n,D"n与预测值P相加即可得到未经滤波的uF"n帧,uF"n经过去块化滤波即可获得重建帧[7]。
图3-1 H.264编码器
3.3 H.264解码器
如图3-2所示,H.264解码器接收到经过H.264编码器编码后产生的264码流以及一些头信息,对码流进行熵解码并重新排序,可以得到一组经过量化过的量化系数X。将这组量化系数进行反量化并且逆DCT变换后即可得到残差Dn的恢复值D"n,解码器通过头信息可以恢复出编码器端使用的预测值P,预测值P和残差的恢复值D"n相加即可得到未经滤波的帧uF"n,将uF"n通过去块化滤波即可获得解码帧F"n[6]。
图3-2 H.264解码器
3.4 H.264编解码算法移植
目前基于H.264的开源编解码器主要有JM、X264以及T264。经过对各种开源编解码器的比较,本文选取X264、ffmpeg作为视频的编码器和解码器。
文中采用的软件包为ffmpeg_X264_src.rar,解压之后包含一个ffmpeg的文件夹和一个X264的文件夹。其中,X264作为编码器输出H.264码流,ffmpeg则作为解码器进行解码。
在编译X264之前首先要编译ysam以支持MMX或者SSE优化,使得编码性能得到提升。本文采用的事yasm1.1.0版本,解压软件包后进行配置:
./configure –prefix=/usr/local/bin/yasm
make
make install
完成yasm编译之后即可编译X264:
cd X264
./configure
修改config.mak的一些选项,如cc=arm-linux-gcc、arch=arm 以及加上-static等,然后再输入make命令,就可得到X264二进制可执行文件。
在进行ffmpeg编译移植之前需进行SDL库的移植,编译之前键入./configure –help查看帮助,选好需要设置的参数即可进行编译。键入以下命令进行编译:
./configure –enable-static –disable-shared –enable-gpl –disable-ffserver –disable-ffplay –disable-debug –disable-network –enable-cross-compile –arch=arm
编译后输入make 命令可得到ffmpeg二进制可执行文件。
将相应的二进制可执行文件拷贝到ARM开发板上,就可对视频进行编解码。
4.视频混沌保密系统的验证
将两块开发板通过路由器连接成一个简单的局域网。设置两块开发板的IP地址,使两块开发板的IP地址处于路由器的IP段。服务器端对视频数据进行加密和编码,将加密编码后的视频数据放在encode文件夹,然后运行“./server 编码视频数据”指令,开启服务器并使进程在后台中运行。客户端使用“./client 服务器IP”指令,从服务器端获取加密和编码的视频数据,在当前文件夹下运行“./ffmpeg 加密编码视频数据”指令,得到解密和解码的视频数据。再在服务器端运行“./mplayer 原始视频数据”指令播放视频,在客户端运行“./mplayer 加密编码视频数据”和“./mplayer 解密解码视频数据”指令播放视频,对正在播放的视频进行解密效果。实际硬件连接图和加解密效果如图4-1~4-3所示。
图4-1 视频H.264的编解码过程
(左图为编码,右图为解码)
图4-2 服务器的原始视频和客户端的加密视频(左边为服务器,右边为客户端)
图4-3 服务器的原始视频和客户端的解密视频
5.结论
本文设计了一种在嵌入式Linux系统上实现对视频数据进行混合混沌流密码加密的新方式。实验结果达到了设定的目标,加密性能满足实际应用的标准,并且对视频的编码也达到了实时的要求。下一步还需要对加密算法进行改进以及对编码算法进行优化,使得加密算法和编码算法在嵌入式设备中的运行速度更高,以达到实时视频加密的效果。
参考文献
[1]孙克辉,尚芳,任健.基于混沌流密码的H.264视频加密算法设计[C].中国电子学会第二十届电路与系统学术年,2007.
[2]董学洋.基于混沌算法的视频加密传输系统的研究[D].黑龙江:黑龙江大学,2010.
[3]凌大旺,禹思敏.基于嵌入式系统的混沌数字图像加密研究[J].电子技术应用,2012,38(3):21-22.
[4]陈关荣,汪小帆.动力系统的混沌化——理论、方法与应用[M].上海:上海交通大学出版社,2006.
[5]陈仁杰,孙友林,何丹.基于广义猫映射和H.264的视频加密[J].物流网技术,2012,1(4):43-46.
[6]毕厚杰.新一代视频压缩编码标准:H.264/AVC[M].北京:人民邮电出版社,2005.
[7]IainE,G.Richardson.H.264 and MPEG-4 VIDEO Compression Video Coding for Next- generation Multimedia[D].TheRobert GordonUniversity,Abedeen,UK.
[8]马在光,丘水生.基于Henon系统的两种互联网图像保密通信方案[J].通信技术,2002,2(3):70-72.