基于拉丁方置乱的彩色图像加密方法与流程

文档序号:15744269发布日期:2018-10-23 22:49阅读:390来源:国知局

本发明涉及图像加密技术领域,特别涉及一种基于拉丁方置乱的彩色图像加密方法。



背景技术:

随着数字技术和网络技术的迅猛发展,越来越多的多媒体数据产生,通过网络传输和在云服务器等平台进行存储。数字图像包含大量信息,例如,一张军事油库图片不仅可以告诉我们它的尺寸和数量,而且还可以给出它的大概位置;一幅人脸照片不仅可以暴露他或她的长相,还可以给出大概的年龄和身体状况。因此,在医学图像系统、军事图像系统和视频会议中,保护图像数据的安全引起了广泛的关注,图像加密是一种可以有效保护数据安全的方法。当前,彩色图像加密算法主要存在两个问题:一是算法与明文相关性低,抗选择明文等攻击能力较差;另一个是一些算法没有考虑R,G和B分量之间的相关性,所提出的算法易被统计分析破解。因此,许多学者一直在寻找更有效的方法来保护图片,Sun等人提出的算法中加密过程和密钥均与明文无关,被刘等人利用已知明文攻击破解;张等人通过改进的Cat映射分别对彩色明文图像的三个分量加密,但被Liu等人用选择明文和已知明文攻击破解;Pak等人将彩色图像三分量合并为一个大数组进行整体置乱,但该算法与明文相关性低,容易受到攻击。因此,增加算法和明文之间的关联,有助于进一步提升算法的安全性。



技术实现要素:

针对现有技术中的不足,本发明提出一种基于拉丁方置乱的彩色图像加密方法,将彩色明文图像分为R、G、B三分量,利用混沌序列构造拉丁方阵置乱明文各分量,接着利用混沌序列扩散R、G、B分量,并在扩散G、B分量时引入预处理操作,减少三分量之间的相关性,加密效率高、随机性强,增强抗攻击能力。

按照本发明所提供的设计方案,一种基于拉丁方置乱的彩色图像加密方法,包含如下步骤:

步骤1.将大小为M×N的明文图像I分成R、G、B三个分量,利用该三分量和外加密钥生成混沌系统参数和初始值,将混沌系统参数和初始值依次带入LLS混沌映射系统、SSS混沌映射系统和CCS混沌映射系统,得到混沌序列;根据混沌序列,获取用于置乱的序列组一和用于扩散的序列组二;

步骤2.利用序列组一构造三个拉丁方阵,分别对R、G、B三分量进行分块置乱操作,得到大小为M×N的置乱矩阵R1、G1、B1;

步骤3.依次将置乱矩阵R1、G1、B1转换为大小为1×MN的矩阵R2、G2、B2;

步骤4.利用序列组二对矩阵R2进行扩散操作,得到大小为1×MN的扩散矩阵R3;基于序列组二和扩散矩阵R3对矩阵G2进行扩散操作,得到大小为1×MN扩散矩阵G3;基于序列组二和扩散矩阵G3对矩阵B2进行扩散操作,得到大小为1×MN扩散矩阵B3;

步骤5.依次将扩散矩阵R3、G3、B3转换为大小为M×N的矩阵R4、G4、B4;组合矩阵R4、G4、B4,得到密文图像C,完成加密。

上述的,步骤1中,依据R、G、B三个分量中的元素,对应分量最大值和方差值,获取分量密钥r1、g1、b1;根据分量密钥计算得到混沌系统初始值x0和参数u0;将混沌系统初始值x0和参数u0,依次带入LLS混沌映射系统、SSS混沌映射系统和CCS混沌映射系统,分别迭代N0+MN次;并舍弃前N0个值,得到三个长度为1×MN的混沌序列X_l、X_s和X_c;根据混沌序列X_l、X_s和X_c,选取用于置乱的序列组一和用于扩散的序列组二。

优选的,选取用于置乱的序列组一,包含如下内容:

A1)从给定数字集合一中任取3个不同数字进行数字排列,得到大小为P1×3的排列矩阵final_result1;

A2)从排列矩阵final_result1中选取第value1行的3个值,分别赋值给ind1、ind2、ind3:

得到互不相同的ind1、ind2、ind3,其中,value1=mod(floor((r1×b1+tg×t3+t2)×1014),P1)+1,floor(x)表示取比x小的最大整数,tg、t2、t3为外加密钥,tg、t2、t3∈(0,+∞);

A3)将三个长度为1×MN的混沌序列X_l、X_s和X_c两两组合,得到6个混沌序列组,记为:

X1=[X_l;X_s],X2=[X_c;X_l],X3=[X_s;X_c],

