APP下载

基于混沌映射的图像加密算法研究

2022-12-20雍江萍展爱云张跃进

华东交通大学学报 2022年6期
关键词:明文控制参数加密算法

赵 雨,杨 真,雍江萍,展爱云,张跃进

(1. 华东交通大学信息工程学院,江西 南昌 330013; 2. 华东交通大学网络信息中心,江西 南昌 330013;3. 华东交通大学电气与自动化工程学院,江西 南昌 330013)

在国家“互联网+”网络安全战略布局下,对多媒体数据进行加密处理,防止攻击者的盗取和篡改迫在眉睫[1-2]。

现代的加密技术是如今信息安全方面的主要研究方向之一, 而混沌的出现将这个方向的研究又推向一个新的领域。 例如,谢涛[1]提出了Logistic映射在密码学中的应用研究,并总结了Logistic 映射一些常见的安全缺陷,如映射轨道的短周期性,控制参数的低效率性, 映射产生的相邻元素之间的相关性强等问题。 为解决控制参数的低效率性,陈志刚等[3]针对Logistic 序列存在的吸引子与空白区问题, 提出一种基于初始值和分形控制参数之间关系的Logistic 映射改进方法,解决了“稳定窗”与空白区的问题。 武剀[4]提出了一种改进的Logistic映射,解决Logistic 映射存在系统参数范围受到限制、混沌序列的分布不均匀等问题。 单梁等[5]利用Tent 映射来构成混沌序列, 以此来构造良好的寻优策略, 避免了传统优化算法易陷入局部最优点的缺陷,使之较快速地实现全局最优。 混沌密码学领域的研究者基于一维混沌系统的安全性差问题,试图通过增加混沌系统的维度,借此来改进一维系统的缺点。 但增加多个控制参数的同时也大大增加其复杂度。 王文豪等[6]提出了基于二维Logistic 映射的图像加密, 集成了一维Logistic 映射的优点,但随着多个控制参数的增加,使之行为更加复杂。

综上所述, 为满足安全性与算法最优等要求, 针对一维混沌系统不能满足要求的缺点,所以本文提出一种基于二维混沌映射的图像加密算法[7]。利用Tent 映射和改进型Logistic 映射两种混沌模型并结合比特重排技术来生成混沌序列,先利用Arnold 变换对图像进行预加密,随后利用混沌序列对其进行异或、索引矩阵排序、左循环移位的位数等操作[8]。 加密完成后,对图像仿真结果的分析与测试,其中密文图像直方图统计特性均匀平滑, 与其他文献相比也具有一定优势,实现了图像的安全加密效果。

1 常用的混沌系统介绍

1.1 Logistic 映射

Logistic 映射[9]是应用最为广泛的一种混沌映射,其在研究时间离散的动力系统时具有较好的特性,且对于研究混沌以及分形控制等方向是一个经典模型。 其数学表达式为

式中:x∈(0,1) 为第n 个混沌位置;μ 为控制参数,当μ∈(3.569 94,4]时,系统会不断迭代使之出现其该有的混沌特性, 由此可得到Logistic 映射的混沌序列[10]。 当式(1)中取x=0.72,μ∈[2.6,4]时,如图1所示,可画出该混沌映射的分岔图。 由此可见, μ 取值范围外的参数, 系统都会不处于混沌的状态,只有当μ∈(3.569 94,4]时,其分岔图才表明其处在混沌状态。

图1 Logistic 映射分岔图Fig.1 Logistic mapping bifurcation diagram

1.2 改进型Logistic 映射

由它所迭代出来的混沌序列值出现吸引子与空白区问题,据图1 可知,当Logistic 映射进入到完全混沌状态时,要求3.569 94<μ≤4,显然其要产生最佳混沌效果的取值为μ=4,那么Logistic 方程就变成了xn+1=4xn(1-xn)。 但由此产生了一个矛盾性的问题,其中控制参数μ 就变成了一个常数,使得这样的一个混沌方程不满足参数设置要求,由此导致加密效果的安全性下降问题。 常用的Logistic 映射存在低效率性的问题, 希望能用一个函数表达式来代替参数μ,以解决以上混沌系统中为得到最佳控制参数μ 而导致的常数化问题。 得到了改进Logistic 映射最好的混沌效果,并且通过不断迭代,虽然缺少参数μ 减小了密钥的大小,但复杂度有所提高。 改进型Logistic 映射方程为

