混沌由于具有不可预测性和对初值的敏感依赖性,而极具密码学的应用价值。那么下面我将给大家介绍一款基于Logistic映射混沌序列的数据加密算法。

一、混沌序列加密原理

1、加密方式

加密系统所采用的基本工作方式称为密码体制,根据对明文数据加密的方式,可将信息加密分为分组密码和序列密码两种。

分组密码体制是将明文分成若干组,每一组长度固定,然后用同一密钥进行加密。它的重要特征是输出的每一位数字与同一组的所有明文数字有关,如目前应用较多的DES和RSA加密算法。

序列密码体制是先将原始明文转化成明文数据序列,然后再将它与密钥序列进行逐位加密生成密文序列发送给接收端。序列加密不存在数据扩展和错误传播,加、解密容易实现,其安全保密性主要依赖于密钥序列,若密钥序列是完全随机的,它就是一次一密钥密码。Shanon已证明一次一密制是不可破译的。

混沌序列加密属于序列密码加密,其加密原理与序列密码加密原理相似,不同在于:一般的序列密码是利用移位寄存器为基础的电路来产生伪随机序列作为密钥序列,而混沌序列加密是利用混沌系统迭代产生混沌序列作为密钥序列,其加密原理如图所示。

基于混沌序列的数据加密算法

2、密钥流的产生

混沌序列加密的安全保密性主要依赖于混沌密钥流。在混沌加密系统中。将混沌系统产生的随机序列{xi}作为密钥流{ki}与明文数据流{mi}按位运算,从而产生密文数据流{ci}。明文数据流是二进制的,而密钥流{ki}是通过对混沌序列{xi}进行数据处理来产生。利用计算机技术对原始混沌数据{xi}进行多种处理,使其在计算机有限计算精度下,实现混沌序列的准随机性。如,为了克服系统对初值敏感的过渡过程,舍弃前面的数千个字节;将混沌序列按一定规律取值所得的序列{xi’}仍为一随机序列;或采用复合迭代算法;或引入m序列扰动。这样,经处理后的序列{x’i}具有良好的自相关性、均匀分布特性和随机统计特性,又因密码分析者得不到原始数据,从而提高了抗破译能力。

3、密钥空间

密钥空间的大小直接关系到保密系统的安全性能。若混沌加密系统具有足够大的密钥选择空间。即密钥选取的范围足够大,就能抵抗穷举密码式的攻击。由于不同的混沌系统可以产生不同的混沌序列吗,所以非线性系统方程F可作为密钥;由于混沌系统对初值敏感,即两个相同的混沌系统对稍异的初态会产生完全不同的序列,故初值{x0}可以作为密钥;混沌系统参数不同所对应的混沌序列也不同,故参数{α}也可作为密钥,对于具有两个以上正的Lyapunov指数的超混沌系统,其可变参数不止一个,可作密钥的值更多;再加上计算机数据处理方式{P}和数据编码方式{C},则密钥K可由{F,x0,α,P,C}组成.显然,其密钥空间大,使用方便,安全性能好。

二、混沌加密算法

1、 加密算法模型与设计

一个一维离散时间非线性动力系统定义如下:

Xn+1=T(Xn)     (1)

其中,Xn∈V,n=0,1,2,3…,称之为状态;而T:V→V是一个映射,将当前状态xn映射到下一个状态Xn+1。如果从初值X0开始,反复应用T,就得到一个序列{Xn,n=0,1,2,3,…}。这一序列称为该离散时间动力系统的一条轨迹。

一类非常简单却被广泛研究的动力学系统是Logistic映射,其定义如下:

xn+1=μ×xn×(1-xn)      (2)

其中μ∈(0,4),xn∈(0,1)。当μ∈(3.5699456…,4)时,Logistic映射呈现混沌态。也就是说,由初始条件X0在Logistic映射的作用下所产生的序列{xn,n=0,1,2,3,…}是非周期的、不收敛的,对初始值非常敏感。

式(2)形式的Logistic映射混沌系统,其生成的序列的概率分布函数PDF(ProbabilityDensityFunction)为:

基于混沌序列的数据加密算法

通过 (x),可以很容易地计算得到Logistic映射所产生的混沌序列的一些很有意义的统计特性。如,x的时间平均,即混沌序列轨迹点的均值为:

基于混沌序列的数据加密算法

对于互相关函数,独立选取两个初始值X0和Y0,则序列的互相关函数为:

基于混沌序列的数据加密算法

而序列的自相关函数ACF(Auto-correlationFunctions)则等于delta函数。

通过以上分析可知,混沌动力系统不仅具有确定性,而且具有形式简单,对初始条件敏感,具备白噪声的统计特性,因而,可以应用于包括数字通信和多媒体数据安全等在内的众多应用领域。

由于加密的是数字量,所以将这个由实数构成的序列{xk}映射成由整数构成的伪随机序列来充当加密密钥。常用的一种映射方法是选取xk小数点后的几位有效数字构成整数。由此提出一个基于Logistic混沌映射的加密/解密模型。

基于混沌序列的数据加密算法

并设计了一个完整的加/解密算法如图,为了兼顾序列的随机性和加密速度,随机数选取的间隔M取5是合适的,而Yk则选取Xk小数点后第4,5,6位,有利于提高抗选择明文攻击的能力;实践证明,为了克服过渡过程的有害作用,采用舍弃前面2000个数是合适的;另外,考虑到要求用户记忆两个浮点数作为密码是相当困难的,所以实际上步骤1中还包括一个将用户记忆的字符串映射到X0和α的过程。

基于混沌序列的数据加密算法

2、算法抗破译能力分析

该算法具有抗穷举攻击的能力,密码分析的关键在于获得用户设定的初值X0或参数μ。将这两个值取作浮点数,假设一台计算机浮点数的有效值位数为16位,那么这两个数加起来共有15+15=30位数是不确定的,其可能的组合为1030。而现有的56bitDES加密算法,具有的密钥组合为256。对它们取以10为底的对数可得30>56log2。所以该加密算法对抗密钥穷举的攻击非常有效,即具有穷举破译安全性。

该算法具有抗选择明文攻击的能力。这一点主要是基于许多密码分析者往往能够通过各种各样的途径预先得到一定的明文和密文对。尤其是对于网络上传输的数据更是如此,人们很容易推测出一个几百个字节大小的经过加密的TCP数据包,该数据包包含了用户名和密码。由于该数据包的前面几个字节的内容又经常是固定的,所以要求加密算法在密码分析者得到一定数量的明文/密文对后,仍然难以分析出余下的明文数据和密钥。即加密算法应具有较强的抗选择明文攻击的能力。

为了提高对选择明文攻击的适应性,简单的做法就是对Xn进行数据处理后,使Xn与Xn+1之间的关系复杂化,从而避免攻击者通过简单的运算解出μ值,如何使其关系复杂化呢?我们采用间隔取数的方法,若在Xn与Xn+1之间隔一个数,则Xn与Xn+1的关系变成:

基于混沌序列的数据加密算法

上式是一个一元二次方程。若Xn与Xn+1之间相隔N个数,则Xn与Xn+1的关系就变成一个一元N次方程组,由Newton逐步逼近法可以近似求出N个μ的解。同时,在N足够大时,Xn的微小变化也将使得Xn+1发生足以影响到Xn′的变化。另外将Xn′的取法尽可能靠后的三位数,因为Xn在发生微小变化时对Yn+1将产生很大的影响。

3、密文数据的统计分布

为了隐藏明文信息的冗余度,Shannon提出了混乱与散布的概念,加密体制要求充分且均匀地利用密文空间,混沌序列也是如此。加密后密文数据的统计分布是否均匀,即明文数据能否被完全掩盖,是衡量加密算法好坏的重要指标。若密钥序列是完全随机的,则加密后密文数据服从均匀分布。把明文和密钥序列看成是一个字节的数据流。从中任取一字节的明文m和密钥k,设m取值是不等的,即某一位出现0或1的概率是不等的,且设数据位出现0或1为相互独立的事件。设明文第i位出现1的概率为p,而密钥序列在理想状态下满足白噪声性,即每一位出现0或1的概率相等,均为0.5。则加密后密文c的第i位出现1的概率为:

基于混沌序列的数据加密算法

基于混沌序列的加密方法,回避了构造物理同步混沌系统时所面临的技术难题。通过计算机软件实现了文本、语音、图像数据文件加密,取得了满意的结果。

小知识之迭代:

迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。