一种基于三维Arnold映射的图像分组加密方法转让专利

申请号 : CN200910219165.7

文献号 : CN101739695B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张云鹏周哲杨海兵朱欤潘文杰赵新奎张向彬

申请人 : 西北工业大学

摘要 :

本发明涉及一种基于三维Arnold映射的图像分组加密方法,其特征在于:首先采用扩展到三维的Arnold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。理论分析和实验结果表明方法具有密钥空间大、敏感度高、速度快、安全性好,抗攻击能力强等优点。与同类方法相比,该方法保证安全性的同时具有更快的速度,更适合用于图形数据加密。主要优越性在于:有足够大的密钥空间抵抗穷举攻击;任何一位密钥的改变都会使混沌序列的初始值和参数完全改变。这样极大的增加了密钥的敏感性;统计特性不会暴露任何有用信息,密图相邻像素相关性小和抗攻击能力强。

权利要求 :

1.一种基于三维Arnold映射的图像分组加密方法,其特征在于:对于数字图像PW×H,其中W是图像的宽度,H是图像的高度,block_size是加密块的大小,均以像素计,其加密的具体步骤如下:步骤1:输入4个32位无符号整型密钥key0,key1,key2,key3,所述的key0、key1、key2、key3为由用户提供的32位无符号整型密钥;

步 骤 2:计 算 x01 = (key0+key1)/(0xffffffff*2) 和 x02 = (key2+key3)/(0xffffffff*2),以x01和x02分别作为logistic映射的参数,然后采用logistic映射迭代100次得到x21和x22,x2=(x21+x22)/2;所述的logistic映射为:xn+1=1-μxn,μ∈(0,2),xn∈[-1,1];其中的x01、x02、x21、x22均为求双精度数x2的中间变量;

步骤3:以x2为参数,采用chebyshev映射每迭代100次,取混沌序列值,生成S_x0[times]数组中的一个值,直至生成整个以times为大小的数组;所述的times为加密轮数且大于4;

-1

所述的chebyshev映射为:xn+1=cos(k cos (xn)),k≥2,xn∈[-1,1];

步 骤 4:计 算 y01 = (key0+key2)/(0xffffffff*2) 和 y02 = (key1+key3)/(0xffffffff*2),分别用logistic映射迭代100次得到y21和y22,y2=(y21+y22)/2;其中的y01、y02、y21、y22均为求双精度数y2的中间变量;

步骤5:以y2为参数,用chebyshev映射每迭代100次,取混沌序列值,然后把序列映射到(1,2]范围内生成S_u0[times]数组的一个值,直至生成整个以times为大小的数组;

步骤6:将第k轮s盒混沌映射的参数S_u0[k]赋值给su0,第k轮第j块sbox_x0经过下列迭代:logx0[k][0]=S_x0[k],

logx0[k][j]=1-su0*logx0[k][0]*logx0[k][j-1],sbox_x0[k][j]=fabs(cos(4*acos(logx0[k][j])))其中x0[][]是为计算sbox_x0[k][j]值而建立的临时中间数组;

步 骤 7: 计 算 z01 = (key0+key1)/(0xffffffff*2),z02 = (key2+key3)/(0xffffffff*2),分别用chebyshev映射迭代100次得到z21和z22,z2=(z21+z22)/2;

其中的z01、z02、z21、z22均为求双精度数z2的中间变量;

步骤8:以z2为参数,用logistic映射每迭代100次,取混沌序列值,生成P_u0[times]数组中的一个值,直至生成整个以times为大小的数组;

T

步骤9:将数字图像PW×H按8*8像素点分块,每一块中第1个像素点P0={r,g,b},以S_u0[k]为参数用Logistic映射生成长度为6的混沌序列D[0..5],其中:r为数字图像块中红色的值,g为数字图像块中绿色的值,b为数字图像块中蓝色的值;

6

步骤10:通过K[i]=(D[i]*10)mod256(i=0,1,...,5)生成K[0..5],把K[0..5]作为三维Arnold映射的参数,根据Arnold映射获得矩阵A,

其中a12=K[0],a13=K[1],a23=K[2],b12=K[3],b13=K[4],b23=K[5];

由 生成列矩阵B,通过

得到S盒的输出结果S0,其中Pi为第i个像素点的值P=(r,g,b);

步骤11:根据 修改用于加密每块

