一种基于Logistic映射的混沌加密方法转让专利
申请号 : CN201911389163.2
文献号 : CN111093098B
文献日 : 2022-03-18
发明人 : 李晓东 , 刘北圣 , 金鑫
申请人 : 北京电子科技学院
摘要 :
权利要求 :
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映射的混沌加密方法
技术领域
背景技术
密,是保护视频在传输中安全的重要手段,研究出高性能的适合实时视频信息的加密算法
是解决网上视频安全这个问题的关键所在。视频信息具有数据量大,编码结构特殊,实时性
要求强等特点,这些特点对现有的加密算法提出新的要求:实时视频加密在保证其安全性
的同时,要尽可能地满足实时性、高效性。
时性要求强,这些传统的针对文本的算法已经不适合了。现在的视频基本都是数字视频,视
频加密技术也有了新的发展。可以对数字视频信号进行压缩编码,然后再存储或传输。对视
频信号可以在上述任何一个环节中进行加密。目前的视频加密技术种类繁多,主要分成两
大类,一类是全部加密,它是对全部视频数据流用密码技术直接进行加解密的加密技术,它
的安全性较高但是加密速度较慢;另一类是选择性加密,它是只选择性地加密重要数据的
方法,提高了加密速度但是安全性不高,可能遭受攻击而被破解。具体还有一些算法,例如
改变Huffman码表算法,它将通用Huffman码表改变(加密)后使用,并作为密钥,非法接收方
没有这个特殊码表,就不能正确解码,但是一般改变Huffman码表会降低压缩率,而且密钥
较长。还有Zig‑Zag置乱算法、基于统计规律的视频加密算法、纯置乱算法等等。混沌系统与
加密技术相结合是现在比较热门的一个课题,混沌系统不仅可以快速生成大量的密钥,有
效地提高加密速度,还具有非周期性、对初值与参数极度敏感性和不可预测性等特征,可以
提供具有良好随机性的伪随机序列。虽然有大量的混沌加密算法面世,但是这些加密算法
并不成熟,仍然需要进一步研究。
发明内容
同时混沌序列的随机性,以及混沌映射对初值的敏感性都体现了算法的安全程度较高。本
发明针对视频的安全需求研究了高性能的混沌加密算法。
如下:
节进行异或;
的缺陷是容易陷入不动点和小周期;Tent映射每迭代50、100、200、500、1000次就使用
Logistic映射初始化。
放在第一个数据包的最前面,接收时先提取出来。
法考虑了Logistic和Tent这两种混沌映射的优缺点,并进行有目的和有针对性地结合,从
而得到一个比单纯的两种算法都要优良的混沌加密算法。同时还设计实现了一个实时视频
传输原型,与视频加密算法相结合,验证了加密算法的可行性。本发明的方法性能高、迭代
速度快,可以快速生成密钥序列,满足实时视频的实时加密需求。同时混沌序列的随机性,
以及混沌映射对初值的敏感性都体现了算法的安全程度较高。
附图说明
具体实施方式
本发明中的实施例,本领域的普通技术人员在不付出创造性劳动的前提下所获得的所有其
他实施例,都属于本发明的保护范围。
架)中利用OpenCV库实现。自行设定视频帧采集帧率,并对采集到的视频帧进行编码。实时
视频的传输一般采用实时传输的网络传输协议RTP,同时需要一个线程来控制视频帧的发
送,而RTP协议是有现成的封装库JRTPLIB可以使用的。然后利用JRTPLIB库创建RTP会话,将
一个视频帧分成多个数据包通过RTP协议发送给客户端,保证客户端播放视频流速度正常。
输原型的设计框图如图2所示:
开源函数库,开发语言采用的是C++。OpenCV中包含了300多种图像处理和计算机视觉方面
的C/C++程序,其中包含大量的函数用来处理计算机视觉领域常见的问题,如:运动分析、目
标跟踪、人脸识别、3D重建和目标识别等。目前OpenCV包含如下几个部分:cxcore、Cv、ml、
cvaux、Highgui、cvcam,在本发明中主要用的两个部分是Cv和Highgui。Cv是图像处理和计
算机视觉功能(图像处理、机构分析、运算分析、物体跟踪、模式识别、摄像机定标)。Highgui
是高层GUI图形用户界面,包含媒体的I/O输入输出,图像和视频的编码解码、视频捕捉、图
形交互界面的接口等内容。
议提供的信息包括:时间戳(用于同步)、序列号(用于丢包和重排序检测)、以及负载格式
(用于说明数据的编码格式)。RTP协议通常和RTP控制协议RTCP一起使用,控制协议RTCP的
作用是QoS反馈和同步媒体流。RTP常用于和流媒体相关的通讯和娱乐,比如电话、电视、视
频会议、和基于网络的一键通业务(类似对讲机的通话)等。RTP协议为传输数据提供实时的
端对端传送服务。为了使用其多路结点和校验服务,应用程序一般在UDP上运行RTP。RTP协
议自己没有按时发送机制也无法保证其它服务质量(QoS),所以RTP协议要与一些合适的底
层网络或传输协议一起去实现这一过程,但是RTP并不确定底层网络的可靠性。
送和接收RTP报文时简单方便,不会有SSRC冲突,也不用去思考怎么传输RTCP数据,因为
RTCP的功能都在内部实现,不需用户手动操作。当发送RTP报文时,用户只需要给发送函数
提供负载数据。当接收数据时,JRTPLIB提供了访问传入的RTP和RTCP数据的接口。
发非GUI程序,比如控制台工具和服务器。QT是完全面向对象的,很容易扩展,并且允许真正
地组件编程。本发明使用的是QT Creator,它是一个用于QT开发的轻量级跨平台集成开发
环境(IDE)。本发明使用的开发语言是C++。
一个定时器用来设置采集视频的帧率,在本发明中一开始设置为每100ms采集一次,经过多
次尝试后发现,每20ms采集一次的时候效果最好。当系统超时的时候,就读取当前摄像头的
信息,即为捕获视频帧。
而触发将帧插入到发送队列中的函数。
息读入,当视频帧发送信号被触发时(即点击发送按钮),就把视频帧插入到发送队列,最后
开启线程。
后顺序。因为之前设置的是20ms采集一次视频帧,所以时间戳单元是1/50。然后读取视频接
收端的信息,指定RTP数据接收端(由其ip地址和端口号确定)。之后就可以进行编码,编码
部分利用缓冲区buffer,将Qimage对象中存贮的视频帧数据存到QByteArray对象里,然后
进行混沌加解密,再转换为jpg格式。
始接收数据包。找第一个有RTP数据的流,如果找到了就看当前媒体流的下一个RTP数据,如
果不为空就开始接收当前数据包。当接收完一帧的最后一个数据包时,将这一帧数据解密
然后存放到QImage对象里(相当于解压解码)最后显示在lable控件上,而线程则继续接收
下一帧数据,不断接收显示,形成视频图像。
统行为的一个经典模型。其数学表达公式如公式(1)所示:
生成的序列是一个固定值即稳态解是不动点,周期为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的值次数少。
Logistic的混沌加密算法,它是一维映射,比较简单,迭代速度很快,而且有复杂的动力学
行为,对初值敏感,生成序列也是伪随机序列,符合加密实时视频的要求。其次因为混沌序
列是无序和有序的混合,无法确定它什么时候是有序什么时候是无序的,而且Logistic映
射一开始迭代出的序列可能不够随机。为了解决这一问题,可以将刚迭代生成的序列先空
跑一段,同时可采用多路序列进行覆盖,使最后生成用于加密的序列基本是无序的。再次是
迭代初值的生成,Logistic算法是由一个初值然后不断迭代生成序列的。为了让算法更加
安全,可以从初值的生成入手,迭代初始值可以由一个主密钥和一组一次性密钥共同生成,
其中主密钥是固定的,一次性密钥是随机生成的。这样即使知道了主密钥,也无法破解密
文。同时还要考虑主密钥和一次性密钥是如何处理的,不论如何都要保证序列的随机性,最
基本的一点就是要“0”、“1”平衡,即0和1的数目要差不多。开始的密钥都是随机生成的,二
进制运算中,异或运算也能保证“0”、“1”平衡,所以选择异或对密钥进行处理,与明文加密
的时候,也选择异或加密。一次性密钥由四个32位的整数组成,每个数的值在0到
0xffffffff之间。为了使它符合Logistic映射的要求(在0‑1之间),一般是将数不断与2相
除,但是由于本方案选择的数的数值特殊性,可以将每个数与0x10000做两次除法求商,从
而快速得到初始值。最后是加密部分,上面已经提到为了保证“0”、“1”平衡,采用异或加密,
但是异或加密是一个简单的加密方法,为了提高安全性,选取四路覆盖,即四个序列异或之
后再和明文异或加密。本发明的加密是一个字节加密一次,对每一位都进行加密,所以加密
一次只需要一个字节,但是从提高安全性角度来说,还可以进一步地对四路序列进行处理,
每一路都选取不同位的字节进行异或,可增加安全性。综上所述,基于Logistic映射的混沌
加密方法步骤如下所示:
1)之间的数需要不断地与2做除法,比较费时。本发明采用先用时间函数生成四个8位的十
六进制数,即数值在0‑0xffffffff之间,所以每个数与0x10000做两次除法求商就能变成
(0,1)之间的值,大大节省了生成初始密钥的时间,而且一次能产生四个密钥。
产生混沌序列。这样有了主密钥和一次性密钥这样的双重保障,使其更加难以破解。同时让
新生成的序列先空跑一段,去掉前面不太随机的部分,增加序列的可靠性。
第四个密钥的第二个字节进行异或(四路异或覆盖)。
代后,就判断μ的值是否大于4,若大于4则将μ的值减去密钥值除以10,即减去一个0‑0.1之
间的数,那么减完以后μ也是一个大于3.9的数,还是比较接近于4的;若μ的值小于4,就将μ
加上密钥值除以100,以此循环,将μ的值控制在4附近。设想的结果是即使不能完全避免空
白串口和空白区间也可以相对的减少一些,而且μ的值在每一次生成新的序列数时都是改
变的,更加难以破解。
的时候已经提到,不论初值怎么变,产生的序列都会存在空白窗口,尤其是在一些特定的μ
值时,会更加明显,比如当μ=3.828时,会产生最大的空白窗口,而且当μ<4的时候,(0,1)区
间内总不是均匀布满的,μ越靠近4,序列值在(0,1)区间内分布得越满。所以我们可以发现
当μ=4的时候是最理想的状态,但是这是一个固定的值,对于加密算法来说就不太现实了,
所以我们只能想办法让μ的值尽可能的靠近4。
不断重复的过程,线性拉伸让它相邻的序列数指数分裂,线性折叠又限定了它的范围。分段
线性的特点使生成序列的各个值分布密度均匀。Tent映射与Logistic映射是拓扑共轭的关
系,所有这两种映射序列的取值范围是一样的,这是Tent映射能与Logistic映射相结合进
行优化的前提条件。Tent映射在计算机上的运算是把其序列数二进制表达的小数部分进行
无符号左移,这种方式比较适合大数量级数据的运行,因此相对于Logistic映射来说,Tent
映射的运算速度更快,即能快速地迭代处混沌加密序列。除此之外,Tent映射比Logistic映
射还有一个明显的优势就是它的序列值分布比较均匀,如图4所示,是Tent映射迭代30000
次得出的(0,1)区间内各值出现的次数,它是均匀分布的。而在本发明上面有提到Logistic
映射的序列值会出现两头大中间小的情况,分布不均匀。
失去了加密算法的意义。序列中还会存在小周期和不稳定周期点,而且分段线性的特点也
使序列的相邻点有较强的相关性。通过上面的这些分析再结合Logistic映射的特性,可以
发现Tent和Logistic这两种映射其实是可以互补的。Logistic的缺陷是序列值分布不均匀
而且有空白窗口,而Tent映射的缺陷是容易陷入不动点和小周期,那么当Tent映射陷入小
周期或不动点的时候使用Logistic映射将其初始化,是否能产生不一样的效果。什么时候
陷入小周期和不动点在加密的过程中是难以判断的,所以在本次课题中,尝试了Tent映射
每迭代50、100、200、500、1000次就使用Logistic映射初始化,并对每种算法产生的序列进
行了测试。
的情况如图1所示。混沌算法与视频传输系统结合要在原来算法的基础上稍作改动。主要是
在一次性密钥的保存和发送上,视频采集端在加密视频时会用时间函数生成一组一次性密
钥,解密的时候需要用到这个密钥,所以需要把一次性密钥与视频帧数据一起发送给视频
接收端,把密钥放在第一个数据包的最前面,接收时把它先提取出来即可。
所示。
界面显示如图7所示。点击使用说明后出现的子界面如图8所示。
术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些
变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。