一种基于混沌的自适应机制的图像加密方法与流程

文档序号:15820436发布日期:2018-11-02 23:03阅读:647来源:国知局
一种基于混沌的自适应机制的图像加密方法与流程

本发明属于计算机加密领域,尤其是涉及一种图像加密的基于混沌的自适应机制的图像加密方法。

背景技术

随着互联网技术和多媒体技术的迅速发展,多媒体通信已越来越重要。因此,图像信息的安全问题日益严重。然而,由于图像具有数据容量大、冗余度高、相邻像素间相关性强等特点,传统的针对文本设计的加密算法,如des、aes不再适合于图像加密。

混沌是由确定的非线性系统产生的一种复杂的、看似随机的物理现象,其产生的序列是伪随机的,具有非周期性,且表现为高斯白噪声。此外,由于混沌系统对控制参数和初始条件高度敏感,产生的序列不可预测,可以提供巨大的密钥空间。1998年fridrich提出了具有开创性的替代-扩散加密体系结构,随后被chen,lianandwong发展为经典的置乱-扩散加密体系结构。基于这一经典结构,学者们提出很多改进创新算法,如有改进置换技术的,有改进扩散方法的,有改进密钥流生成器的。另外,还有在变换域对图像进行加密的。然而,很多基于混沌的数字图像加密算法是不安全的,尤其不能抵抗选择明文/密文的攻击。为了抵抗选择明文的攻击,提出了各种各样的与明文相关的密钥流生成方案,其中大部分是“一次一密”的加密方案。比如在有的文献中首先计算出明文图像的256位sha-256哈希值k,把k分成几部分,通过某一变换把每一部分转换为(0,1)的数,把它们作为混沌系统初值的一部分。这样混沌系统产生的随机序列就与明文相关,加密不同的明文图像,所产生的随机序列不同,且加密算法对明文图像高度敏感,从而算法可以抵抗选择明文的攻击。但是,在解密时,不但用到混沌系统的初始值,还要用到明文图像的sha-256哈希值k。这样解密不同的密文就需要不同的sha-256哈希值k,增加了密钥管理的难度,在实际应用中是不可行的。基于这一点,我们提出一个新的自适应的置乱-扩散结构的混沌图像加密算法,与以往文献不同的是,我们在生成的混沌序列中而不是在混沌系统的初始值中加入一个与明文相关的扰动项,这样,加密不同的明文图像所产生的随机序列不同。而与明文相关的这一扰动不是密钥的一部分,合法解密者解密出扩散阶段的密文,根据获得的置乱密文就可得到这一与明文相关的扰动项。加密系统的密钥只是混沌系统的初始值,减少了密钥管理的难度。



技术实现要素:

鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种能克服“一次一密”加密方案(加密不同明文所用密钥不同)中密钥管理的难度,同时还能抵抗选择明文的攻击图像加密方法。

本发明采用了如下技术方案是:一种基于混沌的自适应机制的图像加密方法,该方法具体包括以下步骤:

步骤1:将大小为m×n待加密的明文图像转化为一维向量p={p(1),p(2),p(3),…,p(mn)},设定混沌系统(1)的初始值,生成长度为mn的三个混沌序列k、t、s,其中k、t在区间[0,1]上,s∈{0,1,…,255};

步骤2:将待加密的明文图像的"1"比特位数与"0"比特位数的比值g作为图像特征提取出来,用g扰动混沌序列k以生成明文图像的置乱序列,根据置乱序列对明文图像进行置乱操作得到第一层加密图像p';

步骤3:为使加密算法对明文敏感,先生成一个与明文每个象素相关的序列vp

利用序列vp和混沌序列s再生成一个{0,1,…,255}上的序列sp,这样生成的sp对明文敏感,明文的变化将引起sp的变化,且依赖于明文图像。

步骤4:采用流加密方案,用密文像素值扰动混沌序列t,得到新的随机序列q,然后用序列q和序列sp对图像的灰度值扩散运算得到密文图像c,