中第i个像素的混沌映射的初始参数;每次新生成用于加密此像素点的数组K中的K[3]、K[4]、K[5],而K[0]、K[1]、K[2]选取第i-1个像素点对应数组K中的K[3]、K[4]、K[5];所述Pi-1.r代表Pi-1的r值、Pi-1.g代表Pi-1的g值,Pi-1.b代表Pi-1的b值;

步骤12:将S0的每个字节分成高4位和低4位生成sbox_out[0..384],用P_u0[k]作为初始值生成长度为(8*8-1)*3*2的序列p[378],把步骤11中的前s[0..378]个元素与p[0..378]一一对应,对p[0..378]进行排序,同时改变s[0..378]序列中元素的位置,s[379..384]位置不变;

步骤13:合并高4位和低4位生成p[192],把前三个字节与后三个字节交换位置;

-1

步骤14:再用xn+1=cos(4cos (xn)),xn∈[-1,1]生成混沌值映射到整数m,0<m<n-1,选取第m种排序方法进行置乱;重复步骤6~11,直到加密完成,其中n为排序方法的种数,n=W/block_size;所述block_size是加密块的大小。

2.根据权利要求1所述的基于三维Arnold映射的图像分组加密方法,其特征在于:上述方法的解密方法为加密过程的逆过程。

说明书 :

一种基于三维Arnold映射的图像分组加密方法

技术领域

[0001] 本发明涉及一种基于三维Arnold映射的图像分组加密方法,属于信息安全领域中的密码技术,是一种利用电子计算机技术、混沌映射实现的基于s-p网络的图像数据加密方案。

背景技术

[0002] 随着Internet在多个领域的快速发展,现代社会对国际互联网的依赖越来越深,然而,随着互联网同时出现的安全问题也成为了用户在选择使用时关注的一个重要方面。近年来,网络安全事故的频频发生,给大到国家小到个人的国际互联网用户带来了巨大的损失,因此,信息安全问题成为了计算机领域不容忽视的问题。
[0003] 随着学科的发展,密码术在许多研究人员的不懈努力下,已经发展成为信息安全领域最受欢迎的数据保护手段之一。混沌密码系统具有各态遍历性和对初值、参数敏感的特点,非常适合构建加密方法,而且混沌密码系统还具有加密速度快,资源耗费少,实现过程简单明了,为数据的安全传输提供了很好的加密应用,因此混沌密码学(明文数据与乱数流叠加产生密文)成为近代加密学的一个热点。
[0004] 常见的混沌密码系统主要分为两类:1.基于混沌的流密码,即利用混沌映射产生密钥流,一次与一个明文符号进行加密操作;2.基于混沌的块密码,把一定大小的一组明文作为明文块,通过混沌映射进行加密操作。一般来说,基于混沌的块密码的应用要比流密码的应用广泛的多。
[0005] 混沌密码学还正处于发展阶段,近些年来,很多关于混沌系统的图像加密方案接连呈现于大家的视野,但是却不得不说一些低维混沌密码系统已经被证明存在安全问题。例如,使用一维混沌系统的加密方法,密钥空间不够,直接导致无法抵御穷举攻击,同时容易利用相空间重构方法破解出密钥,从而不能抵御已知明文攻击。二维Cat映射和Baker映射在某些参数下不能保证其安全性。Cat映射加密方法在某些控制参数下经过多次迭代可恢复明文,Baker映射加密方法在某些控制参数下迭代多次并不能改变明文。这就需要在方法构建时有效的排除此类弱密钥,以保证方法安全。可见在混沌密码方法构建的过程中,混沌映射的应用方式直接影响到方法的安全性。许多利用高维混沌的加密方法也就应时而生了。

发明内容

