一种基于Logistic映射的混沌加密方法转让专利

申请号 : CN201911389163.2

文献号 : CN111093098B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李晓东刘北圣金鑫

申请人 : 北京电子科技学院

摘要 :

本发明公开了一种基于Logistic映射的混沌加密方法,应用于视频加解密传输,包括服务器和客户端,所述的服务器作为发送端,所述的客户端作为收集端,步骤如下:步骤1:发送端采集视频,捕获视频帧;步骤2:设定视频帧采集帧率,并对采集到的视频帧进行编码;步骤3:对编码后的视频利用Logistic映射的混沌加密算法进行加密;步骤4:创建实时传输的网络传输协议RTP会话,发送加密数据;步骤5:收集端创建一个线程,利用创建实时传输的网络传输协议RTP会话接收数据包;步骤6:对接收到的视频利用Logistic映射的混沌加密算法进行解密;步骤7:对接收到的视频进行解码;步骤8:将视频帧用图片显示控件显示出来。

权利要求 :

1.一种基于Logistic映射的混沌加密方法,应用于视频加解密传输,包括服务器和客户端,所述的服务器作为发送端,所述的客户端作为收集端,其特征在于步骤如下:步骤1:发送端采集视频,捕获视频帧;

步骤2:设定视频帧采集帧率,并对采集到的视频帧进行编码;

步骤3:对编码后的视频利用Logistic映射的混沌加密算法进行加密;

所述的步骤3中混沌加密算法包括如下步骤:步骤3.1:先用时间函数生成四个8位的十六进制数,即数值在0‑0xffffffff之间;

步骤3.2:每个数值与0x10000做两次除法求商变成(0,1)之间的值,产生四个密钥;

步骤3.3:将这四个密钥第2到第5个字节与主密钥异或处理;

步骤3.4:再用处理后的密钥迭代产生混沌序列;

步骤3.5:与视频数据明文进行异或加密,即将一个明文字节与第一个密钥的第五个字节,第二个密钥的第四个字节,第三个密钥的第三个字节以及第四个密钥的第二个字节进行异或;

步骤3.6:重复步骤3.5,直到对所有的明文序列进行加密;步骤4:创建实时传输的网络传输协议RTP会话,发送加密数据;

步骤5:收集端创建一个线程,利用创建实时传输的网络传输协议RTP会话接收数据包;

步骤6:对接收到的视频利用Logistic映射的混沌加密算法进行解密;

步骤7:对接收到的视频进行解码;

步骤8:将视频帧用图片显示控件显示出来。

2.根据权利要求1所述的一种基于Logistic映射的混沌加密方法,其特征在于:所述的步骤3中混沌加密算法还包括:对Logistic映射中的μ值进行动态改变:步骤a:每进行一次迭代后,判断μ的值是否大于4;

步骤b:若大于4则将μ的值减去密钥值除以10;

步骤c:若μ的值小于4,就将μ加上密钥值除以100,以此循环,将μ的值控制在4附近。

3.根据权利要求1所述的一种基于Logistic映射的混沌加密方法,其特征在于:所述步骤3中,将Logistic映射和Tent映射两种方法混合使用以提升算法产生序列的随机性,Logistic的缺陷是序列值分布不均匀而且有空白窗口,而Tent映射的缺陷是容易陷入不动点和小周期;Tent映射每迭代50、100、200、500、1000次就使用Logistic映射初始化。

4.根据权利要求1所述的一种基于Logistic映射的混沌加密方法,其特征在于:加密部分放在编码之后,对jpg图像数据进行加密,收集端接收后先解密然后再解码。

5.根据权利要求1所述的一种基于Logistic映射的混沌加密方法,其特征在于:在一次性密钥的保存和发送上,视频采集端在加密视频时用时间函数生成一组一次性密钥,将该一次性密钥与视频帧数据一起发送给视频接收端使用,将密钥放在第一个数据包的最前面,接收时先提取出来。

说明书 :

一种基于Logistic映射的混沌加密方法

技术领域

[0001] 本发明为一种基于Logistic映射的混沌加密方法,可以高效安全地对实时视频进行加密的视频加密技术。

背景技术

