依据帐篷映射的混沌特性并结合动态参数和明文块细分子块方法,我们提出了一种改进了的基于离散斜帐篷映射的混沌加密方法。该方法不仅继承了原有系统的优良密码学特性,而且通过理
论分析和实验证明它拥有更好的抗选择明文攻击特性以及较稳定的加解密速度。

一、基于有限状态的帐篷映射的加密系统

Masuda和Aihara提出了一种基于一维离散斜帐篷映射的加密系统。其斜帐篷映射的离散化方法比较新颖,易于推广到一般的混沌映射上。该加密算法将本是二对一的斜帐篷映射通过离散化变为一一对应的离散映射;同时保留了原帐篷映射的混沌特性,如对初值的敏感性和迭代轨道序列的相关性以指数递减。其轨道序列可以视为贝努利序列,即具有强的伪随机特性,可以直接用于对信息文件加密,同时因为逆变换的存在,其解密算法将变得非常简单。

1、离散化混沌映射为一一对应的离散变换的方法

斜帐篷映射是一种推广的帐篷映射,其定义如下:

混沌加密系统之基于离散斜帐篷映射加密

该函数是二对一的映射,没有一一对应的逆函数,但可以看作具有两个分支的逆函数,即fa-1=ax或fa-1=1+(a-1)x0若想直接利用fa(x)的迭代来加密明文,然后用其逆函数直接解密,则其逆函数的不唯一将使解密面临一致性问题,解密不能恢复出原文o为了做到解密的一致性,文件提出了如下的离散化方法,以诱导出一个有限状态的一一对应的扩敢变换。

令M>2,定义如下两个集合,P=C={x;x=1/m,2/m...m/m};由(1)式诱导的变换关系定义如下:

混沌加密系统之基于离散斜帐篷映射加密

这里|.|表示集合的势。这样(2)式就是一个有限状态的离散映射。fa(x)对应到{x;x=1/m,2/m...m/m}中的第fa(x)M个最小元素,fa(x1)=fa(x2)且x1<x2,则令:

混沌加密系统之基于离散斜帐篷映射加密

容易看出,fa(x)是一一对应的函数。并保持了将0<x≤a和a<1≤1都拉伸到0<x≤1上。其逆变换fa-1如下,若fa(x’)是{x;x=1/m,2/m...m/m}中M.y的一个最小元,则令fa-1 (y)=x’∈ P即可。

2、基于离散化斜帐篷映射的加密算法

将(2)式改写为下面的形式:

混沌加密系统之基于离散斜帐篷映射加密

而fa-1(x)可写为如下的形式:

混沌加密系统之基于离散斜帐篷映射加密

为了将(4)式和(5)式用于加密和解密算法,需要将它们进一步修改为整数集合上的变换和逆变换。变换的定义域和值域做如下修改:

混沌加密系统之基于离散斜帐篷映射加密

其中P’,C’,A’可分别视为明文空间、密文空间和密钥空间。加密算法就是直接的对明文做尼次函数迭代得到密文,每一轮都采用如下的加密变换:

混沌加密系统之基于离散斜帐篷映射加密

解密过程是加密的逆过程,对密文做如下的逆变换n次即可恢复明文。

混沌加密系统之基于离散斜帐篷映射加密

二、改进的离散斜帐篷映射加密算法

离散斜帐篷映射的迭代轨道有很好的伪随机特性。不论是从欧氏空间来看,还是从GF(2n)来看,随着迭代次数的增加,在密文中的明文信息以指数速率迅速衰减a这个特性若能很好地利用可以设计出高安全的加密系统a这里,我们将提出一种具有动态参数的离散斜帐篷映射的加密系统。

加密系统中,密钥是参数A。且在加密过程中,A是没有变化的,这也保证了解密的一致性。而在传统的加密方案中,如高级加密标准(Advanced EncryptionStandard.AES) Lzl,其密钥在进行时有一个密钥扩散过程,也称为密钥编排。即加密和解密算法使用从种子密钥的字节数组生成的密钥次序表,实质上,从初始密钥生成多个密钥(而非使用单个密钥)会大大增加位的扩散,在对一个明文块加密时,每一轮的加密密钥都是由种子密钥通过扩散过程产生的轮密钥。测试和分析表明对明文块加密采用轮密钥可以加强系统的安全性。

1、基于动态参数的离散斜帐篷映射加密算法

动态改变加密参数A是指,在对明文迭代加密时,每次迭代的离散斜帐篷映射的系统参数是不同的。因此,需要有一个在每一轮由种子密钥产生每轮迭代所用的参数的算法。在下面的算法描述中,把这些参数称为轮密钥或子密钥。设种子密钥为K,每一轮迭代所需的子密钥记为Ai,i=1,2,…,N。则产生Ai的算法如下:

混沌加密系统之基于离散斜帐篷映射加密

这里,第i轮的子密钥Ai是通过(6)式迭代得到的,其所需的迭代次数ni和系统参数q由种子密钥K产生。具体产生ni和ai的算法如下:

设明文空间、密文空间和密钥空间的大小按比特长度计为L= [log2 M]。将种子密钥串划分为基本相等的g份,前q-1个长为floor( L/q),最后一个长为L-(q-1)×floor( L/q)。这里Zoor(.)表示地板函数。即将种子密钥分为q个子串,分别记为K1,K2,…,Kq。下面我们利用Kj,j=1,2.…,q来产生轮密钥,用如下算法产生ni和ai:

混沌加密系统之基于离散斜帐篷映射加密