式中:xn是映射变量,取值范围为:0<xn<1。证明函数为

式中:自变量x 的取值范围为0<x<1 时,y 的值域范围为3.569 945 973<y<4。 对式(3)进行变换,可得

图2 改进型Logistic 分岔图Fig.2 Improved Logistic bifurcation diagram

由图2 中可知, 改进型Logistic 映射范围相较于传统的Logistic 映射而言,其映射范围大大增加,可见用一个函数表达式替换控制参数可提升其混沌效果[11]。

1.3 Tent 映射

Tent 映射也是常用的一种分段线性映射,它的方程形式决定了其函数图像近似于一个帐篷。 Tent映射算法简单,但却是序列复杂的离散映射,多应用于产生伪随机序列,其具有运算速度快、序列分布均匀的优势[12]。 Tent 映射被广泛应用于混沌加密系统当中,也在产生混沌扩频码和构造混沌加密系统和实现混沌优选算法等方向有广泛使用[13]。 Tent映射的定义如下

如图3 所示为Tent 映射分岔图, 帐篷映射与Logistic 映射是互为拓扑共轭映射的,所以在控制参数α 的可取范围内,该系统处于混沌状态[14]。但是当α=0.5 的时候,系统会呈现短周期状态,为避免使系统陷入这样不动点,应避免取该值。

图3 Tent 映射分岔图Fig.3 Tent map bifurcation diagram

2 混沌图像加密算法技术

图像置乱效果的预加密可通过Arnold 的变换与反变换来实现。 再通过混沌序列比特重排技术,它用于解决在混沌过渡态中轨道点差别小,序列值改变量不大的问题,从而使更新序列具有更好的敏感依赖性、伪随机性与遍历性等混沌特性[15]。

2.1 Arnold 变换与反变换

Arnold 变换,亦称猫脸变换[16]。Arnold 变换因为其直观简易的特性被应用于矩阵的置乱,每运行一次Arnold 变换,就相当于对该图像矩阵进行了一次置乱。 由于Arnold 变换使用的矩阵维度很小,所以只使用一次变换得到的结果依旧能看出图像的部分纹理形状等特征,所以使用多次迭代是不可避免的, 只有当以上特征不再能通过人眼观察到时,才算有意义的变换。 Arnold 变换常用于图像预加密,方程定义如下

式中:(i,j)为变换前的位置;(i′,j′)为变换后的位置坐标;N 为图像矩阵的阶数;mod N 为取模返回余数。 将式(6)进行推广得

式中:a,b 为正整数。

运用Arnold 变换时,如图4 所示,首先对图像的水平方向进行割补变换,其次再对竖直方向的割补变换,最后的模运算就是将之前操作扩展的部分进行切割回填操作。

图4 Arnold 变换示意图Fig.4 Schematic diagram of Arnold transformation

Arnold 变换显然是有周期的,即在对图像进行反复Arnold 变换后,在其周期范围内,不断地迭代变换会使得各个被置乱的像素位置一定会被置换回到原处。 由此产生的问题在于如果利用该方法来恢复原图,就必然出现工作量庞大的结果,而且还必须计算其与图像有关的周期,这无疑不是合适的反置换算法。 对此Arnold 反变换发挥了作用,其公式如下

根据式(7)可以推出广义的Arnold 变换

利用Arnold 反变换的方法可使置乱图像恢复,不必花费时间先计算其周期, 再去进行多次的Arnold 变换。 使用Arnold 反变换后,可根据需求使其恢复到任意一次的置乱结果,并对其进行比较分析,工作效率大大提升。

2.2 混沌序列比特重排

当系统的初始值及其控制参数产生微小的改变时,处于混沌过渡态中,按此进行迭代产生的值显然具有高度的相似性,衍生轨道相近且具有一致的起伏特性。 显然利用这样的值进行量化操作时,不可避免地出现大概率相同的值或相近的值,使序列值出现了一定的统计特性,而不具备良好的随机性。 由此,设计出能够针对差异小的序列使之处理差异较大的值。 下面介绍一种混沌序列比特重排技术,从而避免以上问题,使之具有更加出色的伪随机性,更符合使用要求。 比特重排技术的过程具体步骤如下。

1) 由设置好的密钥产生的初值带入使用到的混沌方程中,迭代后得到一个混沌序列值a。根据自己设计要求, 将这个数a 化为L 位的二进制形式。例如,当一个序列值a=0.63,把0.63 写成L 位的二进制形式,其中L 可以取任意的正整数,这里假设L=12,那么0.63→0.1010 0001 0100。

