本站小编为你精心准备了加密算法远程教育论文参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
1加密数据的选择
本研究选择经过H.264[9]编码技术编码的视频数据流进行加密、解密算法推演。H.264是一种高性能的视频编解码技术,是在MPEG4的基础上建立起来的,主要由帧间和帧内预测、变换和反变换、量化和反量化、环路滤波、熵编码等5个编码流程组成。一个GOP(一组连续画面)是由I(帧内)、P(预测)、B(双向预测)3种帧格式组成编码帧序列,如下图所示。这3帧中的B帧要同时对I帧和P帧进行参考,进行双向间的预测编码,I帧独立编码,不需要参考其他帧,而P帧要在参考其它帧的基础上进行预测编码。根据这3种数据帧的特点,选择MV(运动向量差值)、残差系数、帧内预测模式字3种元素进行选择加密。(1)运动向量(MV)差值在B帧或者P帧,可以对每个宏块进行1616,168,816,88,如图1所示这4种模式进行分割,如果采用168的分割方法,那么就会生成2个子宏块,并且每个子宏块的像素为168。产生的子宏块又可以继续划分(见图2),这种树状结构运动补偿方案就是一种基于子宏块和分区的运动补偿方案。在上面的子宏块分区中,每个子宏块或者分区都是一个单独的运动矢量,如果将一个宏块分割成相同的4个88的子宏块,且每一个子宏块又被分成了4个相同的44子宏块[9],那么相对于原来的P宏块或者B宏块来说,它至少要传送16个这样的运动向量。因此对于大尺寸分割,需要传送的运动向量较少,需要较少的比特流就可以对这些运动向量来进行传输,不过其相应的残差系数会较高;反之,对于较小的分割尺寸,会需要更多的比特流,预测的准确性会较高,需要相应的残差系数能量较低。每个P分区的运动向量都需一定数目的比特位来进行编码,为减少编码的比特数,可以对相邻的运动向量进行编码预测,即后面的运动向量可由前面的运动向量来进行预测,可以对差值MVD进行编码。为保持视频的语义结构且提高编码效率,只需要对运动向量差值的符号位进行加密(见图3)。对最后一位进行重置,实现了对MVD的有效扰乱。通过扰乱后的信息可以预测图像信息,从而实现了对视频的加密。(2)残差系数参差块系数通过CABAC和CAVLC进行编码。在CAVLC编码过程中,涉及到非零系数幅值、非零系数数目、拖尾系数数目、最后一个非零系数前零的个数和每个非零系数前零的个数[10],在此只对CAVLC编码过程中的关键字段(Level的符号位和TrailingOnes的符号位)进行加密。详见图4。(3)帧内预测模式字视频帧内的每个宏块都可采用多种不同的预测编码模式,帧内预测编码模式适合所有的片组编码类型。对亮度像素块编码时有Intra-1616、Intra-88、Intra-44等多种预测模式。不同的预测模式又有多种预测方式来对图像细节部分进行编解码,帧内预测不能进行跨片组编码,只能在同一个片组内预测编码[11]。通过判断帧内预测编码绝对误差来选择最佳的帧内预测模式。本研究采用Intra-44预测模式,主要有以下原因:(ⅰ)Intra-88对于版本的支持兼容性不好,无法有效支持所有的版本。(ⅱ)Intra-1616模式字和别的信息一起编码,不容易进行加密操作。(ⅲ)采用44模式的预测编码字的方式,占了I帧视频帧中的大多数,且仅对44的预测模式进行加密即可达到保密性要求。
2多维强度数据加密方案
选择上述特定长度字段,尚需坚持如下原则:(1)不能对变长度字段进行直接加密,否则会破坏其上下文的语义结构,破坏格式的兼容性,降低强度控制灵活性。不能对字段的索引字段进行直接加密,否则会带来不必要的码流字节数开销。(2)选取的特定长度字段必须能够对解码数据流起到关键作用,即达到对整段数据流加密安全性要求。(3)对特定长度的字段的加密要满足严格的字长特性,实现较高的加密速度且不会带来多余的数据码流。在满足上述要求的基础上,对3个视频数据元素分别设定3个不同的加密强度控制参数[12](P1,P2,P3)来进行控制。详细方案如下:(1)P1表示残差系数符号位加密强度,随着P1的变化相应的对残差系数符号位进行加密。(2)P2表示预测模式字的加密强度,根据P2的数值大小确定IPM的加密强度。(3)P3表示MVD的加密强度,随着P3的变化相应的对运动向量进行加密。
3方案算法设计
要实现上述强度控制算法,首先,产生一个0~1的随机数s,若s<p,则对该数据流进行加密;否则,跳过这个元素[13]。可采用如下方法提高加密速度。(1)随机生成一个0~1的随机值。(2)生成一个长度是N的二进制数组,随机选取N个从0~1的连续数。当第i个数的值大于等于p时,设Si=0;否则设为1。(3)当Si=1时,对该数据元素进行加密[14];否则,不对该数据元素进行处理。
4试验仿真
试验平台包括平板电脑(任意型号),经内核配置编译后的Android操作系统,代码的开发环境为Ubuntu操作系统,集成开发软件为Eclipse,播放器为MobePalyer。选用Android系统下的播放器采用一个安装有Android操作系统的平板电脑来搭建试验平台。
41内核配置为运行本研究算法,必须对Android操作系统的内核进行配置编译。Android系统架构见图6。采用FFmpeng软件对视频进行编码、解码。FFmpeng提供了用于处理多媒体数据流的程序与数据库,主要包含支持处理音频视频的libavcodec数据库,转换视频数据的文件格式ffmpeg软件,解析、封装视频的承载容器和获取编解码信息libavformat软件。为实现视频的编码、解码和减小软件体积需要将FFmpeng裁剪至Android操作系统中。在FFmpeng源码项目文件中,新建一个配置文件cofig.sh用于设置交叉编译器、平台、编译选项等。首先关闭所有的编译选项,然后打开编码器与交叉编译选项等,最后设置交叉编译链接符号。当执行配置文件,会得到裁剪后的config.h头文件。FFmpeng的编译过程需要将各个模块编译成静态库再链接形成动态库,因此编写makefile文件是关键。在每个模块中编写一个Android.mk用于生成静态库。在根目录中编译一个Android.mk用于将生产的静态库,链接为动态库,当编译成功后,则会生成libffmpeng.so。为了能在Android应用中调用FFmpeng解码函数,还需要对libffmpeng.so二次编译,将编写的包裹文件与动态文件连接在一起,生成最终的解码库。包裹文件主要完成初始化解码器、对NAL单元解码、YUV420与RGB565格式转换、注销解码器等任务。将动态数据库libffmpeg.so与libmyffmpeg.so放入项目的libs的文件夹中,此时便可以编写调用类,用于加载与声明调用方法,接口见表1。调用流程如下:(1)新建ffinpeg对象构造函数中调用System.loadLibrary(“ffinpeg”)与System.loadLibrary(“myffmpeg”),加载编译好的动态库。(2)调用Init方法初始化按顺序注册编解码器、查找解码器、新建编解码上下文对象、初始化包文件、分配帧空间和按照宽高分配YUV空间。(3)调用DecoderNal方法在内部使用avcodec-decode—video2函数解码若返回值大于?则解码成功。解码后的YUV图像还需要经过像素空间转换成为RGB565格式最后将RGB565格式的一帧图像保存在out缓冲中。
42试验结果与分析分别对运动向量差值、残差系数和帧内预测模式字这3种视频元素进行加密强度的控制。设定不同的概率参数,确定这3个加密系数的加密强度,通过试验比较这3种加密元素进行不同的系数设置时,观看视频播放效果。单独对某一种元素加密时,都可以对视频的播放产生影响,但是当对3种元素同时进行加密强度控制时,加密效果最好。图7是播放器播放未经过加密的视频和经过加密后的视频效果图。
5结论
在归纳不同视频加密算法局限性的基础上,提出了一种对各视频元素按重要性进行不同加密强度感知加密算法,实现了对视频资源进行版权管理的目的。这种算法既有直接加密算法的安全性较高的特点,又能够选择视频数据流中的重要数据进行加密,提高了系统性能的利用率和视频加密的实时性。通过对重要的视频数据进行选择,增加了视频算法的可操作性,有效降低了算法的计算量与复杂度,减少了视频解密时的误差。未来还要对视频编码技术及信源特征进行进一步研究和探索,为远程教育的视频版权管理提供更好的技术保障,促进远程教育更好、更快的健康发展。
作者:王兰忠孟文杰单位:山东大学外国语学院齐鲁工业大学电气工程与自动化学院