[0002] 近年来,视频已经成为信息的重要载体,传输信息中视频内容越来越庞大。因此,视频在传输过程中的安全问题引发了人们的关注和思考,成为了重要的研究领域。视频加
密,是保护视频在传输中安全的重要手段,研究出高性能的适合实时视频信息的加密算法
是解决网上视频安全这个问题的关键所在。视频信息具有数据量大,编码结构特殊,实时性
要求强等特点,这些特点对现有的加密算法提出新的要求:实时视频加密在保证其安全性
的同时,要尽可能地满足实时性、高效性。
[0003] 自上世纪七十年代起,就有很多优秀的密码技术出现并得到广泛的应用,比如DES、IDEA和RSA等。但是由于视频具有数据量大,编码结构特殊,而且很多是实时视频,对实
时性要求强,这些传统的针对文本的算法已经不适合了。现在的视频基本都是数字视频,视
频加密技术也有了新的发展。可以对数字视频信号进行压缩编码,然后再存储或传输。对视
频信号可以在上述任何一个环节中进行加密。目前的视频加密技术种类繁多,主要分成两
大类,一类是全部加密,它是对全部视频数据流用密码技术直接进行加解密的加密技术,它
的安全性较高但是加密速度较慢;另一类是选择性加密,它是只选择性地加密重要数据的
方法,提高了加密速度但是安全性不高,可能遭受攻击而被破解。具体还有一些算法,例如
改变Huffman码表算法,它将通用Huffman码表改变(加密)后使用,并作为密钥,非法接收方
没有这个特殊码表,就不能正确解码,但是一般改变Huffman码表会降低压缩率,而且密钥
较长。还有Zig‑Zag置乱算法、基于统计规律的视频加密算法、纯置乱算法等等。混沌系统与
加密技术相结合是现在比较热门的一个课题,混沌系统不仅可以快速生成大量的密钥,有
效地提高加密速度,还具有非周期性、对初值与参数极度敏感性和不可预测性等特征,可以
提供具有良好随机性的伪随机序列。虽然有大量的混沌加密算法面世,但是这些加密算法
并不成熟,仍然需要进一步研究。

发明内容

[0004] 为了解决以上技术问题,本发明研究高性能、更高速度的加密算法,以满足用户的需求。混沌加密算法迭代速度快,可以快速生成密钥序列,满足实时视频的实时加密需求。
同时混沌序列的随机性,以及混沌映射对初值的敏感性都体现了算法的安全程度较高。本
发明针对视频的安全需求研究了高性能的混沌加密算法。
[0005] 本发明提出一种基于Logistic映射的混沌加密方法,应用于视频加解密传输,包括服务器和客户端,所述的服务器作为发送端,所述的客户端作为收集端,其特征在于步骤
如下:
[0006] 步骤1:发送端采集视频,捕获视频帧;
[0007] 步骤2:设定视频帧采集帧率,并对采集到的视频帧进行编码;
[0008] 步骤3:对编码后的视频利用Logistic映射的混沌加密算法进行加密;
[0009] 步骤4:创建实时传输的网络传输协议RTP会话,发送加密数据;
[0010] 步骤5:收集端创建一个线程,利用创建实时传输的网络传输协议RTP会话接收数据包;
[0011] 步骤6:对接收到的视频利用Logistic映射的混沌加密算法进行解密;
[0012] 步骤7:对接收到的视频进行解码;
[0013] 步骤8:将视频帧用图片显示控件显示出来。
[0014] 进一步的,所述的步骤3中混沌加密算法包括如下步骤:
[0015] 步骤3.1:先用时间函数生成四个8位的十六进制数,即数值在0‑0xffffffff之间;
[0016] 步骤3.2:每个数值与0x10000做两次除法求商变成(0,1)之间的值,产生四个密钥;
[0017] 步骤3.3:将这四个秘钥第2到第5个字节与主密钥异或处理;
[0018] 步骤3.4:再用处理后的密钥迭代产生混沌序列;
[0019] 步骤3.5:与视频数据明文进行异或加密,即将一个明文字节与第一个密钥的第五个字节,第二个密钥的第四个字节,第三个密钥的第三个字节以及第四个密钥的第二个字
节进行异或;
[0020] 步骤3.6:重复步骤3.5,直到对所有的明文序列进行加密。
[0021] 进一步的,所述的步骤3中混沌加密算法还包括:对Logistic映射中的μ值进行动态改变:
[0022] 步骤a:每进行一次迭代后,判断μ的值是否大于4;
[0023] 步骤b:若大于4则将μ的值减去密钥值除以10;
[0024] 步骤c:若μ的值小于4,就将μ加上密钥值除以100,以此循环,将μ的值控制在4附近。
[0025] 进一步的,所述步骤3中,将Logistic映射和Tent映射两种方法混合使用以提升算法产生序列的随机性。Logistic的缺陷是序列值分布不均匀而且有空白窗口,而Tent映射
的缺陷是容易陷入不动点和小周期;Tent映射每迭代50、100、200、500、1000次就使用
Logistic映射初始化。
[0026] 进一步的,加密部分应该是放在编码之后,对jpg图像数据进行加密,收集端接收后先解密然后再解码。
[0027] 进一步的,在一次性密钥的保存和发送上,视频采集端在加密视频时用时间函数生成一组一次性密钥,将该一次性密钥与视频帧数据一起发送给视频接收端使用,将密钥
放在第一个数据包的最前面,接收时先提取出来。
[0028] 有益效果
[0029] 本发明是在一种基于Logistic映射的混沌加密方法基础上,对其进行改进,并对多种改进后的算法进行随机性测试分析,最后提出了一种优化后的混沌加密算法。这种算
法考虑了Logistic和Tent这两种混沌映射的优缺点,并进行有目的和有针对性地结合,从
而得到一个比单纯的两种算法都要优良的混沌加密算法。同时还设计实现了一个实时视频
传输原型,与视频加密算法相结合,验证了加密算法的可行性。本发明的方法性能高、迭代
速度快,可以快速生成密钥序列,满足实时视频的实时加密需求。同时混沌序列的随机性,
以及混沌映射对初值的敏感性都体现了算法的安全程度较高。