2) 我们将小数部分二进制化,按照规则重新排序,将奇数位比特值倒序排在前半部分,将偶数位比特值倒序排在后半部分,得到一个新的数,示意图如图5 所示。

图5 比特重排示意图Fig.5 Bit rearrangement diagram

3) 最后将得到小数部的二进制数转化为常用的十进制数, 以此值作为新的初始值代入公式,得到一个新的带排序的值。 如此重复步骤,即可得到重排后混沌序列。

3 基于循环移位和多混沌映射的图像加密算法

本文提出一种基于循环移位和多混沌映射的图像加密算法。首先根据设好的密钥来控制Tent 映射和改进型Logistic 映射的生成, 使用比特重排技术生成新的重排混沌序列,并针对明文图像先进行Arnold 变换的预加密。 为保证主要图像与序列的连续性,将其进行分块处理,并由重排Tent 映射完成对该分块区域内的置乱操作, 由Logistic 映射完成循环移位的扩散操作。 完成后,最后对图像仿真结果进行分析与测试。

3.1 图像加密算法参数设置

根据上文提出的改进型Logistic 和Tent 映射,若是直接设置各初始值和控制参数值显然不安全,采用下式生成这些值

式 中:a1,a2,t1,t2,t3均 是 算 法 的 密 钥;x01是 改 进 型Logistic 的初始值;x02和α 是Tent 映射的初始值和控制参数。 具体密钥如表1 所示,其中r1和r2为各自的迭代次数。

表1 密钥参数设置Tab.1 Key parameter setting

3.2 图像加密过程

本文的图像加密算法如图6 所示,由设置好的密钥输入各混沌系统,经重排得到混沌性能良好的序列。 先对明文图像进行Arnold 变换的预加密,为避免序列和图像的连续性, 拟采用分块处理的模式。 分块后使用重排的改进型Logistic 序列完成对该部分的循环移位,使像素值发生改变完成扩散操作,用Tent 序列完成像素位置点的置乱,以加快索引排序时间,使之更高效。 最后对分块加密后的图像进行组合即可得到与明文大小相等的密文图像。加密步骤如图6 所示。

图6 加密流程Fig.6 The encryption process

1) 通过运用改进型Logistic 混沌系统生成混沌序列Q1(i)。 由式(10)生成Logistic 混沌映射的初值输入到Logistic 映射方程式进行迭代, 迭代r1+MN 次。舍弃前r1项,由式(10)比特重排后得到Q2(i)。由式(13)得到的序列进行量化,转变成与明文图像大小一样的矩阵。

式中:函数floor( )返回不大于K 的最大整数。

2) 由改进型Tent 混沌系统生成混沌序列U1(i)。 由式(11)、式(12)生成Tent 混沌映射的初值带入到Tent 映射方程式(5)进行迭代,迭代r2+MN 次。舍弃前r2项,由式(11)比特重排后得到U2(i)。 同步骤1)将得到的序列进行量化,转变成与明文图像大小相同的矩阵。

3) 对图像P 进行预加密。 利用式(9)将明文进行Arnold 变换,并利用式(14)与对应序列逐次进行异或。

4) 生成索引矩阵。 由式(15)将序列U2(i)转换成M 行N 列的二维矩阵B,由式(16)对二维矩阵B进行排序,得到索引矩阵index B 5) 分块进行置乱-扩散操作。 将P′分成A1,A2,A3,A44 块进行处理,以A1为例。

①对A1进行像素替换。根据式(17),利用索引矩阵index B 将像素进行索引排序, 得到替换后图像A1′,具体替换方式如下

②对图像A1′进行循环移位。 通过式(18)求出对应位置的循环移位的位数得到A1′。 再通过方程(19)将A1′循环移位得到A1″图像。

6) 将A1″,A2″,A3″,A4″整合,得到密文R。

3.3 图像解密过程

由于在设计加密算法之时就必须考虑到每一步流程的可逆性问题,所以在对密文解密时仅需进行逆向推导即可。 解密算法的流程图如图7 所示,通过设置好的密钥参数来得到序列。 先分块进行逆向操作, 通过Tent 混沌映射和改进型的Logistic 混沌映射完成反移位和反置乱排序索引,再对各分块进行组合, 最后使用Arnold 反变换和反异或的处理,即可求解得到解密图像。

