基于最小粒度全置乱图像加密算法是通过对图像比特全排列,同时完成全矩阵范围内像素比特位置置乱和像素值替换两个操作。图像比特全排序的驱动是依赖非线性混沌动力系统来完成的。在众多的混沌映射中,依据混沌置乱信息熵选择用于比特全排列的混沌映射。

一、选择混沌映射

常见的混沌很多,如一维Logistc映射、二维的Henon映射、三维的Lorenz映射和Chua映射等。在众多的混沌映射中,选择哪一个混沌序列才能使图像全排列加密算法安全性好,本文提出应用混沌置乱熵选择标准。

从置乱信息熵定义可知,置乱信息熵越大,图像全排列加密强度越高,安全性越好。依据置乱信息熵的定义,实验测得常见混沌置乱信息熵如表所示。

基于最小粒度全置乱图像加密算法

表第一行数字代表窗口宽度。从实验数据可见,Lorenz混沌整体置乱信息熵高于Logistc映射、Henon映射和Chua映射,而Lorenz混沌分量x的置乱信息熵强于分量y、z的置乱信息熵。故本文图像比特全排列使用Lorenz混沌分量x驱动。

二、混沌加密算法

1、 图像比特全排列算法

对于一幅任意大小的灰度图像I,设其大小为M×N。

a)依据混沌置乱信息熵,选择合适的混沌动力学方程,给出与密钥相关的初始值x1或初始向量V1,并令K=1。

b)应用选择的混沌方程迭代m=m×n×8次,生成混沌实值序列{x1,x2,…,xm}或向量序列{V1,V2,V3,…,Vm},依据置乱信息熵,选择置乱信息熵最大的一行,成为实值序列{x1,x2,…,xm}。

c)从小到大把混沌实值序列{x1,x2,…,xm}排序,得到排序后的序列{y1,y2,…,ym}。

d)计算置乱地址码集{t1,t2,…,tm},ti∈{1,2,…,m}。ti是xi在排序后的序列{y1,y2,…,ym}中的下标。

e)把二维图像变成一维数组,再把每个数组元素变成二进制比特序列,顺序连接形成长度为M×N×8的比特序列,利用置乱地址码集进行扰乱,然后还原成一维十进制数组,完成图像比特全置乱。

2、图像替换算法

虽然上述图像最小粒度(比特)全排列已使图像像素值和位置发生改变,具有很好的加密信息熵,但仅仅全排列加密并不安全,不能抵御差分攻击能力。为了增加图像抗差分攻击能力,我们又进行了像素值替换算法。

基本思想如下:仿照混沌拉伸和折叠的运行机理,首先把要替换的像素放到更大的运算空间进行;为了增大轨道回归周期,把当前像素尽可能地与前面已经加密的像素进行运算,最后折叠回像素空间。

a)给出种子元素seed,选择合适的混沌。

b)设Ei,Ei+1分别代表第i个和第i+1个已经加密元素,Pi+2代表顺序号为i+2的欲加密元素,分别把Ei,Ei+1转换为二进制串并进行连接,作为hash函数的输入值。若采用MD5加密算法,输出长度为32个十六进制串,转化为十进制类型的数值,然后作为混沌参数输入。迭代一次的输出值转换为uint64类型的数值,与当前欲加密像素做相加或异或操作,把得到的结果模256折叠回像素值区间。

基于最小粒度全置乱图像加密算法

其中:hash()为哈希函数;chaosfunction()为生成混沌序列的混沌映射;F()为把哈希函数输出的32个十六进制串转换为十进制类型的数值。

c)重复上述过程直到最后一个元素。

d)把一维数组转换为表示图像的二维矩阵。

说明:

a)对于第一个元素的加密,w值由用户给定,对于生成第二个元素w值过程中,因为没有E0,可由用户指定任意一个长度为8的十六进制串。

b)数组元素转换为二进制序列的方法。pt(i,j)代表数组元素p(i,j)变换成二进制后的第t个数字。

基于最小粒度全置乱图像加密算法

式中,可以把灰度图像变换成由0,1组成的比特矩阵。相反,运用下面公式可以把pt(i,j)变成灰度像素p(i,j)。

基于最小粒度全置乱图像加密算法

3、解密算法

a)给定相同的初始值,先进行图像替换算法的逆操作,把密文图像转换为一维数组,从最后一个加密元素开始向前解密,直到第一个元素。

