对于彩色图像,每个图像的像素由是由R(红色),G(绿色),B(蓝色)三个颜色成分组成。与灰度图像相比,彩色图像提供更多信息,因此吸引了更多的关注。一般的彩色图像加密算法只是把彩色图像看成由三个灰度图像组成,从而对于每一个灰度图像分别进行处理,这样做很大的缺陷是忽略了R,G,B之间的关系,与灰度图像加密没什么大的区别。
鉴于此,我们设计了一种新型的彩色图像加密算法,用混沌系统同时对三个颜色部分加密使得它们之间充分地相互影响,而且运用联合型的置乱和扩散方法减少了R,G,B之间的相关性。仿真结果表明此方案能够有效地给彩色图像文件加密和抵抗不同类型经典的攻击。
一、混沌系统
一维Logistic系统因为简单且高效,故常用来产生密钥流,然而密钥空间太小,不能抵抗穷举攻击,因此安全性不是很好,本文采用CLM(耦合Logistic映射)来构造密码系统:
其中i=1,2,3为空间方向变量,n=1,2,3是时间方向变量;xni代表状态变量,ε≡(0,1)是耦合系数,g(x)是Logistic映射,如公式(2)所示。周期边界条件xn0 =xn3。_CLM系统有两个正的Lyaponuv指数,因此它是混沌的。
当λ≡(3.57,4)时,Logistic映射可通过倍周期分叉演进至混沌状态。
二、基于混沌的彩色图像加密算法的设计与实现
Step1:准备工作和密钥产生。_首先明文图像可表示成如下形式:
其中每一个颜色分量R,G,B可变成一个向量,其元素值均在0~255之间。此处我们假设L=256×256,也就是图像的大小尺寸均为256×256的大小,否则的话,可以对图像做一些分割,最后不足的部分可以进行添加。设定初始参数λ和初始密钥值x10,x11_,x12,_迭代公式(1)和(2)l+h次,_而h>0是为了提高初始敏感性,从而获得三个序列:
可以统一写成:
Step2:初始单独扩散。
利用下式对原文进行一个简单的扩散:
其中R0C,G0C,B0C为初始密钥。最终向量,RnC,GnC,BnC(n=1,2,,....l), a变成三个矩阵R,G,B,其大小为256×256。
Step3:联合置乱。
R⊙G≥B:意思是用R和G去置乱B,相应的算法如下:
按照以上类似方法再进行R⊙G≥B,B⊙R≥G。
Step4:全局扩散。
经过Step_3之后,_矩阵R,G,B再次变为三个向量,RnP,GnP,BnP然后合并成一个长度为3L向量P。_扩散方程式如下:
Cnow是当前的加密值,Pnow是当前明文值,C pre是先前加密值,Ppre 是先前明文值,设置初始值P0=0,C0=0 =,Know为合并的一个长度为3L的密钥流。
最后,再次把图像整理成R,G,B模式的彩色图像。
再经过以上四个步骤,一轮加密完成,根据时间安全需要,可以增加加密的轮数,最终得到加密图像。解密过程和加密过程相似,只不过逆过程而已。为了更加清楚地了解加密算法,流程图如图所示。
本文基于耦合混沌产生随机性更强的序列,从而设计出随机性很强的密钥流,对彩色图像三个颜色组成部分R,G,B进行加密,并且考虑它们之间的相关关系,然后设计了一种初始简单扩散-联合置乱-联合扩散的方法。
小知识之耦合
耦合是指两个或两个以上的电路元件或电网络的输入与输出之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传输能量的现象;概括的说耦合就是指两个或两个以上的实体相互依赖于对方的一个量度。