雷霆,葛强,周黎鸣,马骏
(河南大学计算机与信息工程学院,开封 475004;河南省大数据分析与处理重点实验室,开封 475004)
近年来,随着科技的进步,信息技术得到了迅速发展。网络作为一种新型的信息载体,在提供给我们方便的同时,也存在着较大的安全隐患。信息泄露不仅会导致用户个人隐私被窃取,也可能会对于国家和社会产生严重的负面影响。图像作为一种重要的信息类型,其保密和安全性越来越受到人们重视。目前常见的加密算法有对称加密算法如DES算法、AES算法和非对称加密算法如RSA算法等[1]。此类算法将图像作为明文进行加密,这类加密算法虽能达到加密效果,但对于图像加密而言,由于图像数据量大,相关性强等特点,因此此类算法对图像加密并不完全适用。混沌系统作为一种非线性动力系统,具有随机性、遍历性、不可预测性、确定性和对初始条件敏感等特点,因此混沌系统经常被应用于密码学和信息安全领域。混沌系统最早由美国气象学家爱德华·诺顿·洛伦茨提出,并在1997年首次由Fridrich应用于数字图像加密中。目前常用的混沌系统主要包括一维Logistics映射、Cheby⁃shev映射、二维Henon映射等。有研究表明,二维He⁃non映射相比一维Logistics映射、Chebyshev映射更为复杂,迭代不易溢出,具有更强的随机性[2]。本文根据二维Henon映射通过密钥生成不同的随机加密序列,对RGB图像三个通道分别进行移位和异或加密运算,以达到加密效果。
混沌是一种在非线性动力体系中出现的无规则现象,其表现为不确定,不可预测,在日常生活和科学研究中都普遍存在。其重要特点之一是对初始值极度敏感,当初始参数发生细微改变,最后生成的结果将呈现很大的差异,因此混沌系统经常被使用于密码学和信息安全领域。Henon映射是一种典型的在二维空间产生的离散混沌映射,其表达式为:
从公式可知,Henon 映射的状态由 x0,y0,a,b 四个参数决定,因此Henon映射较一维混沌映射更为复杂。研究表明,当a=1.4,b=0.3,时,函数进入混沌状态,生成的混沌序列具有很强的随机性。图1表示当b=0.3时变量x随参数a变化的分叉图,从图中可以看出,当a=1.4时,变量x的取值进入一种不断变化、不可预知的状态,在此处Henon映射进入混沌状态。Ly⁃apunov指数是用来衡量系统动力学特性的一个重要指标,其表示相空间相邻的两条相邻轨道的平均指数发散率的数值特征,是常用于识别混沌系统的重要指数之一。在一维映射中Lyapunov指数只有一个值,在多维相空间中一般有多个值,当其中一个指数为正值时,就表明该系统存在混沌运动。Lyapunov指数的计算方法有QR分解法、Jacobian法、定义法等,采用Jacobian法计算二维Henon映射的Lyapunov指数,当a=1.4,b=0.3时L1=0.419,L2=-1.623,这表示系统在此处于混沌运动状态。图2给出了Henon映射的混沌吸引子。首先给出初始参数a,b,x0,y0,根据Henon映射公式进行多次迭代以提高算法随机性。给定密钥k1,生成第一组加密序列L1,R1,加密R图;由L1,R1确定第二个密钥K2,再由K2生成第二组加密序列L2,R2,加密G图;由L2,R2确定第三个密钥K3,再由K3生成第三组加密序列L3,R3,加密B图。在每一层加密上分别进行像素点移位和异或加密,最后将加密后的R,G,B图像重新叠加得到最终加密图像。这种加密算法将密钥的生成和混沌映射相结合,每个通道的加密使用不同的密钥,并在每一层的加密上使用像素点移位和异或加密两轮加密操作,增加了算法的复杂性,使得加密算法更为安全可靠。图3给出了加密流程示意图。
图1 Henon映射分叉图(b=0.3)
图3 彩色图像加密流程
图2 Henon映射的吸引子(a=1.4,b=0.3)
本加密算法主要包括密钥和加密序列的生成以及各通道加密两个过程,对于未加密的彩色RGB图像,设其大小为M×N,分离其三基色,得到三个二维向量R,G,B,每个二维向量为一个M×N的单通道灰度图。
本加密算法使用3个密钥K1,K2,K3,分别对灰度图加密,其中K1由用户给出,K2由K1生成的加密序列决定,K3由K2生成的加密序列决定。密钥和加密序列的生成步骤如下:
(1)给出大小为M×N的原始图像P,初始密钥K1,初始参数a,b,x0,y0。
(2)利用Henon映射多次迭代生成两个混沌序列,由密钥K1确定序列位置,取长度为M×N的两个序列L1,R1作为第一组加密序列。
(3)由 L1,R1根据公式(2)确定密钥 K2,由 K2确定序列位置,获得第二组长度为M×N的加密序列L2,R2。
(4)由 L2,R2根据公式(2)确定密钥 K3,由 K3确定序列位置,获得第三组长度为M×N的加密序列L3,R3。
以256阶彩色图像为例,图像可以分为RGB三个通道,每个通道为一个256阶灰度图像,灰度值取值区间为[0,255],对每一层图像先进行移位操作,再进行异或加密,加密流程如下:
(1)根据公式(3)分离RGB图像三个通道,得到RGB图像的三个分量矩阵,分别记为R,G,B。
(2)将加密序列L1,L2,L3从小到大排序,得到索引序列L'1,L'2,L'3,按照L'1,L'2,L'3记录位置将分量矩阵R,G,B中每个像素点移位,得到排序后的矩阵R',G',B',此步骤为移位加密。
(3)由于 Rn的取值区间为[0,1],将 R1,R2,R3序列中的值按照公式(4)映射到[0,255]的整数,得到序列R'1,R'2,R'3。
(4)将矩阵R',G',B'中每个值与序列R'1,R'2,R'3的值进行bitxor异或运算,得到矩阵R'',G'',B'',此步骤为异或加密。
(5)将R'',G'',B''按照公式(5)合并得到最终加密图像Q:
利用MATLAB工具对大小为512×512的标准彩色图像PeppersRGB进行加密实验测试,图4给出了算法加解密结果。从加解密结果来看,在经过一次加密之后,图像完全混乱,已看不出任何原图信息。利用正确密钥可以完全解密原图信息,当密钥错误时,无法正确解密,解密后图像与原图看不出任何关联。本算法充分利用Henon混沌映射的特性,将密钥的生成与混沌系统相结合,并在每个通道的加密过程中进行移位和异或两轮加密,大大地提高了加密效果。
灰度直方图可以直观地反映图像灰度值分布情况,常用于检验图像加密效果,对于未加密图像,灰度值分布往往呈现明显的分布特点,如果经过加密后图像灰度值趋于均匀,说明此加密方式能较好地抵抗统计分析攻击。图5给出了原图加密前后RGB三个通道的灰度直方图,从图中可以看出,经过一轮加密,原来特征明显的灰度直方图趋于均匀。
图像的信息熵表示图像中灰度值的分布情况,256阶灰度图像理论最大信息熵为8,图像的信息熵越接近8说明灰度值分布越均匀。其计算公式为:
其中P(xi)表示随机变量x为xi的概率。
表1 加密前后信息熵
通过计算得知,进行一次加密后,图像三个通道的信息熵更加接近最大值8,可见原始图像经过加密后各通道灰度值分布趋于均匀,能更好地隐藏原图特征,本算法有良好的抗统计分析攻击的特性。
剪切攻击是一种常见的图像攻击手段,对加密后的图片进行剪切,并进行解密,测试算法能否正确解密出原图信息。本次测试中将加密后的图片上半部分进行剪切并进行解密,图6给出了解密结果,从实验得知,当加密图像受到大面积破坏时,解密后的图片仍然可以还原出大部分原图信息,因此本算法有较强的抗攻击性。
图6 攻击测试
本文给出了一种基于Henon映射的彩色图像加密方案,将密钥的生成与混沌映射相结合,对每个通道的加密使用不同的密钥,每一个密钥均由上一个密钥通过混沌映射得出,增加了密钥的随机性,大大提高了加密算法的安全性。在每一层的加密上,充分利用了图像加密的两个原则:移位和像素值改变,利用Henon混沌映射在每一层生成不同的两个加密序列,对图像分别进行移位和异或加密。实验表明,此加密方式具有良好的加密效果,能一定程度抵抗统计分析攻击和裁剪攻击,具有较强的鲁棒性。由于Henon映射自身的特点,参数a,b的值相对固定,因此本算法的密钥空间相对较小,在拓展密钥空间方面可以做进一步研究。