所述步骤(1)的具体操作步骤为:

1.1给定初始值,用下面的混沌系统生成长度为l的四个混沌序列x,y,z,w。其中,x={x(1),x(2),x(3),…,x(l)};y={y(1),y(2),y(3),…,y(l)};z={z(1),z(2),z(3),…,z(l)};w={w(1),w(2),w(3),…,w(l)}。

1.2利用式d(i)=cos2((x(i)+y(i)+z(i))/3)、式k(i)=cos2((w(i)+x(i)+y(i))/3)和式t(i)=cos2((w(i)+x(i)+z(i))/2)(i=1,2,3,…,m*n)的变换将混沌流x,y,z,w转化为[0,1]区间上的序列d={d(1),d(2),d(3),…,d(l)}、k={k(1),k(2),k(3),…,k(l)}、t={t(1),t(2),t(3),…,t(l)}。再将[0,1]区间上的序列d按式s=mod(round(1015d),256)=(s1,s2,s3,…,sl)转化为{0,1,…,255}上的s,即得到混沌序列k、t、s。在后面的加密过程中将用到混沌序列k、t、s。

所述步骤(2)的具体操作步骤为:

2.1在生成置乱序列h={h(1),h(2),h(3),…,h(l)}时加入了一个与明文相关的扰动项g(这里取g为明文图像的"1"比特位数与"0"比特位数的比值),按下式生成置乱序列h,这样加密不同的明文图像所用置乱序列不同。

h(i)=i+mod[floor(k(i)×g×1014),m×n-i](i=1,2,3,…,m*n)

2.2根据置乱序列h对明文图像序列p=={p(1),p(2),p(3),…,p(mn)}按下式进行置乱操作。

temp=p(i),p(i)=p(h(i)),p(h(i))=temp(3)

所述步骤(3)的具体操作步骤为:

3.1按下式计算序列vp={vp(1),vp(2),vp(3),…,vp(l)}

3.2根据序列vp和序列s,利用下式得到序列sp={sp(1),sp(2),sp(3),…,sp(l)},这样生成的sp对明文敏感,明文的变化将引起sp的变化,且依赖于明文图像。

所述步骤(4)的具体操作步骤为:

4.1用密文像素c(i-1)按下式对t(i)进行扰动生成q(i)

q(i)=mod[floor(t(i)×c(i-1))×1014),256](i=1,2,3,…,m*n)

4.2按下式进行扩散操作得到密文c={c(1),c(2),c(3),…,c(mn)}。

本发明的特点及有益效果是:本算法是在生成的混沌序列中而不是在混沌系统的初始值中加入一个与明文相关的扰动项,这样,加密不同的明文图像所产生的随机序列不同。而与明文相关的这一扰动不是密钥的一部分,合法解密者解密出扩散阶段的密文,根据获得的置乱密文就可得到这一与明文相关的扰动项。加密系统的密钥只是混沌系统的初始值,减少了密钥管理的难度,同时还能抵抗选择明文的攻击。

附图说明:

图1为原始图像、置乱图像、加密图像对比示意图,图1(a)原灰度图像;图1(b)为本系统在置乱阶段得到的图像;图1(c)为最后的密文图像。

图2为所有密钥均正确时的解密图像。

图3为部分参数错误对比图。图3(a)为混沌初值x(0)有错误,偏移△x(0)=10-15,其它密钥均正确时的解密图像;图3(b)为混沌初值y(0)有错误,偏移△y(0)=10-15,其它密钥均正确时的解密图像;图3(c)为混沌初值z(0)有错误,偏移△z(0)=10-15,其它密钥均正确时的解密图像;图3(d)为混沌初值w(0)有错误,偏移△w(0)=10-15,其它密钥均正确时的解密图像;

图4中的(a)、(b)、(c)、(d)分别是“cameraman”图像的原图像、原图像的直方图、加密后的图像、加密后图像的直方图。

