一种基于明文特征的图像置乱方法与流程

文档序号:14249854阅读:235来源:国知局
一种基于明文特征的图像置乱方法与流程

本发明涉及信息安全领域中的图像保密技术,尤其是一种基于明文特征的图像置乱方法。



背景技术:

数字图像置乱是指将图像像素值变化位置,消除位置或灰度相关性,从而使人类或计算机系统无法理解原始图像的含义。数字图像的置乱技术,可以看做数字图像加密的一种途径,也可以用作数字图像隐藏、数字水印图像植入和数字图像秘密共享的预处理和后处理过程。

常见的图像置乱方法有arnold变换、fibonacci-q变换、幻方变换、骑士巡游变换、hilbert曲线、conway游戏、混沌排序方法等。其中,以arnold变换、fibonacci-q变换和幻方变换为代表的图像置乱算法在图像加密、信息隐藏和数字水印领域中应用最为广泛,它们具有变换阵构造简单、置乱实现容易等特点,且能抵御剪切、添加噪声等常规图像攻击,但缺点是很多图像置乱算法都难以抵抗选择明文和已知明文攻击。



技术实现要素:

发明目的:针对上述现有技术存在的缺陷,本发明旨在提供一种基于明文特征的图像置乱方法,只需要较少的置乱次数就能获得较好的置乱效果,并且置乱结果依赖于明文特征,具有很强的抵抗力,可以抵御已知明文攻击和选择明文攻击。

技术方案:一种基于明文特征的图像置乱方法,包括如下步骤:

(1)根据明文图像计算两个明文特征val1和val2,其表达式为:val1=∑i,jp(i,j)mod256,val2=∑i,jp(i,j)2mod256;

其中,i和j分别代表像素点的位置,即在第i行的第j列;∑i,jp(i,j)是求和公式,将图像内位置为(i,j)的像素值累加起来,其中i的范围是(1,r),j的范围是(1,c),r和c分别是图像的行数和列数;

(2)计算两个扰动值α1和α2,其表达式为:(3)对henon映射的初值进行扰动,扰动方法为:

式中,x′0是经上述公式计算产生后的扰动值;y′0是经过上述公式计算产生后的扰动值;符号代表向下取整;符号“±”是指取“+”或者取“-”;当取“+”时,如果x′0或y′0的值有一个不在-1至1的范围内,则对应产生x′0或y′0的方法取“-”;当取“-”时,如果x′0或y′0的值有一个不在-1至1的范围内,则对应产生x′0或y′0的方法取“+”;

(4)对扰动后的图像进行置乱,得到加密后的图像ck。

进一步的,所述步骤(4)具体包括如下子步骤:

(4.1)设定图像置乱次数为k,将(x′0,y′0)作为henon映射的初值,henon映射迭代l次,产生序列x1,x2……xl和y1,y2……yl,henon映射的表达式为:

式中(xn,yn)表示第n次的迭代值,(xn+1,yn+1)表示henon映射第n+1次的迭代值,n的取值范围为0,1,2…,l;其中,l=l+r*c*k次,r和c分别是明文图像的行和列,k是置乱次数,l是舍弃的长度。

(4.2)分别对序列x1,x2……xl和y1,y2……yl进行截取,取第l+1个到l个序列;接着分别将两个序列中第l+1个到l+r*c个序列按排列顺序放入三维r*c*k矩阵的第一层;将第l+r*c+1个到第l+r*c*2个序列按排列顺序放入三维矩阵r*c*k矩阵的第二层;重复该操作,直到将l+r*c*(k-1)+1个到第l个序列按排列顺序放入三维矩阵r*c*k的第k层,生成三维矩阵x和y;

(4.3)对三维矩阵x上每一层的二维矩阵以行为单位,每一行进行排序,生成按行排序后的新的三维矩阵x_sort以及原矩阵各位置经过按行排序后的新位置的三维矩阵loc_x;对三维矩阵y上每一层的二维矩阵以列为单位,每一列进行排序,生成按列排序后的新的三维矩阵y_sort以及原矩阵各位置经过列排序后的新位置的三维矩阵loc_y;

(4.4)将loc_x作为行置换的位置矩阵,loc_y作为列置换的位置矩阵,分别取这两个三维矩阵的第m层的二维矩阵,对明文图像进行按行置换和按列置换得到加密图像c;其中,m是循环的次数,初值为1,每次重复该步骤加上1,取值范围从1到k;

(4.5)将加密图像c作为新的明文图像,重复步骤(4.4)k次后,生成加密后的图像ck。