1) 由图5 中的加密过程中的式(1),式(2)得到Logistic 映射和Tent 映射的混沌序列和。

2) 分块。 将密文P 分成D1,D2,D3,D4于4 块进行处理,以D1为例。

3) 由图7 加密过程中式(4)得到索引矩阵,进行逆排序索引。

图7 解密流程Fig.7 Decryption process

4) 反循环移位。由式(18)计算出像素循环移位的位数D(i),由式(20)对D1进行右循环移位得到。

5) 由式 (8) 对密文图像D′进行Arnold 反变换,并进行序列异或操作求解图像矩阵,得到解密图像R。

4 实验结果与性能指标分析

4.1 实验结果

本文对3 个大小为256×256 的灰度图像进行加密,实验环境为Windows10,MatlabR2014b。 完成导入图像和添加密钥后,运行本文算法,得到加密图像和解密图像(图8)。

图8 图像加密和解密效果Fig.8 Image encryption and decryption effect

图8 分别是各自的明文和密文以及解密结果的显示结果。 从直观看,人们是无法针对其中的密文得到任何信息的,因为以上的3 幅加密效果图中都不存在任何的轮廓、纹理和形状等特征。而解密后可看到其与原图一致,没有任何像素点的损失。

4.2 性能指标分析

1) 密钥空间。如上所述,密钥空间必须大于2100才符合加密算法的要求,本文算法密钥空间符合要求。由于当前a1,a2,t1,t2,t3,前期迭代次数r1,r2,可得每一个数据的最小偏差为10-15,由此可计算出算法的密钥空间大小为(1015)7,可知其对于穷举攻击的破解方法具有较强的抵抗效果。

2) 直方图分析。在图像的指标分析中,灰度直方图主要是针对图像的各个像素值频数进行统计,从而形成客观的图形数据。当该图像各个像素出现次数基本相同时就是趋于一条直线时,它不会再因为统计特性而被攻击。本次直方图分析同样是使用之前的3 幅图像,进行明文和密文之间的对比效果(图9)。

图9 明文直方图(左)和密文直方图(右)Fig.9 Plaintext histogram(left), ciphertext histogram(right)

如图9 所示, 明文的直方图分布是由高峰和低谷的,甚至会出现一部分灰度区间完全空白,显然这样的直方图具有很强的特征。 由于每一幅图像的直方图是唯一的, 该明文如果只进行位置的置乱操作显然不能改变直方图。 但经过加密后得到的密文图像直方图是很均匀平滑的, 其中显示的各个区间像素值出现的概率基本上很相近, 对直方图无法进行特征统计攻击,表明该算法具有良好的加密效果。

3) 相邻像素相关性分析。由于图像蕴含一定信息,表明在其图像的一定区间内具有连续性和相似性,需要对加密前后各个方向上的相关性进行计算分析,以此来判断本文加密算法的性能。 前面已经对相关系数计算公式进行了说明,在测试加密图像时, 会使用一个随机矩阵来确保选择的点的无序性,为使该样本数量较多,可以利用两个随机矩阵来选择对应的行与列, 该方式选择了8 000 对符合要求的像素点。 在边界处选择的相邻点需要注意规则,遇到边界就向图像中心方向取点,而不是舍弃或循环至另一边。

对以上的测试图像进行相邻像素相关性分析,各个方向上的分布结果如图10 所示, 图中横坐标为(x,y)处的像素值,纵坐标为(x+1,y)处的像素值,相关系数值如表2 所示。

由图10 可知, 我们随机选择的相邻像素点具有很大的相关性, 这些像素点大致分布在倾角为45°的直线上,这表明当我们取一个点的像素值时,其周边都是与之大小很相近的像素值。 而反观密文图像时, 我们发现相邻点却散落分布在各个区域,可以说相邻的像素点不存在任何联系,无法由该点像素值推测其附近的大小范围。 具体相关性测试数据如表2 所示。

图10 水平,垂直及对角方向对比Fig.10 Horizontal, vertical and diagonal direction contrast

表2 明文和密文相邻像素相关系数Tab.2 Correlation coefficient of adjacent pixels between plaintext and ciphertext

由表2 可知,明文图像在这3 个方向上的相关性系数都接近于1, 尤其是Human 和Plant 图像都是在0.92 以上,即其图像包含的内容越多所蕴含的信息就越多,相邻像素点的相关性就越高。 反观加密后的图像数据,它们的值都已经大大减小,趋近于0。由此可知,本文设计的图像加密算法可有效降低其各个相邻点的像素相关性,表明之前的置乱扩散等操作效果明显。同样使用Human 图像和其它文献进行对比,如表3 所示。