X4=[X_l;X_c],X5=[X_c;X_s],X6=[X_s;X_l];

A4)按照如下公式分别从X1-X6中选取用于置乱的序列组一CH_R1、CH_G1、CH_B1:

优选的,选取用于扩散的序列组二,包含如下内容:

B1)从给定数字集合二中任取3个不同数进行数字排列,得到大小为P2×3的排列矩阵final_result2;

B2)从排列矩阵final_result2中选取第value2行的3个值,分别赋值给ind4、ind5、ind6:

得到互不相同的ind4、ind5、ind6,其中,value2=mod(floor((tb×g1×ind3+t32+t2)×1014),P2)+1tb为外加密钥,且tb∈(0,+∞);

B3)组合混沌序列X_l、X_s和X_c,得到3×MN的数组Ch2,Ch2=[X_l;X_s;X_c];根据如下公式分别选取用于扩散的序列组二CH_R2、CH_G2和CH_B2:

上述的,步骤2中的分块置乱操作,包含如下内容:

步骤21)将各分量进行分块处理,分为p2块,每块大小为p×p,其中,

步骤22)从序列组一中取出2个序列,构造p2阶拉丁方阵Lat_R、Lat_G、Lat_B;

步骤23)若则执行步骤24);否则,计数器初始化,执行步骤25);

步骤24)分别利用拉丁方阵Lat_R、Lat_G、Lat_B,对R、G、B分量进行相应置乱操作,得到置乱矩阵R1、G1、B1,进入步骤3;

步骤25)分别利用拉丁方阵Lat_R、Lat_G、Lat_B,对R、G、B各分量进行置乱操作,得到相应置乱矩阵,计数器累加计数;

步骤26)判断计数器数值是否达到设定阈值,若达到,则将步骤25)最新得到的各分量的置乱矩阵,记为置乱矩阵R1、G1、B1,并进入步骤3;否则,将步骤25)最新得到的各分量的置乱矩阵顺时针旋转,并返回步骤25)循环执行。

上述的,步骤4具体包含如下内容:

步骤41)利用外加密钥和三分量的置乱矩阵计算各分量的中间密钥sumR_a、sumG_a、sumB_a;

步骤42)修正序列组二中的每个元素,得到序列CH_R3、CH_G3、CH_B3;

步骤43)对矩阵R2中的每个像素进行扩散操作,得到扩散后的矩阵R3;

步骤44)利用矩阵R3对矩阵G2进行预处理操作,然后对矩阵G2中的每个像素进行扩散操作,得到扩散后的矩阵G3;

步骤45)利用矩阵G3对矩阵B2进行预处理操作,然后对矩阵B2中的每个像素进行扩散操作,得到扩散后的矩阵B3。

优选的,步骤41中,利用外加密钥和三分量的置乱矩阵计算各分量的中间密钥sumR_a、sumG_a、sumB_a,其中计算R分量的中间密钥sumR_a的公式表示为:

计算中间密钥sumG_a、sumB_a时,分别将公式中的R2(i)和tr依次替换成G2(i)和tg、B2(i)和tb,其中,ind1、ind2分别为序列组一中的赋值变量,t2、tr、tg、tb均为外加密钥,且t2、tr、tg、tb∈(0,+∞)。

优选的,步骤42)中,序列组二中序列CH_R2、CH_G2、CH_B2的每一个元素的修正公式表示为:,

其中,CH_R2(i)、CH_G2(i)、CH_B2(i)、CH_R3(i)、CH_G3(i)和CH_B3(i)分别表示序列CH_R2、CH_G2、CH_B2、CH_R3、CH_G3和CH_B3的第i个元素,i=1,2,….,MN。

优选的,步骤43)中的扩散操作包含如下内容:首先利用公式对矩阵R2的第一个像素进行扩散,扩散公式表示为

得到扩散后的像素值R3(1),其中,t3、t4为外加密钥,且t3∈(0,+∞)、t4∈(20,+∞),sumR_a为获取的中间密钥,r1是获取的分量密钥;然后,利用公式:

,对矩阵R2的第i个像素进行扩散(其中,2≤i≤MN),直至i=MN,完成扩散操作,得到扩散后的矩阵R3。

