基于混沌映射与动态S盒的图像加密算法
2019-04-02陈楠楠
张 健,陈楠楠,李 妍
(东北林业大学,黑龙江 哈尔滨 150040)
0 引 言
在如今这个信息爆炸的时代,我们每个人的生活都和信息安全息息相关。数字化信息广泛应用于各个领域,如图书、档案、通讯、家庭等等[1-3]。但是由于网络自身存在一些不足,由此带来了一些不安全因素[4-5],攻击者恰好利用网络的不足对敏感信息进行窃取。因此,图像加密技术对各个领域的人们来说都显得越来越重要。
混沌具有对初始值敏感性、非线性性和伪随机性等特点,因此被广泛应用于密码学及相关研究领域中[6]。但是对于传统的基于一维的混沌理论来说,单独使用无疑是一种近乎于无效的加密方法,因为一维的混沌加密算法太过简单,且密钥空间小,因此单独使用一维混沌映射会造成加密算法安全性低、易破解的后果[7]。因此我们应该从使用这种混沌加密与其他加密方法相结合的算法角度来考虑如何更好地加密图像[8]。
在分组密码中,S盒作为其中重要的一部分,在整个分组密码算法中起置乱的效果。许多学者都在研究怎么能构造出性能良好的S盒,并能够与混沌特性很好的结合在一起,从而能更好地应用到加密算法中。而目前存在的构造出的S盒大部分属于静态S盒,在替换过程中不具有灵活性[9-11],利用Logistic映射和斜Tent映射生成动态S盒过程中在置换阶段稍显繁琐,S盒生成过程也相对比较复杂[12]。广义猫映射是一种置乱效果较好的非线性变换[13-16]。因此,本文提出了一种基于混沌与动态S盒结合来加密图像的方法,其中动态S盒的产生就是通过Arnold cat映射得到的。通过改变猫映射的初始参数来产生动态的S盒,将图像进行分块后,分别对分块后的图像进行S盒置换。理论分析以及数值仿真都证实了该方法的可行性及在实际应用中的优越性。
1 动态S盒的构造方法
1.1 S盒的构造原理
利用Arnold cat映射具有置乱的特性来产生动态S盒,其产生的S盒随着初始值的变化而产生出不同的S盒,实现了S盒的动态性,使得攻击性更加困难。具体来说,先对图像像素利用混沌映射进行扩散,再构造出S盒,即首先随机构造一个无重复的由0-255之间的整数构成的16×16的矩阵,根据公式(1)对矩阵中的像素进行变换,迭代一定的次数构造出一个16×16大小的S盒,根据初始值的不同产生出不同的S盒,其中产生的S盒与原来矩阵相比同一位置上的像素发生变化。同理,解密过程中产生S盒如公式(2)所示。
(1)
(2)
0-255之间的整数正好对应了图像每个位置上的像素值,从而能够实现将像素值进行置乱的过程。产生的S盒可以对图像的一部分进行加密,图像的不同部分使用的也是不同的S盒,因此该方法更具有安全性。
1.2 S盒的构造步骤
利用Arnold cat映射来构造出动态的S盒,具体来说构造步骤如下:
(1) 首先随机构造出一个16*16的范围在0到255的整数矩阵A;
(2) 确定Arnold cat映射的迭代次数k;
(3) 选取满足ad-bc=1的a,b,c,d的任意整数取值,确定N的取值为256;
(4) 对于矩阵中第m行第n列的值A(m,n),通过公式(1)进行计算最终得到A(m′,n′),即矩阵中该位置处的值变换到了另一个位置上,依次进行此类变换;
(5) 迭代k次最终生成一个S盒;
(6) 改变a,b,c,d的值继续进行(4)(5)步操作再次生成S盒实现动态效果,此过程可以循环多次;
(7) 最终产生4个类似随机的S盒对图像进行分块加密。
其中,为了验证所构造的S盒之间是否存在着什么特殊的关系,画出如下的图1进行分析。由于S盒是通过猫映射来构成的,因此,构造出的S盒具有一些猫映射的折叠特性。由于样本数量太多,选取其中的前80个样本来进行分析得到如图2所示。
图1 S盒的比较
图2 S盒的比较
由图2可得出随机选取的两个S盒之间总体来说互不影响,因此满足本算法对产生S盒的要求。
2 算法描述
2.1 算法原理
该加密算法主要包括两大部分,第一部分是对图像像素值进行扩散,即对图像像素利用Logistic映射进行扩散;第二部分则主要是利用产生的动态S盒对图像像素位置进行置乱操作,即首先随机构造一个无重复的由0-255之间的整数构成的16×16的矩阵,利用Arnold cat映射对矩阵中的像素进行变换,迭代一定的次数构造出S盒,根据初始值的不同产生出不同的S盒,其中产生的S盒与原来矩阵相比同一位置上的像素发生变化。对扩散后的图像进行分块后,分别对每块图像利用产生的不同S盒进行像素位置的置乱。最终输出加密后的图像。该加密算法的流程图如图3所示。
图3 加密流程图
图3中图像扩散应用的是混沌映射,在图中为Logistic映射,图像置乱应用的Arnold cat映射产生的S盒对图像进行变换。
2.2 算法步骤
加密算法如下:
首先选取一张大小为M×N的灰度图像I,加密的具体步骤如下:
输入:灰度图像I、Logistic映射的初值X0和参数μ、广义猫映射的初值a、b、c和d(满足ad-bc=1,根据产生S盒个数来决定输入次数),图像置乱的轮数m。
输出:加密图像I′。
第一步:将原始灰度图像I转化成二维矩阵I1,其大小仍为M×N;
第二步:将得到的的二维矩阵I1再次转化成一维序列L,大小为M×N;
第三步:利用混沌映射对图像像素值进行扩散,即用Logistic映射通过迭代生成长度为M×N的混沌序列X(n),将其转化为整数,最后用X(n)与序列L进行异或操作得到序列L′;
第四步:将异或后的序列L′转化成二维图像II,大小仍为M×N;
第五步:根据广义猫映射利用Arnold cat映射参数不同的特性产生4个类似随机的16×16的S盒,此部分迭代次数都选为m次,其中保证a,b,c,d,m为小于P(P为M、N中的最大值)的正整数。
第六步:将图像分为4块,分别将图像的每一块对应一个随机的S盒进行置换操作得到图像III。
第七步:输出加密后的图像I′。
解密过程相当于加密的逆过程,方法如下:
输入:加密图像I′、Logistic映射的初值X0和参数μ、广义猫映射的初值a和b,图像置乱的轮数m。
输出:原灰度图像。
第一步:将加密图像I′转换成一个二维矩阵II′。
第二步:根据广义猫映射利用Arnold cat映射参数不同的特性产生4个类似随机的16×16的S盒,此部分迭代次数都选为m次,其中保证a,b,c,d,m为小于P(P为M、N中的最大值)的正整数。
第三步:将图像II′分为4块,分别将图像的每一块对应一个随机的S盒进行置换操作得到图像III′。
第四步:将得到的的二维图像III′再次转化成大小为M×N的一维序列L′;
第五步:利用混沌映射对图像像素值进行扩散,即用Logistic映射通过迭代生成长度为M×N的混沌序列X(n)′,将其转化为整数,最后用X(n)′与序列L′进行异或逆操作得到序列L;
第六步:将一维序列L转化成二维矩阵后得到解密后的图像I;
第七步:输出解密后的图像I。
3 实验结果及分析
3.1 实验结果
我们选取Lena、Vegetable两种不同类型作为实验图像,这两种图像的大小都为256×256。Logistic映射初值选为:x0=0.2575123321123321,参数μ的值设定为:μ=3.875123321123321。产生第一个S盒的广义猫映射初值和置乱轮数分别为:a=5,b=2,c=7,d=3,k=15。第二个S盒的初始值和置乱轮数分别为:a=1,b=1,c=1,d=2,k=15。第三个S盒的初始值和置乱轮数分别为:a=1,b=1,c=2,d=3,k=15。第四个S盒的初始值和置乱轮数分别为:a=3,b=2,c=4,d=3,k=15。原图像、加密后的图像以及解密图像分别如图4所示。其中,图4(a)-(d)分别为Lena的原图像,扩散后的图像,Lena加密后的图像及解密后的图像;图(e)-(h)分别为Vegetable的原图像,Vegetable扩散后的图像,Vegetable加密后的图像及解密后的图像。
图4 实验原图像、加密图像和解密图像
从图4中我们可以看出,该加密算法达到了将图像进行加密的目的,为了进一步证明算法的有效性,我们将继续通过以下具体的实验分析来检验该算法的可靠性。
3.2 密钥空间及敏感度分析
密钥敏感度对于一个性能良好的加密方法来说是至关重要的。在该加密方法中,所有的密钥都产生于像素扩散和位置置乱的过程中。本章中用到的密钥如下:
(1) Logistic映射的初值X0和参数μ。
(2) Arnold cat映射置乱轮数k,参数a、b、c和d。
Logistic映射的初值和参数都具有极强的敏感性,其敏感度都是10-16。假设初值∂0的敏感度的小数范围设定为10-1到10-15,则不同敏感度的每两个元素通过递进后得到的图像,其图像矩阵中不同元素所占的比例将会超过0.85[14]。而当敏感度为10-16时,则不同元素的比例约为0。因此可推出Logistic映射的初值的密钥空间Sx0=1016。由于参数μ∈(3.6,4],因此Logistic映射的参数密钥空间为Sμ=0.5×1016。
由于数字化后的Arnold cat映射参数k,a、b、c、d都为整数,并且满足a、b、c、d 如图5所示,5(a)是Vegetable的原图像,使用初值为x0=0.533加密vegetable的灰度图像,得到的加密图像如图5(b)所示,利用x0=0.533解密图像如图5(c)所示,利用x0=0.5330000000001解密图像如图5(d)所示。 图5 密钥敏感性实验结果 图5(d)说明,初始密钥只增加了0.0000000000001,便无法复原出原图像。由此能够证明该算法具有较强的密钥敏感性,即算法具有良好的抗穷举攻击能力。 如果加密后的图像与原图像相比具有较低或者几乎不存在统计相似性,就能够避免攻击者通过统计像素值对图像进行统计性攻击。如图6所示,画出了Lena图像在加密前后的灰度直方图。 图6 Lena加密前后的灰度直方图 其中,图6(a)表示的是Lena图像加密前的灰度直方图分布,(b)表示的是Lena图像加密后的灰度直方图分布。从(a)中可以看出,原始图像的灰度值具有一定的规律,其灰度值会出现集中在一些值上的现象,而从(b)中可以看出,加密后的图像就会出现相对均匀的情况,这样使得通过统计像素值来进行攻击变得更加困难。 一般情况下,原始图像相邻像素间都具有较高的相关性,这种相关性可以被黑客利用从而分析出原图像的有关信息。因此,一种有效的加密方法必须能够降低两个相邻像素之间的相关性,这种相关性包括水平方向、垂直方向及对角方向上的像素相关性。以下对图像加密前后的相关性作具体的分析。根据公式(3)分别从Lena加密前与加密后的图像中随机的选取其中的2000对像素对进行分析。分析结果如表1所示。 (3) 表1 Lena图像相关系数的比较 由表1能够看出,Lena加密后的图像在水平、垂直、对角方向上的相关性相对于原图像都有很大程度的减少。因此证明该算法能够抵御来自相关性分析的攻击。同时将加密后的相关值与文献14进行对比,得出本文所提出的算法能够更好地降低加密图像像素之间的相关性。 信息熵指的是除去冗余信息后剩余信息的平均量,具有随机性的特点。信息源一般用m来表示。计算公式如式(4)所示。对一个确定的系统来说,系统越有规律,其信息熵会越低,因此我们可以用信息熵来表示系统的有序化程度。信息熵的值越大,表明用该算法加密后的图像越混乱、随机性越大,则破解需要的信息量也就越多,因此攻击难度更大。 (4) 上式中,p(mi)表示的是信息源m出现的概率。假设现在有信息源28个,并且这些信息源在不受其他因素干扰的情况下出现的概率相同,那么通过公式(4)就可以计算出信息熵H(m)=8,这个结果是理想值,表明此时信息是随机的。因此,加密后的图像计算出的信息熵越接近8,则证明加密效果越好,加密后得到的信息越有效。如表2表示的是Lena图像加密前和加密后的信息熵。 表2 Lena原图像和加密后图像的信息熵 从表2可以看出,对于Lena图像,加密后的图像熵值明显高于原始图像,且与文献[15]中的算法对比,熵值也略高。说明用该方法加密后的图像利用公式(4)计算后的信息熵接近于8。因此表明加密后图像的有效信息很多,即次要信息泄露的可能性比较小,加密图像更加安全。 差分分析指的是将一幅原始图像做很细小的改变,用一种加密算法分别对这两幅图像进行加密,最后分别对这两幅加密后的图像进行详细的分析,找出原始图像与加密图像之间存在的关系。一般情况下,攻击者通过这种分析来对图像进行差分攻击。 通常选用NPCR和UACI对加密图像的抗击差分能力进行衡量,即通过分析加密图像的像素数目改变率和平均强度变化率来判断图像抵抗差分攻击的性能。NPCR表示的是原始图像发生改变后,加密图像受影响的范围大小;UACI表示加密图像前后像素改变的平均强度变化率。NPCR和UACI值越大,表明加密算法抗击差分能力越强。NPCR的计算公式如公式(5)所示,UACI的计算公式如公式(6)所示。 (5) (6) 上式中,W表示加密图像的长度,H则表示图像的宽度,公式(6)中的C和C′分别表示的是在点(i,j)处的原图像像素值以及加密后该位置的像素值,若C(i,j)≠C′(i,j),则D(i,j)=1,否则D(i,j)=0。 选取Vegetable作为实验图像,分别计算其加密前后的相关系数、NPCR及UACI,得出的结果如表3所示。 表3 Lena图像加密前后的NPCR和UACI 由表3可以看出,Vegetable图像加密前后NPCR和UACI的值相对较高,其中,NPCR超过99%,UACI超过30%,即原图像像素发生细微变化时,加密后两幅图像却发生了较大的改变,使得通过差分分析来破解原图像变的更加复杂。与文献[16]相比,NPCR和UACI的值较高,则表明该算法能够很好地抵御差分攻击。因此,此加密算法具有良好的加密效果。 通过实验来具体分析该加密算法抵抗噪声的能力。由于高斯噪声的值符合高斯分布,能够将一些随机数均匀且随机地分布到图像上,因此我们选取高斯白噪声来进行试验,模拟出现实生活中出现的一些无法避免的信号干扰。 如图7所示,对Lena加密后的图像添加高斯白噪声。其中,(a)(b)模拟的是均值为0、方差为0.001的噪声干扰信号,(c)(d)模拟的是方差为0.003的噪声信号,(e)(f)则模拟的是方差为0.005的噪声信号,(b)(d)(f)表示的是经过噪声信号干扰后的加密图像解密出来的原图像。 图7 白噪声干扰后的加密图像和解密图像 图7中,(a)-(f)模拟的都是相同均值不同方差的高斯白噪声对加密图像像素的干扰,从(b)(d)(f)可看出尽管噪声干扰已经很大,但是仍然能够看出原图像的关键信息。由于一开始图像像素是经过Logistic映射来进行扩散的,并通过S盒来对原图像的行和列进行像素置乱。此算法能够抵抗噪声的关键点在于解密过程中,被噪声干扰的像素不会随之传播进而影响到更多的像素。所以,该技术具有较好地抵抗噪声健壮性的能力。 本文提出了一种基于混沌与动态S盒的图像加密算法,并对实验结果进行了一系列的分析与仿真,将结果与其他算法对比分析后发现该算法安全可靠,简单易行。具体来说,存在以下几方面的优点: (1) 密钥空间更大,能抵抗暴力攻击; (2) 产生的动态S盒更灵活,可以对每一块图像应用不同的S盒; (3) 加解密过程使用的是同一个S盒,减少了存储空间; (4) 算法效率高,易于实现。 因此,基于混沌映射与动态S盒的图像加密算法具有安全可靠性,使用动态的S盒来应用于加密算法中会使算法更安全,能够应用在实际生活对加密要求更高的领域中,具有可实现性。3.3 灰度直方图分析
3.4 相关性分析
3.5 信息熵分析
3.6 差分攻击
3.7 抵抗噪声的健壮性
4 结 语