本发明涉及图像加密领域,特别涉及一种基于忆阻混沌系统、初等元胞自动机和压缩感知的图像加密方法。
背景技术:
近年来,随着互联网时代的到来,我们生活中的绝大多数信息都离不开网络的支持,我们利用网络进行视频会议、发送一些机密信息等。图像作为信息的载体被广泛使用,而数字图像以其能够长期保存、便于传输等优点,在网络上的传输、处理也变得越来越频繁。但是,网络也存在安全隐患,尤其是图像在传输过程中面临着许多问题:图像信息被不法分子窃取、篡改,传输过程中受到噪声的影响等,这些因素使现代多媒体数据的安全性已成为当务之急。因此,为了使图像安全的在网络上传输,需要利用有效的加密技术处理图像,对图像信息进行保护。此外,需要传输的图像的数据量一般都比较大,信息冗余度高,为了减少网络传输的数据量,图像需要先经过压缩再进入信道传输。目前,采用压缩感知并结合其它加密方法对图像进行加密已经成为信息安全研究的一个热点,具有巨大的应用潜力以及较高的实用价值。压缩感知理论指出:通过开发信号的稀疏特性,在远小于nyquist采样率的条件下,用随机采样获取信号的离散样本,然后通过非线性重建算法完美的重建信号。candes和donoho于2006年正式提出了压缩感知的概念,之后,许多基于压缩感知的加密算法也被提出。将压缩感知运用到图像加密处理中,在保证数据安全性的同时减少网络传输的数据量和存储空间,具有广阔的应用空间。
目前,混沌系统因其对初始条件和控制参数的高敏感性等特点,被广泛应用于图像加密处理中。混沌系统可以分为两类:一维和高维的混沌系统。其中,一维混沌系统的参数和变量较少,相空间轨迹简单,因此可以通过混沌信号估计技术来预测。相比之下,高维混沌系统的变量和参数相对较多,且具有更复杂的结构和更好的混沌性能。因此,高维混沌系统是图像加密的潜在理想模型。近年来,普通混沌系统得到了较为全面的发展,除了chen系统、lorenz系统等经典的混沌系统外,还有一些改进的、具有更优越非线性特性的系统。其中,闵富红等人通过分析一种基于双曲正弦函数的新型磁控忆阻器模型的电压和电流的相轨迹关系,发现其拥有典型的忆阻特性,故提出了一种新型忆阻混沌系统。该忆阻混沌系统具有更强的非周期性,对初始值敏感性强,密钥空间大,且在物理上可以实现,将其应用于图像加密,可以设计出一些安全的加密算法。元胞自动机(ca)是时间和空间都离散的动力系统,可以由简单的局部规则获得复杂的全局行为,基于这一特点,当前,元胞自动机广泛应用于各个领域。在元胞自动机的发展过程中,科学家们构造了各种各样的元胞自动机模型,各种ca模型在维数、可能状态的数量、邻域关系和状态更新规则方面不同。其中,初等元胞自动机(eca)是最简单的一维元胞自动机,它的状态集s只有两个元素{s1,s2},即状态个数k=2,邻居半径r=1。尽管它们构造简单,但可以导致复杂的行为并产生有用的操作。目前,abdellatifabudalhoum等提出了分别使用初等元胞自动机和二维元胞自动机置乱的图像加密算法,达到了较好的置乱效果。但是所提出的算法密钥与明文相关性低,难以抵抗选择明文攻击,此外加密后的图像冗余的数据并没有减少。
技术实现要素:
为克服现有技术中的不足,本发明提出一种基于忆阻混沌系统、初等元胞自动机和压缩感知的图像加密方法,在保证信息安全性的前提下,通过采用初等元胞自动机和压缩感知相结合的图像加密技术,利用初等元胞自动机进行置乱,通过压缩感知减少数据量的传输;使得密钥与明文密切相关,密钥空间较大,能够有效抵抗不同攻击,安全性高,信息安全得到进一步保障。
按照本发明所提供的设计方案,一种基于忆阻混沌系统、初等元胞自动机和压缩感知的图像加密方法,包含:明文图像利用sha-512函数获取忆阻混沌系统的初始值和元胞自动机初始构型;明文图像通过离散小波变换,得到稀疏系数矩阵;通过zigzag置乱方法对稀疏系数矩阵进行置乱,再利用初等元胞自动机进行置乱操作;将忆阻混沌系统的初始值带入忆阻混沌系统中产生测量矩阵,通过测量矩阵对置乱后的矩阵进行压缩感知,得到最终密文图像。
上述的,具体包含如下步骤:
步骤1、采用离散小波变换dwt,对大小为n×n的明文图像i进行变换,得到大小为n×n的稀疏系数矩阵i1;
步骤2、利用sha-512函数对明文图像i进行计算,得到一组512位的哈希值,作为图像密钥key,将图像密钥key换算为64个十进制数k1,k2,...,k64,计算忆阻混沌系统的初始值x0、y0、z0、w0;
步骤3、从图像密钥key中选取2个长度为n的0、1序列串,作为初等元胞自动机(eca)的初始构型
步骤4、通过zigzag置乱方法将稀疏系数矩阵i1转换为大小为1×n2的1维向量p1;
步骤5、选择初等元胞自动机的演变规则,并采取周期型边界、半径为1的方式对eca的初始行构型
步骤6、构造一个n×n的空白矩阵i2,对p1执行w轮置乱操作,得到大小为n×n的置乱矩阵i4,其中,w是置乱总轮数且其为密钥的一部分;
步骤7、将步骤2得到的初始值x0、y0、z0、w0带入忆阻混沌系统,得到四个大小为1×n的混沌序列x、y、z、w,且x=[x1,x2,...,xn],y=[y1,y2,...,yn],z=[z1,z2,...,zn],w=[w1,w2,...,wn];修正混沌序列x、y、z,得到序列x_1=[x′1,x′2,...,x′n],y_1=[y′1,y′2,...,y′n],z_1=[z′1,z′2,...,z′n],然后利用序列x_1、y_1、z_1,得到三个大小为1×n的序列u1、u2、u3,表示为:u1(i)=[x_1(i)+y_1(i)-z_1(i)],u2(i)=[x_1(i)+z_1(i)-y_1(i)],u3=[y_1(i)+z_1(i)-x_1(i)],其中,x_1(i)、y_1(i)、z_1(i)、u1(i)、u2(i)、u3(i)分别是序列x_1、y_1、z_1、u1、u2、u3的第i个元素,i=1,2,...,n;
步骤8、计算明文图像i的方差值var并修正,得到var1;根据var1的值从u1、u2、u3中选取一个序列并修正,作为序列u,大小为1×n;利用序列u构造大小为m×n的循环矩阵φ,作为测量矩阵,其中,m=cr×n,cr是压缩率;
步骤9、利用测量矩阵φ对经过eca置乱后的矩阵i4进行压缩感知采样,得到最终大小为m×n的密文图像c,表示为:c=φi4。
上述的,步骤2包含如下内容:
步骤2.1、将512位的密钥key每8位为一组,转换为64个十进制数k1,k2,...,k64,然后利用公式得到四个值h1、h2、h3、h4:
其中,sum(k49,k50,...,k64)表示对k49,k50,…,k64进行求和,max(k49,k50,...,k64)表示求k49,k50,...,k64的最大值,
步骤2.2、将h1、h2、h3、h4带入如下公式计算混沌系统的初始值x0、y0、z0、w0:
,其中,abs(x)表示求x的绝对值,mod(a,b)表示a对b的取模运算。
上述的,步骤3具体包含如下内容:a)从明文图像的512位哈希值中选取初始行构型
上述的,步骤4包含如下内容:
步骤4.1、将由步骤2.1得到的h1、h2、h3、h4带入如下公式计算zigzag置乱时的初始位置(x′0,y′0):
,式中,t5是密钥的一部分,n是图像的尺寸;并对初始位置(x′0,y′0)进行修正,得到最终的初始位置(x′0,y′0),所采用的修正公式如下:
,式中,
步骤4.2、根据修正后得到的初始位置(x′0,y′0),将稀疏系数矩阵i1采用zigzag置乱方法转换为大小为1×n2的1维向量p1。
上述的,步骤6中的w轮置乱操作内容如下:在每一轮置乱中,根据
优选的,步骤6具体包含如下步骤:
步骤6.1、令置乱轮数s=1;
步骤6.2、构造一个n×n的空白矩阵i2,令演变次数d=1;
步骤6.3、将p1中元素依次插入到矩阵i2中坐标为(1,1)的位置上,以行优先,顺序插入,直到i2中所有坐标为
步骤6.4、令演变次数d=d+1,循环执行步骤6.3到步骤6.4,直至d=e,其中,e是演变总次数且其为密钥的一部分;
步骤6.5、经过e次演变后,倘若p1中还有元素没有插入矩阵i2中,则将剩余元素按照行优先依次插入矩阵i2中空白位置即可,完成一轮置乱,得到置乱矩阵i3(n×n);
步骤6.6、令置乱轮数s=s+1,将矩阵i3按列优先转换为1维向量p1,循环执行步骤6.2到步骤6.6,直至s=w,得到最终的置乱矩阵i4,其中,w是置乱总轮数且其为密钥的一部分。
更进一步地,步骤6.3中的以行优先,顺序插入,内容如下:每一次插入时,将p1中剩下的元素依次插入到矩阵i2中当前坐标为(1,1)且为空的位置上,同样,按行优先插入;如果i2中某坐标为(1,1)的位置上有元素,则不插入,且继续寻找下一个坐标为(1,1)的位置,直至矩阵i2中所有(1,1)位置上填满元素。
上述的,步骤7具体包含如下步骤:
步骤7.1、将初始值x0、y0、z0、w0带入忆阻混沌系统,迭代n0+n次;舍弃前n0个值,得到四个大小为1×n的混沌序列x、y、z、w,且x=[x1,x2,...,xn],y=[y1,y2,...,yn],z=[z1,z2,...,zn],w=[w1,w2,...,wn],其中,忆阻混沌系统是基于双曲正弦函数的新型磁控忆阻器模型所构造的新型忆阻混沌系统,表达式为:
,式中,
步骤7.2、对混沌序列x、y、z进行修正,得到序列x_1、y_1、z_1:x_1=[x′1,x′2,...,x′n],y_1=[y′1,y′2,...,y′n],z_1=[z′1,z′2,...,z′n],其中,修正公式如下:
,式中,floor(x)表示取比x小的最大整数,xi、yi、zi分别是序列x、y、z的第i个元素,x_1(i)、y_1(i)、z_1(i)分别是序列x_1、y_1、z_1的第i个元素,i=1,2,...,n;
步骤7.3、利用序列x_1、y_1、z_1,得到三个大小为1×n的序列u1、u2、u3:u1(i)=[x_1(i)+y_1(i)-z_1(i)],u2(i)=[x_1(i)+z_1(i)-y_1(i)],u3=[y_1(i)+z_1(i)-x_1(i)],其中,x_1(i)、y_1(i)、z_1(i)、u1(i)、u2(i)、u3(i)分别是序列x_1、y_1、z_1、u1、u2、u3的第i个元素,i=1,2,...,n。
上述的,步骤8具体包含如下步骤:
步骤8.1、按照如下公式计算明文图像i的方差值var并修正,得到var1:
var1=floor(mod(var×103,3))+1
其中,i(i,j)是明文图像i的灰度值,n是图像的尺寸,var1=1,2,3;
步骤8.2、根据var1的值从三个序列u1、u2、u3中选取一个序列,并对选取的序列进行修正,得到大小为1×n的序列u,选取序列及修正规则具体如下:
如果var1=1,那么u(i)=mod(u1(i),1);
如果var1=2,那么u(i)=mod(u2(i),1);
如果var1=3,那么u(i)=mod(u3(i),1);
,其中,u(i)、u1(i)、u2(i)、u3(i)分别是序列u、u1、u2、u3的第i个元素,i=1,2,...,n;
步骤8.3、计算测量矩阵大小,包含:测量矩阵大小设定为m×n,其中,m的值通过如下式子计算得到:
m=cr×n
,式中,cr是压缩率,n为图像的尺寸;
步骤8.4、利用序列u通过如下公式构造大小为m×n的测量矩阵φ,其中,φ(1,n)=u:
φ(j,1)=λ·φ(j-1,n)
φ(j,2:n)=φ(j-1,1:n-1)
,式中,2≤j≤m,λ>1,且λ为密钥的一部分。
本发明的有益效果:
1、本发明对明文图像经过离散小波变换后得到的稀疏系数矩阵进行置乱,置乱分为两部分,先采用zigzag置乱方法对图像进行置乱,再用初等元胞自动机进行置乱,此过程提高了置乱程度。然后,采用混沌系统产生的测量矩阵对图像进行压缩感知,得到最终的密文图像。其中,混沌系统是一种基于双曲正弦函数的新型磁控忆阻混沌系统,对密钥及明文都非常敏感,密钥空间较大。
2、本发明中的混沌系统的初始值、元胞自动机的初始构型等均与原始图像的哈希值有关,不同的明文图像产生的密钥不同。为了进一步增强算法与明文像素的相关性,有效抵抗明文攻击,在构建测量矩阵时,使用原始图像的方差值来选取混沌序列组,进而产生循环矩阵作为测量矩阵。
3、本发明采用初等元胞自动机和压缩感知相结合的图像加密技术,利用初等元胞自动机对明文图像进行置乱,通过压缩感知在实现图像压缩的同时对图像进行加密,能够有效减少数据量的传输,并防止图像信息泄露,同时具有良好的鲁棒性以及较高的安全性能。
附图说明:
图1为实施例一加密方法流程示意图;
图2为实施例二加密方法实现步骤示意图;
图3中:(a)为实施例二所用的元胞自动机初始构型选取顺序示意图,(b)为用元胞自动机表示矩阵坐标的示意图;
图4为实施例二所用的元胞自动机初始构型产生方法的示意图;
图5中:(a)为实施例二中步骤6所用的矩阵a的示意图,(b)为zigzag置乱方法示意图,(c)为矩阵a转换为1维向量p的示意图,(d)为元胞自动机170号演变规则示意图,(e)为初等元胞自动机的初始构型r0、c0的示意图,(f)为周期型边界条件示意图;
图6中:(a)为实施例二中步骤6所用的空白矩阵b的示意图,(b)为元胞自动机初始构型及演变结果示意图;
图7中:(a)为实施例二中步骤6所用的第一次演变之后矩阵b的示意图,(b)为第二次演变之后矩阵b的示意图,(c)为第三次演变之后矩阵b的示意图,(d)为第一轮置乱结束后的矩阵b的示意图;
图8中:(a)为实施例三所用的512×512的lena明文图像,(b)为压缩率为0.25的lena加密图像,(c)为压缩率为0.25的解密图像,(d)为压缩率为0.5的lena加密图像,(e)为压缩率为0.5的解密图像,(f)为压缩率为0.75的lena加密图像,(g)为压缩率为0.75的解密图像;
图9中:(a)为实施例三所用的使用错误密钥t4=2.670000000001时的解密图像,(b)为使用错误密钥n0=801时的解密图像,(c)为使用错误密钥w=2时的解密图像,(d)为使用错误密钥key(1)=6时的解密图像;
图10中:(a)为实施例三所用的添加方差为0.0002的椒盐噪声后的加密图像,(b)为方差为0.0002的椒盐噪声污染后的解密图像,(c)为添加方差为0.000001的高斯噪声后的加密图像,(d)为方差为0.000001的高斯噪声污染后的解密图像;
图11中:(a)为实施例三所用的裁剪1/16后的加密图像,(b)为裁剪1/16后的解密图像,(c)为裁剪1/32后的加密图像,(d)为裁剪1/32后的解密图像。
具体实施方式:
下面结合附图和技术方案对本发明作进一步详细的说明,并通过优选的实施例详细说明本发明的实施方式,但本发明的实施方式并不限于此。
实施例一,针对现有图像加密过程中与明文相关性不高或者密钥空间不够大,参见图1所示,本实施例提供一种基于忆阻混沌系统、初等元胞自动机和压缩感知的图像加密方法,明文图像利用sha-512函数获取忆阻混沌系统的初始值和元胞自动机初始构型;明文图像通过离散小波变换,得到稀疏系数矩阵;通过zigzag置乱方法对稀疏系数矩阵进行置乱,再利用初等元胞自动机进行置乱操作;将忆阻混沌系统的初始值带入忆阻混沌系统产生测量矩阵,通过测量矩阵对置乱后的矩阵进行压缩感知,得到最终密文图像。
采用初等元胞自动机和压缩感知相结合的图像加密技术,利用初等元胞自动机进行置乱,通过压缩感知减少数据量的传输;其中置乱分为两部分,先采用zigzag置乱方法对图像置乱,再用初等元胞自动机进行置乱,此过程提高了置乱程度;最后采用忆阻混沌系统产生循环矩阵作为测量矩阵,对图像进行压缩感知,得到最终的密文图像。其中,测量矩阵由一种基于双曲正弦函数的新型磁控忆阻混沌系统产生,且混沌系统的初始值、元胞自动机初始构型都与原始图像的哈希值有关。该算法的密钥与明文密切相关,密钥空间较大,置乱程度高,能够有效抵抗不同攻击,安全性高。
实施例二,参见图2所示,提供一种基于忆阻混沌系统、初等元胞自动机和压缩感知的图像加密方法,其实现过程具体包含如下步骤:
步骤1、采用离散小波变换dwt,对大小为n×n的明文图像i进行变换,得到大小为n×n的稀疏系数矩阵i1。
步骤2、利用sha-512函数对明文图像i进行计算,得到一组512位的哈希值并将它作为图像密钥key,然后将512位的图像密钥key换算为64个十进制数k1,k2,...,k64,计算忆阻混沌系统的初始值x0、y0、z0、w0;具体通过如下步骤计算忆阻混沌系统的初始值:
步骤2.1、将512位的密钥key每8位为一组,转换为64个十进制数k1,k2,...,k64,然后利用公式得到四个值h1、h2、h3、h4:
,其中,sum(k49,k50,...,k64)表示对k49,k50,...,k64进行求和,max(k49,k50,...,k64)表示求k49,k50,...,k64的最大值,
步骤2.2、将h1、h2、h3、h4带入如下公式计算混沌系统的初始值x0、y0、z0、w0:
,其中,abs(x)表示求x的绝对值,mod(a,b)表示a对b的取模运算。
步骤3、从图像的512位哈希值中选取2个长度为n的0、1序列串,作为初等元胞自动机(eca)的初始构型
步骤3.1、从图像的512位哈希值中选取
步骤3.2、从图像的512位哈希值中选取
最终得到两个初始构型
步骤4、采用zigzag置乱方法,将稀疏系数矩阵i1(n×n)转换为1维向量p1(1×n2)。其中zigzag置乱时的初始位置(x′0,y′0)通过如下方法得到:
将由步骤2.1计算得到的h1、h2、h3、h4带入如下公式得到(x′0,y′0):
式中,t5是密钥的一部分,n是图像的尺寸。
接着,通过公式对(x′0,y′0)进行修正,得到最终的初始位置(x′0,y′0):
,式中,
然后,根据初始位置(x′0,y′0),将稀疏系数矩阵i1(n×n)采用zigzag置乱方法转换为1维向量p1(1×n2)。
步骤5、选择初等元胞自动机的某一规则,并采取周期型边界、半径为1的方式对eca的初始行构型
初等元胞自动机的状态集s只有两个元素{s1,s2},即状态个数k=2,状态是离散时间步长中的元胞的值,特别的,第一个状态称为初始状态(初始构型)。在状态集s中具体采用什么符号并不重要,它可取{0,1},{-l,1}等,重要的是s所含的符号个数,通常我们将其记为{0,1}。eca的邻居半径r=1,即一个元胞由它的两个相邻元胞(左邻居和右邻居)的状态决定该元胞的下一个状态,如下:
stater+1(i)=f(stater(i-1),stater(i),stater(i+1))
,其中,f(·)表示映射规则,stater(i)表示第r次演变的第i个元胞的状态。规则定义了更新所有元胞的同步状态的确定性方式。演变是根据规则将所有元胞的状态转移到下一个状态的过程。作为示例,规则170(二进制:10101010)是stater+1(i)=0时stater(i-1),stater(i),stater(i+1)∈{110,100,010,000}和stater+1(i)=1时stater(i-1),stater(i),stater(i+1)∈{111,101,011,001}。周期型边界是指最左边(最右边)元胞的左(右)邻域是最右边(最左边)的元胞,如图5(f)所示。
步骤6、构造一个n×n的空白矩阵i2,对p1(1×n2)执行w轮置乱操作。在每一轮置乱中,根据
步骤6.1、令置乱轮数s=1。
步骤6.2、构造一个n×n的空白矩阵i2,令演变次数d=1。
步骤6.3、将p1(1×n2)中元素依次插入到此时矩阵i2中坐标为(1,1)(即
步骤6.4、令演变次数d=d+1,循环执行步骤6.3到步骤6.4,共e次。其中,d=1,2,…,e,e是演变总次数且为密钥的一部分。
步骤6.5、经过e次演变后,倘若p1中还有元素没有插入矩阵i2中,则将剩余元素按照行优先依次插入矩阵i2中空白位置即可,此时,完成一轮置乱,得到置乱矩阵i3(n×n)。
步骤6.6、令置乱轮数s=s+1,将矩阵i3按列优先转换为1维向量p1(1×n2),循环执行步骤6.2-6.6共w次,即共进行w轮置乱,得到最终的置乱矩阵i4。其中,s=1,2,…,w,w是置乱总轮数且为密钥的一部分。
为了便于描述本发明的置乱方法,举一个例子如下:
(1)假设存在一个4×4的矩阵a,如图5(a)。选取元素6为起点,利用图5(b)所示的zigzag置乱方法,将其转换为1维向量p,结果如图5(c)所示。
(2)假设元胞自动机初始构型r0、c0如图5(e)所示,利用图5(d)所示170号规则演变3次,得到ri、ci,其中i=1,2,3,如图6(b)所示。在该例子中,r0、c0相当于步骤3中所述元胞自动机初始行构型
(3)构造一个4×4的空白矩阵b,用序列ri、ci分别表示其行列坐标,其中i=1,2,3,j=1,2,3,如图6(a)所示。
(4)利用步骤6所述置乱方法对一维向量p进行置乱。用序列r1代表矩阵b的行坐标,序列c1代表矩阵b的列坐标。将p中元素,按行优先依次插入到矩阵b中坐标为(1,1)的位置,即(r1(g),c1(h))=(1,1)的位置上,得到图7(a)所示,其中g=1,2,3,4,h=1,2,3,4。
然后用r2、c2表示矩阵b的新的行列坐标值,将矩阵p中剩下元素依次插入到此时坐标为(1,1)且为空的位置上,同样按行优先。这次演变之后,矩阵b中第三行、第二列坐标为(1,1),但是该位置有元素6,这是因为在上一次演变之后该位置坐标也为(1,1)且插入了元素6,此时跳过该位置不插入新元素,继续寻找下一个坐标为(1,1)且为空的位置,直至矩阵b中所有(1,1)位置上填满元素,如图7(b)所示。
接着用r3、c3表示矩阵b的新的行列坐标值,同上一步,将p中剩余元素依次插入到矩阵b中空白位置。
最后,经过三次插入元素得到图7(c)所示的矩阵b,此时p中还有2个元素(5、9),则将这2个元素按行优先依次插入到矩阵b中空白位置,完成一轮置乱,得到此轮置乱后的矩阵b,如图7(d)所示。
步骤7、将步骤2得到的初始值x0、y0、z0、w0带入忆阻混沌系统,得到四个大小为1×n的混沌序列x、y、z、w,且x=[x1,x2,...,xn],y=[y1,y2,...,yn],z=[z1,z2,...,zn],w=[w1,w2,...,wn]。修正混沌序列x、y、z,得到序列x_1=[x′1,x′2,...,x′n],y_1=[y′1,y′2,...,y′n],z_1=[z′1,z′2,...,z′n],然后利用序列x_1、y_1、z_1,得到三个大小为1×n的序列u1、u2、u3:u1(i)=[x_1(i)+y_1(i)-z_1(i)],u2(i)=[x_1(i)+z_1(i)-y_1(i)],u3=[y_1(i)+z_1(i)-x_1(i)],其中,x_1(i)、y_1(i)、z_1(i)、u1(i)、u2(i)、u3(i)分别是序列x_1、y_1、z_1、u1、u2、u3的第i个元素,i=1,2,...,n。具体步骤如下:
步骤7.1、将步骤2.2中计算得到的初始值x0、y0、z0、w0带入忆阻混沌系统,迭代n0+n次(其中n0≥500且是密钥的一部分)。舍弃前n0个值,得到四个大小为1×n的混沌序列x、y、z、w,且x=[x1,x2,...,xn],y=[y1,y2,...,yn],z=[z1,z2,...,zn],w=[w1,w2,...,wn]。
其中所涉及的混沌系统是一种基于双曲正弦函数的新型磁控忆阻器模型所构造的新型忆阻混沌系统,它的表达式为:
,式中,
步骤7.2、对混沌序列x、y、z进行修正,得到序列x_1、y_1、z_1:x_1=[x′1,x′2,...,x′n],y_1=[y′1,y′2,...,y′n],z_1=[z′1,z′2,...,z′n],其中修正公式如下:
,式中,floor(x)表示取比x小的最大整数,xi、yi、zi分别是序列x、y、z的第i个元素,x_1(i)、y_1(i)、z_1(i)分别是序列x_1、y_1、z_1的第i个元素,i=1,2,...,n。
步骤7.3、利用序列x_1、y_1、z_1,得到三个大小为1×n的序列u1、u2、u3:u1(i)=[x_1(i)+y_1(i)-z_1(i)],u2(i)=[x_1(i)+z_1(i)-y_1(i)],u3=[y_1(i)+z_1(i)-x_1(i)],其中,x_1(i)、y_1(i)、z_1(i)、u1(i)、u2(i)、u3(i)分别是序列x_1、y_1、z_1、u1、u2、u3的第i个元素,i=1,2,...,n。
步骤8、计算明文图像i的方差值var并修正,得到var1;根据var1的值从u1、u2、u3中选取一个序列并修正,作为序列u,大小为1×n;接着利用序列u构造大小为m×n的循环矩阵φ作为测量矩阵的具体步骤如下,其中m=cr×n,cr是压缩率,var1为中间密钥。
步骤8.1、按照如下公式计算明文图像i的方差值var并修正,得到var1且var1=1,2,3:
var1=floor(mod(var×103,3))+1
,其中,i(i,j)是明文图像i的灰度值,n是图像的尺寸。
步骤8.2、根据var1的值从三个序列u1、u2、u3中选取一个序列,并对选取的序列进行修正,得到大小为1×n的序列u。选取序列及修正规则具体如下:
如果var1=1,那么u(i)=mod(u1(i),1);
如果var1=2,那么u(i)=mod(u2(i),1);
如果var1=3,那么u(i)=mod(u3(i),1);
,其中,u(i)、u1(i)、u2(i)、u3(i)分别是序列u、u1、u2、u3的第i个元素,i=1,2,...,n。
步骤8.3、计算测量矩阵大小。测量矩阵大小为m×n,其中m的值通过如下式子计算得到:
m=cr×n
,式中,cr是压缩率。
步骤8.4、利用序列u通过如下公式构造大小为m×n的测量矩阵φ,其中φ(1,n)=u:
φ(j,1)=λ·φ(j-1,n)
φ(j,2:n)=φ(j-1,1:n-1)
,式中,2≤j≤m,λ>1,且λ为密钥的一部分。
步骤9、利用测量矩阵φ(m×n)对经过eca置乱后的矩阵i4(n×n)进行压缩感知采样:c=φi4,得到最终大小为m×n的密文图像c。
图像经过离散小波变换,得到稀疏系数矩阵;然后采用zigzag置乱方法对稀疏系数矩阵进行置乱,再利用初等元胞自动机进行置乱;最后用忆阻混沌系统产生的测量矩阵对置乱后的图像进行压缩感知,得到最终的密文图像。其中,明文图像通过作用于sha-512函数来产生混沌系统的初始值、元胞自动机初始构型,增强了算法与明文图像的相关性。采用初等元胞自动机和压缩感知相结合的图像加密技术,利用初等元胞自动机对图像进行置乱,通过压缩感知在实现图像压缩的同时对图像进行加密,减少了传输的数据量,并防止图像信息泄露,具有较高的安全性能。
实施例三,参见图8~11所示,在本实施例中,采用的编程软件为matlabr2016a,选取大小为512×512的lena灰度图像为实验对象,具体加密过程如下:
步骤1:输入原始大小为512×512的lena灰度图像,用i=imread('lena.bmp')读取图像信息,采用离散小波变换(dwt),对图像i进行变换,得到大小为512×512的稀疏系数矩阵i1。
步骤2:利用sha-512函数对明文图像i进行计算,得到一组512位的哈希值并将它作为图像密钥key,然后将512位的图像密钥key换算为64个十进制数k1,k2,...,k64,计算忆阻混沌系统的初始值。具体步骤如下:
2.1)利用sha-512函数对明文图像i进行计算,得到一组512位的哈希值(十六进制表示为【7c2344ac568aefbdb87da33dce5ed4cc8664dfd03730b53f8545bd31bf990f1cea732b5d740f3ce230133160f7c84524ff5421594957494512dc2fcd66ad4091】),并把它作为图像的密钥key。然后将其每8位为一组,转换为64个十进制数(124356817286138239189184125636120694212204134100223208554818163133691894919115315282341154393116156022648194996247200693625584338973877369182204720510217364145),并将其定义为k1,k2,...,k64,接着利用如下公式得到四个值h1、h2、h3、h4:
,其中,sum(k49,k50,...,k64)表示对k49,k50,...,k64进行求和,max(k49,k50,...,k64)表示求k49,k50,...,k64的最大值,
通过计算得到的四个值为h1=34.1559、h2=0.3477、h3=0.3984、h4=18.1874。
2.2)将h1、h2、h3、h4带入如下公式计算混沌系统的初始值x0、y0、z0、w0:
,其中,abs(x)表示求x的绝对值,mod(a,b)表示a对b的取模运算。通过计算得到x0=0.1559,y0=0.3477,z0=0.5982,w0=0.5858。
步骤3:从明文图像i的512位哈希值中选取2个长度为512的0、1序列串,作为初等元胞自动机(eca)的初始行构型
从明文图像i的512位哈希值中按逆序的方向(即从后至前)依次选取512个0、1值作为初等元胞自动机的初始行构型
步骤4:采用zigzag置乱方法,将大小为512×512的稀疏系数矩阵i1转换为大小为1×262144的1维向量p1,其中zigzag置乱时的初始位置由计算得到,具体步骤如下:
4.1)将由2.1)得到的h1、h2、h3、h4带入如下公式计算zigzag置乱时的初始位置(x′0,y′0):
,式中,令密钥t5=1.0314,n是图像的尺寸:n=512。
并对初始位置(x′0,y′0)进行修正,得到最终的初始位置(x′0,y′0),所采用的修正公式如下:
,式中,
4.2)根据初始位置(x′0,y′0)=(356,184),将大小为512×512的稀疏系数矩阵i1采用zigzag置乱方法转换为大小为1×262144的1维向量p1。
步骤5:选择初等元胞自动机的170号规则,并采取周期型边界、半径为1的方式对eca的初始行构型
步骤6:构造一个512×512的空白矩阵i2,对p1(1×262144)执行w轮置乱操作。在每一轮置乱中,根据
6.1)令置乱轮数s=1。
6.2)构造一个512×512的空白矩阵i2,令演变次数d=1。
6.3)将p1(1×262144)中元素依次插入到此时矩阵i2中坐标为(1,1)的位置上,即:
6.4)令演变次数d=d+1,循环执行步骤6.3到步骤6.4共e次,在本实施例中选取e=9,即d=1,2,…,9。
6.5)经过9次演变后,倘若p1中还有元素没有插入矩阵i2中,则将剩余元素按照行优先依次插入矩阵i2中空白位置即可,此时,完成一轮置乱,得到置乱矩阵i3(512×512)。
6.6)令置乱轮数s=s+1,将矩阵i3(512×512)按列优先转换为1维向量p1(1×262144),循环执行步骤6.2)-6.6)共w次,在本实施例中选取w=3,即s=1,2,3,得到最终的置乱矩阵i4。
步骤7:将步骤2得到的初始值x0、y0、z0、w0带入忆阻混沌系统,得到四个大小为1×512的混沌序列x、y、z、w,且x=[x1,x2,...,x512],y=[y1,y2,...,y512],z=[z1,z2,...,z512],w=[w1,w2,...,w512]。修正混沌序列x、y、z,得到序列x_1=[x′1,x′2,...,x′512],y_1=[y′1,y′2,...,y′512],z_1=[z′1,z′2,...,z′512],然后利用序列x_1、y_1、z_1,得到三个大小为1×512的序列u1、u2、u3:u1(i)=[x_1(i)+y_1(i)-z_1(i)],u2(i)=[x_1(i)+z_1(i)-y_1(i)],u3=[y_1(i)+z_1(i)-x_1(i)],其中,x_1(i)、y_1(i)、z_1(i)、u1(i)、u2(i)、u3(i)分别是序列x_1、y_1、z_1、u1、u2、u3的第i个元素,i=1,2,...,512。
7.1)将步骤2.2中计算得到的初始值x0=0.1559,y0=0.3477,z0=0.5982,w0=0.5858带入忆阻混沌系统,迭代n0+n次,在本实施例中选取n0=800,即800+512=1312次。为了避免有害影响,舍弃前800个值,得到四个大小为1×512的混沌序列x、y、z、w,且x=[x1,x2,...,x512],y=[y1,y2,...,y512],z=[z1,z2,...,z512],w=[w1,w2,...,w512]。
其中所涉及的混沌系统是一种基于双曲正弦函数的新型磁控忆阻器模型所构造的新型忆阻混沌系统,它的表达式为:
,式中,
7.2)通过公式对混沌序列x、y、z进行修正,得到修正后的序列x_1、y_1、z_1:x_1=[x′1,x′2,...,x′512],y_1=[y′1,y′2,...,y′512],z_1=[z′1,z′2,...,z′512]:
,式中,floor(x)表示取比x小的最大整数,xi、yi、zi分别是序列x、y、z的第i个元素,x_1(i)、y_1(i)、z_1(i)分别是序列x_1、y_1、z_1的第i个元素,i=1,2,...,512。
7.3)利用序列x_1、y_1、z_1,得到三个大小为1×512的序列u1、u2、u3:u1(i)=[x_1(i)+y_1(i)-z_1(i)],u2(i)=[x_1(i)+z_1(i)-y_1(i)],u3=[y_1(i)+z_1(i)-x_1(i)],其中,x_1(i)、y_1(i)、z_1(i)、u1(i)、u2(i)、u3(i)分别是序列x_1、y_1、z_1、u1、u2、u3的第i个元素,i=1,2,...,512。
其整个过程如下所示:
步骤8:计算明文图像i的方差值var并修正,得到var1,根据var1的值从u1、u2、u3中选取一个序列并修正,作为序列u,大小为1×512;接着利用序列u构造大小为256×512的循环矩阵φ作为测量矩阵。具体步骤如下:
8.1)首先,按照如下公式计算明文图像i的方差值var,在本实施例中,计算得到var=2289:
式中,i(i,j)是明文图像i的灰度值,n是图像的尺寸:n=512。
然后,通过如下公式修正var的值,得到var1:
var1=floor(mod(var×103,3))+1
本实施例中,计算得到var1=1。
8.2)根据var1的值从u1、u2、u3中选取一个序列并修正,作为序列u;选取序列及修正规则具体如下:
如果var1=1,那么u(i)=mod(u1(i),1);
如果var1=2,那么u(i)=mod(u2(i),1);
如果var1=3,那么u(i)=mod(u3(i),1);
,其中u(i)、u1(i)、u2(i)、u3(i)分别是序列u、u1、u2、u3的第i个元素,i=1,2,...,512。
在本实施例中,通过计算得到var1=1,因此,选取序列u1并修正,得到大小为1×512的序列u。
8.3)计算测量矩阵大小。测量矩阵大小为m×n,其中m的值通过如下式子计算得到:
m=cr×n
,式中,cr是压缩率,n是图像的尺寸。本实施例中n=512,选取cr=0.5,则m=0.5×512=256,故测量矩阵大小为256×512。
8.4)利用序列u通过如下公式构造大小为256×512的测量矩阵φ,其中φ(1,512)=u:
φ(j,1)=λ×φ(j-1,512)
φ(j,2:512)=φ(j-1,1:511)
,式中,2≤j≤256,λ=2.3且为密钥的一部分。
步骤9:利用测量矩阵φ(256×512)对经过eca置乱后的矩阵i4(512×512)进行压缩感知采样:c=φi4,得到最终大小为256×512的密文图像c。
一个好的加密算法应该达到较好的加密效果和解密效果,且密钥空间足够大,密钥的敏感性足够高以此来抵抗各种攻击。下面对本发明的图像加密算法进行安全性分析。
1、图像加密、解密效果好
好的加密算法不仅要能够达到较好的加密效果,即从密文中看不出明文图像的相关信息,同时接收方根据相应的算法与密钥能恢复出较全的图像信息。为了评估加密质量和恢复效果,引入峰值信噪比psnr和平均结构相似性mssim。
峰值信噪比psnr(peaksignaltonoiseratio)常常用来代表用户期望的重建图像的质量,psnr的值越大,原始图像和重建图像之间的相似度越高。
结构相似性ssim(structuralsimilarity),是一种衡量两幅图像相似度的指标,分别从亮度、对比度、结构三个方面度量图像相似性。ssim取值范围为[0,1],值越大,表示图像失真越小。在实际应用中,可以利用滑动窗将图像分块,然后计算对应块的结构相似度ssim,最后将平均值作为两图像的结构相似性度量,即平均结构相似性mssim(meanstructuralsimilarity)。
本文利用原始图像和重建图像之间的psnr以及mssim来评估加密质量。首先,用如下公式定义psnr:
,式中,x(i,j)和y(i,j)分别代表明文图像x和解密图像y的第(i,j)个像素值,mse代表明文图像和解密图像的均方差,n代表图像的尺寸,n为每像素的比特数,一般取8,即像素灰阶数为256。接着利用如下公式定义ssim和mssim:
,式中,μx、μy分别表示明文图像x和解密图像y的均值,σx、σy分别表示明文图像和解密图像的方差,σxy表示明文图像和解密图像的协方差,m表示图像分块的总数,在本实施例中,m=64,c1、c2、c3为常数,为了避免分母为0的情况,取c1=(k1×l)2,c2=(k2×l)2,
附图8是对512×512的lena图像采用不同压缩率进行加密解密,得到的加密、解密结果。其中,图8(a)是512×512的lena明文图像,8(b)是压缩率cr=0.25的lena加密图像,8(c)是压缩率cr=0.25的解密图像,8(d)是压缩率cr=0.5的lena加密图像,8(e)是压缩率cr=0.5的解密图像,8(f)是压缩率cr=0.75的lena加密图像,8(g)是压缩率cr=0.75的解密图像。
相应的,lena图像在不同压缩率下的psnr、mssim值如下:
可以看出,在不同的压缩率下,lena图像可以被有效加密且从密文中得不到明文图像的相关信息;psnr>30db,mssim>0.99,原始图像和重构图像之间的相似度较高,图像失真小,因此该算法可以达到很好的加密效果与恢复效果。
2、密钥空间足够大,足以抵抗穷举攻击
一般来说,密钥空间越大,算法抵抗穷举攻击的能力也就越强。一个安全的图像密码系统应该具有大于2100的密钥空间,以抵抗各种攻击。本文密钥具体包括:1)由sha-512函数产生的512位哈希值;2)舍弃的忆阻混沌序列的个数n0;3)初等元胞自动机的演变次数e;4)置乱轮数w;5)求循环矩阵的参数λ;6)计算初始值的四个参数t2、t3、t4、t5;7)中间密钥var1。
若设置精度为10-14,则该算法的密钥空间约为(1014)5=1070>2232,如果再加上512位的哈希值,整体密钥空间远远大于2100,可见本发明的算法密钥空间足够大,能够有效的抵抗穷举攻击。
3、密钥敏感性高
密钥敏感性是密码学的基本特性之一,一个好的密码算法应当对密钥极其敏感。当攻击者用一个跟密钥很相近的数据进行图像破解时,不能恢复出原始的图像,则说明该加密系统对密钥敏感。混沌系统对初始条件和控制参数极其敏感,任何微小的初始偏差都会被指数式放大,因此混沌加密算法的安全性与密钥敏感性有很大关系。本发明所使用的忆阻混沌系统,对初始值敏感性强,具有很强的抗破译功能。附图9为密钥敏感性实验,其中忆阻混沌系统的控制参数是a=10,b=8,c=15,d=5.2,e=5且r=1.5,附图8(e)是加密所选取的置乱轮数w=3,演变次数e=9,λ=2.3,t2=33.2418,t3=3.5609,t4=2.67,t5=1.0314,n0=800,cr=0.5,512位哈希值密钥key为(十六进制表示为【7c2344ac568aefbdb87da33dce5ed4cc8664dfd03730b53f8545bd31bf990f1cea732b5d740f3ce230133160f7c84524ff5421594957494512dc2fcd66ad4091】)时的正确解密图像。
附图9是本发明的加密算法密钥敏感性测试结果。其中,图9(a)是当其他密钥不变,参数t4=2.670000000001时的解密图像;图9(b)是当其他密钥不变,参数n0=801时的解密图像;图9(c)是当其他密钥不变,置乱轮数w=2时的解密图像;图9(d)是当其他密钥不变,密钥key(十六进制表示)第一个值由7变为6时的解密图像。
4、可以抵抗一定的噪声、剪切攻击,鲁棒性强
(1)抗噪声攻击
图像在网络传输过程中或者在剪切、复制、移动的过程中,可能会受到机器自身的因素或者其它外界因素而使获得的图像中含有噪声。本文通过产生不同程度的各类噪声然后添加到图8(d)所示的lena密文图像上,然后对其进行解密处理来测试本发明所提出的加密算法对噪声的抵抗能力。附图10是本发明的抗噪声攻击能力测试结果,其中,附图10(a)是添加了方差为0.0002的椒盐噪声后的加密图像,图10(b)是方差为0.0002的椒盐噪声污染后的解密图像,图10(c)是添加了方差为0.000001的高斯噪声后的加密图像,图10(d)是方差为0.000001的高斯噪声污染后的解密图像。
从图10可以看出,即使密文图像受到一定的噪声攻击,也可以恢复出较清晰的图像,保留了明文图像所包含的重要信息,这证明了本文所提出的算法具有一定的抗噪声攻击能力。
(2)抗剪切攻击
图像在处理或者传输过程中,由于设备的不健全或是出现误差等原因,有时我们只能获得部分加密图像的信息。因此,研究部分信息丢失对解密图像的影响也十分重要。为了测试本发明所提出的加密算法的抗剪切能力,对图8(d)所示的lena加密图像进行部分裁剪,然后利用正确的密钥得出恢复的图像,测试该算法对噪声的抵抗能力。附图11是本发明的抗剪切攻击能力测试结果。其中,图11(a)和(c)分别显示了被遮挡1/16和1/32内容的加密图像,相应的解密结果如图11(b)和(d)所示。
从图11中可以看出,密文图像被裁剪掉一部分后,恢复的图像仍然保留了明文图像所包含的重要信息,这证明了本文所提出的算法具有一定的抗剪切攻击能力。
通过测试可以看出,本算法可以抵抗一定的噪声攻击、剪切攻击,具有良好的鲁棒性,算法安全性高。
由上述实施例可知,本发明提供的加密算法可对n×n(n=2t,t为正整数)的灰度图像进行高安全的加密,在信息加密领域具有广阔的应用前景。
本发明并不局限于上述具体实施方式,本领域技术人员还可据此做出多种变化,但任何与本发明等同或者类似的变化都应涵盖在本发明权利要求的范围内。