混沌系统被越来越多的应用,为此,我们利用混沌系统具有的确定性、对初始条件的敏感性、长期不可预测性和伪随机性,设计了—种确定性随机全排列的生成方法——混沌随机全排列置换加密算法,该加密算法可以作为一个通用模块加入到其他密码系统中,以提高密码系统的强度和安全性,并应用到图像和文本文件加密中。
一、置换密码技术与混沌动力系统
置换密码是密码学中一种最基本的加密算法,在早期的加密算法中是以字母为单位进行某种映射,实现比较简单,且很容易破译,还有一些较复杂的置换密码算法如列换位加密法,它是将明文按行写到一个矩阵中,再按一定的顺序读取列以生成密文。这些经典的加密算法虽然现在易于破解,但是其优点仍然值得利用。置换密码算法的优点有:
(1)置换寂寞算法有巨大的密钥空间,即使当m比较小时,如n=128或者256时,变换的模式达到n!,这是一个巨大的数目。
(2)换位变换容易快速实现,由于换位不进行一些数学运算,只是位置的改变,因此实现速度极快。
(3)可以抵抗—些特殊的攻击和破坏。如裁剪、随机噪声等,如果对密文进行破坏,还是可以恢复大部分甚至所有的明文信息。在一些特殊的领域如图像文件加密应用中,基本上都添加了置换单元。
由于置换后的密文可以看做是加密前明文的一个全排列,因此置换加密的密钥本质上是此置换全排列模版,传统的置换加密的置换模式固定是其容易破解的原因之一,而且产生的全排列如果过长,则该置换模式就不宜作为密钥手动输入,这也是传统置换密码采用的密钥较短的原因之一。如果可以用较短的密钥来控制生成不同长度的全排列置换模版,而且在一次加密中,可以快速地产生多个不同模版置换明文,则置换加密的强度将大大提高。
混沌是一种貌似无规则、在确定性系统中出现的一种对初值非常敏感的类似随机过程,混沌系统可以提供具有良好的随机性、复杂性的长周期确定性伪随机序列,因此具有很高的密码学价值。自Matthews在1989年首次将混沌用于密码学研究以来,混沌理论已经开始逐渐地应用到信息安全各个领域。理论上,混沌系统提供了构造真随机序列的可能性,可以提供一个可重复的随机数序列,且其序列仅与系统参数和初值有关。这样,就可以利用混沌序列用于安全加密系统中,混沌系统的系统参数和初值构成密钥空间。最常见的混沌系统有Logistic、二维Henon混沌等。考虑以下常见的Logistlc混沌系统:
当3.569 945 68≤μn≤4时,系统处于混沌状态。当μn=4时,为满映射,系统的随机性最好。在μn越接近4的地方,x取值范围越是接近平均分布在整介0到1的区域。因此可以考虑利用混沌系统的优点,来生成置换密码中所需要的全排列。
二、随机全排列生成算法
生成全排列的方法—般有邻间置换、洗牌算法等,但这些方法不符合密码学的使用要求,因此不能使用。为此推荐大家使用一种树形结构的全排列生成算法,但该方法空间代价极高,并对其进行了改进,提出了一种基于混沌的快速生成混沌的方法。本文首先设计了一种确定性随机全排列生成算法,以利用混沌的密码学特性来生成置换加密中所需要的全排列。
定义将m个不同元素按照一定的顺序排列起来,叫做这m个不同元素的一个全排列。显然,m个元素的全排列总共排列方式有m!组。
加密算法说明:
(1)设要生成的全排列元素在0到m-1之间,元素数目为m;令{0,1,…,m-1}中所有元素的—个全排列为{ao,a1,,…,am-1},当i≠j时有ai≠aj,如果要生成{1,2,…,m}的一个全排列,可在上述{ao,ai,…,am-1}中将元素0改为m即可。
(2)全排列初始值系数ko:令n= [ko ×m],n与初始生成全排列中元素的个数有关,若太小,则产生的初始全排列随机性差,若太大,则重复数据多,会增加系统的迭代次数,—般取
k0=(0.5~0.7)即可。
(3)设所使用的混沌系统为xn=f(xn-1),可以选择不同的混沌系统。xn为当前的混沌序列,每次使用后都要进行迭代,以产生新的混沌序列。
(4)采用整数求余量化从混沌获取所需要的随机数。设混沌序列小数点后的位数露,定义一个抽取位数的序列Wt={w1,W2,…,wt},一般3≤t≤7,且满足wi≤t≤7,m<10t。令
G(xn,wi)代表xn小数点后的第wi位数字,则可以定义下列量化函数获取—个0~m -1内的随机数:
(5)将生成全排列存储在数组A中,最初始为空,最大长度为m,采用依次添加的方式生成。每次在上一次的位置后增加—个元素。
加密算法描述如下:
(1)迭代混沌系统,利用量化函数产生n个0~m -1内的随机数,依次存储在数组T中。
(2)对a中的每个元素,若么中还不存在,则添加到么末尾,否则丢弃。
(3)步骤(2)完成后,么中元素的数目最多为n个,然后将{0,1,…,m-1}中元素在么中不存在的,依次添加到么末尾,形成初始全排列A。
(4)对初始全排列么进行若干轮下列全变换,以增强全排列的随机性。轮数r可以作为密钥确定。根据m的大小,考虑系统的速度,可取1<r<5:
//一轮全变换
for i=1→m
temp= F(xn);
//迭混沌漂彭莎锥副扬陈列—个(0,m-1)内的整数
A[i]_A[temp];
//2个对应位置元素交换
end
(5)将步骤(4)中的全变换执行,轮后就生成了所需的随机金排列。
该加密算法生成的全排列对混沌系统的初值敏感,因此密钥的细微差别都将产生不一样的全排列。生成的全排列的密钥不仅可以由混沌系统初始参数控制,而且上述过程中的相关参数如ko、t、r等都可以作为密钥,因此密钥空间足够大。利用该加密算法可以生成任意多所需长度的全排列,在置换加密中就可以更灵活地改变置换模式,大大地提高置换加密的强度。
三、基于随机全排列的置换加密算法
传统的置换加密中由于使用相同的置换模式和采用的置换模式敲短的原因,使其很脆弱。利用上述基于混沌的随机全排列生成方法,设计了—种通用的全排列置换加密算法,该加密算法将
明文分块,并将每块组合成矩阵形式,分别进行行置换和列置换,且每次行置换和列置换的置换模式都重新由本文设计的随机全排列生成算法生成,因此置换密码的安全性大大提高。
首先定义下列加密和解密变换。设明文序列为M=mom1…mn-1,,长度为n,利用上述加密算法生成的置换全排列为A=aoa1...an-1;置换后的名孜为C=coc1...cn-1,定义下列加密变换:
定义下列解密变换:
(1)首先将明文分成若干mxn大小的块,并将明文组成mxn大小的明文矩阵。如果明文为图片,则可以直接将图片的像素矩阵作为块。设当前的明文矩阵为Mi,记:Mi1.为Mi的第i行;Mi2为Mi的第i列;密文块为Ci,记:Ci1为Ci的第行;Ci2为Ci的第f列;对于明文分块的大小,建议m>64,n>64。
(2)块加密:利用上述全排列生成算法生成置换集合模版。为了增强置换效果和随机性,分别对明文矩阵块进行行置换和列置换。产生m个{0,1,…,n-1)的全排列,组成行置换集合H={H1,H2,…,Hm);产生n个{0,1,…,m-1)的全排列,组成列置换集合V={V1,V2,…,Vm},分别对明文矩阵进行下列行置换加密和列置换解密:
(3)块解密:解密是加密的逆过程,加密过程是先行置换后列置换,且都是从第一行和第一列开始,而解密过程则是先列置换后行置换,且都是从最后一列和最后一行开始进行相应置换。产生m个{0,1,…,n-1)的全排列,组成行置换集合H={Hi,H2,…,H0};产生n个{0,1,…,m-1}的全排列,组成列置换集合V= {V1,V2,…,Vn},首先对明文矩阵进行列置换解密,再进行置换解密:
(4)利用上述的块加密和解密方法对每一明文块进行操作,就完成了整个明文或密文的加密解密操作。需要说明的是,对于最后一块的处理,如果不能组合成明文矩阵,也可以直接进行一次行加密或行解密变换操作即可。
从上述置换加密和解密过程可以看到,每一块明文所使用的置换矩阵都利用基于混沌的随机全排列生成算法产生,每块明文的每一行每一列都进行了置换,且每一次生成的随机全排列都不相同,因此其置换关系极为复杂,而所有的参数和过程都可以由混沌系统参数控制,混沌系统的使用又具有很大的灵活性,使得密钥可以很容易地根据需要扩大,因此置换加密算法的安全性较传统的置换加密算法更好。
四、混沌随机全排列置换加密算法分析与应用
提出的基于随机全排列的置换密码可以作为—个密码模块集成到其他密码系统,可以推广和应用到普通文件数据,图像、音频等各种数据文件加密。下面是将上述加密模块应用到普通文本数据文件加密和图像文件加密的实例。
1、普通文本文件加密实例
对于大量的文本文件加密,可以将明文进行分组,而后采用上述的置换加密算法,对每块文本进行置换,而对于末尾块,可能不能组合成上述矩阵,可以直接将其作为一行,进行一次单
独的行置换即可。选取了一段20x20的文字,采用上述加密算法进行置换加密,并将密文中间剪切(剪切过的字符用“*”代替),效果如图1所示。
可以看到在将密文剪切25%后解密仍然可以了解各明文的大致情况,而且密文集中剪切出的点都分散到了明文的不同位置,置换效果很好。
2、图像文件加密实例
由于上述加密算法适合矩阵形式,对于图像加密则更加方便,可以直接将图像的像素矩阵进行置换即可。下面是采用常见的256 x256像素的lena灰度图像进行置换加密实验,并进行剪切和密钥的敏感性测试。图2是实验和测试效果。采用的混沌系统是Logistic混沌映射,也可以采用其他的混沌系统。取x0=0.777 928 986 796 433,μo=4.0,敏感性测试中将初值x0最后—位改变为x0=0.777 928 986 796 434。
从上述测试中可以发现,对密钥细微的改动都会影响到最终的解密效果,而且在对密文进行剪切干扰后进行恢复,恢复后的图像也很能清楚地反应愿耠图像的一些特征。因此完全可以将本文的置换加密模块应用到现有的密码系统中,以提高系统的安全性。
3、测试分析
为了获取上述加密置换效果,本文采用的几项测试指标测试试置换的程度,并做对比,结果显示,本文采用的全排列生成方法和置换加密算法都取得了很好的效果。
(1)不动点
若置换后,明文矩阵中位置没有改变的点称为不动点。对经过置乱图像,要求置乱后图像的像素尽可能都改变位置,即不动点的数目越少越好,这样才说明置乱效果好。对不同大小的图像进行置乱,并进行统计,取不动点与所有像素的比值作为指标。
(2)自然序
如果在明文中相邻的2个点置换后位置仍然相邻,则称为自然序。置乱后图像相邻的像素应该尽可能不再相邻,即排列后的坐标中自然序对应尽可能少,这样置乱的效果才好,取所有自然序与所有像素的比值作为指标。
小知识之全排列
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。