进一步的,步骤44)中,利用矩阵R3对矩阵G2进行预处理操作,即:利用矩阵R3的最后一个像素去影响矩阵G2的第一个像素,公式表示为然后将矩阵R2的扩散公式中的sumR_a、r1、CH_R3、R2换成sumG_a、g1、CH_G3、G2,对矩阵G2分量的第一个像素进行扩散,得到扩散后的像素值G3(1),接着,扩散矩阵G2分量的第i个像素,2≤i≤MN,得到矩阵G3,其中,kg=ceil(mod((G3(i-1)+CH_G3(i)+i),256)/256×(i-1))+1,步骤45)中,利用矩阵G3的最后一个像素去影响矩阵B2的预处理操作表示为:然后将矩阵R2的扩散公式中的sumR_a、r1、CH_R3、R2换成sumB_a、b1、CH_B3、B2,扩散矩阵B2的第一个像素,得到像素值B3(1),接着,对矩阵B2的第i个像素进行扩散,2≤i≤MN,得到矩阵B3,其中,kb=ceil(mod((B3(i-1)+CH_B3(i)+i),256)/256×(i-1))+1,

本发明的有益效果:

1、本发明中明文和数字排列的混沌序列选取机制,能动态的为彩色明文图像的R、G、B分量选取不同的混沌序列。首先,由各分量计算明文密钥r1、g1、b1,根据这些密钥利用改进的混沌系统得到三组混沌序列,接着,由明文密钥结合数字排列组合动态的为彩色明文图像各分量选取混沌序列,用于置乱、扩散操作,增加了算法的抗攻击能力。

2、本发明中基于拉丁方和混沌序列的块置乱策略,利用拉丁方阵的特点对明文图像像素进行分块置乱,可以随机的将分块图像的块内像素置乱到不同的行和列,加密效率高,有效的降低像素之间的强相关性,且能减少块效应。

3、本发明中,在扩散时,通过依赖明文和置乱图像的扩散操作,利用置乱图像计算中间密钥sumR_a、sumG_a、sumB_a,根据明文密钥及中间密钥计算索引值,动态的为各像素选取用于异或的混沌序列值,算法随机性强,可以抵御一定的穷举攻击;其中,在扩散G、B两个分量前做了预处理:用R分量最后一个像素异或G分量第一个像素,用G分量最后一个像素异或B分量第一个像素,将扩散从一个通道传递到另一个通道,提高了算法的安全性。

附图说明:

图1为实施例中的图像加密方法流程图之一;

图2为实施例中的图像加密方法流程图之二;

图3为实施例中置乱策略流程图;

图4为实施例中拉丁方生成图;

图5为实施例中4×4置乱效果图;

图6为实施例中5×5置乱效果图;

图7为实施例中加密、解密仿真实验结果;

图8为实施例中Lena_512图像加密敏感性仿真测试结果;

图9为实施例中Lena_512图像解密敏感性仿真测试结果;

图10为实施例中lena_512明文和密文图像直方图;

图11为实施例中lena_512明文和密文图像相邻像素相关性示意图;

图12为实施例中Lena_512图像抗噪声仿真测试结果;

图13为实施例中Lena_512图像抗剪切仿真测试结果。

具体实施方式:

下面结合附图和技术方案对本发明作进一步详细的说明,并通过优选的实施例详细说明本发明的实施方式,但本发明的实施方式并不限于此。

常见的一维混沌系统有Logistic映射(公式1)、Sine映射(公式2)和Chebyshev映射(公式3)等:

xn+1=FL(u,xn)=u×xn×(1-xn) (1)

xn+1=FS(r,xn)=r×sin(π×xn) (2)

xn+1=FC(a,xn)=cos(a×arccosxn) (3)

,式中,u∈(0,4]、r∈(0,1),a∈N,且当a﹥1时,Chebyshev map具有混沌行为。

当前,一些传统的一维混沌映射(例如Logistic映射、Sine映射和Chebyshev映射)结构简单,随机性有限,输出的数据分布也是不均匀的。不少专家学者们提出了一些改进的、具有更优越特性的系统:利用两个相同一维混沌映射的输出序列的差值构造新的混沌系统,公式如下:

xn+1=F(u,xn,k)=Fch(u,xn)×G(k)-floor(Fch(u,xn)×G(k)) (4)

,其中,Fch(u,xn)是传统的一维混沌映射,F(u,xn,k)是新得到的混沌映射,xn是混沌序列,n是迭代次数,G(k)=2k,8≤k≤20,且k值越大,其混沌性能越好。u的取值为(0,10],混沌系统的输出值范围为(0,1]。利用Logistic映射、Sine映射、Chebyshev映射,根据公式(4)可以得到三个新混沌系统:Logistic-Logistic映射(LLS),Sine-Sine映射(SSS)和Chebyshev-Chebyshev映射(CCS),分别如下所示:

xn+1=u×xn×(1-xn)×2k-floor(u×xn×(1-xn)×2k), (5)

xn+1=u×sin(π×xn)×2k-floor(u×sin(π×xn)×2k), (6)

xn+1=cos((u+1)×arccos(xn))×2k-floor(cos((u+1)×arccos(xn))×2k), (7)

