CN104881837A - 基于超混沌系统的密钥动态选取的图像加密算法 - Google Patents

基于超混沌系统的密钥动态选取的图像加密算法 Download PDF

Info

Publication number
CN104881837A
CN104881837A CN201510262218.9A CN201510262218A CN104881837A CN 104881837 A CN104881837 A CN 104881837A CN 201510262218 A CN201510262218 A CN 201510262218A CN 104881837 A CN104881837 A CN 104881837A
Authority
CN
China
Prior art keywords
key
choice
diffusion
scramble
dynamical
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510262218.9A
Other languages
English (en)
Other versions
CN104881837B (zh
Inventor
柴秀丽
杨康
王俊
甘志华
高育林
程云龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Henan University
Original Assignee
Henan University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Henan University filed Critical Henan University
Priority to CN201510262218.9A priority Critical patent/CN104881837B/zh
Publication of CN104881837A publication Critical patent/CN104881837A/zh
Application granted granted Critical
Publication of CN104881837B publication Critical patent/CN104881837B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Facsimile Transmission Control (AREA)

Abstract

本发明涉及一种基于超混沌系统的密钥动态选取的图像加密算法,主要包括以下步骤:将原始明文图像排列成图像数组P,然后利用超混沌系统生成混沌序列并分组;结合依赖明文的KSSG和KS动态选取机制生成正向置乱密钥K1,对P进行正向置乱得到P1;结合KSSG和KS机制生成正向扩散密钥K2,对P1进行正向扩散得到P2;结合KSSG和KS动态选取机制生成反向置乱密钥K3,对P2进行反向置乱得到P3;利用KSSG和KS动态选取机制生成反向扩散密钥K4,对P3进行反向扩散得到P4,对P4进行重组即得到最终的密文图像。上述方法增加了密钥空间,使得安全性、加密效果和密钥敏感性更高,抗攻击能力更强,并更易于硬件实现。

Description

基于超混沌系统的密钥动态选取的图像加密算法
技术领域
本发明涉及一种图像加密方法,特别是涉及一种基于超混沌系统的密钥动态选取的图像加密算法。
背景技术
当今,伴随着智能设备、物联网、高清多媒体以及网络技术的飞速发展,我们生活中的绝大多数信息,如文档、音频、视频,特别是图像信息的传输更是离不开网络的支持。网络一方面给人们的生活带来了便捷,但另一方面,一些不法分子会利用网络来窃取信息,这就给人们的信息安全带来很大隐患,所以信息在网络传输过程中的安全和保密问题也越来越受到人们的关注和重视。通常来说图像信息都有相同的特点,它们都存在着数据量大、相邻像素相关性强、冗余度高等特点。过去常用的加密方法,是以一维数据流为设计目标的,像DES、3-DES、AES和RSA等,主要用于文本信息的加密,没有考虑到数字图像的特点,所以加密的效果令人很不满意。混沌系统是一种非线性系统,能够表现出复杂的伪随机性,具有非常好的混淆规则。它对初始条件和控制参数极其敏感,任何微小的初始偏差都会被指数式放大,符合扩散规则。与此同时,它又可以通过非线性系统方程、参数和初始条件来确定。正因为混沌系统具有随机性、确定性、遍历性和对初值的高度敏感性等特点,我们可以设计出密钥空间大、加密流随机性强的加密算法,使它特别适合于图像的加密。目前,采用混沌系统对图像进行加密已经成为了信息安全研究的一个热点,具有巨大的应用潜力。
美国学者Fridrich于1998年提出了经典的图像加密模式,它包括两个阶段,置乱阶段和扩散阶段。在置乱阶段,通常只是对图像中的每个像素位置做处理,通过改变每个像素的位置来破坏图像中原有的空间有序性和局部相关性,使得图像达到杂乱无章、无法识别并呈现一种类似噪声的目的。在扩散阶段,一般是对图像中的像素值做处理,通过混沌系统产生的伪随机序列来对明文像素进行掩盖,以达到窃密者无法辨认的目的,从而实现图像的加密。但是必须指出的是,这两个阶段必须是一个可逆的过程,既然能对图像进行加密,那么也必定能够对图像进行解密。绝大多数图像加密算法都是依照先置乱后扩散这样一个思路,最终达到了良好的加密效果。但是目前所采用的图像加密算法存在以下几个问题:第一,在置乱阶段,绝大多数加密算法缺乏与明文的联系,虽然部分加密算法考虑了与明文的联系,但是当其中某个像素发生改变时,其置乱的效果依旧不能扩散至整幅图像,置乱的效果仅影响像素发生改变的后面像素,这样窃密者可以通过简单的比对就可以发现其中的置乱规律,这使得图像的安全性存在巨大的漏洞;第二,数字图像都是由一个一个像素组成的离散有限点集,在置乱变换多次后会回到原来的状态,因此只要窃密者知道了加密的算法,就可以对其进行暴力解密,通过多次迭代,就会在有限步内得到明文图像;第三,无论是在置乱阶段还是在扩散阶段,对于不同的图像,只要初始值和控制参数一样,加密用到的密钥也就一样,其密钥不能根据明文像素的不同做到动态选取,并且在置乱和扩散阶段都必须有对应的混沌系统产生密钥,这不但加大了系统的开销,而且降低了图像加密算法的安全性;第四,以往一般都采用低维混沌系统对图像进行加密,低维混沌系统产生的混沌序列只是经过简单的反复迭代形成的,安全性不够好,并且计算机的计算精度也可能导致低维混沌系统的混沌序列周期性比较短,随机性也较差,这都对图像的破解提供了突破口。专利申请号为201310412691.1的中国专利公开了一种基于混沌序列和超混沌系统的彩色图像加密方法,该方法在图像加密的置乱阶段使用一维混沌系统产生的混沌序列对图像像素进行置乱,置乱过程缺乏与明文的联系,扩散阶段利用超混沌系统来产生扩散所用的密钥,加大了系统的开销,增加了硬件的复杂性,其安全性有待提高。
发明内容
为克服以上现有技术的不足,本发明要解决的技术问题是提供一种基于超混沌系统的密钥动态选取的图像加密方法,使其针对不同的明文,其加密密钥也能做到动态选取,并且与以往的置乱方法相比,其像素的置乱位置也会随明文像素的不同而发生改变,一些已经存在的置乱方法虽然与明文也存在联系,但是当图像中某个像素发生改变时,其置乱的效果依旧不能扩散至整幅图像,置乱的效果仅影响像素发生改变的后面像素,而本文通过对图像的反向置乱和反向扩散操作,使得置乱的效果能够扩散至整幅图像,最终使得加密的效果、安全性和抗攻击能力更强,并且更易于硬件实现。
本发明的技术方案是:
一种基于超混沌系统的密钥动态选取的图像加密算法,包括以下步骤:
步骤1.输入图像大小为M×N的灰度图像,并将灰度图像像素按照从左到右,从上到下的顺序排列成一维图像数组P;
步骤2.利用超混沌系统生成混沌序列,对混沌序列进行分组,得到分组向量Ai,i∈[0,5];
步骤3.结合依赖明文的KSSG动态选取机制,根据变量index1=T1%6,i=index1,动态选取用于生成置乱密钥的Ai,T1为根据明文像素计算公式 y 0 = 0 ; if max ( a i = 0 ) , Σ 1 M × N a i M × N × max ( a i ) otherwise . , T1=mod(floor(y0×108),M×N)计算得到的非负整数,其中ai表示原始图像数组P的第i个元素,max(ai)表示取数组P中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;并结合KS动态选取机制,根据变量index2=T2%2+1,动态选取Ai中的元素Ai(index2,S)生成置乱密钥K1(j),其中,S∈[1,M×N],j∈[1,M×N],T2为根据明文像素得到的非负整数,Ai(index2,S)表示Ai中第index2行向量的第S个元素,依据置乱密钥K1(j)对图像数组P进行正向置乱加密,得到正向置乱加密图像数组P1;
步骤4.利用依赖明文的KSSG动态选取机制读取图像数组P中第一个元素P(1),即T1=P(1),根据index1=T1%6,i=index1,选取生成扩散密钥的Ai;结合KS动态选取机制,根据变量index2=T2%2+1,生成扩散密钥K2(j),依据扩散密钥K2(j)对正向置乱加密图像数组P1进行正向扩散加密,得到正向扩散加密图像数组P2;
步骤5.利用依赖明文的KSSG动态选取机制,根据变量index1=T1%6,i=index1,动态选取用于生成置乱密钥的Ai,T1为根据明文像素依据公式 y 0 ′ = 0 ; if max ( a i ′ = 0 ) , Σ 1 M × N a i ′ M × N × max ( a i ′ ) otherwise , T1=mod(floor(y0'×108),M×N)计算得到的非负整数,其中,ai’表示正向扩散图像数组P2的第i个元素,max(ai’)表示取图像数组P2中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;并结合KS动态选取机制,根据变量index2=T2%2+1,生成反向置乱密钥K3(j),依据反向置乱密钥K3(j)对正向扩散加密图像数组P2进行反向置乱加密,得到反向置乱加密图像数组P3;
步骤6.利用依赖明文的KSSG动态选取机制,读取正向扩散加密图像数组P2最后一个元素P2(M×N),T1=P2(M×N),依据index1=T1%6,i=index1,动态选取用于生成反向扩散密钥的Ai;结合KS动态选取机制,根据变量index2=T2%2+1,选取Ai中的元素生成扩散密钥K4(j),根据扩散密钥K4(j)对反向置乱加密图像数组P3进行反向扩散加密,得到反向扩散加密图像数组P4,并将反向扩散加密图像数组P4重组为大小为M×N的数组密文。
上述的,所述步骤2中利用超混沌系统生成混沌序列对混沌序列进行分组包含如下步骤:
步骤2.1采用陈氏超混沌系统,根据表达式 x · = a ( y - x ) y · = - xz + dx + cy z · = xy - bz w · = yz + kw , 将初始值和系统参数带入超混沌系统中迭代m+M×N次,为了避免有害影响,舍去前m(m>500)个值,得到X、Y、Z、W四个向量序列,其中,a、b、c、d和k是超混沌系统的控制参数,X=[x1,x2,...,xM×N]、Y=[y1,y2,...,yM×N]、Z=[z1,z2,...,zM×N]、W=[w1,w2,...,wM×N];
步骤2.2对向量序列X、Y、Z、W进行分组,得到分组向量Ai,i∈[0,5],其中, A 0 = X Y , A 1 = X Z , A 2 = X W , A 3 = Y Z , A 4 = Y W , A 5 = Z W .
上述的,所述步骤3中结合KS动态选取机制,动态选取Ai中的元素Ai(index2,S)生成置乱密钥K1(j),并对P进行正向置乱,还包含如下步骤:
步骤3.1初始化循环变量i、j、T2、P1(0),i=0,j=1,T2=U1,P1(0)=U2
步骤3.2利用KS动态选取机制生成置乱密钥K1(j);
步骤3.3对得到的置乱密钥K1(j),根据修正公式
K1(j)=mod(floor(abs(K1(j)×108)),M×N),进行修正;
步骤3.4根据正向置乱公式, j ′ = j + mod ( K 1 ( j ) + P 1 ( j - 1 ) , M × N - j + 1 ) P ( j ′ ) = P [ X + mod ( K 1 ( j ) + P 1 ( j - 1 ) , M × N - j + 1 ) ] exchange ( P ( j ) , P ( j ′ ) ) P 1 ( j ) = P ( j ) 进行置乱操作,j表示原始明文图像数组的第j个位置,j’表示图像数组第j’个位置,K1(j)表示用于置乱的第j个密钥元素,P1(j)表示置乱图像数组P1第j个位置的元素,P1(j-1)表示置乱图像数组第j-1个位置的元素,其中j∈[1,M×N],j’∈[1,M×N],exchange(a,b)表示将a与b的值相互交换;
步骤3.5判断是否所有的元素已经完成置乱,如果没有完成,则i=i+1,j=j+1,将P1(i)的值赋给T2,跳转到步骤3.2执行,直到i>M×N-1,结束循环,保存得到的正向置乱加密图像数组P1。
上述的,所述步骤4中结合KS动态选取机制,动态选取Ai中的元素Ai(index2,S)生成扩散密钥K2(j),并对P1进行正向扩散,还包含如下步骤:
步骤4.1初始化循环变量i、j、T2、P2(0),i=0,j=1,T2=U3,P2(0)=U4
步骤4.2利用KS动态选取机制生成扩散密钥K2(j);
步骤4.3根据修正公式K2(j)=mod(floor(abs(K2(j)×108)),256),对得到的扩散密钥K2(j)进行修正;
步骤4.4根据正向扩散公式进行扩散操作,其中,P2(j)表示进行扩散操作后的第j位置的像素值,P2(j-1)表示第j-1个位置扩散的像素值,P1(j)表示P1的第j位置的像素值,K2(j)表示用于扩散的第j个密钥;
步骤4.5判断是否所有的元素已经完成扩散,如果没有完成,则i=i+1,j=j+1,将P2(i)的值赋给T2,跳转到步骤4.2执行,直到i>M×N-1,结束循环,保存得到的正向扩散加密图像数组P2。
上述的,所述步骤5中结合KS动态选取机制,动态选取Ai中的元素Ai(index2,S)生成反向置乱密钥K3(j),并对P2进行反向置乱,还包含如下步骤:
步骤5.1初始化循环变量i、j、T2、P3(M×N+1),i=M×N+1,j=M×N,T2=U5,P3(M×N+1)=U6
步骤5.2利用KS动态选取机制生成反向置乱密钥K3(j);
步骤5.3根据修正公式K3(j)=mod(floor(abs(K3(j)×108)),M×N),对得到的反向置乱密钥K3(j)进行修正;
步骤5.4根据反向置乱公式 j ′ = j - mod ( K 3 ( j ) + P 3 ( j + 1 ) , j ) P 2 ( j ′ ) = P 2 [ j - mod ( K 3 ( j ) + P 3 ( j + 1 ) , j ) ] exchange ( P 2 ( j ) , P 2 ( j ′ ) ) P 3 ( j ) = P 2 ( j ) , 进行置乱操作,得到反向置乱加密图像数组P3,其中,j表示正向扩散图像数组的第j位置,j’表示图像数组第j’位置,K3(j)表示用于置乱的第j个密钥元素,P3(j)表示P3的第j位置的元素,P3(j+1)表示P3第j+1位置的元素,加上j∈[1,M×N],j’∈[1,M×N];
步骤5.5判断是否所有的元素已经完成置乱,如果没有完成,则i=i-1,j=j-1,并将P3(i)的值赋给T2,跳转到步骤5.2执行,直到i<=1时结束循环,保存得到反向置乱加密图像数组P3。
上述的,所述步骤6中结合KS动态选取机制,动态选取Ai中的元素Ai(index2,S)生成反向扩散密钥K4(j)并对P3进行反向扩散,还包含如下步骤:
步骤6.1初始化循环变量i、j、T2、P3(M×N+1),i=M×N+1,j=M×N,T2=U7,P4(M×N+1)=U8
步骤6.2利用KS动态选取机制生成反向扩散密钥K4(j);
步骤6.3根据修正公式K4(j)=mod(floor(abs(K4(j)×108)),256),对得到的反向扩散密钥K4(j)进行修正;
步骤6.4根据反向扩散公式进行扩散操作,其中,P4(j)表示扩散后的第j个像素,P4(j+1)表示扩散后的第j+1个像素,P3(j)表示反向置乱数组P3的第j个像素,K4(j)表示用于扩散的第j个密钥;
步骤6.5判断是否所有的元素已经完成扩散,如果没有完成,则i=i-1,j=j-1,将P4(i)的值赋给T2,跳转到步骤6.2执行,直到i<=1结束循环,循环结束后,保存得到的反向扩散加密图像数组P4。
本发明的有益效果是:
(1)本发明通过采用一个超混沌系统,来产生加密算法(置乱和扩散)所需的密钥流元素,克服了以往在置乱阶段和扩散阶段需要分别采用不同的混沌系统来产生密钥的弊端,降低了硬件的复杂性,同时结合KSSG动态选取机制和KS动态选取机制,大大增加了密钥的空间,使得密钥的选取更具随机性。最终使得该算法具有密钥数目多、密钥空间大、密钥随机性更强和密钥敏感性更高的特点,能够有效地抵抗穷举攻击,提高了算法的安全性。
(2)本发明在置乱阶段对图像像素进行位置置乱时,置乱位置与明文像素紧密相关,针对不同的图像,即使初始值和控制参数一样,其置乱的位置也不一样。这克服了以往图像加密算法在置乱阶段置乱位置与明文像素关联甚小的弊端,进一步提高了算法的安全性;
(3)本发明在扩散阶段所用到的密钥都依赖于明文,密钥能够根据明文图像像素值的不同而做到动态选取,针对不同的明文图像,密钥也随之发生变化,从而做到“一文一密”,可以有效抵抗选择明文和选择密文攻击,更进一步提高了算法的安全性。
(4)本发明在经过一轮加密后,克服了以往置乱阶段置乱效果存在局限性的弊端,一些已经存在的置乱方法虽然与明文也存在联系,但是当图像中的某一个元素发生改变时,置乱的效果仅影响像素发生改变的后面像素,而不能将这种效果扩散至整幅图像,而本文通过对图像的反向操作,使得置乱的效果能够扩散至整幅图像,极大的提高了算法的安全性。
附图说明
图1为本发明基于超混沌系统的密钥动态选取的图像加密算法的流程图;
图2为本发明的KS动态选取机制示意图表;
图3为本发明的置乱原理示意图表;
图4为本发明的正向置乱流程示意图;
图5为本发明的正向扩散流程示意图;
图6为本发明的反向置乱流程示意图;
图7为本发明的反向扩散流程示意图;
图8中:(a)为实施例二所用原始图像,(b)为加密后图像,(c)为密钥正确时的解密图像,(d)为参数密钥错误时的解密图像,(e)为图像密钥错误时的解密图像;
图9中:(a)为实施例二所用原始图像,(b)为加密图像,(c)为原始图像的直方图,(d)为加密图像的直方图;
图10中:(a)为实施例二所用原始图像水平方向上相邻像素的相关性分析图,(b)为加密图像水平方向上相邻像素的相关性分析图;
图11中:(a)为实施例三所用原始图像,(b)为加密后图像,(c)为密钥正确时的解密图像,(d)为密钥错误时的解密图像,(e)为密钥错误时的解密图像;
图12中:(a)为实施例三所用原始图像,(b)为加密图像,(c)为原始图像的直方图,(d)为加密图像的直方图;
图13中:(a)为实施例三所用原始图像水平方向上相邻像素的相关性分析图,(b)为加密图像水平方向上相邻像素的相关性分析图。
具体实施方式
依赖明文的KSSG动态选取机制:规定一个变量index1,index1=T1%6,T1表示根据明文像素计算得到的一个非负整整。如果index1=T1%6的值为0,选取A0;index1=T1%6的值为1,选取A1;index1=T1%6的值为2,选取A2;index1=T1%6的值为3,选取A3;index1=T1%6的值为4选取A4;index1=T1%6的值为5,选取A5
KS动态选取机制:规定一个变量index2,index2=T2%2+1。这里T2表示根据明文像素计算得到的一个非负整整。如果index2=T2%2+1的值为1,选取Ai[1,S1],index2=T2%2+1的值为2,选取Ai[2,S2],其中i∈[0,5],S1∈[1,262144],S2∈[1,262144];Ai表示通过依赖明文的KSSG动态选取机制选取的向量组合;Ai[1,S1]表示Ai中第一行向量的第S1个元素,Ai[2,S2]表示Ai中第二行向量的第S2个元素。
下面结合附图和技术方案对本发明作进一步详细的说明,并通过优选的实施例详细说明本发明的实施方式,但本发明的实施方式并不限于此。
实施例一,一种基于超混沌系统的密钥动态选取的图像加密算法,包括以下步骤:
步骤1.输入图像大小为M×N的灰度图像,并将灰度图像像素按照从左到右,从上到下的顺序排列成一维图像数组P;
步骤2.利用超混沌系统生成混沌序列,并对混沌序列进行分组,得到分组向量Ai,i∈[0,5];
步骤3.结合依赖明文的KSSG动态选取机制,根据变量index1=T1%6,i=index1,动态选取用于生成置乱密钥的Ai,T1为根据明文像素计算公式 y 0 = 0 ; if max ( a i = 0 ) , &Sigma; 1 M &times; N a i M &times; N &times; max ( a i ) otherwise . , T1=mod(floor(y0×108),M×N)计算得到的非负整数,其中,ai表示原始图像数组P的第i个元素,max(ai)表示取数组P中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;并结合KS动态选取机制,根据变量index2=T2%2+1,动态选取Ai中的元素Ai(index2,S)生成置乱密钥K1(j),T2为根据明文像素得到的非负整数,Ai(index2,S)表示Ai中第index2行向量的第S个元素,依据置乱密钥K1(j)对图像数组P进行正向置乱加密,得到正向置乱加密图像数组P1:
步骤4.利用依赖明文的KSSG动态选取机制读取图像数组P中第一个元素P(1),即T1=P(1),根据index1=T1%6,i=index1,选取生成扩散密钥的Ai;结合KS动态选取机制,根据变量index2=T2%2+1,生成扩散密钥K2(j),依据扩散密钥K2(j)对正向置乱加密图像数组P1进行正向扩散加密,得到正向扩散加密图像数组P2;
步骤5.利用依赖明文的KSSG动态选取机制,根据变量index1=T1%6,i=index1,动态选取用于生成置乱密钥的Ai,T1为根据明文像素依据公式
y 0 &prime; = 0 ; if max ( a i &prime; = 0 ) , &Sigma; 1 M &times; N a i &prime; M &times; N &times; max ( a i &prime; ) otherwise , T1=mod(floor(y0'×108),M×N)计算得到的非负整数,其中,ai’表示正向扩散图像数组P2的第i个元素,max(ai’)表示取图像数组P2中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;并结合KS动态选取机制,根据变量index2=T2%2+1,生成反向置乱密钥K3(j),依据反向置乱密钥K3(j)对正向扩散加密图像数组P2进行反向置乱加密,得到反向置乱加密图像数组P3;
步骤6.利用依赖明文的KSSG动态选取机制,读取正向扩散加密图像数组P2最后一个元素P2(M×N),T1=P2(M×N),依据index1=T1%6,i=index1,动态选取用于生成反向扩散密钥的Ai;结合KS动态选取机制,根据变量index2=T2%2+1,选取Ai中的元素生成扩散密钥K4(j),根据扩散密钥K4(j)对反向置乱加密图像数组P3进行反向扩散加密,得到反向扩散加密图像数组P4,并将反向扩散加密图像数组P4重组为大小M×N的数组密文。
实施例二:结合具体的图像对本发明技术方案做进一步的介绍,参见图1所示,本实施例中采用的编程软件为Matlab R2014a,选取附图8中的(a)所示的大小为512×512的lena灰度图像为实验对象,对lena灰度图像加密的过程如下:
1.输入原始大小为512×512的lena灰度图像,用I0=imread(‘lena.bmp’)读取图像信息。然后将图像I0按照从左到右、从上到下的顺序排列成一维图像数组,记为P。
2.本文采用陈氏超混沌系统来产生用于加密的密钥,其方程表达式如下:
x &CenterDot; = a ( y - x ) y &CenterDot; = - xz + dx + cy z &CenterDot; = xy - bz w &CenterDot; = yz + kw - - - ( 1 )
这里a、b、c、d和k是超混沌系统的控制参数,当a=36、b=3、c=28、d=-16并且当k处于区间[-0.7,0.7]时,系统处于超混沌状态。
3.选取初始值x0=1、y0=2、z0=3和w0=4,选择系统参数k=0.5,迭代入陈氏超混沌系统生成四组长度为[1000+512×512](m>500)的实值混沌序列,抛弃前m=1000个值,从而得到X、Y、Z、W四个向量序列,其中,a、b、c、d和k是超混沌系统的控制参数,X=[x1,x2,...,xM×N]、Y=[y1,y2,...,yM×N]、Z=[z1,z2,...,zM×N]、W=[w1,w2,...,wM×N]。然后将得到的四组混沌序列向量X、Y、Z、和W进行分组。
记:将a、b、c、d、x0、y0、z0、w0、k、m作为密钥。
4.根据依赖明文的KSSG动态选取机制选取步骤3中的Ai
依赖明文的KSSG动态选取机制:
规定一个变量index1,index1=T1%6,T1表示根据明文像素计算得到的一个非负整整。如果index1=T1%6的值为0,选取A0;index1=T1%6的值为1,选取A1;index1=T1%6的值为2,选取A2;index1=T1%6的值为3,选取A3;index1=T1%6的值为4选取A4;index1=T1%6的值为5,选取A5
正向置乱阶段T1的值由下式计算得到:
y 0 = 0 ; if max ( a i = 0 ) , &Sigma; 1 512 &times; 512 a i 512 &times; 512 &times; max ( a i ) otherwise . - - - ( 2 )
T1=mod(floor(y0×108),512×512)             (3)
其中公式(2)中ai表示原始图像数组P的第i个元素,max(ai)表示取数组P中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;
5.根据KS动态选取机制,选取用于正向置乱加密的密钥流元素。
KS动态选取机制:
规定一个变量index2,index2=T2%2+1。这里T2表示根据明文像素计算得到的一个非负整数。如果index2=T2%2+1的值为1,选取Ai(1,S1),index2=T2%2+1的值为2,选取Ai(2,S2),其中i∈[0,5],S1∈[1,262144],S2∈[1,262144]。Ai表示通过依赖明文的KSSG动态选取机制选取的向量组合。Ai(1,S1)表示Ai中第一行向量的第S1个元素,Ai(2,S2)表示Ai中第二行向量的第S2个元素。
列举案例具体说明如何利用KS动态选取机制来选取密钥流元素。假设通过KSSG动态选取机制选取A0那么A0(1,S1)就相当于A0中第一行向量X的第S1个元素,A0(1,S1)就相当于A0中第二行向量Y的第S2个元素。
参考附图中的图2所示,图中第一行T1,T2,...,T262144分别表示对明文数组P进行第一次,第二次,...,第262144次置乱后的元素。当进行第i次置乱时,T2会获得其前一次置乱的元素值。第二行就表示每次循环时T2得到的值,T0表示事先给定的初始值。第三行和第四行表示的是A0中的两个行向量。第五行的index2表示KS动态选取机制中的变量,根据index2的值可以决定是从X中还是从Y中选取密钥元素。最后一行表示最终选取的密钥流元素。
6.参见图4,对原始图像数组P进行正向置乱,得到正向置乱图像数组P1的步骤如下:
此时U1=15,U2=21。流程图中i=0、j=1表示的是对循环变量设定初始值,T2=U1表示对KS动态选取机制中的变量T2设定的初始值,P1(0)=U2表示在下面要涉及的置乱公式中设定的初始值,K1(j)表示通过依赖明文的KS动态选取机制生成的第j个密钥,P1(j)表示置乱后的第j个像素,P1表示全部像素置乱完成后的一维置乱数组,其中i∈[0,262143],j∈[0,262144]。
详细步骤如下:
第一步:对相应的变量做初始化设置,令i=0、j=1、T2=U1、P1(0)=U2
第二步:利用KS动态选取机制生成密钥K1(j)。其中,index2=T2%2+1,T2的值在每次循环的时候会更新。
第三步:对得到的密钥进行修正,其修正公式如下:
K1(j)=mod(floor(abs(K1(j)×108)),262144)             (4)
这里floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算,abs(a)表示对a取绝对值。
第四步:根据下面的正向置乱公式进行置乱操作,并将得到的P1(j)保存下来。
j &prime; = j + mod ( K 1 ( j ) + P 1 ( j - 1 ) , 512 &times; 512 - j + 1 ) P ( j &prime; ) = P [ j + mod ( K 1 ( j ) + P 1 ( j - 1 ) , 512 &times; 512 - j + 1 ) ] exchange ( P ( j ) , P ( j &prime; ) ) P 1 ( j ) = P ( j ) - - - ( 5 )
这里j表示图像的第j位置,j’表示图像的第j’位置,K1(j)表示用于置乱的第j个密钥元素,P1(j)表示置乱图像P1的第j位置的元素,P1(j-1)表示置乱图像P1的第j-1个位置的元素,其中j∈[1,262144],j’∈[1,262144]。exchange(a,b)表示将a与b的值相互交换,mod(a,b)表示a对b的取模运算。特别的是,这里P1(0)为事先给定一个初始值,记P1(0)=U2
其置乱原理可参考附图中的图表3:
这里n=512×512,P(f1)表示原始图像数组P第一个位置的像素与第f1个位置的像素交换后的像素值,其中f1∈[2,n];P(f2)表示图像数组P第二个位置的像素与第f2个位置的像素交换后的像素值,其中f2∈[3,n],此时的图像数组P是在第一次像素交换的基础上得来的;P(f3)表示数组图像P第三个位置的像素与第f3个位置的像素交换后的像素值,其中f3∈[4,n],此时的图像数组P是在第二次像素交换的基础上得来的;也就是说对于任意的P(fm),m∈[1,262144],表示图像数组P第m个位置的像素与第fm个位置的像素交换后的像素值,其中fm∈[m+1,n],此时的图像数组P是在第m-1次像素交换的基础上得来的;当然这里fm具体是多少,还要根据置乱公式中的j’来决定,fm=j’。从置乱公式和上表中我们可以看出,在fm位置的元素一旦被交换到第m位置,那么在m位置处的像素值就被固定了下来,而被交换到第fm个位置的像素在以后的交换中还可以变换位置。
第五步:判断是否所有的元素已经完成置乱,如果没有完成,i=i+1,j=j+1,然后将P1(i)的值赋给T2,跳转到第二步接着执行,直到i>262143结束循环,最后将得到的置乱数组P1保存下来。
7.根据依赖明文的KSSG动态选取机制选取步骤(3)中的Ai
index1=T1%6,此时的T1是从原始图像数组第一个元素P(1)中获得的,即T1=P(1),P(1)的值为159,最后根据index1的值选取Ai。P(1)为本文加密算法的一个密钥。
8.参见图5对正向置乱图像数组P1进行正向扩散,得到正向扩散图像数组P2的步骤如下:
此时U3=16,U4=98。流程图中i=0、j=1表示的是对循环变量设定初始值,T2=U3表示对KS动态选取机制中的变量T2设定的初始值,P2(0)=U4表示在下面的扩散公式中设定的初始值,K2(j)表示通过KS动态选取机制生成的第j个密钥,P2(j)表示扩散后的第j个像素,P2表示全部像素扩散完成后的一维扩散数组,其中i∈[0,262143],j∈[1,262144]。
详细步骤如下:
第一步:对相应的变量做初始化设置,令i=0、j=1、T2=U3、P2(0)=U4
第二步:利用KS动态选取机制生成密钥K2(j)。其中,index2=T2%2+1,T2的值在每次循环的时候会更新。
第三步:对得到的密钥进行修正,其修正公式如下:
K2(j)=mod(floor(abs(K2(j)×108)),256)          (6)
这里floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算,abs(a)表示对a取绝对值。
第四步:根据下面的正向扩散公式进行扩散操作,并将得到的P2(j)保存下来。
P 2 ( j ) = P 2 ( j - 1 ) &CirclePlus; P 1 ( j ) &CirclePlus; K 2 ( j ) - - - ( 7 )
这里P2(j)表示扩散后的第j个像素,P2(j-1)表示扩散后的第j-1个像素,P1(j)表示置乱数组P1的第j个像素,K2(j)表示用于扩散的第j个密钥。
第五步:判断是否所有的元素已经完成扩散,如果没有完成,i=i+1,j=j+1,然后将P2(i)的值赋给T2,跳转到第二步接着执行,直到i>262143结束循环,最后将得到的扩散数组P2保存下来。
上面完成了图像的正向置乱加密和正向扩散加密,为了能够使图像的加密效果更好,下面我们再从反方向对图像进行反向置乱加密和反向扩散加密。反向置乱加密和反向扩散加密的原理和步骤与正向置乱加密和正向扩散加密的原理和步骤是一样的,只是其中的部分参数和初始值会发生相应的变化,接下来将对变化的部分作出详细的说明。
9.根据依赖明文的KSSG动态选取机制选取步骤(3)中的Ai
index1=T1%6,此时T1值的选取由下式求得:
y 0 &prime; = 0 ; if max ( a i &prime; = 0 ) , &Sigma; 1 512 &times; 512 a i &prime; 512 &times; 512 &times; max ( a i &prime; ) otherwise . - - - ( 8 )
T1=mod(floor(y0'×108),262144)            (9)
其中公式(8)中ai’表示正向扩散图像数组P2的第i个元素,max(ai’)表示取图像数组P2中的最大值。Floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算。
10.参见图6,对正向扩散图像数组P2进行反向置乱,得到反向置乱图像数组P3的步骤如下:
此时U5=103,U6=62,M×N=262144。流程图中i=M×N+1=262145,j=M×N=262144,表示的是对循环变量设定初始值,T2=U5表示对KS动态选取机制中的变量T2设定的初始值,P3(M×N+1)=U6表示在下面要涉及的置乱公式中设定的初始值,K3(j)表示通过KS动态选取机制生成的第j个密钥,P3(j)表示置乱后的第j个像素,P3表示对数组P2全部像素置乱完成后的一维置乱数组。
详细步骤如下:
第一步:对相应的变量做初始化设置,令i=262145、T2=U5、P3(262145)=U6
第二步:利用KS动态选取机制生成密钥K3(j)。其中,index2=T2%2+1,T2的值在每次循环的时候会更新。
第三步:对得到的密钥进行修正,其修正公式如下:
K3(j)=mod(floor(abs(K3(j)×108)),512×512)         (10)
floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算,abs(a)表示对a取绝对值。
第四步:根据下面的反向置乱公式进行置乱操作,并将得到的P3(j)保存下来。
j &prime; = j - mod ( K 3 ( j ) + P 3 ( j + 1 ) , j ) P 2 ( j &prime; ) = P 2 [ j - mod ( K 3 ( j ) + P 3 ( j + 1 ) , j ) ] exchange ( P 2 ( j ) , P 2 ( j &prime; ) ) P 3 ( j ) = P 2 ( j ) - - - ( 11 )
这里j表示图像数组的第j个位置,j’表示图像数组第j’个位置,K3(j)表示用于置乱的第j个密钥元素,P3(j)表示置乱图像P3的第j个位置的元素,P3(j+1)表示置乱图像P3的第j+1个位置的元素,其中j∈[1,262144],j’∈[1,262144]。exchange(a,b)表示将a与b的值相互交换,mod(a,b)表示a对b的取模运算。P3(262145)为事先给定一个初始值,记P3(262145)=U6。其置乱原理可参考正向置乱时的原理图。
第五步:判断是否所有的元素已经完成置乱,如果没有完成,i=i-1,j=j-1,然后将P3(i)的值赋给T2,跳转到第二步接着执行,直到i<=1时结束循环,最后将得到的置乱数组P3保存下来。
11.根据依赖明文的KSSG动态选取机制选取步骤(3)中的Ai
index1=T1%6,此时的T1是从正向扩散图像数组最后一个元素P2(262144)中获得的,即T1=P2(262144),P2(262144)的值为246,最后根据index2的值选取Ai。P2(262144)为本文加密算法的一个密钥。
12.参见图7对反向置乱图像数组P3进行反向扩散加密,得到反向扩散图像数组P4步骤如下:
此时U7=69,U8=47,M×N=262144,流程图中i=M×N+1=262145,j=M×N=262144表示的是对循环变量设定初始值,T2=U7表示对KS动态选取机制中的变量T2设定的初始值,P4(262145)=U8表示在下面要涉及的置乱公式中设定的初始值,K4(j)表示通过KS动态选取机制生成的第j个密钥,P4(j)表示扩散后的第j个像素,P4表示对数组P3全部像素扩散完成后的一维扩散数组。
详细步骤如下:
第一步:对相应的变量做初始化设置,令i=262145、j=262144、T2=U7、P2(262145)=U8
第二步:利用KS动态选取机制生成密钥K4(j)。其中,index2=T2%2+1,T2的值在每次循环的时候会更新。
第三步:对得到的密钥进行修正,其修正公式如下:
K4(j)=mod(floor(abs(K4(j)×108)),256)            (12)
这里floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算,abs(a)表示对a取绝对值。
第四步:根据下面的反向扩散公式进行扩散操作,并将得到的P4(j)保存下来。
P 4 ( j ) = P 4 ( j + 1 ) &CirclePlus; P 3 ( j ) &CirclePlus; K 4 ( j ) - - - ( 13 )
这里P4(j)表示扩散后的第j个像素,P4(j+1)表示扩散后的第j+1个像素,P3(j)表示反向置乱数组P3的第j个像素,K4(j)表示用于扩散的第j个密钥。
第五步:判断是否所有的元素已经完成扩散,如果没有完成,i=i-1,j=j-1,然后将P4(i)的值赋给T2,跳转到第二步接着执行,直到i<=1结束循环,最后将得到的扩散数组P4保存下来。
13.最后将反向扩散加密图像数组P4重组为大小为M×N的数组,得到密文。
一个好的加密算法应该能够抵抗各种攻击,密钥空间足够大,密钥的敏感性足够高,下面对本发明的图像加密算法进行安全性分析:
1.密钥空间足够大,足以抵抗穷举攻击
混沌系统对初始条件和控制参数极其的敏感,任何微小的初始偏差都会被指数式放大,因此混沌加密算法的安全性与密钥空间有很大关系。一般来说,密钥空间越大,其抵抗穷举攻击的能力也就越强。本文密钥具体包括:1)超混沌系统的初始值x0、y0、z0、w0及系统参数a、b、c、d、k。2)舍弃的超混沌序列个数m。3)在正向扩散和反向扩散阶段用于确定T1值的P(1)、P2(262144)。4)用于正向置乱和反向置乱公式中的初始值U2和U6。5)用于正向置乱密钥选取和反向置乱密钥选取中的初始值U1和U5。6)用于正向扩散公式和反向扩散公式中的初始值U4和U8。7)用于正向扩散密钥选取和反向扩散密钥选取中的初始值U3和U7。若设置精度为10-14,则密钥空间超过10126,可见密钥空间足够大,能够有效的抵御穷举攻击。
2.密钥敏感性高
密钥的敏感性就是对密钥进行轻微的改变后,其密文也会发生显著的变化。混沌加密的安全性,在于它对初始值的敏感性,也就是说,当攻击者用一个跟初始值很相近的数据进行图像破解时,也不能恢复出原始的图像。
附图8中(a)表示的是原始图像,图8中(b)表示的是最终的加密图像,图8中(c)是正确解密后的图像。图8中(d)、8中(e)为初始值敏感性实验,其中初始值x0=1,y0=2,z0=3,w0=4,U1=15,U2=21,U3=16,U4=98,U5=103,U6=62,U7=69,U8=47,P(1)=159,P(262144)=246及系统参数a=36,b=3,c=28,d=-16,k=0.5。图8中(d)是当其余初始值不变,令系统参数k=0.50000000001时的解密图像。图8中(e)是当其余初始值不变,令初始值y0=2.00000000001时的解密图像。由此可见,此加密算法对密钥的敏感性极高,加密安全性也更好。
3.密文图像的灰度直方图平滑且均匀,抗统计分析攻击能力强。
直方图描述了数字图像中所有灰度级的像素出现的频率。一个好的图像加密算法在对图像进行加密后,得到的密文图像的灰度直方图应该是平滑且均匀的,这样可以防止窃密者通过直方图的漏洞来破解图像。附图9中(a)表示原始图像;9中(c)表示原始图像的直方图;9中(b)表示加密图像;9中(d)表示加密图像的直方图。从图中可以看出,加密前图像的像素值分布极不均匀,而加密后的像素值平滑且均匀的分布在[0,255]中,能够有效抵御统计分析的攻击。
4.原始图像相邻像素高度相关,加密后图像相邻像素相关系数接近于0,基本不相关。
为了分析明文图像和密文图像相邻像素的相关性,引入相邻像素的相关系数。相关系数越大,说明相邻像素的相关性越大;反之,相邻像素的相关性越小。从图像中选取20000对水平方向相邻像素对,20000对垂直方向相邻像素对和20000对对角方向相邻像素对,用如下公式定量计算相邻像素的相关系数:
R x , y = cov ( x , y ) D ( x ) D ( y ) , E ( x ) = 1 N &Sigma; i = 1 N x i , D ( x ) = 1 N &Sigma; i = 1 N ( x i - E ( x ) ) 2 cov ( x , y ) = 1 N &Sigma; i = 1 N ( x i - E ( x ) ) ( y i - E ( y ) )
式中,x、y分别表示图像中相邻两个像素的像素值,D(x)表示像素值的均方差,E(x)表示像素值的平均值,cov(x,y)表示相关函数,Rx,y表示相邻两个像素的相关系数。
其中点(x,y)处测试结果如附图10所示。图10(a)为原始图像水平方向上相邻像素的相关性分析图,10(b)为加密图像水平方向上相邻像素的相关性分析图。
明文、密文相关性对比见下表:
可以看出明文图像相邻像素是高度相关的,相关系数接近1。而加密图像的相邻相关系数接近于0,相邻像素间相关性明显减小,此时明文的统计特性已被扩散到随机的密文中,可以有效抵御统计攻击。
5.NPCR大于99%,UACI大于33%,抗差分攻击能力强。
算法对明文的敏感性越强,抵抗差分攻击的能力也就越强,可以用像素数改变率NPCR(Number of Pixels Change Rate)和归一化像素值平均改变强度UACI(Unified AverageChanging Intensity)度量加密算法对明文的敏感性。计算公式如下:
NPCR = &Sigma; i , j D ( i , j ) M &times; N &times; 100 %
UACI = 1 M &times; N [ &Sigma; i , j | C 1 ( i , j ) - C 2 ( i , j ) | 255 ] &times; 100 %
式中,M和N表示图像的行数和列数,C1表示原来的密文图像,C2表示改变明文后得到的密文图像,C1(i,j)表示明文图像在坐标(i,j)处的像素值,C2(i,j)表示密文图像在坐标(i,j)处的像素值。D表示和密文图像大小一样的矩阵,D(i,j)的值由C1(i,j)和C2(i,j)决定。若C1(i,j)=C2(i,j),那么D(i,j)=0;若C1(i,j)≠C2(i,j),那么D(i,j)=1。
本发明中,将原始明文图像的第十个像素值改为200后得到一个新的明文图像,然后将这两个图像用同样的密钥加密形成相应的密文图像C1和C2。计算密文图像的NPCR和UACI值如下表所示,可以看到NPCR的值大于99%,UACI的值大于33%。这表明,即使对原始图像做微小的变化,通过本算法进行加密后,密文图像也会有明显的差异。因此,本算法可以有效抵抗差分攻击。
密文图像的NPCR和UACI值:
密文图像
NPCR 0.9961
UACI 0.3346
6.密文图像的信息熵非常接近理想值8,加密算法安全性好。
信息熵是反映信息随机性的重要度量指标,信息源m的信息熵计算公式如下:
H ( m ) = &Sigma; i = 0 2 n - 1 p ( m i ) log 1 p ( m i )
其中,p(mi)表示符号mi出现的概率,2n是信息源m的总状态数。信息加密之后,信息熵的期望值为8。如果加密图像信息熵非常接近8,则表明该密文图像接近随机分布。
对标准512×512lena图像用本发明算法进行加密,得到密文图像的信息熵为7.9991,非常接近理想值8,这表明本发明提供的加密算法具有很好的安全性。
实施例三:在本实施例中,采用的编程软件为Matlab R2014a,选取附图11中(a)所示的大小为256×205的boats灰度图像为实验对象,对该图像加密的过程如下:
(1)输入原始大小为256×205的boats灰度图像,用I0=imread(‘boats.bmp’)读取图像信息。然后将图像I0按照从左到右、从上到下的顺序排列成一维图像数组,记为P。
(2)利用超混沌系统生成混沌序列,然后对混沌序列进行分组。
(3)结合依赖明文的KSSG动态选取机制和KS动态选取机制生成置乱密钥,对原始明文图像数组P进行正向置乱加密,得到图像数组,记为P1。
(4)结合依赖明文的KSSG动态选取机制和KS动态选取机制生成扩散密钥,对图像数组P1进行正向扩散加密,得到图像数组,记为P2。
(5)结合依赖明文的KSSG动态选取机制和KS动态选取机制生成置乱密钥,对图像数组P2进行反向置乱加密,得到图像数组,记为P3。
(6)结合依赖明文的KSSG动态选取机制和KS动态选取机制选取扩散密钥,对图像数组P3进行反向扩散加密,得到图像数组,记为P4。将P4重组为大小为M×N的数组,即为密文
具体步骤可参考实施例二,下面对本发明的图像加密算法进行安全性分析:
1.密钥空间大,足以抵抗穷举攻击
密钥与实施例1的密钥相同。具体包括:1)超混沌系统的初始值x0、y0、z0、w0及系统参数a、b、c、d、k。2)舍弃的超混沌序列个数m。3)在正向扩散和反向扩散阶段用于确定T1值的P(1)、P2(52480)。4)用于正向置乱和反向置乱公式中的初始值U2和U6。5)用于正向置乱密钥选取和反向置乱密钥选取中的初始值U1和U5。6)用于正向扩散公式和反向扩散公式中的初始值U4和U8。7)用于正向扩散密钥选取和反向扩散密钥选取中的初始值U3和U7。若设置精度为10-14,密钥空间超过10126,可见密钥空间足够大,能够做到有效的抵御各种攻击。
2.密钥敏感性高
密钥的敏感性就是对密钥进行轻微的改变后,其密文也会发生显著的变化。混沌加密的安全性,在于它对初始值的敏感性,也就是说,当攻击者用一个跟初始值很相近的数据进行图像破解时,也不能恢复出原始的图像。
附图11中(a)表示的是原始图像,图11中(b)表示的是最终的加密图像,图11中(c)是正确解密后的图像。图11中(d)、图11中(e)为初始值敏感性实验,其中初始值x0=1,y0=2,z0=3,w0=4,U1=15,U2=21,U3=16,U4=98,U5=103,U6=62,U7=69,U8=47,P(1)=15,P(52480)=13及系统参数a=36,b=3,c=28,d=-16,k=0.5。图11(d)是当其它初始值不变,令系统参数k=0.50000000001时的解密图像。图11中(e)是当其它初始值不变,令初始值y0=2.00000000001时的解密图像。由此可见,此加密算法对密钥的敏感性极高,加密安全性也更好。
3.密文图像的灰度直方图平滑且均匀,抗统计分析攻击能力强。
直方图描述了数字图像中所有灰度级的像素出现的频率。一个好的图像加密算法在对图像进行加密后,得到的密文图像的灰度直方图应该是平滑且均匀的,这样可以防止窃密者通过直方图的漏洞来破解图像。附图12中(a)表示原始图像,图12中(c)表示原始图像的直方图,图12中(b)表示加密图像,图12中(d)表示加密图像的直方图。从图中可以看出,加密前图像的像素值分布极不均匀,而加密后的像素值平滑且均匀的分布在[0,255]中,能够有效抵御统计分析的攻击。
4.原始图像相邻像素高度相关,加密后图像相邻像素相关系数接近于0,基本不相关。
为了分析明文图像和密文图像相邻像素的相关性,引入相邻像素的相关系数。相关系数越大,说明相邻像素的相关性越大;反之,相邻像素的相关性越小。从图像中选取20000对水平方向相邻像素对,20000对垂直方向相邻像素对和20000对对角方向相邻像素对,用如下公式定量计算相邻像素的相关系数:
R x , y = cov ( x , y ) D ( x ) D ( y ) , E ( x ) = 1 N &Sigma; i = 1 N x i , D ( x ) = 1 N &Sigma; i = 1 N ( x i - E ( x ) ) 2 cov ( x , y ) = 1 N &Sigma; i = 1 N ( x i - E ( x ) ) ( y i - E ( y ) )
式中,x、y分别表示图像中相邻两个像素的像素值,D(x)表示像素值的均方差,E(x)表示像素值的平均值,cov(x,y)表示相关函数,Rx,y表示相邻两个像素的相关系数。
其中点(x,y)处测试结果如附图13所示。图13中(a)为原始图像水平方向上相邻像素的相关性分析图,图13中(b)为加密图像水平方向上相邻像素的相关性分析图。
明文、密文相关性对比见下表:
可以看出明文图像相邻像素是高度相关的,相关系数接近1。而加密图像的相邻相关系数接近于0,相邻像素间相关性明显减小,此时明文的统计特性已被扩散到随机的密文中,可以有效抵御统计攻击。
5.NPCR大于99%,UACI大于33%,抗差分攻击能力强。
算法对明文的敏感性越强,抵抗差分攻击的能力也就越强,可以用像素数改变率NPCR(Number of Pixels Change Rate)和归一化像素值平均改变强度UACI(Unified AverageChanging Intensity)度量加密算法对明文的敏感性。计算公式如下:
NPCR = &Sigma; i , j D ( i , j ) M &times; N &times; 100 %
UACI = 1 M &times; N [ &Sigma; i , j | C 1 ( i , j ) - C 2 ( i , j ) | 255 ] &times; 100 %
式中,M和N表示图像的行数和列数,C1表示原来的密文图像,C2表示改变明文后得到的密文图像,C1(i,j)表示明文图像在坐标(i,j)处的像素值,C2(i,j)表示密文图像在坐标(i,j)处的像素值。D表示和密文图像大小一样的矩阵,D(i,j)的值由C1(i,j)和C2(i,j)决定。若C1(i,j)=C2(i,j),那么D(i,j)=0;若C1(i,j)≠C2(i,j),那么D(i,j)=1。
本发明中,将原始明文图像的第十个像素值改为200后得到一个新的明文图像,然后将这两个图像用同样的密钥加密形成相应的密文图像C1和C2。计算密文图像的NPCR和UACI值如下表所示,可以看到NPCR的值大于99%,UACI的值大于33%。这表明,即使对原始图像做微小的变化,通过本算法进行加密后,密文图像也会有明显的差异。因此,本算法可以有效抵抗差分攻击。
密文图像的NPCR和UACI值:
密文图像
NPCR 0.9963
UACI 0.3360
6.密文图像的信息熵非常接近理想值8,加密算法安全性好。
信息熵是反映信息随机性的重要度量指标,信息源m的信息熵计算公式如下:
H ( m ) = &Sigma; i = 0 2 n - 1 p ( m i ) log 1 p ( m i )
其中,p(mi)表示符号mi出现的概率,2n是信息源m的总状态数。信息加密之后,信息熵的期望值为8。如果加密图像信息熵非常接近8,则表明该密文图像接近随机分布。
对标准256×205boats图像用本发明算法进行加密,得到密文图像的信息熵为7.9963,非常接近理想值8,这表明本发明提供的加密算法具有很好的安全性。
由上述实施例可知,本发明提供的加密算法可对M=N或M≠N的灰度图像进行高安全的加密,在信息加密领域具有广阔的应用前景。
上面结合附图对本发明优选的具体实施方式和实施例作了详细说明,但是本发明并不限于上述实施方式和实施例,在本领域技术人员所具备的知识范围内,还可以在不脱离本发明构思的前提下做出各种变化。