[0006] 要解决的技术问题
[0007] 为了避免现有技术的不足之处,本发明提出一种基于三维Arnold映射的图像分组加密方法,以保证在混沌密码方法构建的过程中,混沌映射应用方式影响到方法的安全性。
[0008] 本发明的思想在于:首先采用扩展到三维的Arnold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。
[0009] 技术方案
[0010] 一种基于三维Arnold映射的图像分组加密方法,其特征在于:对于数字图像PW×H,其中W是图像的宽度,H是图像的高度,均以像素计,其加密的具体步骤如下:
[0011] 步骤1:输入4个32位无符号整型密钥key0,key1,key2,key3,所述的key0、key1、key2、key3为由用户提供的32位无符号整型密钥;
[0012] 步 骤 2:计 算x01 =(key0+key1)/(0xffffffff*2) 和x02 = (key2+key3)/(0xffffffff*2),以x01和x02分别作为logistic的参数,然后采用logistic映射迭代100次得到x21和x22,x2=(21+x22)/2;所述的logistic映射为:xn+1=1-μxn,μ∈(0,2),xn∈[-1,1];其中的x01、x02、x21、x22均为求双精度数x2的中间变量;
[0013] 步骤3:以x2为参数,采用chebyshev每迭代100次,取混沌序列值,生成S_x0[times]数组中的一个值,直至生成整个以times为大小的数组;所述的times为加密轮数大于4;
[0014] 所述的chebyshev映射为:xn+1=cos(kcos-1(xn)),k≥2,xn∈[-1,1];
[0015] 步 骤 4:计 算y01 =(key0+key2)/(0xffffffff*2) 和y02 = (key1+key3)/(0xffffffff*2),分别用logistic映射迭代100次得到y21和y22,y2=(y21+y22)/2;其中的y01、y02、y21、y22均为求双精度数y2的中间变量;
[0016] 步骤5:以y2为参数,用chebyshev每迭代100次,取混沌序列值,然后把序列映射到(1,2]范围内生成S_u0[times]数组的一个值,直至生成整个以times为大小的数组:
[0017] 步骤6:第k轮第j块sbox_x0经过下列迭代:
[0018] logx0[k][0]=S_x0[k],
[0019] logx0[k][j]=1-su0*logx0[k]*logx0[k][j-1],
[0020] sbox_x0[k][j]=fabs(cos(4*acos(logx0[k][j])))
[0021] 其中x0[][]是为计算sbox_x0[k][j]值而建立的临时中间数组;
[0022] 步 骤 7:计 算 z01 = (key0+key1)/(0xffffffff*2),z02 = (key2+key3)/(0xffffffff*2),分别用chebyshev映射迭代100次得到z21和z22,z2=(z21+z22)/2;其中的z01、z02、z21、z22均为求双精度数z2的中间变量;
[0023] 步骤8:以z2为参数,用logistic每迭代100次,取混沌序列值,生成P_u0[times]数组中的一个值,直至生成整个以times为大小的数组;
[0024] 步骤9:将数字图像PW×H按8*8像素点分块,每一块中第1个像素点P0={r,g,b}T,以S_u0[k]为参数用Logistic映射生成长度为6的混沌序列D[0..5],其中:r为数字图像块中红色的值,g为数字图像块中绿色的值,b为数字图像块中蓝色的值;
[0025] 步骤10:通过K[i]=(D[i]*106)mod256(i=0,1,...,5)生成K[0..5],把K[0..5]作为三维Arnold映射的参数,
[0026] 根据Arnold映射获得矩阵A,
[0027]
[0028] 其中a12=k[0],a13=k[1],a23=k[2],b12=k[3],b13=k[4],b23=k[5];
[0029] 由 生 成 列 矩 阵 B,通 过得到S盒的输出结果S0,其中Pi为第i个像素点的值P=(r,g,b);
[0030] 步骤11:根据 修改用于加密每块中第i个像素的混沌映射的初始参数;每次新生成用于加密此像素点的数组K中的K[3]、K[4]、K[5],而K[0]、K[1]、K[2]选取第i-1个像素点对应数组K中的K[3]、K[4]、K[5];
[0031] 步骤12:将S0的每个字节分成高4位和低4位生成sbox_out[0..384],用P_u0[k]作为初始值生成长度为(8*8-1)*3*2的序列p[378],把步骤6、7中的前s[0..378]个元素与p[0..378]一一对应,对p[0..378]进行排序,同时改变s[0..378]序列中元素的位置,s[379..384]位置不变;
[0032] 步骤13:合并高4位和低4位生成p[192],把前三个字节与后三个字节交换位置;
[0033] 步骤14:再用xn+1=cos(4cos-1(xn)),xn∈[-1,1]生成混沌值映射到整数m,0<m<n-1,选取第m种排序方法进行置乱;重复步骤6~11,直到加密完成,其中n为排序方法,n=width/block_size。
[0034] 上述方法的解密方法为加密过程的逆过程。
[0035] 有益效果
[0036] 本发明提出的一种基于三维Arnold映射的图像分组加密方法,首先采用扩展到三维的Arnold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。理论分析和实验结果表明方法具有密钥空间大、敏感度高、速度快、安全性好,抗攻击能力强等优点。与同类方法相比,该方法保证安全性的同时具有更快的速度,更适合用于图形数据加密。主要优越性在于:有足够大的密钥空间抵抗穷举攻击;任何一位密钥的改变都会使混沌序列的初始值和参数完全改变。这样极大的增加了密钥的敏感性;统计特性不会暴露任何有用信息,密图相邻像素相关性小和抗攻击能力强。

