许向亮,李国东,2*,戴婉莹
(1.新疆财经大学统计与数据科学学院,新疆 乌鲁木齐 830012;2.桂林电子科技大学数学与计算科学学院,广西 桂林 541004)
混沌系统是非线性动力学系统,有貌似随机性、对初始条件的敏感性,以及依赖于初始条件的内在变化等特点,可以产生长期的、不可预测性的伪随机序列,常常被用于加密领域,扩充密钥流。大量实验研究表明,混沌系统产生的密钥流用于图像的加密领域,其加密效果好,安全性系数高,不容易被破解[1−4]。但是一些文献[5−10]总结出以下几点缺陷:所构造的混沌系统出现退化现象,没有具体给出其分叉图,没有分析Lyapunov 指数谱的稳定性,参数的选择不具有代表性;对于图像的置乱采用简单的、有周期性的线性变换,其密文不能抵抗噪声、剪切攻击;加密算法采用简单的异或运算;算法对明文的关联性不强;加密效率不高;不能抵抗选择明文攻击等。随着学者们的深入研究,对有缺陷的加密算法进行改进,提出了新的加密方案。王勇等[11]提出了一种五维细胞神经网络和AES 相结合的加密算法。该算法定义了5 个常数并提取一个明文像素值的相关参数作为密钥,将神经网络产生的序列作为AES 加密算法的目标密钥,代入AES 加密算法进行多次加密。该算法有效地解决了加密算法中密钥选取与明文不相关的问题,加密的安全系数较高。谢国波等[12]提出了一种二次广义猫映射的混合混沌加密算法,其算法利用广义cat 映射对像素值进行无重复迭代多次置乱,使置乱次数与明文相关,改善了传统线性映射的置乱周期,但是其密文扩散算法简单。采用简单的异或运算的一次一密加密算法不能有效地抵抗选择明文攻击。黄迎久等[13]将一维混沌映射Logistic 和Sine 耦合为一个新的混沌映射,并通过了混沌系统伪随机特性的NIST 测试和Lyapunov 指数等验证方法,其产生的混沌序列分布均匀,但是仍旧没有解决混沌序列退化等问题。文献[14]采用FPGA对图像加密方案进行了硬件上的实现。文献[15]利用五维细胞神经网络(CNN)对图像进行位平面置乱和像素替换操作,其实验仿真结果对比分析表明,该算法可以有效地抵抗选择明文攻击。为了更深入地了解混沌序列,学者们引入神经网络对混沌进行控制并对其产生的伪随机序列进行预测[16]。周群利等[17]研究了RBF 神经网络的非线性迭代预测控制,并实现了对Duffing 混沌系统的控制,从而使得混沌序列在小范围内可以精确预测。
在混沌图像加密和神经网络预测领域的成果有很多,却鲜有将二者结合应用到图像加密领域。为了解决混沌系统的退化、明文和密文的关联性不强、所选取的密钥流容易被破解等问题,本文构造了一种3D-Duffing 混沌系统,在混沌迭代的过程中加入随机数扰动,并摒弃传统混沌序列的处理方法,采用了对序列进行优化拼接的技术,以有效地解决多次迭代使混沌系统退化的问题,设计了明文相关联的位循环扩散加密算法,并在此基础上引入RBF 神经网络预测Henon 混沌序列,并随机嵌入优化的加密序列对图像进行二次加密。结果表明:该算法可以有效地抵抗选择明文攻击。
传统Duffing 方程,其表达式为
设置阻尼系数k为未知变量,通过改变r,ω的值来观察广义Duffing 混沌系统的分叉行为。
由于图1(a)中的分叉散点图较为密集,意味着混沌序列的伪随机性更强,混沌特性更优,因此,本文选取该参数下的传统Duffing 混沌系统作为研究对象。
图1 不同参数下Duffing 混沌系统的分叉图
构建第3 个微分方程z˙=4x2y,并将系统式(1)中的x3项改为系统式(2)中的第3 个变量z,建立与系统式(1)等效的三维Duffing 混沌状态方程,为
选取k=0.5,初始状态分别为[0.3322,0.1175]、[0.1579,1.1570,0.2486],时间为1000 s,对二维、新三维混沌系统进行仿真,二维、新三维Duffing混沌系统的时序图、吸引子相图,以及新三维Duffing 吸引子的平面图分别如图2—3 所示。
图2 Duffing 混沌系统的仿真
从仿真的结果来看,新三维Duffing 混沌系统的吸引子图呈非平面状,且保留传统Duffing 混沌系统的相空间结构,能同时反映出更多的混沌信息。
Lyapunov 指数是检验系统是否混沌的有效手段之一,指数越大,说明混沌特性越明显,混沌程度越高。本文采用雅各比矩阵的方法做出3DDuffing 混沌系统的Lyapunov 指数谱图,如图4 所示。由图可知:新三维Duffing 系统的Lyapunov1=0.2187,相比2D-Duffing 混沌系统正的Lyapunov1=0.1162 要大的多,因此系统更加混沌,序列的伪随机特性更强,适合应用于图像加密算法。
图3 新三维Duffing 混沌系统的平面图
图4 Lyapunov 指数谱图
Henon 混沌映射是一种典型的二维离散混沌系统,其表达式为
当a=1.4,b=0.3时,系统进入混沌状态。给定初始值x(1)=0.2109,y(1)=0.5026,设置迭代次数为106。由于混沌产生的随机序列分布不均匀,所以截取1~8 万之间的序列,设为a11,a22,k=10。并对该组序列进行改进,如式(4)所示。
式中 ceil表示向上取整函数。
本文使用RBF 神经网络(径向基网络)对Henon 混沌序列进行预测,RBF 神经网络结构图如图5 所示,建立完整的RBF 神经网络映射x→y,x∈Rn,y∈Rr,r>1,其数学表达式为
图5 RBF 神经网络结构图
其中x∈Rn为 网络的输入向量,ϕ(·)称为径向基函数,完成 Rn→Rr的非线性变换,||•||表示范数(欧几里德范数),ωi,j为RBF 神经网络隐含层向输出层赋予的权值,αm为隐含层的中心点,其值可以采用N-MEANS 法来确定,ωi,0为网络的偏置。
本文采用MATLAB 2017a 自带的RBF 神经网络函数,其通用函数为net=newrb(P,T,goal,spread,MN,DF),其中P为输入向量,T为输出向量,goal 为均方误差的目标,spread 为径向基的扩展速度,MN 为最大神经元的个数。设定goal 后,当神经元个数达到MN,立即停止网络训练。采用本文1.2 节中Henon 混沌映射的参数,迭代103次,除去x序列的前100 个值,消除混沌序列的初态效应,并选取前600 个数据训练RBF 神经网络,然后选取剩余混沌序列的前300 个数据对RBF 神经网络进行检验。本文设定的参数为:goal=0.001、spread=3、MN=50、DF=1。当出现NEWRB,neurons=42,MSE=0.000960625,停止网络训练,MN=42,即构建的神经网络最大神经元的个数为42 个,且MSE 的值达到设定的goal 值,仿真结果如图6—7 所示。
图6 神经网络的训练结果
图6 显示训练数据达到设定的均方误差的目标后停止了网络训练。图7 可以看出,RBF 达到了混沌序列的预测效果,数据基本吻合,既保留了混沌序原有的特性,又与原来的混度序列不同,且一步预测误差基本维持在[−0.05,0.05]之间,从而得到了新的伪随机序列,记为x′,并作为嵌入预测密钥流,应用于文中的二次加密算法。
图7 Henon 混沌x 序列的预测
仿射变换类似于Arnold 变换或者面包师变换,其基本原理都是通过几何变换来改变像素值的位置,从而使图像的像素位置发生较大的变化。不同的是仿射变换没有置乱周期,其置乱效果也比同类置乱算法更优。仿射变换的一般形式为
其矩阵形式为
式中:(x,y)为图像像素坐标;(x′,y′)为仿射变换后的像素坐标;a,b,c,d,e,f为变换式中的参数系数。通过上述的方法来改变图像像素的位置,不断重复上述操作得到的置乱图像效果更好,但是也受不同参数的影响,从而应择优进行选择。本文的仿射变换如下。
1)仿射正变换,当x 当x≥y时, 其中x,y∈(0,1,2,···,K)。 2)逆仿射变换,当x′+y′≤K+1时。 当x′+y′>K+1时, 其中x′,y′∈(0,1,2,···,K)。 K为提取明文信息后的参数。这样置乱图像就会随图像信息的复杂度而发生明显的变化,加密算法与明文密切相关。 将加密序列优化拼接,对置乱图像进行明文相关联的位循环扩散加密;将明文中任意一位像素点的信息通过异或运算扩散到整个密文中去,并设计一个随机嵌入预测密钥的二次加密算法。加密流程如图8 所示。 图8 加密流程图 加密算法具体步骤如下。 步骤1:给出大小为M×N的彩色图像,设定新三维Duffing 混沌系统的初值。 步骤2:先将图像转化为灰度图像P,并对图像进行仿射变换,提取明文信息作为仿射变换的重要参数。其中N=size(P,1),得到图像的高度,作为仿射变换的重要参数,同时变换次数n,n=M+N,得到置乱图像P1。 步骤3:从原始彩色图像中随机选取任意像素点的坐标 (x,y),提取R,G,B分量值分别除以3 个分量的总和得到α,β,χ,且值的范围为[0,1]。 其中R,G,B分别为任意彩色像素点(x,y)的分量。 步骤4:构造加密序列S。设定新3D-Duffing混沌系统的初值和混沌参数r,ω,k值,步长设为h,迭代1 0×M×N次,除去前1 03次,并且每1 03次迭代后分别对Duffing 混沌产生的x,y,z序列进行小参数扰动,其中 λ为扰动因子,扰动处理如式(13)所示,将扰动处理后的3 列伪随机数,保存为浮点数,摒弃传统的将序列直接相加,并按照式(14)采用优化拼接的方法构造加密序列S。 步骤5:对加密序列S进行处理,如式(15)所示。 式中:f loor表 示向下取整运算;pow2(16)是以2 为基底16 次幂运算;mod表示取模运算。舍去处理后S序列的前M×N个,并进行等分割操作,得到4 等份的S1,S2,S3,S4,作为位循环扩散的密钥流,如式(16)所示。 步骤6:进行正逆向位循环扩散,其算法分别如式(17)和式(18)所示,循环扩散2 次得到加密图像C。 式中 ⊕表示异或运算。 步骤7:截取Henon 混沌x序列的两部分,利用RBF 神经网络分别对两部分序列做训练和检验,可以得到长度为l的预测序列x′。为了既确保预测的准确性又保证有一定的预测误差,l的长度在确保l 步骤8:选取文中1.2 节中改进的Henon 混沌的y序列a222,截取长度为M×N,然后随机截取与x′同等长度为l的 序列,并将预测序列x′嵌入截取后的序列之中,构成新的加密序列X。随机截取位置为第M+N位,这样嵌入预测密钥位置与明文信息相关,进一步增强加密的安全性,如图9 所示。 图9 嵌入预测密钥 步骤9:先将加密序列X做如式(19)的处理,并将处理后的序列利用 reshape 函数转到一个M×N的二维矩阵Image 中。利用步骤6 中加密图像C与掩码矩阵Image 再次进行异或运算,得到最终的加密图像I,如式(20)所示。 式中:abs表 示取绝对值函数;bitxor表示异或运算。 步骤10:解密即加密的逆过程,其中逆仿射变换式为式(10)—(11),逆向位循环扩散式为式(18)。 本文采用 8 00×800大小的彩色明文图像进行实验仿真,使用灰度图像来进行加密,以MATLAB 2017 a 为实验仿真平台,选取原图像位置P(1,1)的像素点作为试验点,其R,G,B分量分别为:R=147,G=175,B=196,新Duffing 混沌系统参数r=1,ω=2,k=0.5,初始状态为[0.1579,1.1570,0.2486];Henon 混沌系统的参数a=1.4,b=0.3,初始状态x(1)=0.2109,y(1)=0.5026,仿射变换参数K=800,变换次数n=1 600(由图像大小所决定)。图10(c)为仿射变换1600 次后的置乱图像。图11(b)为最终加密图像。按照解密流程解密得到解密图像,如图11(c)所示。 图10 置乱图像 图11 最终加密、解密图像 图像的置乱仅改变了像素值的位置,因此图像的置乱度是评价置乱效果的重要指标之一。本文将灰度图和置乱图像进行对比分析,以不动点比表征置乱度。 定义1对于灰度图像P1和 置乱图像P2中的像素点位置 (i,j),若P1(i,j)=P2(i,j),则称像素点 (i,j)为灰度图像P1相 对于置乱图像P2的不动点。 定义2灰度图像P1相 对于置乱图像P2的不动点总个数占灰度图像P1像素值总个数的百分比,称为置乱图像相对于原图像的不动点比,其表达式为 经计算,本文实验得出置乱后的不动点比为0.0647%,置乱度达到99.9353%,如表1 所示,可以看出置乱效果比较好。 表1 置乱图像不动点比 图12(a)、(c)分别为原图像的二维、三维灰度直方图,可以看出原图像中灰度级的统计分布不均,均有起伏;图12(b)、(d)分别为最终加密图像的二维、三维灰度直方图,可以看出加密图像灰度值的直方图分布均匀,表明该算法下的加密图像有着良好的加密效果。 图12 灰度直方图 信息熵是指图像中灰度值的分布情况,加密图像的信息熵越大,则表明加密图像的灰度值分布越均匀,所包含的不确定信息就越多,所反映出的信息就越少,加密效果越好。其表达式为 在灰度等级为255 的情况下,灰度值为mi所出现的概率为p(mi),其理论值为8。由式(22)计算得出:本文实验中原图像的信息熵为7.5938;最终加密图像的信息熵为7.9658,比较接近理想值,其灰度值分布均匀,可以有效抵抗统计攻击。 一般来说,明文图像在水平、垂直、正对角线上的相邻像素点间均具有较强的相关性,密文中相邻像素点的相关性越接近于0 越好。在明文图像和密文图像中随机选取N对像素值,记它们的灰度值为 (ui,vi),i=1,2,···,N,则相邻像素之间的相关系数计算公式为 式中 如图13 所示,本文随机选取1 500 对像素点作为研究对象进行计算,其结果表明,原图像(明文)相邻像素相关性较强,密文相邻像素的分布比较均匀。为了更好地显示该算法下的加密图像相邻像素相关性,本文对明密文相关系数进行了计算,如表2 所示。 图13 明密文相邻像素相关性分析图 表2 明密文相邻像素相关系数 从表2 可以看出,密文图像相邻像素相关系数更接近0,不管是水平方向、垂直方向,还是对角线方向都比同类加密算法密文图像的相邻像素相关性更小,且文献[14−15]的密文相邻像素相关系数均有2/3 的概率大于0.003,本文的密文相邻像素相关系数均小于0.0020,说明本算法的加密效果更好。 本文算法一共有14 个参数,5 个初始状态值,仅计算该算法下参数的密钥空间就达到了216×14=2224,从而为该算法提供了巨大的密钥空间,可以有效地抵抗暴力破解、穷举攻击等破解方法。 NPCR(像素改变率)表示当明文任意像素点的像素值发生微小变化时,会大幅度地改变密文的图像信息,其理想值为99.6094%。NPCR 作为衡量2 幅图像差别的指标具有片面性。UACI(归一化平均改变强度),则弥补了这一不足,它除了比较相应位置像素点的值“不同”外,还计算了“不同”的程度,其理想值为33.4635%。当密文的2 个指标越接近理想值,说明明文对密文的敏感性较强,加密的效果也越好。NPCR 和UACI 计算公式如式(25)(26)所示。其中P1表 示密文,P2表示明文图像任意像素值发生改变后的密文。本文实验的计算结果如表3 所示。 表3 NPCR 和UACI 值 从表3 可以看出,本文算法的2 个指标均接近其理想值,比文献[14]和文献[15]的指标结果更优,表明本文算法可以有效地抵抗差分攻击,算法性能优良。 本文在置乱图像中分别剪切和污染4 个64×64等大小块的密文图像,并在此基础上添加了3%的椒盐噪声('salt &pepper'),恶意破坏密文图像,如图14(a)所示,其解密图像如图14(b)所示。通过本文算法的解密图像可以很好地还原出原灰度图像的基本信息,表明该算法具有较强的抗剪切和抗噪声能力。 图14 抗剪切和抗噪声攻击 假定攻击者掌握了一部分明文,并熟知一部分加密算法,这也很难对密钥进行破解,因为本文算法有嵌入预测密钥流加密,其中神经网络选取的训练指标值、训练数据集、预测数据集未知,无法用已知的数据推测出,且随机嵌入的位置也与明文的大小相关,因此大大提高了破解难度。 本文从混沌系统退化、加密算法不能抵抗选择明文攻击等角度设计了一种新的加密算法。该算法有2 个重要的部分:构造了新的3D-Duffing 混度系统,对产生的伪随机序列做随机扰动、优化拼接处理,仿射变换与明文相关联,位循环扩散加密方法对图像进行第一次加密;设计了嵌入预测密钥流的加密方案,采用RBF 神经网络对Henon 混沌序列进行预测得到预测密钥流,并随机嵌入所构造的加密序列,从而对图像进行二次加密,该方法能够有效地抵抗选择明文攻击。实验仿真和对比分析结果表明,本文加密算法不仅能够有效解决混沌系统退化问题,而且在同类加密算中安全性更高。3 图像加密算法
4 实验仿真及安全性分析
4.1 实验仿真结果
4.2 置乱度
4.3 直方图统计特性分析
4.4 信息熵分析
4.5 相关性分析
4.6 密钥空间分析
4.7 抗差分攻击性能分析
4.8 抗剪切、抗噪声攻击分析
4.9 抗选择明文攻击分析
5 结论