魏连锁,胡现成,陈齐齐,韩 建
(齐齐哈尔大学计算机与控制工程学院,黑龙江 齐齐哈尔 161006)
随着信息技术的快速发展,图像、视频、音频等多媒体数据的安全引起了人们的广泛关注。对图像信息进行安全、高效的加密是多媒体研究的重点[1,2],而基于混沌系统设计新型的加密算法则成为当下图像加密的有效方法[3,4]。
常见图像加密过程是利用混沌序列对明文图像置乱来改变像素点位置;同时通过对像素点的像素值进行数值改变,使原始图像信息被隐藏;最后对像素点进行扩散处理,使明文像素点的信息隐藏在更多的密文像素点中,像这样置乱、置换多步骤的图像处理过程才能提高加密的安全性。文献[5]设计了一种扩散-联合置乱-联合扩散的加密方法,提出利用耦合Logistic映射产生随机密钥流,但混沌系统过于简单,难以抵抗穷举攻击,并且扩散过程繁琐。文献[6]为提升混沌系统复杂性,将分段Logistic映射加入到时空混沌中,将混沌系统作为像素置乱的依据,同时分量相互置乱的方法置乱,虽然混沌系统复杂难被破解,但是置乱扩散后的像素存在相关性大的问题。文献[7]提出基于Tent映射和改进Logistic等映射构造四进制复合混沌系统,然后利用混沌序列对RGB分量联合置乱的彩色图像加密,虽然置乱扩散方法能减少相关性,并且混沌系统能抵抗穷举,但是4个混沌的组合过于复杂化,影响加密效率。文献[8]提出混合混沌系统的并行多通道彩色图像加密,利用3种混沌分别对3个分量加密,尽管形式简单,但是置乱扩散方法传统,密文相关性大。文献[9]为了降低算法的复杂度,利用Logistic、Tent 与 Sine 映射构建复合混沌系统,通过人工神经网络处理混沌序列,再利用神经网络序列实现明文置乱,通过构造量化方法与分段异扩散技术,对置乱图像实现分类加密。
对此,本文提出了基于云模型的Fibonacci混沌系统与矩阵卷积运算结合的彩色图像加密算法,该算法的混沌序列随着云模型随机种子的随机变换,重复运行产生不重复的多组动态混沌序列,并且混沌系统密钥空间大;利用复合混沌序列对RGB分量拼接的图像像素点进行置乱变换,再利用矩阵卷积运算[10,11]来将置乱后的像素点进行置换,增强密文抗攻击能力;最后与混沌序列及前相邻像素值进行异或扩散,实现了图像加密过程的位置置乱-数值变换-扩散的整体设计。该算法抗明文攻击性强,具有加密安全性高的特点。
云模型发生器多是基于伪随机数的发生器,云模型拥有期望值Ex、熵En和超熵He共3个数字特征,它是用来表示不确定性转换的模型[12]。
Ex的值反映了在云滴群里云重心所在的位置。
(1)
其中,xi,i=1,2,…,n表示输入样本点,n为样本点取值个数。
样本方差定义如下:
(2)
En的值揭示了数据间模糊性和随机性的关联性。
(3)
He是对En的不确定度量,反映了云的离散程度和厚度。
(4)
yi=RN(En,He)
(5)
xi=RN(Ex,yi)
(6)
其中,RN为正态随机数,算法云模型取值为Ex=5000,En=3,He=1。
Figure 1 Cloud droplet distribution图1 云滴分布
如图1a云滴图所示,云模型数字特征产生的云滴分布具有正态分布特性,从图1b中可以看出,xi居中分布。云发生器的数据不像混沌序列具有分布均匀的特性,但是云模型的数据可以随着随机种子的变换而变换,将云模型的随机性与混沌序列相结合,让混沌序列实现了长期不可预测,序列的规律将很难被发现,在加密应用中将会起到很好的加密作用。
混沌系统利用Fibonacci产生随机数[14],产生的随机数能克服序列本身存在的相关性。Fibonacci数列[15]如式(7)所示:
xi+1=(xi+xi-p) modM,i=p,p+1,…,M∈N
(7)
其中,p=1,2,…,n为数列输入值的下标,M为模。
Fibonacci数列具有简单、快速、易于实现等特性,并且模型采用广义三阶Fibonacci函数模型:
Fj=(AiFi-1+BiFi-2+CiFi-3) modM
(8)
其中,Ai,Bi和Ci表示随机常数,M为模,Fi为云滴群。
量子Logistic QL(Quantum Logistic)[16]映射的表达式为:
(9)
量子混沌映射作为随机动态参数,降低了序列相关性,经过广义三阶Fibonacci的函数模型运算[17],再与 Logistic映射耦合得到云模型Fibonacci混沌系统:
Xn+1=AFQL=(F(Q(γ,β)))+L(x0,μ)mod 1
(10)
其中,Q(γ,β)表示量子混沌系统;F(Q(γ,β))表示将云滴代入到式(8)广义三阶Fibonacci函数模型的序列Fj;L(x0,μ)表示初始状态为x0、参数为μ的Logistic混沌系统,μ的取值在[0,4],算法中取μ=3.8。最后通过与Logistic映射耦合产生新的非相关混沌序列。
如图2所示为混沌序列发生器的组合结构图,展现了混沌结构的数据传输流程以及组合公式。云模型Fibonacci混沌系统通过将量子logistic、logistic、Fibonacci数列和云模型相结合,构造出新的混沌系统,结合了Fibonacci数列简单、快速、易于实现的特性,以及多组混沌序列的混沌性和云模型的正态分布特性,提高了系统复杂度。但是,系统的时间复杂性也相对提高了,在进行多组图像加密时,将会有短暂的时间延迟。
Figure 2 Schematic diagram of CFCS pseudo-random chaotic sequence generator图2 CFCS伪随机混沌序列发生器示意图
基于云模型的Fibonacci混沌系统生成的多组混沌序列相互独立,在对彩色图像加密过程中用到多组混沌序列,如加密过程中产生的4个混沌序列F1(i),F2(i),F3(i),F4(i)。传统混沌系统生成的混沌序列固定统一,很容易推断出混沌规律,而用云模型Fibonacci混沌系统可以随意生成无数组混沌序列,从而提高图像加密的效率。
步骤1首先选取量子Logistic混沌系统的初始值及系统控制参数,代入QL混沌系统中,得到xn,yn和zn均在(0,1)内的实数三阶序列(xn,yn,zn)。
步骤2选取云模型期望值Ex,熵En和超熵He3个参数的初始值,利用云发生器生成随机的云滴群。
步骤3将步骤1产生的QL混沌三阶序列(xn,yn,zn)代入式(8)中分别作为广义三阶Fibonacci函数模型的参数Ai,Bi,Ci,并将步骤2中的云滴代入式(8)中作为广义三阶Fibonacci函数模型的函数值Fi,产生广义三阶Fibonacci函数模型序列。
步骤4将步骤3中产生的广义三阶Fibonacci函数模型序列与Logistic混沌系统代入式(10)中级联耦合,广义三阶Fibonacci混沌系统产生最后所需的均匀非相关的序列。
基于云模型与Fibonacci的混沌系统相比于简单的Logistic、Ten映射具有伪随机特性好、序列独立不重复和安全性高的特点,能产生均匀且非相关的伪随机混沌序列。
加密算法首先对原始彩色图像的 R、G、B分量进行拼接,利用混沌序列映射更替像素点坐标,达到像素点置乱的目的;再通过矩阵卷积运算置换像素值;最后进行像素点间的相互异或扩散,3通道拆分整合后得到加密图像。流程图如图3所示。
Figure 3 Encryption process图3 加密过程
Step1预处理。
预处理指彩色图像的转换。原始彩色图像(W为图像的宽,H为图像的高),PH×W×3位于三维空间,将彩色图像分解为R、G、B 3通道图像,然后拼接成为二维低维灰度矩形图像P0。
Step2置乱。
将二维的灰度矩形图像P0置乱成P1,即将P0位置坐标与混沌序列所转换的数据坐标进行映射互换生成加密图像P1。选取图像像素点的平均值作为密钥,通过隐密通道与混沌参数值一起传输到接收方,密钥分别作为云模型的随机种子和Logistic映射的初始值来生成云模型Fibonacci混沌序列F1(i);再乘以明文图像的高height和宽width进行扩展,取整得到(0,H*W)之间的整数序列F11(i)。最后将混沌序列中每1个元素F11(i)(i=1,2,…,H*W)用F(x,y)(x:行,y:列)坐标形式表示出来,利用混沌坐标映射更替像素点坐标,达到像素点置乱的目的,再调整矩阵后得到P1。置乱方法如图4所示。
Figure 4 Scrambling process图4 置乱过程
置乱公式如下所示:
F11(i)=int(F1(i)×height×width)
(11)
(12)
其中,Xi和Yi分别表示混沌序列中每1个元素对应的行与列;W表示图像的宽;Te为辅助变量,用来临时存储变换位置的像素值。
Step3卷积置换。
将P1置换成P2,即由P1进行矩阵卷积运算生成加密图像P2。在卷积运算之前,要在矩阵的最右边和最下边补零。P1内2×2单位矩阵在卷积运算后右移1位,同时将卷积核filter(t)内2×2的随机序列进行更替,t表示随机数,1行结束再转至下1行依次进行矩阵卷积运算。在结束卷积置换后再去掉添加的行列零。矩阵卷积运算流程如图5所示。
Figure 5 Convolutional permutation图5 卷积置换
云模型Fibonacci混沌系统混沌序列F2(i)需先通过式(13)进行扩展得到F22(i),混沌序列扩展如式(13)所示:
F22(i)=int(F2(i)×100),
i∈{0,1,2,…,height×width-1}
(13)
然后,将连续的4个混沌序列值放到2×2矩阵中组成卷积核filter(t),再将P1矩阵与卷积核filter(t)进行卷积运算,最后与F3(i)随机序列做差得到P2置换图像矩阵。像素置换公式如式(14)所示:
P2[i][j]=sum(P1[i:i+2,j:j+2]×
filter(t))-F3(i)
(14)
其中,F2(i)表示混沌序列,F22(i)为扩展序列,F3(i)表示另1组混沌序列。式(14)即为P1内矩阵与卷积核的卷积求和运算公式。
Step4异或扩散。
将P2异或扩散成P3,即由P2与云模型Fibonacci混沌系统及前后相邻像素值进行正反双向2次异或操作生成加密图像P3。首先利用式(15)对随机序列F4(i)进行扩展,再与P2矩阵、前(后)相邻像素值进行正反双向的异或运算,实现像素点之间扩散的相互影响,得到P3。
F44(i)=int(F4(i)×108)
(15)
正向扩散:
(16)
反向扩散:
(17)
其中,image_mean表示像素值的均值,F44(i)为混沌扩展序列,异或过程需要像素点与混沌序列以及前像素值P2[i-1]3个数据元素,当i=0时,初始前像素值P2[i-1]为image_mean。
Step5最后归一化后把图像转换成R、G、B模式的彩色图像。
矩阵卷积将会扩大数据的范围,无论是置乱还是置换,混沌的范围难以达到置换扩散的效果,需要对序列进行不同程度扩展。而矩阵类pading的补零过程可以避免边缘数据遗漏,在卷积运算后再与混沌结合可以防止通过边缘数据反推出图像真实数据的可能性。
解密过程与加密过程相反,根据像素的平均值产生云模型Fibonacci随机序列来进行解密。解密步骤如下:
(1)将加密后的图像转换为R、G、B灰度图像。
(2)将图像的平均值作为初始值生成云模型Fibonacci随机序列。
(3)根据式(15)~式(17)对加密后的P3矩阵进行异或运算。
(4)异或运算后的矩阵再进行式(18)所示的反卷积运算:
P1[i][j]=P2[i][j]+F3(i)-
P2[i+1][j+1]×filter[1][1]-P2[i+1][j]×
filter[1][0]-P2[i][j+1]×filter[0][1]
(18)
Step6卷积运算恢复后再进行置乱运算,就可以得到原图像。
以上图像加密算法将广义三阶Fibonacci和云模型结合,放大了对整个加密系统的初值敏感性,增大了密钥空间;将图像的像素平均值作为混沌序列的初始值,同时将平均值与异或运算紧密结合,提高了明文敏感性;通过卷积运算将置乱后的矩阵进行置换操作,微小的误差将会影响后面所有的计算结果,并且会逐渐放大误差,达到较好的置乱效果。
本节利用Python 3.6测试所提彩色图像的加密算法,图像为256×256的彩色图像Peppers,分别展现图像加密过程中置乱、置换与扩散后的图像,通过视觉分析很难辨别加密后的图像,加密过程如图6所示。
Figure 6 Color encryption images图6 彩色图像加密图
Figure 8 Histogram图8 直方图
密钥敏感性是加密算法安全性分析的一项重要检测步骤。本文将混沌初始密钥偏差10-16进行解密,解密出的图像无法识别出原始图像,在偏差为10-17时能恢复原图像,表明该算法具有很强的敏感性。图7对加密后的Peppers彩色图像进行了偏差解密。
Figure 7 Key sensitivity analysis image图7 密钥敏感性分析图像
加密前后Peppers图像的R、G、B分量直方图分布如图8所示,矩阵卷积运算后的直方图分布与明文直方图出现了明显的不同,加密后的R、G、B分量直方图分布平滑,无法辨认出加密前的分布规律,直方图显示加密效果明显。
图像像素的位置关系分为水平、垂直和对角线上的相邻[18]。
图像像素之间的强相关性会威胁到图像信息的安全,相关性越小,则置乱的破坏程度越高。图9展示了原图像像素分布、卷积图像、密文图像的水平方向相邻像素的分布图。分析图9及表1可知,明文图像分量像素相关性较高,相关系数都接近1,密文图像的相关系数趋近于0,本文的加密算法破坏了原始图像的统计特性。相关性分析公式如下所示:
(19)
其中,xi和yi为相邻像素点的像素值,T为像素点的数量。原图像及加密后图像的相关性如表1所示。
Figure 9 Horizontal adjacent pixel distribution图9 水平方向相邻像素分布图
信息熵用来度量图像中像素值的分布情况,像素值分布越均匀信息熵越大。信息熵计算公式为:
(20)Table 1 Correlation analysis of adjacent pixels in image表1 图像相邻像素值的相关性分析
其中,mi表示像素的值,p(mi)表示像素出现的概率。根据式(20)计算出的彩色图像R、G、B分量的信息熵如表2所示。表2给出了多种加密算法的信息熵,本文算法加密后的信息熵接近于8,说明像素值分布均匀,算法具有较强的抵抗统计攻击的能力。
Table 2 Comparison of information entropy among different encryption algorithms表2 本文加密算法与其他加密算法的信息熵对比
差分攻击严重威胁着图像信息的传输安全,加密算法敏感性越强,抵抗攻击能力越强,它是加密技术领域中最具有挑战的篡改形式,好的加密机制应该能够抗差分攻击。NPCR与UACI变化率值是抗差分攻击的衡量标准,用来评价加密算法的抗差分攻击性能。其计算公式为:
(21)
(22)
其中,H和W表示图像的高和宽,像素变化率和像素平均强度变化率的理想期望值为99.609%和33.464%[22]。
分析表3可知,本文算法对图像的微小变化很敏感,能有效地抗差分攻击,图像各层的像素变化率和像素平均强度变化率接近理想值。和其它文献数据对比,像素变化率和像素平均强度变化率的数值略有不足,稍有差距,但数值大小接近期望值,具有很好的敏感性。
Table 3 Analysis of NPCR and UACI of image表3 图像的NPCR和UACI值分析 %
在现实情况中,信息的传输容易受到各种干扰和攻击,所以要求图像加密算法具有较强的鲁棒性。为了测试本文加密算法的抗噪声攻击性能,图10对加密后的密文图像添加了不同强度的高斯噪声,图10a为添加强度为0.2的高斯噪声后的加密图,从解密后的图10b可以直观地辨别图像的主要信息,而增加强度为0.3的高斯噪声后,图像变得模糊,但是解密后的图像依然可以分辨,因此可认为本文加密算法可以抵抗噪声攻击,具有一定的抗击噪声干扰能力。
Figure 10 Noise attack decryption map图10 噪声攻击解密图
实验通过对加密图像进行剪切来验证该加密算法的抗剪切能力。图11a对密文图像进行25%的裁剪,解密图像如图11b所示,虽然解密后的图像会出现噪声,但不会影响图像的整体轮廓。从图11中可以看出,当密文在传输过程中遇到剪切干扰时,本文算法具有很好的安全性,其解密图像可以分辨出原始面貌,由此得知算法具有更强的抵抗裁剪攻击能力。
Figure 11 Cut attack decryption map图11 剪切攻击解密图
对于加密系统的明文攻击,选择明文攻击的威胁最大。选择明文攻击是指攻击者利用已知加密算法,并且可任意选择明文,通过对应的密文推导出中间密文。本文算法选择利用选择明文攻击来测试加密图像的安全性,将彩色图像Peppers的第1个像素点加1,得到新的明文图像,选择像素值全为0的明文I={0,0,0,0},设云模型混沌序列F2={1,2,3,4},序列F3={5};置乱操作对像素值为0的明文无效,置乱后的密文依然为Z={0,0,0,0},再做卷积运算为-5,使像素值不为0,所以本文算法能有效抵抗选择明文攻击。
本文提出一种基于云模型Fibonacci混沌系统与矩阵卷积算法的彩色图像加密算法,将广义三阶Fibonacci和云模型结合,提高了混沌系统的复杂性;同时加密算法将三通道图放在同一平面里进行处理,降低了算法的计算强度和空间需求,通过卷积运算将置乱后的矩阵进行置换操作,降低了RGB相关性,提高了明文与密文关系复杂度。实验结果表明,加密后图像成功隐藏了图像信息,无法辨认加密后的分布规律,并且可以有效抵抗干扰攻击、明文攻击等测试攻击,具有加密安全性高的特点,拥有较高的使用价值。