表3 不同算法相邻像素相关系数对比Tab.3 Comparison of correlation coefficients between adjacent pixels of different algorithms

由表3 可知,对Human 图像的加密效果优于文献[18],本算法在水平方向差于文献[17],但是垂直方向和对角方向优于文献[17]。 与文献[19]相比,本算法水平、 垂直方向上的相关系数差于该文献,对角方向上优于该文献。

4) 信息熵分析。图像的信息熵是人们常用来评估其图像信息各个取值及其占比的指标,其利用图像集合内各个数据及其权重计算的结果。 当该图像的信息熵数值越大就表明其混乱程度越大。 信息熵的理想值为8, 实验对这3 幅图像进行测试的结果如表4 所示。

表4 测试图像信息熵Tab.4 Test image information entropy

由表4 可知,明文的信息熵在7 左右,而通过加密后其信息熵大致都很接近7.99,与理想值8 很接近。 表明在加密过程中的扩散等操作可使各个区间内的像素值都趋于平滑,使其分布特征不具备弱点。 如表5 所示,选择一些数据与其他文献中的算法结果进行了对比。

表5 不同算法的信息熵对比Tab.5 Information entropy comparison of different algorithms

由表5 的对比结果可知, 在Human 图对比中,本文的加密算法的信息熵优于文献[18],[19],但略低于文献[17];在Plant 图对比中,本文算法的信息熵比其他文献的信息熵略差,但相差微小。 这表明本文的加密算法在针对不同图像时各有优劣,还存在一定不足。

5) 密钥敏感性分析。当利用密钥参数输入到设计的加密系统中时, 选择一个密钥来对其进行测试,如在该数值上进行微小变化,加上或减去10~14这样一个很小的值,再对明文图像进行加密,并对密钥变化前后密文图像分析, 通过作差处理得到作差图像,如图11 所示。

图11 密钥敏感性Fig.11 Key sensitivity

图11(a)为不改变加密密钥的密文图像,图11(b)为改变其中一个密钥的密钥参数,图11(c)为图11(a)和图11(b)差值图。 可以看到细微加密密钥的不同而导致的加密效果差别很大,由此可知,经过一系列处理后得到的混沌序列具有很强的敏感性。

6) 抗差分攻击分析。 为了得到一张与原明文图像相差很小的图像矩阵, 可以对Human 明文图像进行读取后, 将其中一个点的像素值减去1,再用该矩阵通过相同的加密算法系统, 利用式(21)和式(22)对图像进行相关性分析,计算微小的明文改动对于整体加密效果的影响。 从文献[16]可知,NPCR 的理想值为99.609 6%,UACI 的理想值为33.46%。 其计算结果同其它文献中提出的算法相比如表6 所示。

表6 使用Human(256×256)测试与其它算法的对比Tab.6 Comparison between the test by Human(256×256)with other algorithms%

由表6 对比,本文算法同其他文献相比较各有千秋,平均NPCR 虽然略微差于文献[17],平均UACI 差于文献[19],但是相较于其他而言有微小优势, 这表明一个良好的加密算法能够抵抗差分攻击[20]。

5 结论

本文提出了一种基于循环移位和改进型Logistic 映射和Tent 映射的图像加密算法。

1) 使用Arnold 变换技术和比特重排方法, 解决在混沌过渡态中轨道点差别小、序列值改变量不大的问题。

2) 明文图像经历了像素的置乱和扩散处理,使其具有更好的随机性。

3) 根据前面的性能指标分析得出:密文图像直方图统计特性均匀平滑,密钥空间大,相邻像素间的相关系数大大降低而趋于0,信息熵也接近于8,抗差分数据分析接近理想值,与其他文献相比也具有一定优势,实现了图像的安全加密效果。

猜你喜欢

明文控制参数加密算法
Birkhoff系统稳定性的动力学控制1)
基于整数矩阵乘法的图像加密算法
奇怪的处罚
混沌参数调制下RSA数据加密算法研究
PCB线路板含镍废水处理工艺研究
基于PI与准PR调节的并网逆变器控制参数设计
基于模糊控制的一阶倒立摆系统稳定控制研究
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
四部委明文反对垃圾焚烧低价竞争