5(a)为“cameraman”明文图像的水平方向相关分析图,图5(b)为明文图像的垂直方向相关分析图,图5(c)为“cameraman”明文图像的对角方向相关分析图。

图6(a)为“cameraman”密文图像的水平方向相关分析图,图6(b)为“cameraman”密文图像的垂直方向相关分析图,图6(c)为“cameraman”密文图像的对角方向相关分析图。

具体实施方式

下面结合具体实施例对本发明的技术方案作进一步说明。

本发明一种基于混沌的自适应机制的图像加密方法,该方法将明文图像加工成密文图像,

该方法具体包括以下步骤:

步骤(1)将大小为l,l=m×n的明文图像p转化为一维向量p={p(1),p(2),p(3),…,p(mn)},设定混沌系统(1)的初始值,生成长度为mn的三个混沌序列k、t、s,其中,混沌序列k和t在区间[0,1]上,混沌序列s∈{0,1,…,255};

步骤(2)提取明文图像p的明文图像的特征值,扰动混沌序列k以生成明文图像的置乱序列h,根据置乱序列h对明文图像进行置乱操作得到第一层加密图像p';

步骤(3)为使加密算法对明文敏感,先生成一个与明文每个象素相关的序列vp,利用序列vp和混沌序列s再生成一个{0,1,…,255}上的序列sp

步骤(4)采用流加密方案,用密文像素值扰动混沌序列t,得到新的随机序列q,然后用序列q和序列sp对图像的灰度值扩散运算得到密文图像c。

进一步,所述步骤(1)的具体包括以下步骤:

1.1.将大小为l=m×n的明文图像,将其转化为一维向量p={p(1),p(2),p(3),…,p(mn)},

1.2设定混沌系统(1)的初始值,混沌系统(1),

混沌系统(1)生成长度为l=m*n的四个混沌序列x,y,z,w;

其中,x={x(1),x(2),x(3),…,x(l)};

y={y(1),y(2),y(3),…,y(l)};

z={z(1),z(2),z(3),…,z(l)};

w={w(1),w(2),w(3),…,w(l)};

1.3利用式d(i)=cos2((x(i)+y(i)+z(i))/3)、式k(i)=cos2((w(i)+x(i)+y(i))/3)和式t(i)=cos2((w(i)+x(i)+z(i))/2)(i=1,2,3,…,m*n)的变换将混沌流x,y,z,w转化为[0,1]区间上的序列d={d(1),d(2),d(3),…,d(l)}、k={k(1),k(2),k(3),…,k(l)}、t={t(1),t(2),t(3),…,t(l)},再将[0,1]区间上的序列d按式s=mod(round(1015d),256)=(s1,s2,s3,…,sl)转化为{0,1,…,255}上的s,即得到混沌序列k、t、s。

进一步,所述步骤2中的具体包括以下步骤:

2.1在生成置乱序列h时加入一个与明文相关的扰动项g,g的取值为明文图像的"1"比特位数与"0"比特位数的比值,

按下式生成置乱序列h={h(1),h(2),h(3),…,h(l)},

h(i)=i+mod[floor(k(i)×g×1014),l-i](2),(i=1,2,3,…,l)

2.2根据置乱序列h对明文图像按下式进行置乱操作:

temp=p(i),p(i)=p(h(i)),p(h(i))=temp(3)

式中:temp为变量,

进一步,所述步骤3中的具体包以下步骤:

3.1按下式计算序列vp={vp(1),vp(2),vp(3),…,vp(l)},

3.2根据序列vp和混沌序列s,利用下式(5)得到序列sp={sp(1),sp(2),sp(3),…,sp(l)},这样生成的sp对明文敏感,明文的变化将引起sp的变化,且依赖于明文图像,

进一步,步骤4中,具体包括以下步骤:

4.1用密文像素c(i-1)按下式(6)对q(i)进行扰动:

q(i)=mod[floor(t(i)×c(i-1))×1014),256](6),

4.2按下式(7)进行扩散操作得到密文c={c(1),c(2),c(3),…,c(mn)}:

实施例:

(1)假设明文图像是一个具有256级灰度、大小为l=m×n的图像,将其转化为一维向量p={p(1),p(2),p(3),…,p(mn)}。

(2)给定(x(0),y(0),z(0),w(0))=((1.98,1.45,0.78,0.8))作为初始值,用下面的混沌系统(1)生成长度为l的四个混沌序列x,y,z,w。其中,x={x(1),x(2),x(3),…,x(l)};y={y(1),y(2),y(3),…,y(l)};z={z(1),z(2),z(3),…,z(l)};w={w(1),w(2),w(3),…,w(l)}。

由于计算机精度的限制,混沌序列在迭代过程中有可能退化为周期序列,为克服这一缺陷,将多个混沌序列进行一个非线性函数运算来得到周期更长的序列。

利用式d(i)=cos2((x(i)+y(i)+z(i))/3)、式k(i)=cos2((w(i)+x(i)+y(i))/3)和式t(i)=cos2((w(i)+x(i)+z(i))/2)(i=1,2,3,…,m*n)的变换将混沌流x,y,z,w转化为[0,1]区间上的序列d={d(1),d(2),d(3),…,d(l)}、k={k(1),k(2),k(3),…,k(l)}、t={t(1),t(2),t(3),…,t(l)},再将[0,1]区间上的序列d按式s=mod(round(1015d),256)=(s1,s2,s3,…,sl)转化为{0,1,…,255}上的s,即得到混沌序列k、t、s;

(3)对明文p={p(1),p(2),p(3),…,p(mn)}按式(2)和式(3)进行置乱操作。为了使置乱序列与明文相关,防止选择明文攻击,在生成置乱序列时加入了一个与明文相关的扰动项g,g的取值为明文图像的"1"比特位数与"0"比特位数的比值,这样加密不同的明文图像所用置乱序列不同。

h(i)=i+mod[floor(k(i)×g×1014),l-i](i=1,2,3,…,l)(2),

temp=p(i),p(i)=p(h(i)),p(h(i))=temp(i=1,2,3,…,l)(3),

(4)对置乱后的明文图像进行混淆、扩散操作。

在这个过程中需要两个{0,1,…,255}上随机序列sp和q={q(1),q(2),q(3),…,q(l)}

(a)按式(4)计算序列vp={vp(1),vp(2),vp(3),…,vp(l)},

根据序列vp和序列s,利用式(5)得到序列sp={sp(1),sp(2),sp(3),…,sp(l)},这样生成的sp对明文敏感,明文的变化将引起sp的变化,且依赖于明文图像。

(b)按式(6)、(7)进行扩散操作得到密文c={c(1),c(2),c(3),…,c(l)}。

q(i)=mod[floor(t(i)×c(i-1))×1014),256](i=1,2,3,…,l)(6),

其中c(0)为{0,1,…,255}上的一个常数,可以作为密钥。由(6)式可以看出随机序列q的生成与密文序列c相关,这样加密不同的明文图像所用的随机序列q不同,可以抵抗选择明文的攻击。

解密过程是加密过程的逆过程,具体步骤如下:

(1)利用给定(x(0),y(0),z(0),w(0))=((1.98,1.45,0.78,0.8))作为初始值,用混沌系统(1)生成长度为m×n的三个混沌序列k,s,t;

(2)由式(4)可知vp(l)=0,从而由式(5)可知sp(l)=0。由式(6)可以计算出q(l)。

由式(7)解密出:

(3)解出了p(l),由式(4)可知vp(l-1)=p(l),由式(5)可以得到由式(6)可以计算出q(l-1)。由式(7)解密出

依次类推,直到解密出p(1)。