进一步的,步骤(4.4)中所述按行置换和按列置换具体为:

(4.4.1)将明文图像p中的位置为(i,j)的像素值p(i,j),放入到e(i,loc_x(i,j));

(4.4.2)将p(i,j+1)作为步骤(4.4.1)中新一轮的p(i,j),重复(4.4.1)这一步骤,生成行置换过后的加密图像e;

(4.4.3)将行加密图像e中的点(i,j)的像素值,放入到c(loc_y(i,j),j);

(4.4.4)然后将e((i+1,j)这个点作为步骤(4.4.3)中新一轮的e(i,j),重复(4.4.3)这一步骤,生成列置换过后的加密图像c。

进一步的,步骤(4.1)中所述舍弃的长度l的取值范围为200到1000之间的整数。

进一步的,舍弃的长度l的取值为200。

有益效果:本发明利用明文图像的明文特征对初值产生扰动,使得图像的置乱不仅依赖于密钥还依赖于图像的本身,明文图像的细小变化都会导致置乱图像的不同,同时图像的置乱不会改变像素值,不需要额外的传递明文特征值;本方法是基于明文特征,对明文图像像素做轻微改变,会导致明文特征的改变,产生了不同的henon映射的初值,从而影响henon映射迭代生成的混沌序列,生成的加密图像会截然不同。此外,本方法不仅实现了图像的快速置乱,且抗攻击能力强,能抵抗已知明文攻击和选择明文攻击,且恢复图像的可读性不受影响。

附图说明

图1是实施例1的原始图像;

图2是实施例1置乱一次后的密文图像;

图3是实施例1置乱两次后的密文图像;

图4是实施例1置乱三次后的密文图像;

图5是实施例1明文在水平方向的相关像素分布图;

图6是实施例1明文在垂直方向的相关像素分布图;

图7是实施例1明文在对角线方向的相关像素分布图;

图8是实施例1密文在水平方向的相关像素分布图;

图9是实施例1密文在垂直方向的相关像素分布图;

图10是实施例1密文在对角线方向的相关像素分布图。

具体实施方式

实施例1:下面通过一个最佳实施例并结合附图对本技术方案进行详细说明。

如图1所示,本具体实施例采用matlab2014软件进行仿真,原始图像选用大小为256×256的标准测试灰度图像lena,图像的每一个像素由8比特组成,对lena图像进行2次置乱,其具体过程如下:

(1)根据明文图像计算两个明文特征val1和val2,其表达式为:val1=∑i,jp(i,j)mod256,val2=∑i,jp(i,j)2mod256;根据计算得到val1=251,val2=221;

其中,i和j分别代表像素点的位置,即在第i行的第j列;∑i,jp(i,j)是求和公式,将图像内位置为(i,j)的像素值累加起来,其中i的范围是(1,r),j的范围是(1,c),r和c分别是图像的行数和列数;

(2)计算两个扰动值α1和α2,其表达式为:计算所得结果,α1的值为08470,α2的值为0.8476;

(3)对henon映射的初值进行扰动,扰动方法为:

式中,x′0是经上述公式计算产生后的扰动值;y′0是经过上述公式计算产生后的扰动值;符号代表向下取整;符号“±”是指取“+”或者取“-”;当取“+”时,如果x′0或y′0的值有一个不在-1至1的范围内,则对应产生x′0或y′0的方法取“-”;当取“-”时,如果x′0或y′0的值有一个不在-1至1的范围内,则对应产生x′0或y′0的方法取“+”;

本实施例中,x0的值取0.9000,y0的值取0.2000;经过扰动值扰动后,计算所得新的初值,x′0的两个值分别为0.9000和2.5940,y′0的值为0.2006和1.8946;选取0.9000和0.2006作为henon映射迭代的新的初值。

(4)对扰动后的图像进行置乱,得到加密后的图像ck,可以采用猫脸映射等本领域常用的置乱方法,本实施例中利用扰动后产生的扰动值作为henon映射的初值,迭代产生混沌序列对明文图像进行置换,得到加密后的图像ck;具体包括如下子步骤:

(4.1)设定图像置乱次数为k,本实施例中图像置乱次数为k为2,将(x′0,y′0)即(0.2006,1.8946)作为henon映射的初值,henon映射迭代l次,本实施例中l为131272次,产生序列x1,x2……x131272和y1,y2……y131272,henon映射的表达式为:

式中(xn,yn)表示第n次的迭代值,(xn+1,yn+1)表示henon映射第n+1次的迭代值,n的取值范围为0,1,2…,131272;其中,l=l+r*c*k次,r和c分别是明文图像的行和列,k是置乱次数,l是舍弃的长度,取值范围为200到1000之间的整数。

具体的,131272=200+256*256*2次,256和256分别是明文图像的行和列的尺寸,2是置乱次数,200是舍弃的长度l。

(4.2)分别对序列x1,x2……xl和y1,y2……yl进行截取,取第l+1个到l个序列;接着分别将两个序列中第l+1个到l+r*c个序列按排列顺序放入三维r*c*k矩阵的第一层;将第l+r*c+1个到第l+r*c*2个序列按排列顺序放入三维矩阵r*c*k矩阵的第二层;重复该操作,直到将l+r*c*(k-1)+1个到第l个序列按排列顺序放入三维矩阵r*c*k的第k层,生成三维矩阵x和y;

具体的,分别对henon映射产生的序列x1,x2……x131272和y1,y2……y131272进行截取,取第201个到131272个序列;接着分别将两个序列中第201个到65736个序列按排列顺序放入三维256*256*2矩阵的第一层;将第65737个到第131272个序列按排列顺序放入三维矩阵256*256*2矩阵的第二层;生成三维矩阵x和y;

(4.3)对三维矩阵x上每一层的二维矩阵以行为单位,每一行进行排序,生成按行排序后的新的三维矩阵x_sort以及原矩阵各位置经过按行排序后的新位置的三维矩阵loc_x;对三维矩阵y上每一层的二维矩阵以列为单位,每一列进行排序,生成按列排序后的新的三维矩阵y_sort以及原矩阵各位置经过列排序后的新位置的三维矩阵loc_y;

(4.4)将loc_x作为行置换的位置矩阵,loc_y作为列置换的位置矩阵,分别取这两个三维矩阵的第m层的二维矩阵,对明文图像进行按行置换和按列置换得到加密图像c;其中,m是循环的次数,初值为1,每次重复该步骤加上1,取值范围从1到k,即从1到2;所述按行置换和按列置换具体为:

(4.4.1)将明文图像p中的位置为(i,j)的像素值p(i,j),放入到e(i,loc_x(i,j));

(4.4.2)将p(i,j+1)作为步骤(4.4.1)中新一轮的p(i,j),重复(4.4.1)这一步骤,生成行置换过后的加密图像e;

(4.4.3)将行加密图像e中的点(i,j)的像素值,放入到c(loc_y(i,j),j);

(4.4.4)然后将e((i+1,j)这个点作为步骤(4.4.3)中新一轮的e(i,j),重复(4.4.3)这一步骤,生成列置换过后的加密图像c。

(4.5)将加密图像c作为新的明文图像,重复步骤(4.4)2次后,生成加密后的图像ck。

下面对本发明的图像置乱方法进行安全性分析。

一、密钥空间分析

密钥空间是指在密码系统中所有可能的密钥。一个密码系统安全的必要非充分条件是有足够大的密钥空间来抵抗穷举搜索攻击。

在本发明的图像置乱方法中,作为henon映射的初值(x0,y0)为密钥,其中,x0和y0的精确度达到10-15,所以总的秘钥空间是1030。因此,本发明的置乱方法有足够大的密钥空间抵抗穷举攻击。

二、相邻像素相关性分析

相邻像素的相关性是用于分析相邻像素值之间的关联性,用于衡量加密后图像的安全性能,一个好的置乱算法应当具有较低的像素相关性。

在明文中,从水平,垂直,对角线,三个方向上的相关性系数值比较高,有相同或者相近的像素值。而在密文中,则应该与明文相反。我们选取随机的1024个点,按水平,垂直,对角线三个方向,描绘出密文与明文的分布图。

明文和密文以及它们按水平,垂直,对角线三个方向的像素分布如图5-10所示。

明文和密文的相关性系数如下表所示。

从以上实验结果可以看到,在经过置乱后,相关性系数已经大大降低,接近于0。

三、选择明文攻击测试

选择明文攻击指的是一种攻击模式,也称之为差异性攻击。其攻击方法是通过对明文图像做轻微的像素值改变,生成密文,利用该密文与未改变像素值明文图像生成的密文之间差异点破坏加密系统。本方法是基于明文特征,当攻击使用选择明文攻击,即使只会对明文图像像素做轻微改变,也会导致明文特征的改变,产生了不同的henon映射的初值,从而影响henon映射迭代生成的混沌序列,生成的加密图像会截然不同。如果加密算法可以抵抗选择明文攻击,它也能抵抗已知明文攻击。

以上仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1