Claims (6)

1.一种基于超混沌系统的密钥动态选取的图像加密算法,其特征在于:包括以下步骤:
步骤1.输入图像大小为M×N的灰度图像,并将灰度图像像素按照从左到右,从上到下的顺序排列成一维图像数组P;
步骤2.利用超混沌系统生成混沌序列,对混沌序列进行分组,得到分组向量Ai,i∈[0,5];
步骤3.结合依赖明文的KSSG动态选取机制,根据变量index1=T1%6,i=index1,动态选取用于生成置乱密钥的Ai,T1为根据明文像素计算公式 y 0 = 0 ; if max ( a i = 0 ) , &Sigma; 1 M &times; N a i M &times; N &times; max ( a i ) otherwise . , T1=mod(floor(y0×108),M×N)计算得到的非负整数,其中,ai表示原始图像数组P的第i个元素,max(ai)表示取数组P中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;并结合KS动态选取机制,根据变量index2=T2%2+1,动态选取Ai中的元素Ai(index2,S)生成置乱密钥K1(j),其中,S∈[1,M×N],j∈[1,M×N],T2为根据明文像素得到的非负整数,Ai(index2,S)表示Ai中第index2行向量的第S个元素,依据置乱密钥K1(j)对图像数组P进行正向置乱加密,得到正向置乱加密图像数组P1;
步骤4.利用依赖明文的KSSG动态选取机制读取图像数组P中第一个元素P(1),即T1=P(1),根据index1=T1%6,i=index1,选取生成扩散密钥的Ai;结合KS动态选取机制,根据变量index2=T2%2+1,生成扩散密钥K2(j),依据扩散密钥K2(j)对正向置乱加密图像数组P1进行正向扩散加密,得到正向扩散加密图像数组P2;
步骤5.利用依赖明文的KSSG动态选取机制,根据变量index1=T1%6,i=index1,动态选取用于生成置乱密钥的Ai,T1为根据明文像素依据公式 y 0 &prime; = 0 ; if max ( a i &prime; = 0 ) , &Sigma; 1 M &times; N a i &prime; M &times; N &times; max ( a i &prime; ) otherwise , T1=mod(floor(y0'×108),M×N)计算得到的非负整数,其中,ai'表示正向扩散图像数组P2的第i个元素,max(ai')表示取图像数组P2中的最大值,floor(x)表示小于或等于x的最大整数,mod(a,b)表示a对b的取模运算;并结合KS动态选取机制,根据变量index2=T2%2+1,生成反向置乱密钥K3(j),依据反向置乱密钥K3(j)对正向扩散加密图像数组P2进行反向置乱加密,得到反向置乱加密图像数组P3;
步骤6.利用依赖明文的KSSG动态选取机制,读取正向扩散加密图像数组P2最后一个元素P2(M×N),T1=P2(M×N),依据index1=T1%6,i=index1,动态选取Ai;结合KS动态选取机制,根据变量index2=T2%2+1,选取Ai中的元素生成反向扩散密钥K4(j),根据反向扩散密钥K4(j)对反向置乱加密图像数组P3进行反向扩散加密,得到反向扩散加密图像数组P4,并将反向扩散加密图像数组P4重组为大小M×N的数组密文。
2.根据权利要求1所述的基于超混沌系统的密钥动态选取的图像加密算法,其特征在于:
所述步骤2中利用超混沌系统生成混沌序列对混沌序列进行分组包含如下步骤:
步骤2.1采用陈氏超混沌系统,根据表达式 x &CenterDot; = a ( y - x ) y &CenterDot; = - xz + dx + cy z &CenterDot; = xy - bz w &CenterDot; = yz + kw , 将其带入超混度系统中迭代m+M×N次,为了避免有害影响,舍去前m(m>500)个值,得到X、Y、Z、W四个向量序列,其中,a、b、c、d和k是超混沌系统的控制参数,X=[x1,x2,...,xM×N]、Y=[y1,y2,...,yM×N]、Z=[z1,z2,...,zM×N]、W=[w1,w2,...,wM×N];
步骤2.2对向量序列X、Y、Z、W进行分组,得到分组向量Ai,i∈[0,5],其中, A 0 = X Y , A 1 = X Z , A 2 = X W , A 3 = Y Z , A 4 = Y W , A 5 = Z W .
3.根据权利要求1所述的基于超混沌系统的密钥动态选取的图像加密算法,其特征在于:所述步骤3中结合KS动态选取机制,动态选取Ai中的元素Ai(index2,S)生成置乱密钥K1(j),并对P进行正向置乱还包含如下步骤:
步骤3.1初始化循环变量i、j、T2、P1(0),i=0,j=1,T2=U1,P1(0)=U2
步骤3.2利用KS动态选取机制生成置乱密钥K1(j);
步骤3.3对得到的置乱密钥K1(j),根据修正公式
K1(j)=mod(floor(abs(K1(j)×108)),M×N),进行修正;
步骤3.4根据置乱公式 j &prime; = j + mod ( K 1 ( j ) + P 1 ( j - 1 ) , M &times; N - j + 1 ) P ( j &prime; ) = P [ X + mod ( K 1 ( j ) + P 1 ( j - 1 ) , M &times; N - j + 1 ) ] exchange ( P ( j ) , P ( j &prime; ) ) P 1 ( j ) = P ( j ) , 进行置乱操作,j表示原始明文图像数组的第j个位置,j'表示图像数组第j'个位置,K1(j)表示用于置乱的第j个密钥元素,P1(j)表示置乱图像数组P1第j个位置的元素,P1(j-1)表示其前一个位置置乱的元素,其中j'∈[1,M×N],exchange(a,b)表示将a与b的值相互交换;
步骤3.5判断是否所有的元素已经完成置乱,如果没有完成,则i=i+1,j=j+1,将P1(i)的值赋给T2,跳转到步骤3.2执行,直到i>M×N-1,结束循环,保存得到的正向置乱加密图像数组P1。
4.根据权利要求1所述的基于超混沌系统的密钥动态选取的图像加密算法,其特征在于:所述步骤4中结合KS动态选取机制,动态选取Ai中的元素Ai(index2,S)生成扩散密钥K2(j)并对P1进行正向扩散操作还包含如下步骤:
步骤4.1初始化循环变量i、j、T2、P2(0),i=0,j=1,T2=U3,P2(0)=U4
步骤4.2利用KS动态选取机制生成扩散密钥K2(j);
步骤4.3根据修正公式K2(j)=mod(floor(abs(K2(j)×108)),256),对得到的扩散密钥K2(j)进行修正;
步骤4.4根据扩散公式进行扩散操作,其中,P2(j)表示进行扩散操作后的第j个位置的像素值,P2(j-1)表示P2(j)前一个位置扩散的像素值,P1(j)表示P1的第j个位置的像素值,K2(j)表示用于扩散的第j个密钥;
步骤4.5判断是否所有的元素已经完成扩散,如果没有完成,则i=i+1,j=j+1,将P2(i)的值赋给T2,跳转到步骤4.2执行,直到i>M×N-1,结束循环,保存得到的正向扩散加密图像数组P2。
5.根据权利要求1所述的基于超混沌系统的密钥动态选取的图像加密算法,其特征在于:所述步骤5中结合KS动态选取机制,动态选取Ai中的元素Ai(index2,S)生成反向置乱密钥K3(j)并对P2进行反向置乱还包含如下步骤:
步骤5.1初始化循环变量i、j、T2、P3(M×N+1),i=M×N+1,j=M×N,T2=U5,P3(M×N+1)=U6
步骤5.2利用KS动态选取机制生成反向置乱密钥K3(j);
步骤5.3根据修正公式K3(j)=mod(floor(abs(K3(j)×108)),M×N),对得到的反向置乱密钥K3(j)进行修正;
步骤5.4根据置乱公式 j &prime; = j - mod ( K 3 ( j ) + P 3 ( j - 1 ) , j ) P 2 ( j &prime; ) = P 2 [ j - mod ( K 3 ( j ) + P 3 ( j - 1 ) , j ) ] exchange ( P 2 ( j ) , P 2 ( j &prime; ) ) P 3 ( j ) = P 2 ( j ) , 进行置乱操作,得到反向置乱加密图像数组P3,其中,j表示正向扩散图像数组的第j个位置,j'表示图像数组第j'个位置,K3(j)表示用于置乱的第j个密钥元素,P3(j)表示P3的第j个位置的元素,P3(j+1)表示P3第j+1个位置的元素,j'∈[1,M×N];
步骤5.5判断是否所有的元素已经完成置乱,如果没有完成,则i=i-1,j=j-1,并将P3(i)的值赋给T2,跳转到步骤5.2接行,直到i<=1时结束循环,保存得到反向置乱加密图像数组P3。
6.根据权利要求1所述的基于超混沌系统的密钥动态选取的图像加密算法,其特征在于:所述步骤6中结合KS动态选取机制,动态选取Ai中的元素Ai(index2,S)生成反向扩散密钥K4(j)并对P3进行反向扩散还包含如下步骤:
步骤6.1初始化循环变量i、j、T2、P3(M×N+1),i=M×N+1,j=M×N,T2=U7,P4(M×N+1)=U8
步骤6.2利用KS动态选取机制生成反向扩散密钥K4(j);
步骤6.3根据修正公式K4(j)=mod(floor(abs(K4(j)×108)),256),对得到的反向扩散密钥K4(j)进行修正;
步骤6.4根据扩散公式进行扩散操作其中,P4(j)表示扩散后的第j个像素,P4(j+1)表示扩散后的第j+1个像素,P3(j)表示反向置乱数组P3的第j个像素,K4(j)表示用于扩散的第j个密钥;
步骤6.5判断是否所有的元素已经完成扩散,如果没有完成,则i=i-1,j=j-1,将P4(i)的值赋给T2,跳转到步骤6.2执行,直到i<=1结束循环,循环结束后,保存得到的反向扩散加密图像数组P4。
CN201510262218.9A 2015-05-21 2015-05-21 基于超混沌系统的密钥动态选取的图像加密方法 Expired - Fee Related CN104881837B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510262218.9A CN104881837B (zh) 2015-05-21 2015-05-21 基于超混沌系统的密钥动态选取的图像加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510262218.9A CN104881837B (zh) 2015-05-21 2015-05-21 基于超混沌系统的密钥动态选取的图像加密方法

Publications (2)

Publication Number Publication Date
CN104881837A true CN104881837A (zh) 2015-09-02
CN104881837B CN104881837B (zh) 2018-01-09

Family

ID=53949323

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510262218.9A Expired - Fee Related CN104881837B (zh) 2015-05-21 2015-05-21 基于超混沌系统的密钥动态选取的图像加密方法

Country Status (1)

Country Link
CN (1) CN104881837B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105554344A (zh) * 2015-12-07 2016-05-04 中国矿业大学 基于混合图元的多幅图像加密方法
CN106023052A (zh) * 2016-05-09 2016-10-12 河南大学 基于忆阻超混沌系统、元胞自动机和dna计算的图像加密算法
CN106600518A (zh) * 2016-11-23 2017-04-26 河南大学 基于压缩感知的视觉安全和数据安全的图像加密、解密方法
CN108234813A (zh) * 2018-01-11 2018-06-29 重庆邮电大学 基于超混沌Chen系统的明文关联图像加密算法
CN108961140A (zh) * 2018-06-14 2018-12-07 湖北工程学院 图像保护方法及装置、图像还原方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064738A (en) * 1996-12-10 2000-05-16 The Research Foundation Of State University Of New York Method for encrypting and decrypting data using chaotic maps
CN103489151A (zh) * 2013-09-11 2014-01-01 河南大学 基于混沌序列和超混沌系统的彩色图像加密方法
CN104008520A (zh) * 2014-05-09 2014-08-27 河南大学 基于sha-384函数、时空混沌系统、量子混沌系统和神经网络的彩色图像加密方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064738A (en) * 1996-12-10 2000-05-16 The Research Foundation Of State University Of New York Method for encrypting and decrypting data using chaotic maps
CN103489151A (zh) * 2013-09-11 2014-01-01 河南大学 基于混沌序列和超混沌系统的彩色图像加密方法
CN104008520A (zh) * 2014-05-09 2014-08-27 河南大学 基于sha-384函数、时空混沌系统、量子混沌系统和神经网络的彩色图像加密方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105554344A (zh) * 2015-12-07 2016-05-04 中国矿业大学 基于混合图元的多幅图像加密方法
CN106023052A (zh) * 2016-05-09 2016-10-12 河南大学 基于忆阻超混沌系统、元胞自动机和dna计算的图像加密算法
CN106600518A (zh) * 2016-11-23 2017-04-26 河南大学 基于压缩感知的视觉安全和数据安全的图像加密、解密方法
CN106600518B (zh) * 2016-11-23 2019-06-21 河南大学 基于压缩感知的视觉安全和数据安全的图像加密、解密方法
CN108234813A (zh) * 2018-01-11 2018-06-29 重庆邮电大学 基于超混沌Chen系统的明文关联图像加密算法
CN108961140A (zh) * 2018-06-14 2018-12-07 湖北工程学院 图像保护方法及装置、图像还原方法及装置

Also Published As

Publication number Publication date
CN104881837B (zh) 2018-01-09

Similar Documents

Publication Publication Date Title
Zhan et al. Cross-utilizing hyperchaotic and DNA sequences for image encryption
Wang et al. An image encryption algorithm based on a hidden attractor chaos system and the Knuth–Durstenfeld algorithm
Wu et al. Lossless chaotic color image cryptosystem based on DNA encryption and entropy
Chai et al. A fast chaos-based image encryption scheme with a novel plain image-related swapping block permutation and block diffusion
Xu et al. A novel chaotic image encryption algorithm using block scrambling and dynamic index based diffusion
Zhu et al. A chaos-based symmetric image encryption scheme using a bit-level permutation
Ye et al. An efficient chaotic image encryption algorithm based on a generalized Arnold map
Lian et al. Security analysis of a chaos-based image encryption algorithm
Xu et al. A novel bit-level image encryption algorithm based on chaotic maps
Li et al. Chaos-based image encryption algorithm with orbit perturbation and dynamic state variable selection mechanisms
Wang et al. A color image encryption with heterogeneous bit-permutation and correlated chaos
Yang et al. A fast image encryption and authentication scheme based on chaotic maps
CN105046161B (zh) 基于dna动态编码的彩色图像加密方法
CN104751403B (zh) 一种基于多混沌系统的明文相关图像加密方法
Xue et al. Region of interest encryption for color images based on a hyperchaotic system with three positive Lyapunov exponets
CN109660696B (zh) 一种新的图像加密方法
CN107274457B (zh) 基于dna序列运算和变形耦合映像格子的双彩色图像的加密方法
Wang et al. Chaos-based image encryption strategy based on random number embedding and DNA-level self-adaptive permutation and diffusion
CN104881837A (zh) 基于超混沌系统的密钥动态选取的图像加密算法
CN107330338B (zh) 基于双混沌交叉扩散的彩色图像加密和解密方法及系统
Hanif et al. A novel and efficient multiple RGB images cipher based on chaotic system and circular shift operations
Ye et al. A chaos-based image encryption scheme using multi modal skew tent maps
Ye A novel image encryption scheme based on generalized multi-sawtooth maps
Chong et al. Block color image encryption algorithm based on elementary cellular automata and DNA sequence operations
Choi et al. Color image encryption based on PC-MLCA and 3-D chaotic cat map

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180109