混沌在信息加密中的应用是目前的研究热点之一,为了增强混沌加密的安全性,我们提出一种基于多个混沌离散映射的动态加密算法。
利用多个混沌映射的信息加密算法
一、三个混沌映射
(1)Logistic映射
Logistic映射是一个自治一维映射:
当μ=2时,系统为满映射的混沌态。文中使用μ=2的Logistic映射。
(2)Cubic映射
当3.2≤r≤4时,输出为混沌序列(-1≤xn≤1)。文中Cubic映射的r值与输入的密钥有关。
(3)ArnoldCat映射
ArnoldCat映射是一个保面积混沌映射:
该映射虽然没有吸引子,但它利用矩阵相乘增大x和y来实现“ 拉伸”,又通过取模使x和y发生 “折叠”,而拉伸和折叠是产生混沌运动的两个典型因素,使其输出为混沌序列(0≤xn≤1,0≤yn≤1)。其Lyapunov指数为:
文中提出的加密算法使用Logistic和Cubic映射构成两个级联混沌子系统a和b,并根据密文反馈及ArnoldCat映射的输出改变两个子系统a和b的迭代次数,两个子系统的输出和明文经加密函数处理后得到密文。
二、基于多混沌映射的信息加密算法描述
文中提出的混沌加密系统框图如图所示。它由混沌级联子系统a和b、ArnoldCat映射和加密函数f(_)构成。子系统a和b都是由两级离散混沌映射联接构成:子系统a的第一级和第二级依次是Logistic映射和Cubic映射;子系统b的第一级和第二级则依次是Cubic映射和Logistic映射。
在对第i个明文mi加密时,子系统a和b各迭代ηi次和_i次后,分别输出ui和wi。ui、wi及明文mi经加密函数f(_)处理后,产生密文ei。同时利用ei的值改变ArnoldCat映射下次迭代运算的初值,进行若干次迭代后,根据所得结果相应地改变子系统a和b下一轮的迭代次数,为第i+1个明文mi+1的加密做准备。
加密系统中各混沌映射的初值和初始迭代次数均与密钥有关。密钥K分为K1、K2和K3三部分,其中实数K1,K2∈[3.2,4],K3是由n(n_16)个字符构成的字符串(K3=k1k2%kn)。
将子系统a和b中Cubic映射的参数r分别设置为K1、K2。其余混沌映射的初值和和初始迭代次数根据K3确定。加密函数:
加密算法步骤如下:
(1)根据密钥k1k2%kn(二进制数)生成初始值:
子系统a的初值:
子系统a的迭代次数:
子系统b的初值:
子系统b的迭代次数:
Arnold Cat映射的初值:
(2)子系统a和b分别经ηi(i=1,2,3,%)次和_i次迭代后,输出ui和wi;
(3)ui、wi以及第i个明文mi经加密函数后,生成第i个密文ei;
(4)计算△=ei/256,并将
作为Cubic映射的迭代初值,经3次迭代运算后,得到xC,i+1和yC,i+1;
(5)根据xC,i+1和yC,i+1计算子系统a和b下一轮的迭代次数ηi+1和_i+1。
然后重复以上步骤(2)~(5),直至所有明文均加密完毕。
解密是加密的逆过程,解密函数为:
该解密算法的步骤与加密算法相似。
三、基于多混沌映射的信息加密算法说明
从根本上来说,混沌加密主要是利用混沌系统生成不可预测的类随机信号,来阻止非法攻击者得到系统的确定特性,以保证系统的安全性。或者说,混沌加密实际上是利用信号的不可预测性隐藏混沌系统的确定性。为此,上图所示的加密系统中使用了混沌映射的级联和混沌映射迭代次数的动态变化,将混沌映射的输出和明文文件加密函数进行非线性处理,以提高密文的不可预测性。
设计过程中,在保证算法安全性的前提下,为降低算法复杂度,选用了三个运算较简单的混沌映射。其中,构成级联混沌子系统的Logistic映射和Cubic映射,其值域相同,便于直接级联。而且参数μ=2的Logistic映射处于满映射混沌态,避免了Logistic映射在某些μ值下存在无限窗口的缺点。级联混沌子系统的迭代次数根据ArnoldCat映射的输出动态改变,ArnoldCat映射是保面积映射,没有吸引子,有助于提高算法的安全性,且易于实现。
另外,图中的密文反馈是必不可少的。若没有密文反馈,则在明文中有重复字符时,其密文会呈现明显的规律性,使系统易被非法攻击者破译。加了密文反馈之后,即使明文中有连串的重复字符,对应的密文仍然是类随机的。实际上,密文反馈使明文中的任意字符均影响到其后字符对应的密文,加强了算法的安全性。
由于算法处理的是一个字节的明文字符(0~255),因此在算法中使用了取模256的运算。子系统a和b的迭代次数μ_的下限值取为3,以减小混沌系统前后状态之间的关联性。同时,设置了迭代次数的上限值,增大上限值,有利于提高算法的安全性,但会降低算法的运行速度。实际应用中,可根据需要对迭代次数的上限值进行折衷选择。
文中的加密算法对各混沌映射的最大迭代次数作了限制,加密一个明文字符(1个字节)所需的迭代总次数不超过70,而著名的Baptista型混沌加密算法及其若干改进形式,加密一个明文字符所需迭代次数大都超过100。同时,文中算法采用简单的混沌映射,无需解微分方程,计算方便,易于实现。
小知识之Lyapunov指数
Lyapunov指数是衡量系统动力学特性的一个重要定量指标,它表征了系统在相空间中相邻轨道间收敛或发散的平均指数率。对于系统是否存在动力学混沌, 可以从最大Lyapunov指数是否大于零非常直观的判断出来: 一个正的Lyapunov指数,意味着在系统相空间中,无论初始两条轨线的间距多么小,其差别都会随着时间的演化而成指数率的增加以致达到无法预测,这就是混沌现象。