b)根据图像比特全排列算法进行操作,不同的是i从1到m,把第i列的比特值用第ti列的比特值替换。

三、基于最小粒度全置乱图像加密算法安全性分析

1、密钥空间

一个安全可靠的加密算法应拥有足够大的密钥空间。而对于基于混沌映射的加密算法,参数(包括初始值)往往用作密钥,因此控制参数越多就意味着密钥越多,参数空间大才能保证密钥空间大。本文提出的加密算法分两步:

a)图像比特全置乱,密钥为选择混沌的初始值及参数,Lorenz的密钥初值为x0=10e-15,yo=10e-15,zo=10e-14;

b)图像比特置换,密钥为初始种子,用于哈希函数输入的Eo、混沌参数。在这样一个足够大的密钥空间中,采用穷举法进行攻击是没有意义的。

2、统计分析

统计分析包括直方图分析和相邻像素点的相关性分析。

1)原始图像及密文图像数字特征

下表给出了密文图像及其直方图的各种数字特征。

基于最小粒度全置乱图像加密算法从实验结果可见,建议算法的密文信息熵、密文均值、方差、直方图方差较Huang算法、Ye算法更加优越。具有更强的抗攻击能力。

2)相邻像素点的相关性分析

以水平相关性为例,从图像中随机选择1000对两个水平邻接像素,选择1000次,运用下面公式计算每一对相邻像素的平均相关系数。

基于最小粒度全置乱图像加密算法

x,y图像中两个邻接像素灰度值,在数值计算中使用下面的离散公式。

基于最小粒度全置乱图像加密算法

原始图像和加密图像相关性分析如表所示。由表可知,原始图像相邻像素相关系数接近1,加密图像相邻像素相关系数接近0。经文件加密,图像相邻像素间相关度很低。同时,比较建议算法和Ye算法、Huang算法可知,建议算法比Ye算法优越,与Huang算法具有同等的去相关性能。这说明攻击者很难通过统计攻击方法破解加密图像。

基于最小粒度全置乱图像加密算法

3)密文对密钥的敏感性分析

密文对密钥的依赖性可以采用计算两幅图像间的相关系数进行验证。用上文公式进行计算,不同的是x,y代表使用不同密钥加密后密文图像的像素值,像素为整个图像。根据密文对密钥的敏感性定义可知,如果加密方法对密钥具有敏感性,那么微小差异的密钥对同一幅图像进行加密后得到的结果应具有很大差异,具有很小的相关性。本文选择Lorenz分量x0密钥先后两次相差10的-10次方,测试相关系数结果为1.263862e-4,从该数据可以得知,算法对密钥具有很高的敏感性。这主要是因为混沌敏感性和哈希函数敏感性再加上最小粒度置乱的结果。

4)差分分析

为了抵抗差分攻击,明文细小的改变应该造成密文巨大的变化。为了测试改变一个像素对密文图像的影响,使用两个常用的定量测试方法:像素个数变化率(NPCR)和整体平均变化密度(UACI),定义如下:

基于最小粒度全置乱图像加密算法

其中:c1和c2是两个密文图像,其对应的明文图像仅有一个像素差异,c1、c2在(i,j)处的灰度值表示为c1(i,j)、c2(i,j),W、H是密文图像的宽度和高度。D(i,j)由c1(i,j)、c2(i,j)决定,如果c1(i,j)=c2(i,j),则D(i,j)=1;否则,D(i,j)=0。

明文首先被加密,接着随机选择图像中的一个像素并改动,被修改的图像用相同的密钥加密生成新的密文图像。最后计算NPCR和UACI,其值如下表所示。

基于最小粒度全置乱图像加密算法

由表可以看出,建议算法比Ye算法和Huang算法在NPCR、UACI两个度量指标方面具有更大的优越性。因而,加密算法能有效抗击外界差分攻击。

本文首先给出选择混沌作为图像比特全排列准则,即依据混沌信息熵,选择适合图像置乱的混沌映射;接着,把图像转换为二值比特串进行全排列,在所选混沌的驱动下,利用混沌轨道不可预测的特性,完成最大程度的置乱;最后,依据混沌映射原理,设计图像比特替换算法,完成图像置乱和替换的加密算法。

小知识之置乱

所谓“置乱”,就是将图像的信息次序打乱,将a像素移动到b像素的位置上,b像素移动到c像素的位置上……使其变换成杂乱无章难以辨认的图像。