(4)进行置乱的反变换。由于置乱前后图像的"1"比特位数与”0”比特位数的比值不变,因此可以由步骤(3)解密出的置乱图像p计算出g值。

由(2)式可得序列h={h(1),h(2),h(3),…,h(l)}。需注意的是进行置乱的反变换时是从最后一个像素到第一个像素进行式(3)的操作。

temp=p0(i),p0(i)=p0(h(i)),p0(h(i))=tempi=l-1,l-2,l-3,…,1(3)

下面将对本发明的图像加密方法进行安全性分析。

1密钥空间分析

加密时可用的所有密钥数就是密钥空间的大小,密钥空间越大,抵抗蛮力攻击的性能越好。本算法的密钥集为keys={(x(0),y(0),z(0),w(0),c(0))。实验验证x(0),y(0),z(0),w(0)的精度可达10-15,密钥空间可达1015*1015*1015*1015=1060,若考虑c(0)的取值,密钥空间可以达到1060×256≈2207,这么大的密钥空间远远大于2100,是可以抵抗蛮力攻击的。

2密钥敏感性分析

密钥敏感性体现在两方面,一方面,用不同的密钥加密同一幅明文图像时所得密文图像将完全不同,这一点用密文图像的改变率t衡量。另一方面,当解密时,若输入错误的解密密钥,即使它们与正确密钥之间的相对误差很小,也得不到明文图像的任何有用的信息。计算密文图像的改变率t的具体方法如下:令该密钥的大小改变h,其他参数保持不变。如计算密钥a的敏感性时,用密钥a加密明文得到密文图像c1,用密钥a+h(其他密钥不变)加密得到密文图像c2,用密钥a-h加密得到c3,则c2与c1灰度值不同的像素数num1占整个图像的比例和c3与c1灰度值不同的像素num2占整个图像的比例取均值,得到t,即t=0.5*(num1/m*n+num2/m*n),其中m×n表示图像的大小。以此方法计算出各密钥的敏感性,如表1所示。计算的结果表明初始状态值具有很强的敏感性。计算中密钥x(0),y(0),z(0),u(0),w(0)的改变量h均是10-15

表1各初始值的敏感性测试

表1的敏感性测试显示本算法对密钥集中x(0),y(0),z(0),w(0)的敏感程度非常高,都可达到10-15以上,附图3中a~d分别为密钥集keys={x(0),y(0),z(0),w(0)}中的密钥分别取下列值时的解密图像,可以看出在解密图像中得不到原图像的任何信息。即使密钥值有10-15的微小偏差,也破解不出原图像。这也进一步说明了算法对密钥的高度敏感性。

keys={x(0),y(0),z(0),w(0)}=(1.98+10-15,1.45,0.78,0.8);

keys={x(0),y(0),z(0),w(0)}=(1.98,1.45+10-15,0.78,0.8);

keys={x(0),y(0),z(0),w(0)}=(1.98,1.45,0.78+10-15,0.8);

keys={x(0),y(0),z(0),w(0)}=(1.98,1.45,0.78,0.8+10-15);

(3)明文敏感性测试:

如果明文图像有一点点变化,加密后的密文图像将与原密文图像完全不同,我们就说密文对明文敏感。可以用数字图像像素变化率(npcr)和归一化平均变化强度(uaci)来衡量数字图像加密算法对明文敏感的程度。像素变化率和归一化平均变化强度分别表示随机地改变原始图像的某个像素灰度值以后,加密图像像素灰度值发生改变的数目所占的百分比以及变化程度。npcr和uaci的计算公式[23]分别为下面的(9)和(10):

其中

m×n为图像的大小。x为原密文图像,x′为明文改变后对应的密文图像。对于8位灰度图像,npcr与uaci的理想期望值分别为:npcre=99.6094%,uacie=33.4635%。

随机选取“cameraman”图像中200个像素点,改变它们的像素值,结果计算的npcr值最大为99.623%,最小99.545%,平均值为99.6259%。uaci值最大为33.655%,最小33.462%,平均值为33.467%,非常接近理想值。可见,原图像中一个像素灰度值的变化会导致加密图像中几乎所有像素灰度值发生变化。从而验证了该算法对明文敏感,具有很好的抗差分攻击性能力。

4统计直方图

直方图是数字图像的一个基本属性,揭示了图像像素的分布规律,密文图像的直方图分布越均匀,说明加密效果越好。为了表明算法的有效性,本文加密了四幅经典图像,附图4(a)、(b)、(c)、(d)分别是“cameraman”数字图像的原图像、原图像的直方图、加密后的图像、加密后图像的直方图。在直方图中横坐标代表灰度图像的256个灰度级,纵坐标代表图像所有像素取每个灰度级的频数。从统计直方图看出,原图像的直方图中各像素值的概率分布都是不均匀的,而加密图像的直方图中各像素值的概率分布都接近等概率分布,因此加密后的图像是一幅随机图像。

5.像素相关性分析

一幅自然图像中大块区域中图像的灰度值相差不大,即各个像素具有很强的相关性,图像信息的冗余度很大。而图像加密的目标之一就是去除图像信息的冗余性,减小相邻像素的相关性。像素相关性分析主要是水平像素、垂直像素和对角线像素的相关分析。对于“cameraman”明文图像和密文图像,分别随机地选取4000个像素点作为参考点,以这些点为基准分别沿水平方向、竖直方向和对角线方向取其相邻的像素点与之构成像素对,绘制其相关性分布图。如附图5和图6。其中图5(a)为“cameraman”明文图像的水平方向相关分析图,图5(b)为明文图像的垂直方向相关分析图,图5(c)为“cameraman”明文图像的对角方向相关分析图。图6(a)为“cameraman”密文图像的水平方向相关分析图,图6(b)为“cameraman”密文图像的垂直方向相关分析图,图6(c)为“cameraman”密文图像的对角方向相关分析图。可以看出明文图像的相邻像素间在三个方向上具有很强的线性关系,而密文图像的相邻像素间在三个方向上关系呈现随机的对应关系,这说明图像加密效果好,安全性高。

利用下面相关系数公式(11)来计算图像相邻像素间的相关系数值,以进一步量化数字图像相邻像素间在三个方向上线性相关性。所得原图像和加密图像的相邻元素的相关系数如表2

其中,xi,yi分别表示相邻两个像素的灰度值,n表示选取的像素对的个数。由表2也可以看出原始图像三个方向的相邻像素间有很强的相关性,而加密图像各方向相邻像素间相关性大大减弱。

表2原图像和加密图像的相邻元素的相关系数

(6)密文图像信息熵分析

图像信息熵是度量图像信息量大小的一个概念,图像越混乱,图像信息熵越大,图像提供的信息就越小。信息熵的计算公式为(12)

其中,pi为第i阶灰度值出现的概率。当密文的概率分布为等概率分布时,即取[0,255]之间每一个值概率均为1/256时,具有最大熵为8bit。本文加密的“rice”、“cameraman”、“autumn”、“pepper”四幅数字图像的信息熵如表3所示,可以看出四幅图像的密文图像的信息熵都非常接近8bit。表明加密后图像的随机性、不可预测性很高。

表3加密图像的信息熵

(7)抵抗选择明文攻击

在加密过程中,从式(2)和式(7)可以看出加密系统最终的密钥流是三个随机序列h(i)、sp(i)和q(i)(i=1,2,3,…,l)。但是,从(2)、(4)、(5)、(6)式看出他们的生成都与待加密的明文图像有关,加密不同的图像所用的密钥流h(i)、sp(i)和q(i)(i=1,2,3,…,l)不同。攻击者无法通过加密一些特殊的图像来获得有用的信息,因此该加密方案能抵抗选择明文攻击。

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