本发明属于图像处理领域,涉及一种基于拼图策略和混沌系统的彩色图像加密算法。
背景技术:
随着大数据时代的到来和信息通讯的便利,人们越发关注其隐私保护,因此数据加密也变得尤为重要,又因为图像能够携带大量的信息,更能生动形象的表达人们的意愿,所以对图像数据的保护在很多应用中更加受到关注。
而图像由于其某些先天特征,像素间的高度相关、大量的数据冗余和特殊编码等使得对其进行加密不同于传统的数据加密,像AES,3DES等经典方法已不能满足图像加密的需求,这也就是为什么替换为更为加密模式的原因。研究者探索并使用新兴的、更为复杂的系统来获取安全的密钥或密钥流,混沌系统就是其中之一。该系统所产生的序列由于其初值敏感性、伪随机性、遍历性、长期不可预测性等性质,十分契合密码算法对伪随机序列的特殊需求,因而被用于图像加密中。
R Guesmi等提出了一种基于混沌和交叉算子的彩色图像加密算法(R Guesmi,MAB Farah,A Kachouri,M Samet.Hash key-based image encryption using crossover operator and chaos.Multimedia Tools and Applications,2016,75(8):1-17),对其安全性分析可以发现其像素间的相关性抺灭的不够强烈,信息熵也显示出其混沌程度不够,所以抗攻击性不强。Wei等提出了一种基于DNA序列操作和超混沌系统的彩色图像加密算法(X Wei,L Guo,Q Zhang et al.A novel color image encryption algorithm based on DNA sequence operation and hyper-chaotic system.Journal of Systems and Software,2012,85(2):290-299),同样从安全性分析可以看出其抗攻击力度不够。
本发明借鉴八数码游戏思想,如图1中的例子所示,它包括一个3×3的棋盘,棋盘上摆放着8个写有数字的棋子,留下一个空位。与空位相邻的棋子可以滑动到空位中,游戏的目的是要达到一个特定的目标状态,如图1右侧所示。其详细介绍如下:
状态:描述指定了8个棋子中的每一个以及空位在棋盘的9个方格的分布。
初始状态:任何状态都可以被指定为初始态,例如图1(a)。
后续函数:用来产生通过四个行动(把空位向左,右,上或下移动)能够达到的合法状态。
目标测试:用来检测状态是否能够匹配图1(b)中所示的目标布局(其它目标布局也是可能的)。
技术实现要素:
本发明的目的在于解决现有技术中算法加密后的图像抗攻击能力不足的问题,提出了一种基于拼图策略和混沌系统的图像加密算法。首先,使用混沌系统产生算法中所用的密钥序列,其初值是根据散列算法获取的;其次,根据所设置的拼图模式使用密钥序列打乱图像像素的位置,由此获得置乱图像;最后,对置乱图像进行扩散,最终得到密文图像。
本发明的具体技术方案为:
一种基于拼图策略和混沌系统的图像加密算法,包括以下步骤:
第一步,根据拼图策略,设计游戏模式;所述拼图策略为八数码游戏;所述游戏模式的游戏规则具体为:空位可向右上,上,左上,左下,下或右下处移动;设空位的坐标为(ci,cj),其移动规则函数如表1所示:
表1空位的移动规则函数
第二步,通过混沌系统或非线性方程产生密钥序列,其中,由散列算法决定混沌系统的初值;
第三步,从第二步产生的密钥序列中,抽取出新游戏的三列数据、空位位置数据和移动规则序列数据,将得到的数据与图像相对应,对图像进行置乱工作,进而得到置乱图像;
第四步,对置乱图像进行扩散,对密钥序列提取出的三组数据与图像像素值进行异或操作进而改变图像像素值,最终得到密文图像。
上述所述图像为彩色图像或者灰度图像。
上述第二步中使用的混沌系统是时空混沌系统。
上述的时空混沌系统为耦合映射格子。
耦合映射格子是一个离散时间、离散空间的动力学系统,由称为局部映射的混沌映射构成,这些局部映射通过耦合因子耦合在一起。耦合映射格子局部映射内在的非线性动力特征以及由于它们之间耦合造成的扩散性,使得耦合映射格子表现出了时空混沌特的特性。耦合映射模型是由kaneko提出的,其动力学公式为:
其中,n为时间方向变量,j为空间方向变量,ε∈(0,1)是耦合系数,L是耦合格子的数量,即系统尺寸。对于任意满足条件的j,xn(j)=xn(L-j)成立,这是模型的周期条件。τ(x)是耦合映射格子的局部映射,在本系统中为Logistic映射:
τ(x)=μx(1-x),x∈(0,1),μ∈[3.57,4] (2)
当μ>3.57时,该映射处于混沌状态,即混沌系统。其中x0和u0为Logistic映射中的原始参数,而x0是由散列算法所生成的。
上述的散列算法为消息摘要算法第五版Message Digest Algorithm(MD5),该算法为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,其作用为把一个任意长度的字节串变换成128位散列值,呈现出来的是一32位的十六进制数字串。算法具有良好的安全性,即使一个位改变也会引起两个结果之间的显著差异,故利用如下公式得到哈希值hash_value并借此再得到混沌系统的初值。
hash_value=MD 5(sum) (3)
其中,sum表示图像像素值的和,d1和d2均是从hash_value中提取出来的且应用式(4)时需要先将其从2进制转换为10进制。
第四步中使用如下公式来对置乱后的彩色图像进行扩散,最终来得到加密后的彩色图像。其中,p′i是置乱后的彩色图像的各层分量的第i个像素值,ti代表的是经处理后的第i个混沌参数值,ci是加密后的彩色图像的各层分量的第i个像素值。
本发明利用传统的八数码难题模式及图像的特性,设计出新的拼图游戏策略,所有的参数均是由耦合映射格子所产生的,而其初始值部分是由信息摘要算法第5版提供的,并且为了达到更高的安全性和复杂性,发明中启用了原始图像的像素值的和,实验结果表明本算法能够抵抗常见的攻击并具有良好的安全性。
附图说明
图1八数码游戏的一个典型案例。
图1中,(a)表示初始状态;(b)表示目标布局。
图2空位可移动的六个规则。
图3空位移动规则的演示。
图4是本发明的加密框图。
图5是本发明的解密框图。
图6是本发明的实验效果图。
图6中,(a)表示原始彩色图像;(b)表示置乱后的彩色图像;
(c)表示加密后的彩色图像;(d)表示加密后的彩色图像的R分量;
(e)表示加密后的彩色图像的G分量;(f)表示加密后的彩色图像的B分量。
图7是密钥敏感性测试效果图。
具体实施方式
下面结合附图和具体实施例对本发明做更详细的描述。
实施例1
加密算法的流程如下:
1)将彩色图像转换为其R、G、B分量矩阵,长度为M*N且值的范围为(0,255).
2)将三个分量矩阵组成一个3行M*N列的二维矩阵rgb如表2,矩阵rgb的第一行是由R的像素组成的;第二行是由G的像素组成的;第三行由B的像素所组成的。
表2二维数组rgb的像素分量分布
3)根据式(6)计算出图像像素和sum,同样也分别计算出三个分量矩阵的像素值的和rsum,gsum,bsum。
4)迭代式(1)获取算法所需的全部参数,其初始值是由式(4)所产生的,但应该事先使用像素值的和与公式(3)来得到哈希值,借用两个Logistic映射作为辅助函数。
5)根据以下公式,并使用迭代值xi(1),xi(2),xi(3))计算出用作拼图的三列coli(1),coli(2),coli(3).
coli(1)=(xi(1)×1015)mod(M×N) (7)
coli(2)=(xi(2)×1015)mod(M×N) (8)
coli(3)=(xi(3)×1015)mod(M×N) (9)
每次用于拼图的三列数据应该是互不相同的三列数据,使用式(10)来更新列值,当遇到情况:coli(o)=coli(j),(o≠j,1≤o<j≤3,1≤i≤MN)时。
coli(j)=coli(j)+1 (10)
6)利用迭代值获得用于拼图操作的移动规则序列数据和空位位置数据,此处使用5步来置乱彩色图像。由公式(11)得到用于置乱的5个移动规则,且使用式(12)得到空位位置数据。
ri(j-3)=xi(j)×1015mod 6+1j=4,5,6,7,8 (11)
selecti=xi(12)×1015mod 9 (12)
7)根据步骤5)得到的结果从rgb矩阵中抽取三列,可得到一个新的3*3的矩阵p,使用式(13)可得到空位的坐标(ci,cj),i的范围处于1与M*N之间。
si(ci,cj)=(selecti/3,selecti%3) (13)
8)通过拼图游戏并根据以上参数将i从1到MN进行一次置乱,在本算法中进行了k轮。为了达到更好的置乱效果,每次置乱后改变空位位置和移动规则序列根据下面的公式进行:
selecti=(selecti+1)mod 9 (14)
ri(l)=(ri(l)+1)mod 6+1 (15)
其中,1≤i≤MN,1≤l≤5。重复进行k轮后得到的置乱rgb矩阵命名为rgb’,每行分别称作cr,cg,cb。
9)用密钥序列及置乱后的图像矩阵,经下列公式后可得以最终的密文数组。
di(1)=(xi(9)×1015)mod 256 (16)
di(2)=(xi(10)×1015)mod 256 (17)
di(3)=(xi(11)×1015)mod 256 (18)
其中,i∈[1,MN]且关键初值dr0,dg0,db0描述如下:
dr0=cr(M×N)/2 (22)
dg0=cg(M×N)/2 (23)
db0=cb(M×N)/2 (24)
10)复原为彩色图像,即为加密的彩色图像。
实施例2
结合附图5对本发明解密做出说明如下:
本发明加密算法具有逆性,即图像解密是图像加密的逆过程。
1)用户拿到密钥,使用上述说明的公式(1)-(5)生成所有的密钥序列xi(j),i∈[1,MN],j∈[1,12]。
2)将密文图像转换为二维整数数组,每一行分别是其R、G、B分量矩阵称作Re,Ge,Be。
3)根据di可解码密文图像的三个分量并得到置乱后的图像。使用下列公式可将Re,Ge,Be分量转换为Rc,Gc和Bc分量。
其中,i的值从MN减至1,上述操作的最后我们必须根据以下式子得到正确的关键值。
Re0=Rc(M×N)/2 (28)
Ge0=Gc(M×N)/2 (29)
Be0=Bc(M×N)/2 (30)
4)已知置乱过程中进行了k轮,因此解密需要知道空位最终的位置才能正确地完成解密工作。鉴于此,在解密过程中需先根据参数运行置乱过程记录下空位的最终位置,记录为selecti。
5)根据下面的式子进行k轮且每轮运行MN次,每次须倒置拼图规则的5步,最终可以得到原始图像的每层像素值Ro,Go,Bo.
selecti=(selecti-1+9)mod 9 (31)
ri(l)=(ri(l)-1+6)mod 6+1 (32)
其中,i从MN一直减为1,l从6到1。
6)复原为彩色图像,即拿到正确的原文图像。
实施例3
结合图6及列表数据对算法进行分析如下:
在图6中,(a)表示原始彩色图像,(b)表示置乱后的彩色图像,(c)表示加密后的彩色图像,(d)表示加密后的彩色图像的R分量,(e)表示加密后的彩色图像的G分量,(f)表示加密后的彩色图像的B分量。
表3信息熵
表4相邻像素的相关性
表5明文图像改变一比特时密文图像的NPCR和UACI值及比较
表6与近期的加密算法的比较
一个系统越规律它的信息熵就越小,反之越混乱越大。从表3中的信息熵均接近于8说明加密后的图像很混乱,表4显示出原文和密文在三个方向上相邻像素的相关性系数,可以看出本发明有效的削弱了像素间的强相关性,增强了安全性;表5中给出了像素个数改变率(Number of Pixels Change Rate,NPCR)和统一平均变化强度(Unified Average Changing Intensity,UACI),很清晰表明了本发明对明文敏感;同时由表6可知本发明的密钥空间足够大且图7是对密钥敏感性进行测试的结果,密钥在有效精度内作微小的改变就不能得到正确的明文图像,故说明本发明能够有效应对暴力破解攻击,从图7直方图中可以看出解密结果与明文近乎完全不同且分布均匀,表明了算法的强密钥敏感度;最后也给出与近年来的算法进行比较结果如表6所示,可以看出本发明密钥空间大,密钥敏感性强,能够有效应对各种暴力破解攻击、已知明文攻击和选择明文攻击,其安全性得到了加强。