在Line map二维可逆映射算法的基础上,我们提出了三维可逆混沌映射图像加密算法,用于图像的加密和解密。在对灰度图像文件进行加密时,该算法同时实现了图像加密的2个操作,即图像像素的置位和混淆,高效地实现了图像加密,并且能隐藏灰度图像的直方图信息,抵御攻击的能力较强,密钥敏感性高,加密算法简单易于编程实现,在加密的过程中没有信息损失,密钥空间仅与密钥长度有关,而密钥长度在理论上可以无限大,因此密钥空间可以很大,图像文件加密的安全性比较高。

一、三维可逆混沌映射原理

Line-map二维可逆映射算法是将图像读成N×M的十进制像素矩阵,该矩阵维数M为原图的长,维数N为原图的宽,矩阵元素对应原图的十进制像素值,这样二维可逆映射置乱的就是像素点的位置。本文所提出的三维可逆混沌映射方法则是将图像读成N×M×K的三维矩阵,该矩阵维数M和N仍分别为原图的长和宽,这时把原图的十进制像素值转换为二进制像素值。K为二进制的位数a对于一个灰度为256的图像来说,每个十进制像素值可以用8个二进制位表示,则K=8,即读取灰度图像得到的就是N×M×8的二进制图像。下面所提到的图像,灰度均为256、维数为N×M,并假设N≤M。如果N>M,则对原图像矩阵进行一次转置变换,变成A’,其中:

以一个维数为4×4的灰度图像为例来说明由图像得到的二进制图像矩阵的过程。假设由图像得到的4×4图像矩阵为:

则将每一个像素值都用0/1二进制代码表示,把每个像素值的8个二进制位看作是一个列向量,那么每行像素的4个列向量就构成了一个4×8的矩阵,且这个矩阵的元素都是0/1二进制代码。原图有4行像素,则可以得到4个4×8的二进制矩阵。这4个4×8矩阵构成了一个4×4×8的三维矩阵C(i,j,k),如图1所示,其中i=1,2,…,N;j=1,2,…,M;k=1,2,…,8,由此可得到图像的三维矩阵模型。

为方便描述三维矩阵,建立笛卡儿三维坐标系。将像素A(1,1)二进制位的最低位作为坐标系的原点0,矩阵A的宽对应I轴,高对应J轴,每个像素的8个二进制位的列向量对应K轴,如图1所示。后面所介绍的三维可逆映射算法就是基于此IJK坐标系的。

三维可逆混沌映射算法首先是将该三维矩阵按照本文提出的方式映射成为二维矩阵,然后对所得到的二维矩阵进行置乱处理,最后将置乱后的二维矩阵恢复成三维矩阵,从而改变原灰度图像的像素值和像素位置,实现了像素的置乱和混淆。本文提出了两种将三维矩阵转换为二维矩阵的方法,称为方法1和方法2。

方法1的原理

首先按照前面所述方法把原灰度图像转换为三维矩阵图像,该二进制图像可以看成是由J轴方向上N个8×M的平行平面组成,如图2(a)所示。按照图2(b)的次序将这N个平行平面合成一个8N×M的二维矩阵,也可以按照图2(c)的次序将这些平面合成一个8×(N×M)的二维矩阵,这样就完成了将三维矩阵映射为二维矩阵D首先应用Line map对合成后的二维矩阵进行像素置乱处理,然后再将该二维矩阵还原成N×M×8的三维矩阵,实现了原三维矩阵各个元素在三维空间的置乱,从而改变了原灰度图像的像素位置和像素值,高效地实现了图像加密。

同样,也可以把图像的三维矩阵看成是由J轴方向上的M个8×N平行平面组成,再按照上述步骤实现图像加密。这里仅考虑把三维矩阵看成是由I轴方向上的N个平行平面组成的情况,并按照图2(b)的次序将这N个平面映射成为一个二维平面。

2、方法2的原理