式子中x0是初始值,n是迭代次数,u∈(0,10]。

针对现有彩色图像加密方法与明文相关性低、抗选择明文等攻击能力差、容易被统计分析破解等情形,本发明实施例一,参见图1所示,提供一种基于拉丁方置乱的彩色图像加密方法,包含如下内容:

步骤1.将大小为M×N的明文图像I分成R、G、B三个分量,利用该三分量和外加密钥生成混沌系统参数和初始值,将混沌系统参数和初始值依次带入LLS混沌映射系统、SSS混沌映射系统和CCS混沌映射系统,得到混沌序列;根据混沌序列,获取用于置乱的序列组一和用于扩散的序列组二;

步骤2.利用序列组一构造三个拉丁方阵,分别对R、G、B三个分量进行分块置乱操作,得到大小为M×N的置乱矩阵R1、G1、B1;

步骤3.依次将置乱矩阵R1、G1、B1转换为大小为1×MN的矩阵R2、G2、B2;

步骤4.利用序列组二对矩阵R2进行扩散操作,得到大小为1×MN的扩散矩阵R3;基于序列组二和扩散矩阵R3对矩阵G2进行扩散操作,得到大小为1×MN扩散矩阵G3;基于序列组二和扩散矩阵G3对矩阵B2进行扩散操作,得到大小为1×MN扩散矩阵B3;

步骤5.依次将扩散矩阵R3、G3、B3转换为大小为M×N的矩阵R4、G4、B4;组合矩阵R4、G4、B4,得到密文图像C,完成加密。

本发明首先将明文I分成R、G、B三个通道,参见图2所示,再分别采取分块置乱操作得到R1、G1、B1。接着扩散R1得到R3,再分别扩散G1、B1得到G3、B3,其中,扩散G1前利用R3对G1进行预处理操作,扩散B1前利用G3对B1进行预处理操作。最后组合三分量,得到密文图像C。在扩散G、B分量时引入的预处理操作为:用R分量最后一个像素异或G分量第一个像素,用G分量最后一个像素异或B分量第一个像素,减少三分量之间的相关性。本发明与明文密切相关,其中混沌映射的初始值、密钥的动态选取均由明文各分量计算得到的密钥控制,增强了算法抵抗暴力攻击的能力。

针对混沌系统参数和初始值的计算,本发明的另一个实施例中,分别利用明文图像I的R、G、B三分量计算密钥r1、g1、b1,以r1为例:

其中,a(i,j)表示R分量的第(i,j)个元素,max(a(i,j))表示求该分量的最大值。var是该分量的方差值,计算方法如下:

计算密钥g1、b1时,分别将公式(8)中的a(i,j)和var换成G、B分量的第(i,j)个元素和方差值。

将r1、g1、b1带入公式(11),分别得到混沌系统的初始值x0和参数u0:

式中,mod(a,b)表示a对b的取模运算,t1∈(0,1)且为密钥的一部分。

令k0=14,将得到的初始值x0和参数u0带入Logistic-Logistic映射(LLS混沌映射系统,见公式5),Sine-Sine映射(SSS混沌映射系统,见公式6),和Chebyshev-Chebyshev映射(CCS混沌映射系统,见公式7),分别迭代N0+MN次,舍弃前N0个值,得到三个长度为1×MN的混沌序列X_l、X_s和X_c。

为彩色明文图像R、G、B三分量选取置乱、扩散时所需要的混沌序列,本发明的再一个实施例中,基于明文和数字排列的混沌序列选取机制(Chaotic sequence selection mechanism based on the plaintext and digital permutation,CSSMPDP),包含如下内容:

(1)选取用于置乱的混沌序列

将混沌序列X_l、X_s和X_c两两组合,从中选取用于置乱操作的混沌序列组CH_R1、CH_G1、CH_B1,具体步骤如下:

①、给定数字集合S_ch1={1,2,3,4,5,6},从中任取3个不同的数,按一定的顺序进行数字排列,得到120种排列结果,记为矩阵final_result1,大小为120×3。

②、按照下式计算参数value1

value1=mod(floor((r1×b1+tg×t3+t2)×1014),120)+1 (12)

其中floor(x)表示取比x小的最大整数,外加密钥tg、t2、t3∈(0,+∞)。

③、从矩阵final_result1中选取第value1行的3个值,分别赋值给ind1、ind2、ind3:

得到的ind1、ind2、ind3为1~6之间的整数且互不相同。

④、将三个长度为1×MN的混沌序列X_l、X_s和X_c两两组合,得到6个混沌序列组,记为:

X1=[X_l;X_s] X2=[X_c;X_l] X3=[X_s;X_c]

X4=[X_l;X_c] X5=[X_c;X_s] X6=[X_s;X_l]

