唐 辰, 涂喜梅, 陆晓刚, 张 琦, 张小贝,*
(1. 上海大学通信与信息工程学院, 上海 200444; 2. 上海飞机设计研究院, 上海 201210)
随着互联网和计算机的发展,图像作为一种直观的信息展现方式,包含了许多隐私内容。出于对安全性的考虑,图像加密技术备受关注[1]。高级加密标准(advanced encryption standard,AES)因具备加解密速度快等优点,被广泛使用[2]。但由于图像具备数据量大、冗余性高等特征,传统AES加密算法已无法满足图像的加密需求[3]。由于混沌系统对初值敏感、不可预测[4],与密码学具有紧密的联系,故结合混沌系统的图像加密算法存在巨大的发展前景[5]。
2000年,Yen等[6]提出了一种基于Logistic[7]混沌的图像加密算法。Logistic作为一维混沌图像加密算法,虽然迭代速度快、实现简单[8],但由于结构简单、控制参数少,导致密钥空间较小,易被破解。2002年,LYU等[9]提出了一种Lorenz-Chen-Lu(LCL)混沌系统,通过参数控制,能够在Lorenz[10]、Chen[11]、Lu[12]等提出的系统之间实现过渡,极大程度地提高了系统的复杂度。2019年,田嘉琪等[13]提出了一种改进的Lorenz混沌系统,并将其应用于图像加密的置乱扩散过程。为提高加密复杂度,2021年,张雷等[14]提出了一种结合S盒和混沌的三阶扩散图像加密算法,但混沌系统依旧采用传统的Logistic和Chen系统。2021年,Wang等[15]提出了一种具有两个参数的新混沌系统,并通过对图像的行、列、对角线不同方向进行置乱和扩散,实现了加密。2022年,Kumar等[16]提出了一种基于优化的Thorp混沌和Zig-zag扫描的混沌图像加密算法,能够有效克服差分攻击,但Thorp为一维结构,密钥安全性有待进一步提升。2022年,Teng等[17]提出了一种基于Logistic和Sine混沌的二维交叉模式超混沌系统,并通过扩散和排列组合的方式完成了加密,但仅依靠置乱等简单的加密方法,系统的抗攻击能力较弱。
本文提出了一种基于四维LCL混沌系统的改进AES图像加密算法,以提高混沌系统的复杂度和AES算法对图像的加密效果。密钥由混沌系统生成,通过在LCL混沌系统中引入非线性项和反馈控制器,构成了新的四维混沌映射关系。新的四维LCL混沌系统既继承了LCL混沌系统的特点,能在Lorenz、Chen、Lu系统间实现过渡,又增加了控制参数,提升了系统复杂度。针对传统AES加密算法在图像加密方面效率和安全性不高的缺点,使用混沌Cubic-S盒、动态交叉变换的方法替代了原始的S盒变换和行位移变换,并在密钥生成过程中引入混沌序列,修改了密钥生成函数的结构,使得每一轮密钥均与上两轮密钥有关,加强了密钥的安全性和加密效果。
(1)
Sine混沌是一种基于正弦函数的混沌映射[18],通过引入非线性扰动和延迟反馈控制器的方式可以提高混沌结构复杂度[19-20]。故本文基于Sine和三维LCL混沌系统,提出了如式(2)所示的四维LCL混沌系统,通过在计算过程中引入siny和y2两个非线性项,并新增一个反馈控制器,使各状态变量参与到相互的计算中,从而形成相互影响。为保证新的四维LCL混沌系统能够继承原始LCL系统可在多个混沌系统间过渡的特点,维持了x、y、z的基本运算结构。同时,为扩大密钥空间,新增了控制参数b、c、d、e。当c等于0,e分别等于、大于和小于0时,x、y、z分别组成了Lu系统[12]、Chen系统[11]和Lorenz系统[10]。
(2)
式中:x、y、z、w为系统的状态变量;a、b、c、d、e为控制参数。参数和状态变量的初值和取值范围分别为a∈[18,27],b∈[8,20],c∈[0,1.8],d∈[0,2.8],e∈(1,5),x0∈[-20,20],y0∈[-5,5],z0∈[2,12],w0∈[-10,10]。利用4阶龙格库塔算法,以0.001为步长,当a=26,b=18,c=1.1,d=0.3,e=3,x0=8,y0=2,z0=8,w0=5时,得到混沌序列,图1给出了系统相位图。从图1可以观察到系统在各个相位空间上都展现出了由内向外不断拉伸同时又收缩于吸引子的趋势,存在多环多翼的复杂结构,但整体上又呈现出稳定的状态。
图1 新的四维LCL混沌系统相图Fig.1 New phase diagram of four-dimensional LCL chaotic system
(1) 耗散性分析
(3)
(4)
(2) 平衡点分析
表1 平衡点对应特征值
由平衡点和稳定性关系[21]可知,S0是不稳定鞍点,其余4个为不稳定的鞍焦点,是形成多环多翼运动状态的前提条件。
(5)
(1) 李雅普诺夫(Lyapunov exponent, LE)指数和维数
LE能够定量地描述运动轨迹的吸引和排斥程度[22]。图2给出了a=26,c=1.1,d=0.3,e=3,b在[-5,25]内变化时的LE指数图。当b在[6.7,22.1]和[23.7,25]内,至少有一个LE大于0,表明处于混沌状态;尤其当b在[11.5,20.3]内时,存在两个大于0的LE指数,表明系统处于超混沌状态;在其余范围内,系统4个LE指数均小于0,表明系统处于准周期的运动状态。故当b∈[8,20]时,至少存在一个为正、一个接近于0、两个小于0的LE指数,表明系统保持着高度混沌状态。
图2 b变化时的LE变化图Fig.2 Change of LE when b is changing
当参数a=26,b=18,c=1.1,d=0.3,e=3时,LE1=3.06,LE2=0.11,LE3=-0.32,LE4=-12.60,则LE维数可由式(6)得到。其中,DL为LE维数;j+1为LE指数的数量。由于DL为分数,表明存在奇异吸引子,系统处于混沌状态。
(6)
(2) 分岔图
图3给出了a=26,c=1.1,d=0.3,e=3,b在[-5,25]范围内变化时x的分岔图,由图3可以观察到系统从准周期运动逐渐出现分岔然后进入混沌的状态,并在[-20,20]范围内出现分布均匀的无规律随机运动。与LE指数图对比,系统运动状态随b的变化情况基本一致,验证了系统具有良好的遍历性。
图3 b变化时x的分岔图Fig.3 Bifurcation of x as b is changing
(3) 庞加莱截面图
庞加莱截面将高维混沌系统映射至二维平面,能够更清晰地反映系统的分岔和折叠特性,图4给出了当a=26,b=18,c=1.1,d=0.3,e=3时,x=0,y=0,z=0情况下y-z,x-w,x-y平面的庞加莱截面。当庞加莱截面只有一个不动点或少数离散点时,系统处于周期运动状态;当存在一条封闭的曲线时,则系统运动是拟周期的;而当存在连续的曲线或成片密集点时,系统则处于混沌状态[23]。图4(a)、图4(c)由多条连续曲线构成,图4(b)则由成片的密集点构成,验证了本文提出的新的四维LCL系统是混沌的。
图4 庞加莱截面图Fig.4 Poincare diagrams
(4) 功率谱分析
功率谱直观地展示了信号的周期性,当信号是周期信号时,功率谱是离散谱,而当信号是非周期信号时,功率谱是连续谱。图5分别给出了系统参数a=26,b=18,c=1.1,d=0.3,e=3时x、y、z、w的功率谱。每个功率谱分布均匀,没有明显的峰值频率,呈连续状态,这表明混沌序列不存在周期,是无序的,从侧面验证了混沌特性。
图5 功率谱Fig.5 Power spectrum
本文提出的加密算法流程如图6所示。
图6 加解密流程图Fig.6 Flowchart of encryption and decryption
将四维LCL混沌系统的5个参数和4个变量作为初始密钥,将加密和解密端事先通过安全信道共享初始密钥。然后,由四维LCL混沌系统产生两个密钥序列key1和key2,key1用于置乱,key2用于改进AES加密。明文图像A通过置乱和改进AES加密后产生一张密文图像B。在解密端,通过改进AES加密和置乱的逆操作得到明文图像A′。
假设明文图像A为m×n大小的灰度图。首先,将混沌系统参数和变量a、b、c、d、e、x0、y0、z0、w0代入四维LCL混沌系统,先迭代1 000次,消除暂态效应带来的周期性影响;然后,从第1 001次开始先继续迭代q=m×n/2次,得到序列X1={x0,…,xi,…,xq-1},Y1={y0,…,yi,…,yq-1},Z1={z0,…,zi,…,zq-1},W1={w0,…,wi,…,wq-1},·表示向上取整。通过式(7)可计算得到用于置乱的密钥key1={k0,k1,…,k2i,k2i+1,…,km×n-1}。
(7)
式中:i=0,1,…,q/2-1为序号;·为向下取整;|·|为取绝对值。通过序列的组合计算,有效提高密钥的安全性。随后,再将混沌系统迭代p=(|m×n/16|+315)/4次,获得混沌序列X2={x0,…,xi,…,xp-1},Y2={y0,…,yi,…,yp-1},Z2={z0,…,zi,…,zp-1},W2={w0,…,wi,…,wp-1}。通过式(8)可获得取值范围在[0,255]、用于改进AES的密钥序列key2={k0,k1,k2,k3,…,k4i,k4i+1,k4i+2,k4i+3,…,kp-1}。
(9)
传统的AES-128加密是一种分组加密算法,采用4×4 Bytes大小的块分组,进行10轮加密,才能保证加密的安全性。每一轮加密包括了轮密钥加变换、S盒变换、行位移变换、列混淆变换和密钥扩展[24]。但由于图像数据量大,10轮加密造成了时间上的浪费,若减少轮数,安全性则无法得到保障。每一轮S盒变换、行移位变换都采用固定形式,密钥扩展只与上一轮有关,安全性有待提升。
本文基于传统AES-128加密算法进行了修改,将10轮加密减少为5轮,从而减少了运算时间。为保证安全性,修改了密钥扩展函数,使每一轮密钥由前两轮密钥得到,并引入混沌,提升密钥的安全性。在加密过程中,采用混沌Cubic-S盒变换和动态交叉移位变换的方案,增强密钥与加密之间的相关性,具体步骤如图7所示。
图7 改进的AES算法流程图Fig.7 Flowchart of improved AES algorithm
(1) 混沌Cubic-S盒变换
传统AES加密中的S盒采用固定矩阵,安全性无法得到充分保障。本文将混沌序列引入S盒的生成,并采用Cubic-S盒[25]替代原始S盒,进一步提升加密复杂度。首先,提取密钥序列key2中的第1个至第256个元素,用R={r0,…,ri,…,r255}表示;然后,对R按从小到大的顺序排序,并返回排序后元素在原始序列中的位置,得到序列R′。将序列R′按从下到上、从左到右的顺序重新排列,生成大小为16×16的混沌S盒;最后,如图8所示,将混沌S盒平均分为8×8大小的4个子S盒,形成三维表达的混沌Cubic-S盒。每一个像素为8 bits大小,可用“d0d1d2d3d4d5d6d7”二进制形式表示。其中,di∈[0,1]。将像素用“yxz”的形式进行表达。其中,x=d3d4d5;y=d0d1d2;z=d6d7,x、y、z的十进制数分别用于定位混沌Cubic-S盒的行、列、层。在映射过程中,状态矩阵的每一个像素值在用“yxz”完成表达后,再通过混沌Cubic-S盒完成数值上的替换。
图8 混沌Cubic-S盒Fig.8 Chaotic Cubic-S box
(2) 交叉移位变换
在传统的AES加密过程中,行移位变换采用固定的变换方式。本文结合混沌序列,采取了一种动态的交叉移位变换。将每个4×4 Bytes大小的分组{s0,…,si,…,s15}(如图9所示)按照主对角线或副对角线,从上至下或从下至上,顺时针或逆时针的顺序进行移位,共有16种不同的顺序,具体如式(10)所示。取密钥序列key2中的第257至257+m×n/16个序列值用kj表示,其中j=0,1,…,m×n/16-1为分组数量。通过密钥的大小决定每一个分组块采用哪种顺序的交叉移位顺序,从而达到一种动态的移位变换效果,有效提升了加密的安全性。
图9 动态交叉移位变换示意图Fig.9 Schematic diagram of dynamic cross shift transformation
(10)
(3) 列混淆变换
列混淆变换采用传统AES加密算法中的方案,其计算公式如下所示:
(11)
(4) 轮密钥加变换
(12)
(5) 密钥扩展函数
在密钥扩展过程中,传统AES算法的每轮密钥只与上一轮密钥有关,若获取了加密过程中的任意一轮密钥,则后续密钥直接可被破解。本文采用的密钥扩展函数具体步骤如图10所示。
图10 密钥扩展步骤Fig.10 Procedure of key expansion
每一轮密钥由前两轮密钥得到,并将混沌序列引入其中,有效提高了密钥的随机性。首先,取密钥key2中的第258+m×n/16个至273+m×n/16个元素用{k0,…,ki,…,k15}表示;然后,按从上到下、从左到右的顺序排列为4×4大小的矩阵,再按列将4个字节用wr组合,即{w0,w1,w2,w3},wr={k4r,k4r+1,k4r+2,k4r+3},其中r=0,1,…,23为wr的个数。接着,取key2中的第274+m×n/16到289+m×n/16个元素,按顺序每4个字节进行组合,则可表示为{c0,c1,c2,c3},用于第一轮扩展。密钥扩展可分为3种情况:
(13)
式中:t=1,2,3,4,5为扩展轮数。当t=1时,wr-8分别为{c0,c1,c2,c3}。T函数包括了动态左移变换、混沌Cubic-S盒变换、异或操作,其中动态左移变换如式(14)所示。取密钥序列key2中的第290+m×n/16到299+m×n/16个元素用于T函数,用{g1,g2,…,g2t-1,g2t,…,g10}表示,其中g2t-1决定动态左移的方式,g2t用于进行T函数中的异或计算。
(14)
(6) 加密模式
本文采用AES加密算法中的密码分组链接(cipher block chaining, CBC)模式进行加密,计算过程如图11所示。
图11 CBC加密模式Fig.11 CBC encryption mode
在该模式下,加密前,明文块需要与前一个密文块进行异或计算。为了保证每次加密信息的唯一性,在计算第一个明文块时需要与初始块进行异或,本文选取密钥序列key2中最后的16个元素作为初始块。
解密过程为加密过程的逆过程,即先由混沌系统以及初始密钥生成与加密密钥相同的解密密钥key1,key2。接着,对密文进行AES加密和置乱的逆过程,即可解密,获得明文图像。
为验证本文所提基于新的四维LCL混沌系统和改进AES算法的图像加密方法的安全性,分别从算法的密钥空间大小、自相关性分析、信息熵、抗差分攻击、鲁棒性以及加密效率方面进行了实验仿真分析,并对结合了混沌和AES加密或其他加密算法的文献[26]、文献[27]、文献[28]所提3种算法进行了仿真对比。选取了斯坦福大学和南加州大学图像库的Cameraman、Lena、Boat共3张具有不同属性的图像进行实验测试,具体测试结果如图12所示,所有图像均为256×256大小的灰度图。仿真使用的硬件为搭载Intel(R) Core(TM) i5-11300H @ 3.10 GHz CPU的计算机,仿真平台为Python 3.6。仿真所采用的密钥为四维LCL混沌系统的5个系统参数和4个初值[a,b,c,d,e,x0,y0,z0,w0],均使用key={26,18,1.1,0.3,3,8,2,8,5}。
图12 原图Fig.12 Origin image
密钥空间的大小直接影响了加密算法破解密钥的难度,密钥空间越大,破译时间越长,抵抗暴力破解的能力就越强。本文加密算法密钥分别为四维LCL混沌系统的5个参数和4个变量,取值范围分别为a∈[18,27],b∈[8,20],c∈[0,1.8],d∈[0,2.8],e∈(1,5),x0∈[-20,20],y0∈[-5,5],z0∈[2,12],w0∈[-10,10]。理论上的密钥空间可达到∞,但由于IEEE浮点准则,64位双精度数最小精度为10-15,故本文提出的加密算法的密钥空间为1.75×10143≈2476。本文算法密钥空间远大于理论安全值2100,故本文算法可以有效抵御穷举攻击[29]。
密钥敏感性代表了当密钥发生微小变化时密文发生变化的程度。以Lena图像为例,先使用key={26,18,1.1,0.3,3,8,2,8,5}进行加密,再使用key′={26,18+1×10-15,1.1,0.3,3,8,2,8,5}解密,加解密结果如图13(a)~图13(c)所示。尽管密钥仅发生了1×10-15的微小改变,但无法正确解密。当密钥key中的b以δ×10-15(δ∈[-100,100])的幅度变化时,解密结果与正确解密结果的均方误差结果如图13(d)所示。可以观察到,当密钥出现错误时,均方误差均在9 000附近,无法正确解密,且错误解密结果与明文存在很大的误差,验证了本文加密算法具有较强的密钥敏感性。
图13 密钥敏感性测试结果Fig.13 Key sensitivity test results
良好的加密算法应能够抵抗统计分析[30],利用本文加密算法进行加密,并对直方图进行分析,加解密前后结果和直方图如图14所示。不同的明文图像直方图具有明显不同的分布特征,而密文图像直方图几乎相同,分布均匀,这验证了该加密算法能够有效抵御直方图分析攻击,破解难度较大。
图14 加密结果及直方图Fig.14 Results and histograms of the encryption
信息熵能够描述信息的不确定性,反映加密效果,其计算公式如下:
(15)
式中:h为图像矩阵;F为比特深度;p(hs)为像素出现概率;hs为像素。对于8 bit深度图像,密文信息熵理想值为8,越接近8,则表明密文图像加密效果越好[31]。
3幅灰度图像的明文和密文的信息熵对比结果如表2所示。
表2 信息熵对比Table 2 Information entropy comparison bits
由表2可知,本文加密算法在3幅图像上的信息熵相较于传统AES以及其他改进算法更接近于8,平均值也优于其他算法,从而有效地验证了本文加密算法能够有效抵抗外部熵攻击。
图像的像素在水平、垂直、对角线3个方向上一般存在较强的相关性,接近于1。良好的加密算法能够有效地破坏这种相关性,使密文图像出现类似白噪声的特点,破译者无法从密文中获取有效信息。相关系数能够定量描述图像之间的相关性,其计算公式如下:
(16)
式中:xi、yi为图像相邻两个像素点的值;n为像素点数;i为像素序列号;E(x)和D(x)为图像的期望值和方差;τ为相关系数。
相关系数越大,相关性越强,相关系数越小,相关性越弱,说明加密效果越好。图15为Lena图像原图和密文图像分别在3个方向上的相关性对比。可以明显地观察到,明文图像像素间具有较强的相关性,而密文图像则打破了原本像素间的相关性。
表3列出了Lena图像在不同算法加密后密文图像的相关系数对比,经过本文算法加密后的密文图像相关系数相比其他加密算法密文图像相关系数更接近于0,表明本文算法加密效果优于其他算法。
表3 Lena图像相关性对比
差分攻击是通过对明文图像微小的变化,分析密文变化情况,进而对加密算法进行破译的一种攻击方法。通常采用像素数变化率(number of pixels change rate,NPCR)和统一平均变化强度(unified average changing intensity,UACI)两项性能指标进行评判。理论上,当NPCR和UACI越接近于99.609%和33.464%时,算法抗差分攻击能力越强,敏感性也越强[32],计算方式如下:
(17)
式中:I(i,j)为像素值;m、n分别为图像的长和宽。
本文通过对图像中任一位置像素值减1之后的密文结果进行NPCR和UACI的分析对比,对比结果如表4所示。由表4可知,本文提出的加密算法的NPCR和UACI在3幅图像上都更接近理论值,表明本文加密算法相比其他算法对明文变化更敏感,有着更强的抗差分能力。
表4 NPCR与UACI的参数对比
在图像传输的过程中,可能会因为网络的延迟而丢失部分信息,也有可能一些攻击者为了破坏图像的正常传输,故意篡改密文信息或干扰正常通信。其中,裁剪攻击、噪声攻击是最常见的攻击方法。为验证本文算法的鲁棒性,本文以Cameraman图像为例对密文分别进行了25%的裁剪和1%的椒盐噪声干扰,并将本文算法与其他算法进行了对比分析,实验结果如图16和图17所示。当密文被裁剪时,传统AES加密算法和文献[27]解密结果裁剪部分内容无法正确解密,造成了解密图像内容严重缺失,文献[26]和文献[28]则在特定的方向或位置上出现了内容的错误解密,在视觉上造成了严重的影响。当密文受噪声影响时,传统AES加密算法和文献[27]解密结果出现了局部错误解密,本文算法和文献[26]和文献[28]所提算法效果相近,均出现了类似噪声的情况,但不影响整体图像内容的阅读,从而验证了即使密文在遭受裁剪攻击和噪声攻击的情况下,本文加密算法依旧能将图像结果中的大部分信息成功解密,恢复出图像的整体主要内容,没有造成严重的内容缺失或噪声影响,表明本文算法有较强的鲁棒性。
图16 抗裁剪攻击分析Fig.16 Anti-clipping attack analysis
图17 抗噪声攻击分析Fig.17 Anti-noise attack analysis
加密算法除了需要考虑安全性,计算效率也是一个评判图像加密系统的重要指标。本文对3幅图像算法分别进行了100次计算后取平均值,计算得到的效率对比结果如表5所示。
表5 加密效率对比
本文加密算法由于减少了传统AES算法50%的轮数,相较于传统AES算法加密效率明显提升了近3倍。对比其他优化算法,由于避免了DNA算法等复杂的计算规则,效率得到了提升,验证了本文加密算法在保证密文安全的情况下可实现快速加密。
本文首先通过在三维LCL混沌系统中引入非线性项、反馈控制器,构成了一个继承三维LCL混沌系统特点的四维LCL混沌系统,通过对其平衡点、LE指数、分岔图、庞加莱截面、频谱等进行分析,充分验证了其高度的混沌特性。然后,对传统AES算法进行了改进,结合提出的混沌系统,采用混沌Cubic-S盒、动态交叉变换方法替代了原始的S盒变换和行位移变换,以此提高加密安全性;同时,对密钥生成函数进行了结构上的修改,使得每一轮密钥都由上两轮密钥计算得到,并将混沌序列引入其中,增强了密钥的安全性;最后,对算法进行了仿真实验,分别分析了密钥空间、密钥敏感性、相关性、鲁棒性、直方图、抗差分攻击、信息熵以及加密效率,从多个维度验证了本文图像加密算法安全性能良好,能够实现快速加密和有效抵抗各类攻击,在图像加密、保密通信等领域有着良好的实用价值。