方法2是由把原图像的三维矩阵看成是沿着J×J平面对角线方向上的M+N-1个平行平面组成,如图3(a)所示。按照图3(b)的次序将原三维图像矩阵映射成为8×(N×M)的二维矩阵。与方法1类似,应用Line map对该二维矩阵进行像素置乱处理,然后再将置乱后的二维矩阵还原成N×M×8的三维矩阵,最后用十进制表示该三维矩阵的二进制像素,实现图像文件加密。

二、三维可逆混沌映射图像加密算法

设原始灰度图像矩阵用A表示,加密后的图像用B表示,由原始图像A得到的三维矩阵用C表示,在置乱C矩阵元素的位置后还原得到的三维矩阵用D表示,由三维矩阵C得到的二维矩阵用E表示,由拉伸矩阵E得到的向量用L表示,由折叠向量Z得到的二维矩阵用L表示,则加密过程可表示为:

前面已经介绍了由二维矩阵A到三维矩阵C和由三维矩阵D到二维矩阵B的过程。本节主要介绍加密过程的两个核心过程,即将三维矩阵C转换为二维矩阵E,二维矩阵F转化为三维矩阵D以及置乱二维矩阵Eo其中采用Linemap算法置乱二维矩阵元素,也就是对二维矩阵E进行若干次的左映射和右映射。密钥Key设计成为子映射种类和映射次数,如Key=1234,表示二维矩阵E依次左映射置乱1次,右映射置乱2次,然后左映射置乱3次,最后右映射置乱4次。

1、方法1的加密算法

这里仅给出图2(a)和图2(b)的映射算法。将三维矩阵C映射成为二维矩阵E的算法如下:

二维矩阵E的维数为8N×Mo利用Line map将二维矩阵E拉伸为向量L的算法。

将向量L折叠为二维矩阵F的算法如下:

将二维矩阵F还原为三维矩阵D的算法如下:

将三维矩阵D的二进制元素用十进制表示即可得到加密后的图像,可完成整个加密过程。

2、方法2的加密算法

对于方法2来说,将三维矩阵C映射成为二维矩阵E的算法由下式给出:

对二维矩阵E进行Line map可逆映射,置乱其像素位置,从而得到二维矩阵F,该算法与方法1类似。

将二维矩阵F还原成为三维矩阵D的算法如下:

将三维矩阵D的二进制元素用十进制表示,即可得到加密后的图像,完成整个加密过程。

三、三维可逆混沌映射图像解密算法

三维可逆映射图像的解密过程是加密算法的逆过程,可表示如下:

式中,A,B,C,D,E,F,L的定义与加密算法中的定义相同。解密算法的具体步骤是:读取密图得到二维图像矩阵B;将二维矩阵B中的元素用二进制表示得到三维矩阵D;将三维矩阵D按照本文提出的方法映射成为二维矩阵F;利用Line map的逆过程将矩阵F还原成为二维矩阵E;将二维矩阵E映射成为三维图像矩阵C;用十进制表示三维矩阵C的元素得到解密后的灰度图像矩阵A。

由密图矩阵B到三维矩阵D和由三维矩阵C到二维矩阵A的算法与加密过程类似。

这里主要介绍三维矩阵D到二维矩阵F,二维矩阵E到三维矩阵C的算法。

1、方法1的解密算法

由三维矩阵D到二维矩阵F的算法如下:

这样得到的F就是一个8N×M的二维矩阵。利用Line map映射的逆过程是将二维矩阵F拉伸成为向量L的算法:

向量L到矩阵E的算法。由二维矩阵E到三维矩阵C的算法如下:

将三维矩阵C中的二进制元素用十进制表示可得到灰度图像矩阵A,可实现图像的解密。

2、方法2的解密算法

在方法2中,三维矩阵D到二维矩阵F、二维矩阵E到三维矩阵C的算法与方法1不同,其余均类似。这里只给出方法2的两个算法。

从三维矩阵D到二维矩阵F的算法如下:

从二维矩阵E到三维矩阵C的算法如下:

将三维矩阵C的二进制元素用十进制表示可得到解密后的图像,可完成图像的解密。

四、实验结果及分析

为了研究三维可逆混沌加密算法的加密效果,对其进行了仿真实验,并对仿真结果进行了分析。

1、图像的加密和解密

针对灰度为256、维数为256×256的Lenna图像来说,分别利用方法1、方法2和Baker map进行了加密和解密实验。实验结果如图4—图15所示。图4为原图,图5为原图的直方图,图6为利用Baker map进行加密的密图,图7为密图6的直方图,图8为利用方法1进行加密的密图,其中密钥key为12345670654,图9为密图8的直方图,图10为利用方法2进行加密的密图,其中加密密钥key为9874560123,图11为密图10的直方图。对图6、图8、图10与原图进行比较可以看出,从图6、图8和图10中看不出原图的信息,均有效地实现了图像加密。由图5和图7可以看出,利用Baker map加密的密图的直方图与原图的直方图相同,说明该加密方法没有改变图像的像素值,安全性较低。由图5、图9和图11可以看出,利用本文提出的加密算法加密的密图的直方图与原图的直方图不同,说明这种加密算法改变了图像的像素值,隐藏了直方图信息,提高了加密算法的安全性。利用方法1和方法2解密后的图像与原图完全相同,由此可知该加密方法没有信息损失。

2、安全性分析

首先分析了该算法的密钥空间。本算法密钥空间的大小只与密钥的长度有关,它们之间的关系如表1所示。理论上,在计算速度允许的情况下,本算法的密钥长度没有限制,密钥空间可以为无限大,实际应用时,密钥长度的选取与安全性的要求有关。

其次,本文做了密钥敏感性分析。对于密图6来说,用相似的密钥可以对Baker map加密的密图进行解密,结果如图12和13所示。说明Baker map加密算法对密钥的敏感性较低。对于密图8和密图10来说,分别对其加密密钥的最后一位进行微小变动用于解密这两个密图,即对于密图8来说,将其密钥12345670654改为12345670653来进行解密,解密图像如图14所示。对于密图10来说,将其密钥9874560123改为9874560124来进行解密,解密图像如图15所示。由图14和图15可以看出,这两个密钥均不能正确解密图像,虽然它们与原密钥只有最后一位有微小差别,说明这两种算法对密钥非常敏感,加密安全性比较高,有较强的抵御攻击的能力。

最后计算分析了原图和密图的不动点比和信息熵。若原图像A中的像素点为(i,j),在加密后其灰度值没有发生变化,则称该像素点为不动点。图像中不动点占所有像素的百分比称为该图的不动点比,用BD(A)表示。原图5与密图8的不动点比为0.3096,原图5与密图10的不动点比为0.37%,这说明不动点的数目很少,利用该加密算法改变了原图99.696以上的像素的位置,由该参数可看出这种算法的置乱效果很好。

不过在很多情况下,该参数只能反映出两个图像对应点变化的数目情况,不能反映出灰度值的变化程度,需要与信息熵一起才能正确反映出图像的置乱度。信息熵反映的是图像中的灰度分布情况,分布越均匀,信息熵越大,包含的不确定信息也就越多口根据信息熵的计算公式,原图5的信息熵为7.3693,密图8的信息熵为7.9669,密图10的信息熵为7.9810,这两个密图的信息熵均与原图的信息熵不同,这说明图像加密不仅改变了图像像素的位置,而且改变了图像的灰度值,使攻击难度增加,加密安全性高。

小知识之信息熵

所谓信息熵,是一个数学上颇为抽象的概念,在这里不妨把信息熵理解成某种特定信息的出现概率。而信息熵和热力学熵是紧密相关的。根据Charles H. Bennett对Maxwell's Demon的重新解释,对信息的销毁是一个不可逆过程,所以销毁信息是符合热力学第二定律的。而产生信息,则是为系统引入负(热力学)熵的过程。所以信息熵的符号与热力学熵应该是相反的。