⑤、按照下式分别从X1-X6中选取3个序列组CH_R1、CH_G1、CH_B1,用于置乱操作:

(2)选取用于扩散的混沌序列

扩散时,对不同分量应选择不同的密钥流进行扩散操作,因此,组合三个混沌序列X_l、X_s和X_c,从中选取用于扩散的混沌序列CH_R2、CH_G2、CH_B2:

①、给定数字集合S_ch2={1,2,3},从中任取3个不同的数,按一定的顺序进行数字排列,得到6种排列结果,记为矩阵final_result2,大小为6×3,表示如下:

②、按照式子(15)计算参数value2

value2=mod(floor((tb×g1×ind3+t32+t2)×1014),6)+1 (15)

其中外加密钥tb∈(0,+∞)、t2、t3、g1均为本文加密算法的密钥,ind3为选取用于置乱的混沌序列计算得到的参数。

③、从矩阵final_result2中选取第value2行的3个值,分别赋值给ind4、ind5、ind6:

得到的ind4、ind5、ind6为1~3之间的整数且互不相同。

④、组合混沌序列X_l、X_s和X_c,得到一个3×MN的数组,记为Ch2=[X_l;X_s;X_c]。按照下式,根据ind4、ind5和ind6的值分别选取混沌序列CH_R2、CH_G2和CH_B2,用于扩散操作:

在1779年,著名数学大师欧拉(Euler)指出“三十六军官问题”,并定义了拉丁方。拉丁方是一个填充有从0到n-1的数字的大小为n×n的数组,每个数字在每行中恰好出现一次,仅在每列中出现一次。

定义1:由n元集S={0,1,2,…,n-1}构成一个大小为n×n的方阵A(ai,j)n×n,(0≤i,j≤n-1),使方阵中每行、每列中的各元素ai,j当且仅当出现一次,则称该方阵A为基于S上的n阶拉丁方。

表1所示为一个含有元素{1,2,3}的3阶拉丁方。产生拉丁方的方法有很多,通过算法1来举例说明构造拉丁方的过程。

表1一个3阶拉丁方

算法1.构造拉丁方Lat=LatinG(Q1,Q2)

在算法1中,Q1和Q2是两个序列,SortInd(Q)是查找序列Q和它升序排序后的序列Q′之间的索引映射的函数,S_1和S_2分别代表Q1和Q2的索引序列,Circshift(S,v)是将序列S向右循环移动v位的函数。

本发明的另一个实施例中,利用拉丁方的特性,提出一种基于拉丁方和混沌序列的块置乱策略(Block scrambling based on Latin squares and chaotic sequence,BSLSCS),以R分量为例,置乱策略流程图如图3所示,具体步骤如下:

步骤1:将M×N的R分量、G分量、B分量进行分块处理,分别分为p2块,每块大小为p×p。其中

步骤2:从混沌序列CH_R1中取出2个序列Q1=CH_R1(1,1:p2)和Q2=CH_R1(2,1:p2),然后按照算法1构造p2阶拉丁方Lat_R:

Lat_R=LatinG(Q1,Q2) (19)

同理,分别利用CH_G1、CH_B1构造p2阶拉丁方阵Lat_G、Lat_B。

步骤3:利用算法2对R分量进行置乱,得到置乱矩阵R1。然后按照相同的方法对G、B分量置乱,得到置乱矩阵G1、B1。

算法2.置乱(以R分量为例)

步骤4:对于尺寸为M×N的图像,如果满足则可以对所有像素混乱,得到置乱矩阵R1、G1、B1;否则,将各分量顺时针旋转90度,再次执行算法2,根据实际需求,可设定总共旋转置乱四次之后,可以完全置乱所有像素,得到置乱矩阵R1、G1、B1。

为了进一步说明,利用序列S_1={2,3,1,4},S_2={3,2,4,1},根据算法1构造拉丁方阵Latin:Latin=LatinG(S_1,S_2),如图4所示,(a)表示序列S_1和序列S_2、(b)是拉丁方阵Latin。再利用该方阵分别对4×4的矩阵和5×5的矩阵进行置乱,结果在图5、图6中给出。在图5中,(a)表示原始矩阵、(b)表示置乱后矩阵,根据本实施例中BSLSCS置乱策略,可以将4×4的矩阵分为p2块,其中分块后满足只需要对矩阵置乱一次就可以实现所有像素的置乱。在图6中,(a)表示原始矩阵、(b)表示置乱1次后矩阵、(c)表示置乱2次后矩阵、(d)表示置乱4次后矩阵,将5×5的矩阵分为p2块,其中此时不满足置乱1次后只能对一部分像素置乱,因此,需要将矩阵顺时针旋转90度,再次置乱,总共旋转置乱4次之后,可以完全置乱所有像素。