附图说明

[0030] 图1为本发明的算法流程步骤框架图;
[0031] 图2为本发明的视频传输原型的设计框图;
[0032] 图3为本发明的加密算法程序框图;
[0033] 图4为本发明中Tent迭代数值出现次数情况;
[0034] 图5为本发明视频采集端界面;
[0035] 图6为本发明视频采集端使用说明;
[0036] 图7为本发明视频接收端界面;
[0037] 图8为本发明视频接收端使用说明。

具体实施方式

[0038] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅为本发明的一部分实施例,而不是全部的实施例,基于
本发明中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其
他实施例,都属于本发明的保护范围。
[0039] 根据本发明的一个实施例,提出一种轻量级混沌加密方法,包括如下步骤:
[0040] 涉及视频传输原型系统技术方案:
[0041] (1)方案的设计:
[0042] (1.1)服务端:首先本发明的技术方案是要利用笔记本的摄像头采集视频,然后捕获视频帧,通过资料查询,这一功能可以在QT(一个跨平台的C++图形用户界面应用程序框
架)中利用OpenCV库实现。自行设定视频帧采集帧率,并对采集到的视频帧进行编码。实时
视频的传输一般采用实时传输的网络传输协议RTP,同时需要一个线程来控制视频帧的发
送,而RTP协议是有现成的封装库JRTPLIB可以使用的。然后利用JRTPLIB库创建RTP会话,将
一个视频帧分成多个数据包通过RTP协议发送给客户端,保证客户端播放视频流速度正常。
[0043] (1.2)客户端:同服务端一样,创建一个线程,利用JRTPLIB库创建RTP会话接收数据包,当一帧数据包接收完全后对其解码,然后将视频帧用图片显示控件显示出来。视频传
输原型的设计框图如图2所示:
[0044] (2)技术基础:
[0045] (2.1)OpenCV库:OpenCV全称是Open Source Computer Vision Library,是由Intel微处理器研究实验室的视觉交互组开发,是一种用于数字图像处理和计算机视觉的
开源函数库,开发语言采用的是C++。OpenCV中包含了300多种图像处理和计算机视觉方面
的C/C++程序,其中包含大量的函数用来处理计算机视觉领域常见的问题,如:运动分析、目
标跟踪、人脸识别、3D重建和目标识别等。目前OpenCV包含如下几个部分:cxcore、Cv、ml、
cvaux、Highgui、cvcam,在本发明中主要用的两个部分是Cv和Highgui。Cv是图像处理和计
算机视觉功能(图像处理、机构分析、运算分析、物体跟踪、模式识别、摄像机定标)。Highgui
是高层GUI图形用户界面,包含媒体的I/O输入输出,图像和视频的编码解码、视频捕捉、图
形交互界面的接口等内容。
[0046] (2.2)RTP协议:RTP协议是一个实时传输的网络传输协议,它包含了在互联网上传送音频和视频的标准数据包格式,是建立在用户数据报协议上的,可以实时传输数据。该协
议提供的信息包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式
(用于说明数据的编码格式)。RTP协议通常和RTP控制协议RTCP一起使用,控制协议RTCP的
作用是QoS反馈和同步媒体流。RTP常用于和流媒体相关的通讯和娱乐,比如电话、电视、视
频会议、和基于网络的一键通业务(类似对讲机的通话)等。RTP协议为传输数据提供实时的
端对端传送服务。为了使用其多路结点和校验服务,应用程序一般在UDP上运行RTP。RTP协
议自己没有按时发送机制也无法保证其它服务质量(QoS),所以RTP协议要与一些合适的底
层网络或传输协议一起去实现这一过程,但是RTP并不确定底层网络的可靠性。
[0047] (2.3)JRTPLIB库:JRTPLIB是一个基于C++、面向对象的RTP封装库,它为开发各种RTP应用程序提供了很大的帮助。JRTPLIB支持定义在RFC3550中的RTP协议,它使用户在发
送和接收RTP报文时简单方便,不会有SSRC冲突,也不用去思考怎么传输RTCP数据,因为
RTCP的功能都在内部实现,不需用户手动操作。当发送RTP报文时,用户只需要给发送函数
提供负载数据。当接收数据时,JRTPLIB提供了访问传入的RTP和RTCP数据的接口。
[0048] (3)方案的实现
[0049] (3.1)开发环境:本发明设计搭建的视频传输原型系统是在QT开发平台上搭建的,QT是一个跨平台C++图形用户界面应用程序开发框架,它既可以开发GUI程序,也可用于开
发非GUI程序,比如控制台工具和服务器。QT是完全面向对象的,很容易扩展,并且允许真正
地组件编程。本发明使用的是QT Creator,它是一个用于QT开发的轻量级跨平台集成开发
环境(IDE)。本发明使用的开发语言是C++。
[0050] (3.2)视频帧的采集和读取:因为视频帧的采集是借助于OpenCV完成的,所以第一步应该是要配置好OpenCV。然后调用其中的函数打开摄像头,从摄像头中获取视频,并创建
一个定时器用来设置采集视频的帧率,在本发明中一开始设置为每100ms采集一次,经过多
次尝试后发现,每20ms采集一次的时候效果最好。当系统超时的时候,就读取当前摄像头的
信息,即为捕获视频帧。
[0051] 采集到视频帧后要给一个发送信号,才能将视频帧插入到发送队列,由RTP发送给视频接收端。在界面设计的时候加入了一个发送按钮,点击发送就会触发发送帧的信号,继
而触发将帧插入到发送队列中的函数。
[0052] (3.3)视频帧的发送:发送视频帧需要一个线程来控制,在界面设计的时候加入了一个初始化按钮,点击初始化就会创建一个新的线程,然后把接收端的IP地址和端口号信
息读入,当视频帧发送信号被触发时(即点击发送按钮),就把视频帧插入到发送队列,最后
开启线程。
[0053] 除了开启线程外,还需要创建RTP会话,视频帧的传输最后还是要通过RTP来实现。还要设置时间戳,它反映了RTP分组数据包中第一个字节的采样时刻,用来标记数据块的先
后顺序。因为之前设置的是20ms采集一次视频帧,所以时间戳单元是1/50。然后读取视频接
收端的信息,指定RTP数据接收端(由其ip地址和端口号确定)。之后就可以进行编码,编码
部分利用缓冲区buffer,将Qimage对象中存贮的视频帧数据存到QByteArray对象里,然后
进行混沌加解密,再转换为jpg格式。
[0054] 最后就是将发送视频帧,因为RTP的数据包大小有限,所以一帧数据要分多个数据包发送,本发明每个数据包发送1024字节。
[0055] (3.4)视频帧的接收:与发送视频帧一样,接收视频帧也需要创建线程和RTP会话。在界面设计的时候加入了一个开启按钮,点击开启就会开启一个线程,获得本地端口号开
始接收数据包。找第一个有RTP数据的流,如果找到了就看当前媒体流的下一个RTP数据,如
果不为空就开始接收当前数据包。当接收完一帧的最后一个数据包时,将这一帧数据解密
然后存放到QImage对象里(相当于解压解码)最后显示在lable控件上,而线程则继续接收
下一帧数据,不断接收显示,形成视频图像。
[0056] 本发明所述的一种基于Logistic映射混沌加密方法的设计与实现如下:
[0057] (1)Logistic映射的特性:一维Logistic映射虽然从数学形式上来看是一个十分简单的混沌映射,但它具有非常复杂的动力学行为,是研究混沌、分形、动力系统等复杂系
统行为的一个经典模型。其数学表达公式如公式(1)所示:
[0058] Xn+1=Xn×μ×(1‑Xn)  (1)
[0059] 其中μ∈[0,4],X∈[0,1]。由此可以看出Logistic映射产生的序列是由μ和X的初值决定的。这两个参数哪怕有一点细微的变化,最后产生的序列也会完全不同。当μ<3时,其
生成的序列是一个固定值即稳态解是不动点,周期为1解;当3<μ<3.449时,系统稳态解周期
变成2;当μ>3.449时,系统稳态解周期变成4;以此类推当μ的值不断增大时,系统稳态解周
期成倍增长,产生的序列在有限个周期轨道内重复,直到μ>3.5699456,系统进入混沌状态。
当μ的取值区间在[3.5699456,4]的时候,尤其是越靠近4时,迭代生成的序列会处于一种伪
随机分布的状态,是非周期、不收敛且对初始条件参数非常敏感的序列,同时Logistic产生
的序列还有良好的自相关性和互相关性。但是Logistic映射也存在一些缺陷。第一,无论初
始值是多少,它的混沌区总会存在一些空白窗口。最大的空白窗口是μ=3.828的时候,周期
是3。在空白窗口中产生的序列值只有几个,所以随机性很差,对于加密来说安全性就不高。
因此选择μ的值就很重要,要避开那些周期窗口多的参数。第二,产生的序列的值会都在一
个区间内,区间外是空白的,输出序列值的分布随参数。当μ<4的时候,(0,1)区间内总不是
均匀布满的。第三,映射产生的序列不能在(0,1)区间内均匀分布,虽然当μ=4的时候序列
值能布满整个(0,1)区间,但是分布也是不均匀的,它是两头大中间小的情况,即接近0和1
的值次数多,接近0.5的值次数少。
[0060] (2)加密算法的设计:首先本发明要设计出一个适合实时视频加密的算法,所以算法要求高效率。考虑到高效率,那么特别复杂的混沌算法就不太适合,所以决定采用基于
Logistic的混沌加密算法,它是一维映射,比较简单,迭代速度很快,而且有复杂的动力学
行为,对初值敏感,生成序列也是伪随机序列,符合加密实时视频的要求。其次因为混沌序
列是无序和有序的混合,无法确定它什么时候是有序什么时候是无序的,而且Logistic映
射一开始迭代出的序列可能不够随机。为了解决这一问题,可以将刚迭代生成的序列先空
跑一段,同时可采用多路序列进行覆盖,使最后生成用于加密的序列基本是无序的。再次是
迭代初值的生成,Logistic算法是由一个初值然后不断迭代生成序列的。为了让算法更加
安全,可以从初值的生成入手,迭代初始值可以由一个主密钥和一组一次性密钥共同生成,
其中主密钥是固定的,一次性密钥是随机生成的。这样即使知道了主密钥,也无法破解密
文。同时还要考虑主密钥和一次性密钥是如何处理的,不论如何都要保证序列的随机性,最
基本的一点就是要“0”、“1”平衡,即0和1的数目要差不多。开始的密钥都是随机生成的,二
进制运算中,异或运算也能保证“0”、“1”平衡,所以选择异或对密钥进行处理,与明文加密
的时候,也选择异或加密。一次性密钥由四个32位的整数组成,每个数的值在0到
0xffffffff之间。为了使它符合Logistic映射的要求(在0‑1之间),一般是将数不断与2相
除,但是由于本方案选择的数的数值特殊性,可以将每个数与0x10000做两次除法求商,从
而快速得到初始值。最后是加密部分,上面已经提到为了保证“0”、“1”平衡,采用异或加密,
但是异或加密是一个简单的加密方法,为了提高安全性,选取四路覆盖,即四个序列异或之
后再和明文异或加密。本发明的加密是一个字节加密一次,对每一位都进行加密,所以加密
一次只需要一个字节,但是从提高安全性角度来说,还可以进一步地对四路序列进行处理,
每一路都选取不同位的字节进行异或,可增加安全性。综上所述,基于Logistic映射的混沌
加密方法步骤如下所示:
[0061] 步骤1:先用时间函数生成四个8位的十六进制数,即数值在0‑0xffffffff之间;
[0062] 步骤2:每个数值与0x10000做两次除法求商变成(0,1)之间的值;
[0063] 步骤3:将每个秘钥第2到第5个字节与主密钥异或处理;
[0064] 步骤4:再用新的密钥去迭代产生混沌序列;
[0065] 步骤5:与明文进行异或加密(将一个明文字节与第一个密钥的第五个字节,第二个密钥的第四个字节,第三个密钥的第三个字节以及第四个密钥的第二个字节进行异或);
[0066] 步骤6:重复步骤5,直到对所有的明文序列进行加密。
[0067] 加密方法的实现:首先是产生一次性密钥,本发明设计的方法一次可以产生四个数值在(0,1)之间随机数,普通的混沌加密算法一次只能产生一个混沌序列,而且获得(0,
1)之间的数需要不断地与2做除法,比较费时。本发明采用先用时间函数生成四个8位的十
六进制数,即数值在0‑0xffffffff之间,所以每个数与0x10000做两次除法求商就能变成
(0,1)之间的值,大大节省了生成初始密钥的时间,而且一次能产生四个密钥。
[0068] 其次是对产生的一次性密钥进行处理,并不采用生成密钥的全部字节,只用其中第2到第5个字节,现将这四个字节与主密钥异或处理,生成新的密钥,再用新的密钥去迭代
产生混沌序列。这样有了主密钥和一次性密钥这样的双重保障,使其更加难以破解。同时让
新生成的序列先空跑一段,去掉前面不太随机的部分,增加序列的可靠性。
[0069] 最后是与明文加密的部分,采用的是异或加密,但是在此基础上是将一个明文字节与第一个密钥的第五个字节,第二个密钥的第四个字节,第三个密钥的第三个字节以及
第四个密钥的第二个字节进行异或(四路异或覆盖)。
[0070] 加密方法的改进与测试:
[0071] (1)基于Logistic映射算法的改进:
[0072] (1.1)参数μ的改进:
[0073] 在原来的算法中,μ的值是固定不变的,u[4]={3.91,3.95,3.97,3.98},虽然也比较靠近4但是为了更安全也为了更靠近4,改变后的算法将μ值进行动态改变。每进行一次迭
代后,就判断μ的值是否大于4,若大于4则将μ的值减去密钥值除以10,即减去一个0‑0.1之
间的数,那么减完以后μ也是一个大于3.9的数,还是比较接近于4的;若μ的值小于4,就将μ
加上密钥值除以100,以此循环,将μ的值控制在4附近。设想的结果是即使不能完全避免空
白串口和空白区间也可以相对的减少一些,而且μ的值在每一次生成新的序列数时都是改
变的,更加难以破解。
[0074] 对于Logistic映射来说,影响序列的主要两个因素一个是初始值另一个就是μ,μ的变化对它产生序列的空白窗口和是否存在空白区的影响很大。在描述Logistic映射特性
的时候已经提到,不论初值怎么变,产生的序列都会存在空白窗口,尤其是在一些特定的μ
值时,会更加明显,比如当μ=3.828时,会产生最大的空白窗口,而且当μ<4的时候,(0,1)区
间内总不是均匀布满的,μ越靠近4,序列值在(0,1)区间内分布得越满。所以我们可以发现
当μ=4的时候是最理想的状态,但是这是一个固定的值,对于加密算法来说就不太现实了,
所以我们只能想办法让μ的值尽可能的靠近4。
[0075] (1.2)Tent与Logistic映射的混合:Tent映射又叫做帐篷映射,它的数学表达式下所示:
[0076]
[0077] 当a=1/2时,Tent映射会展现最典型的形式,产生的序列也是分布最均匀的,对不一样的参数也会有近似的分布密度。由其公式可以看出它迭代是一个线性拉伸和线性折叠
不断重复的过程,线性拉伸让它相邻的序列数指数分裂,线性折叠又限定了它的范围。分段
线性的特点使生成序列的各个值分布密度均匀。Tent映射与Logistic映射是拓扑共轭的关
系,所有这两种映射序列的取值范围是一样的,这是Tent映射能与Logistic映射相结合进
行优化的前提条件。Tent映射在计算机上的运算是把其序列数二进制表达的小数部分进行
无符号左移,这种方式比较适合大数量级数据的运行,因此相对于Logistic映射来说,Tent
映射的运算速度更快,即能快速地迭代处混沌加密序列。除此之外,Tent映射比Logistic映
射还有一个明显的优势就是它的序列值分布比较均匀,如图4所示,是Tent映射迭代30000
次得出的(0,1)区间内各值出现的次数,它是均匀分布的。而在本发明上面有提到Logistic
映射的序列值会出现两头大中间小的情况,分布不均匀。
[0078] 但是Tent映射也有一些缺陷,因为计算机字长的限制,在进行运算时,小数部分的二进制在进行了一定次数的无符号左移运算之后将趋近于零,也就是会出现不动点,这就
失去了加密算法的意义。序列中还会存在小周期和不稳定周期点,而且分段线性的特点也
使序列的相邻点有较强的相关性。通过上面的这些分析再结合Logistic映射的特性,可以
发现Tent和Logistic这两种映射其实是可以互补的。Logistic的缺陷是序列值分布不均匀
而且有空白窗口,而Tent映射的缺陷是容易陷入不动点和小周期,那么当Tent映射陷入小
周期或不动点的时候使用Logistic映射将其初始化,是否能产生不一样的效果。什么时候
陷入小周期和不动点在加密的过程中是难以判断的,所以在本次课题中,尝试了Tent映射
每迭代50、100、200、500、1000次就使用Logistic映射初始化,并对每种算法产生的序列进
行了测试。
[0079] 本发明基于混沌的视频加密系统的实现与测试:
[0080] (1)基于混沌的视频加密系统的实现:根据之前视频传输系统的设计,加密部分应该是放在编码之后,对jpg图像数据进行加密,另一端接收后先解密然后再解码,整个系统
的情况如图1所示。混沌算法与视频传输系统结合要在原来算法的基础上稍作改动。主要是
在一次性密钥的保存和发送上,视频采集端在加密视频时会用时间函数生成一组一次性密
钥,解密的时候需要用到这个密钥,所以需要把一次性密钥与视频帧数据一起发送给视频
接收端,把密钥放在第一个数据包的最前面,接收时把它先提取出来即可。
[0081] 发送前插入字节数组:ba.insert(0,(char*)&mk,4*4);
[0082] 接收时先从数组中提取:QByteArray tmp=array.mid(4*4);
[0083] 在视频采集端的界面有本地端口、远程端口、远程IP地址需要填写,有一个使用说明可以帮助用户操作系统。还有一个视频播放窗口能显示本地采集的视频。界面显示如图5
所示。
[0084] 点击使用说明后出现的子界面如图6所示。在视频接收端界面有控制端口需要填写,有一个使用说明可以帮助用户操作系统。还有一个视频播放窗口能显示接收到的视频。
界面显示如图7所示。点击使用说明后出现的子界面如图8所示。
[0085] 尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,且应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技
术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些
变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。