根据彩色图像的特点,基于二维Arnold映射和Logistic映射,我们设计了一种彩色图像文件加密算法。
一、算法原理
1、Logistic映射
1)Logistic映射
Logistic映射具有结构简单、初值敏感和具有白噪声统计特性等属性,ak是初值a经过k次迭代的迭代值,μ∈[0,4]被称为Logistic控制参数,有时又被称为分支参数,对不同的μ值系统将呈现不同的特性。该映射所产生的序列由μ和初始值a0控制,这两个值中的任何一个有细微差别时,所产生的序列都将会截然不同,研究表明当μ∈(3. 5699--,4]时,ak∈(0,1),系统处于混沌状态。
2)Logistic置换
按照1)式给定的初始值a0∈(0,1),可以计算出一个由N个不重复数据构成的序列{ak|k=1,2,…,N}。然后,将它们按递增顺序进行排序得到ak,而ak原来的下标记录在b中,使得:
其中,bk是一个整数,变化范围为从1到N。
2、离散Arnold映射
Arnold变换是在研究混沌遍历理论时提出的,因为经常用一张猫脸演示而得名,也称为猫映射,它采用阶数图像矩阵把原来(xn,yn)点处的像素变换到点(xn+1,yn+1)处。Arnold变换公式为:
3、广义猫映射
将Arnold变换扩展为广义猫映射,将二维Arnold映射引入参数,并扩展到NxN,同时离散化。
二、加密算法描述
1、基于二维Arnold映射的彩色图像加密算法
1)基于二维Arnold映射和Logistic映射生成混沌伪随机序列
由于二维Arnold映射数字化时具有周期性现象,所以基于Arnold映射的图像加密只要知道加密算法,按照密文空间中任一个状态进行迭代,都会在有限步骤内恢复明文,例如当a=40,b=8,N=124时,用式4)对Lena图像像素位置进行置乱,经过5轮迭代,图像即可恢复原样,因而需要将Arnold变换和其它加密算法结合起来,以增强算法的安全性。
针对离散化后的二维猫映射输出可能出现的偏差,使用Logistic映射与其进行异或操作,伪随机二进制流由算法1产生。
算法1.设离散化Arnold映射二进制输出序列为C={ci},Logistic映射置换后输出二进制序列为B={bi},若输出二进制序列0={oi},则oi =ci+bi。
算法1得到的混沌伪随机整数序列具有很好的统计学特性,可以修正离散化猫映射输出的统计学缺陷,改变Arnold变换的周期性。
2)扩散操作
在加密算法中引入扩散,一方面可以使得离散化的混沌映射不可逆;另一方面通过在整个密文图像上散播明文图像每一比特的影响,可以改变明文图像的统计特性,有效阻止攻击者通过比较成对的明文与密文发现有用信息而攻破密码系统。
为保证各颜色分量的微小变动能扩散到其他颜色分量,本加密算法使用交叉扩散。
定义1、交叉加密扩散,其中,R(i,j)、G (i,j)和B(i,j)表示彩色图像像素点(i,j)红、绿和蓝三色的分量值,L为量化等级。
算法2、交叉扩散操作:
步骤1、在红、绿、蓝三种颜色分量中按照6)式进行交叉扩散操作。
步骤2、除最后一行外,每行的最后一个像素按照6)式使用前一行第一个像素的值修改。
3)替换操作
对于彩色图像分别在红、绿、蓝三种颜色分量间使用替换操作,利用伪随机序列对明文图像进行掩盖。
定义2、替换操作:
其中,KeystreamR、KeystreamG和KeystreamB是由算法1在不同颜色分量下生成的伪随机序列流。
算法3、基于伪随机序列的替换操作:使用伪随机序列掩盖彩色图像的其他像素值,保持0,0)点的像素值不变,按照式7)进行替换操作.
4)置乱操作
图像置乱的基本思想是把图像像素的位置打乱,做一次新的全排列,使图像数据成为貌似随机数据而达到加密的目的。由于图像像素的相邻关系和色彩的渐变效果发生了改变,从直观的视觉效果中,已经无法辨认原图像,利用Arnold变换的周期性、编码与解码的特性,应用在图像处理中效果良好。
定义3、Arnold映射的控制参数:a,b和M由初始密钥和0,O)点的像素值按8)式计算:
其中,keyg、keyh和keyM表示参数a、b和M的初始密钥,R O,0)、GO,0)和BO,O)表示彩色图像0,0)点的红绿蓝三个颜色分量的值。
定义4、位置置乱:图像中坐标为(i,j)的像素点在密文图像中的新位置为(i‘,j’),用9)式计算:
其中N为图像的大小,以像素为单位。
算法4、基于Arnold映射的置乱操作
步骤1、使用式8)确定猫映射的控制参数a、b和M。
步骤2、使用式9)对彩色图像像素位置进行置乱,即计算图像中坐标为(i,j)的像素点在密文图像中的新位置为(i’,J)。
步骤3.置乱操作结束后,将0,O)点的像素值与由通讯双方预先约定好的(r,c)点像素值进行互换(r,c)点的像素值可以每轮不同。
为了达到更好的加密效果,更高的安全性,需要重复上述操作步骤,经大量实验验证,重复两轮就可以达到理想的加密效果。
2、解密算法
定义5、猫映射的逆映射
定义6、解密扩散:红、绿、蓝三种颜色分量按照11)式恢复扩散,对每行的最后一个像素最后一行除外),按照12)式恢复。
三、加密实验效果与安全性分析
1、加密实验效果
本文以经典512×512的Lena彩色图像作为明文图像样例,以内存为IGB、CPU为1.90GHz的MABLABT 7.0为仿真性,图2为加密前与解密后图像的直方图对比。
本文算法加密后的密文图像的直方图与原始图像的直方图有很大的不同,加密后的直方图分布均匀,掩盖了加密前的分布规律,增加了破译难度。
2、像素相关性
像素相关性是测试图像加密性能的重要指标之一,相邻两点像素x,y相关系数可定义为:
其中E(x)是x的期望,D(x)是方差,N表示像素对的数量,对于mXn的图像,N=2m(n-1)。
使用公式13)、11)、15)分别计算原始图像图1a)和密文图像图1 b)各颜色分量的像素间相关性如图3所示),发现密文图像各颜色分量的相关性极大地被降低了。
3、差分攻击
测试明文图像第一个像素的改变对密文图像的影响,检验算法对明文图像任何改变的敏感性,比如明文图像的任意1个比特、2个比特、3个比特等的改变会引起密文图像多大的变化,用密文图像的像素改变率RGB)和平均亮度变化率AICR)来度量.本文给出了明文图像第一个像素的低8位受到不同改变时,密文图像的像素改变率和平均亮度变化率,反应原文改变对密文的影响知表1所列)。
由表1看出,算法对于明文的改变导致密文的RCP值相同,即只要改变明文数据,密文数据就会有相同的改变,而密文数据平均改变量的大小是随明文数据改变量的增加而单调增加的。
4、密钥空间及敏感性分析
本算法的所有操作都是基于混沌映射,初始值或控制参数的微小变化都会导致输出的剧烈变化,致使图像解密失败,正确密钥和错误密钥的解密图,因而本文提出的算法密钥空间很大,且具有密钥敏感性。
小知识之Arnold变换
Arnold变换是一种常用的图像置乱技术,Arnold变换的定义如下:
对任意N*N矩阵(所有元素都相同的矩阵除外),设i,j为矩阵元素原始下标,经过Arnold变换后新下标为i',j',且满足下式:
i'=(i+j)mod N
j'=(i+2j)mod N
i,j:0,1,.........N-1
Arnold变换具有周期性,即经过若干次变换后,矩阵回到最初状态,且周期T与N的大小有关。理论基础没找到,但可以用程序来进行计算,可以设i,j从一个点出发,不断使用以上变换,再次回到这个起点时,经历的变换次数就是周期。