为提高算法抗明文攻击的能力,增强算法安全等级,本发明的另一个实施例提出一种依赖明文和置乱图像的扩散操作(Diffusion operations dependent on the plaintext and scrambled image,DODPSI),包含如下内容:

步骤1:将大小为M×N的置乱矩阵R1、G1、B1分别转换为1×MN的矩阵R2、G2、B2。

步骤2:利用公式(20)计算sumR_a作为中间密钥,为了增强它的随机性,先利用外加密钥计算参数sta:

其中,外加密钥t2、tr∈(0,+∞),计算sumG_a、sumB_a时,分别将公式(20)中的R2(i)和tr换成G2(i)、tg和B2(i)、tb∈(0,+∞)。

步骤3:按照下式修正序列CH_R2、CH_G2、CH_B2的每一个元素,得到CH_R3、CH_G3、CH_B3:

其中,CH_R2(i)、CH_G2(i)、CH_B2(i)、CH_R3(i)、CH_G3(i)和CH_B3(i)分别表示混沌序列CH_R2、CH_G2、CH_B2、CH_R3、CH_G3和CH_B3的第i个元素,i=1,2,….,MN。

步骤4:利用公式(22)对R2分量的第一个像素进行扩散,得到扩散后的像素值R3(1):

利用外加密钥t3、t4和明文信息生成的参数r2,选择混沌序列CH_R3对R2(1)扩散,其中,r1是由公式(8)计算得到的密钥,CH_R3(r2)表示序列CH_R3的第r2个元素,t3∈(0,+∞)、t4∈(20,+∞)。经过这一步,得到的R2分量的第一个像素依赖于明文密钥r1和置乱图像的中间密钥sumR_a。

步骤5:对R2分量的第i个像素进行扩散,其中,2≤i≤MN,具体步骤如下:

5.1)按照公式(23)计算kr:

kr=floor(mod((R3(i-1)+CH_R3(i)+i),256)/256×(i-1))+1 (23)

其中,CH_R3(i)表示混沌序列CH_R3的第i个元素,R3(i-1)表示扩散后矩阵R3的第i-1个元素。式子(23)中,计算出的kr∈[1,i-1]。

5.2)根据kr值,扩散R2分量的第i个像素:

其中,CH_R3(i)表示混沌序列CH_R3的第i个元素,R3(kr)表示扩散后矩阵R3的第kr个元素,R2(i)表示矩阵R2的第i个元素。

5.3)重复步骤5.1)-5.2),直至i=MN,对R2分量完成扩散操作,得到扩散后的矩阵R3。

步骤6:扩散G分量、B分量。扩散前,须做以下预处理:

,式子中Cu表示当前通道,Re表示上一个通道。其目的是将扩散从一个通道传递到另一个通道,从而使一个通道的变化可以影响其他通道。

6.1)首先,对G分量做预处理操作,即用矩阵R3的最后一个像素去影响G2分量的第一个像素:

6.2)按照步骤4将公式(22)中的sumR_a、r1、CH_R3、R2换成sumG_a、g1、CH_G3、G2,对G2分量的第一个像素进行扩散,得到扩散后的像素值G3(1)。

6.3)按照步骤5扩散G分量的第i个像素(2≤i≤MN),得到G3,其中:

kg=ceil(mod((G3(i-1)+CH_G3(i)+i),256)/256×(i-1))+1 (27)

式子中,kg∈[1,i-1],G2(i)表示矩阵G2的第i个元素,CH_G3(i)表示混沌序列CH_G3的第i个元素,G3(i)表示扩散后矩阵G3的第i个元素。

6.4)扩散B分量。首先对B分量作如下预处理操作:

6.5)按照步骤4将公式(22)中的sumR_a、r1、CH_R3、R2换成sumB_a、b1、CH_B3、B2,扩散B2分量的第一个像素,得到像素值B3(1)。

6.6)按照步骤5,对B分量的第i个像素进行扩散(2≤i≤MN),得到B3,其中:

kb=ceil(mod((B3(i-1)+CH_B3(i)+i),256)/256×(i-1))+1 (30)

式子中,kb∈[1,i-1],B2(i)表示矩阵B2的第i个元素,CH_B3(i)表示混沌序列CH_B3的第i个元素,B3(i)表示扩散后矩阵B3的第i个元素。

步骤7:将得到的R3、G3、B3分别转换为M×N的矩阵R4、G4、B4。组合R4、G4和B4,得到密文图像C,完成加密。

为进一步验证本发明的有效性,下面通过Matlab R2016a并结合具体实例对本案申请的图像加密做进一步解释说明:

软硬件环境:3.3GHz CPU和4GB内存的个人电脑,操作系统为Microsoft Windows 7。选取的参数如下:t1=0.4127,k0=14,N0=800,t2=9.524,t3=12.6159,t4=31.7638,tr=7.46、tg=14.833、tb=26.007,验证发明所提出的加密解密效果。选取Lena_512(512×512)图像进行加密解密,结果如图7所示,(a)表示Lena_512明文图像,(b)表示Lena_512密文图像,(c)表示Lena_512解密图像,通过图7中的图像可以看出,本发明所提出的方法能对图像进行加密解密,密文图像类似噪声,从中得不到明文的相关信息,且解密图像清晰、和明文图像一样。

通过仿真对本发明的安全性进行分析:本发明实施例中密钥具体包括:t1、t2、t3、t4、tr、tg、tb、k0、N0,以及中间密钥:r1、g1、b1、sumR_a、sumG_a、sumB_a。假设计算机的计算精度为10-14,则该算法的密钥空间约为(1014)5=1070>2232,整体密钥空间远远大于2100,可见本文算法的密钥空间足够大,能够有效抵抗穷举攻击。

一)密钥敏感性

1)加密密钥敏感性

在仿真时,测试图像选择Lena_512,图7(b)是初始密钥加密之后的密文,利用本发明加密方法,修改密钥后得到的密文如图8中的(a)-(c)所示,图8中,(a)表示t1+10-14密文图像,(b)表示t4+10-14密文图像,(c)表示tg-10-14密文图像,再将这些加密图像进行做差处理,结果分别如图8(d)-(f),(d)表示图a和图7中的(b)做差结果,(e)表示图b和图7中的(b)做差结果,(f)表示图c和图7中的(b)做差结果。表2是图8中(a)-(c)和图7(b)的NPCR、UACI测试结果。

表2 Lena_512图像加密敏感性数值测试

由图8和表2可以看出,当用一个和正确密钥相差10-14的数据加密图像后,得到加密图像与图7中的(b)完全不同,且相应的NPCR>0.996、UACI>0.334,这表明,本发明对加密密钥敏感。

2)明文敏感性

在仿真中,修改明文Lena_512的某一像素值后再加密,得到的加密结果与图7中的(b)的NPCR、UACI如表3所示。

表3明文图像的敏感性测试

在表3中,改变彩色图像某一像素信息,不论这个像素在哪一个分量上,得到的加密图像与图7中的(b)的NPCR>0.996、UACI>0.334,由此可知,明文的轻微改变可以获得不同加密结果,算法对明文敏感。

3)解密密钥敏感性

通过修改一些密钥参数的值,解密Lena_512密文图像(图7中(b)),测试解密的密钥敏感性,且每当一个参数被改变时其他参数是不变的,结果分别如图9中(a)-(c)所示,(a)表示t1-10-14解密图像,(b)表示tb-10-14解密图像,(c)表示t3+10-12解密图像,从图9可以看出,若用一个和正确密钥相差很近的密钥进行解密,得到的解密图像是杂乱无章的,看不到原始图像的信息,因此本案实施例具有较强的解密密钥敏感性。

总之,密钥的极小变化或者图像的轻微改变,都会得到不同的加密、解密图像,因此所提出的算法对密钥高度敏感。

二)直方图

图10是Lena_512明文图像及其密文图像的直方图,明文图像的直方图是陡峭的,而对应的密文图像的直方图却是平坦的,分布也较均匀,不容易被攻击。

为了定量评估密文的均匀性,利用公式(32)计算Lena_512图像直方图的方差值,数值结果在表4中列出。

其中,Z表示直方图值的向量,且Z={z1,z2,…,z256},zi和zj分别是灰度等于i和j的像素数。

表4本文算法直方图的方差值

由表4可以看出:明文图像的直方图的方差值达到了1.0×106以上,而相应的密文的直方图方差值降低了许多,约为1000,说明得到的密文直方图较均匀。

三)相关性

随机的从明文及其对应的密文中选5000对相邻像素,利用公式(33)计算水平、垂直和对角线方向上的相关系数,结果如图11所示,明文像素在各个方向上都有高相关性,但是密文图像像素之间相关性小。表5是Lena_512图像相关性的数值测试结果。

表5 lena_512图像相关性的数值测试

从表5可以看出,Lena_512明文图像的相邻像素相关系数都大于0.9,这意味着在不同方向上的相邻像素之间存在强相关性;而密文的相邻像素相关系数都小于0.05,像素之间的相关性小,可以忽略。