附图说明

[0037] 图1:本发明的加密过程
[0038] 图2:采用本方法的加密图像试验
[0039] 图3:采用本方法的加密图像试验
[0040] 图4:Lena图像加密后的统计直方图
[0041] 图5:明密文图像中的水平相邻像素相关性分析

具体实施方式

[0042] 现结合实施例、附图对本发明作进一步描述:
[0043] 数字图像Input_Picture,用MW×H表示,w是图像的宽度,以像素计,将图像按8*8像素点分块,block_size是加密块的大小,n=w/block_size,每一加密块中第一个像素点P0={r,g,b}T,。下文所有双精度的值key0~key3以及int类型times都由用户提供,取u0=1.9999。
[0044] 具体加密过程如下(参见附图1):
[0045] 1.分别利用公式
[0046] x01=(key0+key1)/(0xffffffff*2)和x02=(key2+key3)/(0xffffffff*2),得到的x01和x02作为logistic的参数,迭代100次得到x21和x22。
[0047] 2.用x2=(x21+x22)/2得到的x2作为chebyshev的参数,然后每迭代100次,取混沌序列值,生成S_x0[times]中的一个数组元素值,直至生成整个以times为大小的数组,数组中的每一个值作为每轮生成s盒混沌映射的初始值。
[0048] 3.分别利用公式y01=(key0+key2)/(0xffffffff*2),y02=(key1+key3)/(0xffffffff*2),得到的y01和y02作为logistic的参数,迭代100次得到y21和y22。
[0049] 4.用y2=(y21+y22)/2得到的y2作为chebyshev的参数,然后每迭代100次,取混沌序列值,把序列映射到(1,2]范围内生成S_u0[times]中的一个数组元素值,直至生成整个以times为大小的数组,数组中的每一个值作为每轮生成s盒混沌映射的参数。
[0050] 5.分别利用公式z01=(key0+key1)/(0xffffffff*2),z02=(key2+key3)/(0xffffffff*2),得到的z01和z02作为chebyshev的参数,迭代100次得到z21和z22。
[0051] 6.用z2=(z21+z22)/2得到的z2作为chebyshev的参数,然后每迭代100次,取混沌序列值(),生成P_u0[times]数组中的一个值,直至生成整个以times为大小的数组,数组中的每一个值作为对应每轮生成p盒混沌映射的初始值。
[0052] 7.将第k轮s盒混沌映射的参数S_u0[k]赋值给su0,将另一参数S_x0[k]赋值给logx0[k][0],利用迭代公式logx0[k][j]=1-su0*logx0[k]*logx0[k][j-1]得到logx0[k][j],作为fabs(cos(4*acos(logx0[k][j])))的参数,算出第k轮j块s盒混沌映射的初始值sbox_x0[k][j]。
[0053] 8.以S_u0[k]为参数代入公式xn+1=1-μxn,μ∈(0,2),xn∈[-1,1]生成一个6
长度为6的混沌序列D[0..5],并通过K[i]=(D[i]*10)mod256生成Arnold矩阵。
[0054] 9.取K[0..5]混沌序列的后三个值作为三维Arnold映射的参数,并且算出的值。
[0055] 10.S盒的输出为 修改用于加密每块中第i个像素的混沌映射的初始参数,利用 计算出加密
每块中第i个像素的混沌映射的初始参数sbox_xi。
[0056] 11.将s盒输出的结果的每个字节分成高低4位生成sbox_out[0..384],用P_u0[k]作为初始值生成长度为(8*8-1)*3*2的序列p[378],把步骤10中的前s[0..378]个元素与p[0..378]一一对应,对p[0..378]进行排序,同时改变s[0..378]序列中元素的位置,s[379..384]位置不变。把前三个字节与后三个字节交换位置后,合并高低四位生成p[192]。
[0057] 12.利用xn+1=cos(4cos-1(xn)),xn∈[-1,1]生成混沌值映射到整数m(0<m<n-1),选取第m种排序方法进行置乱。
[0058] 13.重复8-12步骤,直到加密完成。
[0059] 解密过程
[0060] 为加密过程的逆过程。
[0061] 根据本实施例可以看出本发明具有如下特点:
[0062] 本方法首先采用扩展到三维的Arnold映射构造S盒,再由Chebyshev映射产生的混沌序列进行排序法置乱,经多轮迭代完成加密操作。理论分析和实验结果表明方法具有密钥空间大、敏感度高、速度快、安全性好,抗攻击能力强等优点。与同类方法相比,该方法保证安全性的同时具有更快的速度,更适合用于图形数据加密。
[0063] I.密钥空间大
[0064] 由于本方法复合使用了多个混沌映射,而且本方法所采用的是128位密钥,密钥128
空间为2 ,所以本方法有足够的密钥空间抵抗穷举攻击。
[0065] II.敏感度高
[0066] 本方法中混沌映射的初始值和参数是由128位密钥整体生成,其中任何一位密钥的改变都会使混沌序列的初始值和参数完全改变。这样极大的增加了密钥的敏感性。随机选取128加密密钥为5fe23459 78d2e3a1 4dfea580 fa1b3e68,加密4轮,对512*512的lena图进行加密,加密时间为0.359s。实验结果如附图2,很明显,图像的加密结果使得原始信息不可辨识,同时如果输入正确的密钥就可以得到如附图3所示的正确解密结果。
[0067] 表1的结果说明该方法对于一个固定长度的明文块,当密钥的任意一位发生改变时,密文块的每个位发生改变的概率为50%,满足精确密钥雪崩标准,可以在一定程度上抵抗差分密码攻击。
[0068]
[0069] 表1密钥改变一位密文变化百分比
[0070] 表2的结果说明该方法对于一个固定长度的明文块,当明文块的任意一位发生改变时,密文块的每个位发生改变的概率为50%,满足精确密钥雪崩标准,可以在一定程度上抵抗差分密码攻击。
[0071]
[0072] 表2明文块改变一位密文变化百分比
[0073] III.统计特性不会暴露任何有用信息
[0074] 一个好的图像加密方法应该使得密图在统计上不能提供任何有用的信息,从而使得破解变得更加困难,比较理想的状态是加密过程将原始图像像素值的不均匀分布变成了像素值的均匀分布;使密文像素值在整个空间范围内取值概率均等,则明文的统计特性完全被打破。这样使得加密的安全性更高。
[0075] 附图4展示了原图与密图的色彩分量的灰度直方图。可以看出,密图的红、绿、蓝分量的灰度直方图都呈均匀分布,这说明加密方法对原图像起到了很好的混淆效果,有效地掩盖了原图的统计特征,攻击者很难通过对密图灰度直方图的分析得到有用的信息。
[0076] IV.密图相邻像素相关性小
[0077] 为了检验明文图像和密文图像相邻像素的相关性,从密图中随机选取1000个相邻像素对(分别在水平、竖直和对角线方向上)。然后,用公式定量计算相邻像素相关性并画出对应的分析图像。
[0078] 附图5即为该方法像素点相关性分析的结果,其中,x和y分别表示图像中两个相邻像素的灰度值,γxy即为两个相邻像素的相关系数。
[0079] 通常原始明文图像的相邻像素的相关系数接近于1,即相邻像素是高度相关的。而比较理想的加密方法使得密图的相邻像素的相关系数接近于0,即相邻像素已基本不相关,这样可以说明明文的统计特征已被扩散到随机的密文中。
[0080] V.抗攻击能力强
[0081] 低维混沌系统受有限精度影响产生短周期效应,严重影响其产生序列的随机性。而尽管采用复杂的非线性高维混沌系统可以克服一维混沌系统不能抵御相空间重构攻击的缺点,但此类方案计算复杂度高,难以满足实时性要求。本方法利用三维Arnold映射构建的S盒,用Chebyshev映射构建的扩散过程以及密钥产生器,能够很好地增加方法的抗攻击能力。根据香农的信息论,当密图信源随机的传输信息时,信源的熵值应为8,因此,考虑到现实中的信源很少真正随机的传输数据,一个安全的图像加密算法加密后的图像的熵值应该尽可能的接近于8。利用公式,我们得到密图的熵值H(S)=7.999745,这说明加密过程中的信息泄漏是可以忽略的,并且加密系统可以抵抗熵攻击。此外,我们可以看到,明文图像中的每一个像素在迭代过程中都做为产生logistic序列的参数出现,所以密钥子序列的产生与明文高度相关,因而本方法能够有效抵抗已知明文攻击。