下面用一个实际的例子来说明上述的密钥编排方案,这里用较短的密钥来演示我们提出的加密方案的有效性。取密钥空间大小为肘= 216,则L= 16,令密钥K=55 147=11010011101101011,取q=2,将密钥分为2个子串Ki=11010111=215和Kz=01101011=1070加密迭代的次数N=[2. 39×16]+ 15=54。

依据(8)式和(9)式,利用Ki和K2来产生的54轮密钥如下:

混沌加密系统之基于离散斜帐篷映射加密

混沌加密系统之基于离散斜帐篷映射加密

采用文中提出的加密算法对256×256的灰度图像moonsurface加密和解密的效果见图1,加密所用的时间为0.40s,解密所用的时间为0. 53s,即加密速度和解密速度分别为1. 280Mb/s和0.96Mhis(Matlab实现,并在拥有2.1GHz的CPU和512M内存的个人电脑上运行测试)。

混沌加密系统之基于离散斜帐篷映射加密

2、基于动态参数和明文块细分子块的加密算法

当需要很高的安全程度时,在加密系统中,对应的加密明文和密文空间也会变得很大,这时其上的变换运算的速度将变得很慢,也就是随着密钥长度的增加,加密和解密所需的时间也会变得较长。在许多实时应用中,这是不希望出现的。而在我们改进的加密算法中,由于应用了轮加密参数动态产生的策略,若对加密和解密算法做一些改进,就可以做到在加密变换的空间大小不变的情形下,扩大明文、密文和密钥的空间a即在要求的加密密钥长度很长时,通过密钥编排,将密钥信息逐渐转移到较短的轮密钥中,即每次迭代变换的参数Ai中,以实现在扩展密钥长度时,加密和解密运算的速度基本不发生改变或者增加的计算量很小。

进一步改进的加密算法可视为基于密钥编排和明文块细分子块加密的方案。块细分子块加密的方案的加密和解密算法描述如下:

加密算法

设明文块P的长度为L,在做加密变换前将明文块分为2s个等长的小块P1,P2,…,P2s,子密钥长度为L,记为A1,A2,…,As,它们由(8)式和(9)式根据种子密钥尺来产生。加密变换的空间大小为2L/s,即每次变换在两个小块上进行。首先将块P1和P2连成一个长为2L/s的块,基于变换公式(6),利用子密钥Ai对P1P2做变换得到C11C21,将C21C23连接为一个块,利用子密钥A2s对C21C11做变换,得到C22C21;然后再将C31P4连接为一个块,用子密钥A3对C31P4做变换,得到C2-212;对所有P1,P2,…,P2s进行上述的子块加密,得到C2-12C21后,连接C21C11,利用子密钥A2,对c11c21做变换,得到C21C11至此,我们可以将中间密文块研,C11,C22....C2s2视为经过两轮变换后的密文块,且每次变换所用的子密钥是不同的。利用子密钥组A2ixs+1,A2ixs+2,…,A2ixs+s,i=1,2,…,N-1,可以对明文子块再做2(N -1)轮变换,得到最终的密文块C12n,C22n,…,C12s。

解密算法

解密算法是加密算法的逆过程。

采用上面的加密方案就能在较小的变换空间里获得很强的加密安全性,密钥K的长度可以远远超出每轮加密的变换空间的尺度肼。下面用一系列的试验来验证该方案的有效性和进行加密速度的测试。表2给出了3幅大小不同图像Moon surface,Lenatestpattem和Man加密和解密的时间与密钥长度的关系。 (Matlab实现,并在拥有2.1GHz的CPU和512M内存的个人电脑上运行测试)。

混沌加密系统之基于离散斜帐篷映射加密

三、加密算法的安全分析

1、抗选择明文攻击

考虑加密系统(6),对任何密钥A∈K’,明文M总是被映射到1。这个特性是该加密系统的一个根本弱点。基于此弱点提出如下的攻击方案。

当密文CM=FA(N)和密文C1=FA(N)已知时,下面的等式总是成立的:

混沌加密系统之基于离散斜帐篷映射加密

但我们不知道CM<A还是CM>A,但密钥的可能空间能够表示如下:

混沌加密系统之基于离散斜帐篷映射加密

由(10)式和(11)式得到的密钥空间可能超出密钥的范围K',因此在下面的分析中只考虑如下可能的密钥空间:

混沌加密系统之基于离散斜帐篷映射加密

基于一对选择明文的攻击方案可描述如下:若明文对1和M的密文已知,密钥的可能空间可由(12)式得到,若该集_合的势很小,则我们可以通过强力搜索得到真实的密钥。

而在我们的改进方案中,由于都引进了密钥编排,在改进的加密方案中( 10)式不再成立,那么相应的(12)式也无法找出,则此类明文攻击将不再有效。

2、混乱和扩散特性分析

混乱原则

人们所设计的密码应使得密钥和明文以及密文之间的依赣关系相当复杂,以至于这种依赖性对密码分析者来说是无法利用的。

扩散原则

人们所设计的密码应使得密钥的每一位数字影响密文的许多位数字以肪止对密钥进行逐段破译,而且明文的每一位数字也应影响密文的许多位数字以便隐蔽明文数字的统计特性。

在我们提出的方法中用一个类似于数据文件加密标准(DataEncryption Standard.DES)加密算法中S盒的方法(混沌变换及其逆变换)来达到混乱的要求,同时又继承了加密算法中相同的明文和密钥敏感性。

小知识之S盒

S盒用在分组加密算法中,是非线性结构,其密码强度直接决定了加密算法的好坏。