彩色图像各分量之间相关性高。因此,良好的密码系统应该破坏R,G,B分量的相邻像素之间的相关性。表6中列出了Lena_512图像R,G,B分量间的相关性数值结果。结果表明,密文中各分量之间相关性大大降低。

表6各分量相同位置之间的相关性

四)信息熵

信息熵是衡量信息随机性的主要指标,反映了图像置乱的程度。当信息经过加密之后,信息熵的理论期望值为8。倘若加密过后的图像的信息熵很接近于8,则说明该密文图像近似于随机分布。表7是图像信息熵测试结果。

表7图像信息熵

由表7可以看出,Lena_512密文图像的R、G、B分量的信息熵都达到了7.99以上,可以抵抗一定的统计分析。

五)鲁棒性

1)抗噪声攻击能力

对lena_512密文图像增添不同程度的高斯噪声(GN)、椒盐噪声(SPN)和斑点噪声(SN)。解密后计算相应的PSNR,测试该加密方案的抗噪声攻击能力,结果如图12和表8所示,图12中,(a)表示0.000003的GN污染的密文图像、(b)表示0.000005的GN污染的密文图像、(c)表示0.000003的SN污染的密文图像、(d)表示0.000005的SN污染的密文图像、(e)表示0.0003的SPN污染的密文图像、(f)表示0.0005的SPN污染的密文图像、(g)表示0.000003的GN污染的解密图像、(h)表示0.000005的GN污染的解密图像、(i)表示0.000003的SN污染的解密图像、(j)表示0.000005的SN污染的解密图像、(k)表示0.0003的SPN污染的解密图像、(l)表示0.0005的SPN污染的解密图像。

表8 Lena_512图像噪声测试数值结果

表8是解密图像和明文之间的PSNR。从表8中可以看出,对于Lena_512图像,(1)GN噪声对解密效果影响最大,当噪声强度从0.000003变化到0.000005,PSNR值从19.2526dB变化到17.5882dB,解密图片的质量随噪声强度的增大而减小,但从视觉上都可以被识别;(2)本发明实施例中加密方法对SN具有一定的承受能力,PSNR值从25.0499dB到21.6524dB不等,相对应的恢复图像也是有意义的;(3)本发明实施例中加密方法对SPN具有最强的抵抗能力,当噪声强度从0.0003变化到0.0005时PSNR>40dB,解密图像具有最佳的视觉效果。总之,该方案能抵抗一定的噪声攻击。

2)抗剪切攻击能力

对lena_512密文采取剪切攻击,解密后计算相应的PSNR,测试该算法的抗剪切攻击能力,结果如图13和表9所示,图13中,(a)表示1/2剪切密文图像、(b)表示1/4剪切密文图像、(c)表示1/8左上角剪切密文图像、(d)表示1/8中间剪切密文图像、(e)表示1/16右上角剪切密文图像、(f)表示1/16右下角剪切密文图像、(g)表示1/2剪切的解密图像、(h)表示1/4剪切的解密图像、(i)表示1/8左上角剪切的解密图像、(j)表示1/8中间剪切的解密图像、(k)表示1/16右上角剪切的解密图像、(l)表示1/16右下角剪切的解密图像。

表9 Lena_512图像剪切测试数值结果

由测试结果可以得出如下结论,(1)从视觉效果来看,剪掉密文部分信息再解密,仍然可以获得大多数信息,本发明实施例中的加密方法剪切1/8或者1/16时恢复的图像较1/4的清晰,而1/2时的效果较差,PSNR值只有14.1682;(2)相同剪切程度下,剪切左上角部分图像恢复的图像效果较剪切右半部分的差,可能是因为扩散操作和矩阵左上角的像素相关性较大,左上角丢失的像素越多,恢复效果越差;(3)但整体来看,本发明实施例中的加密方法可以抵抗一定的剪切攻击。

本发明中,首先利用彩色明文图像的R、G、B三分量计算明文密钥r1、g1、b1,将由密钥计算得到的初始值和参数带入混沌系统中,产生三组混沌序列,然后利用基于明文和数字排列的混沌序列选取机制(CSSMPDP)选取用于置乱和扩散的混沌序列。接着,分别采用基于拉丁方和混沌序列的块置乱策略(BSLSCS)和依赖明文和置乱图像的扩散操作(DODPSI)处理各分量,得到最终的密文图像。与明文密切相关,增加了抗明文攻击能力;所使用的混沌系统是一种改进的混沌系统,混沌特性好,随机性强,密钥空间大,进一步提高了安全等级。仿真结果和安全分析表明,所提出的加密方案可以满足图像完全加密,鲁棒性强。

本发明并不局限于上述具体实施方式,本领域技术人员还可据此做出多种变化,但任何与本发明等同或者类似的变化都应涵盖在本发明权利要求的范围内。

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