近年来,产生了不少的混沌密码学的研究成果。但绝大多数提出的混沌密码学方案采用的方法过于复杂,不便于实现,因而现实生活中很少见到利用混沌加密的产品。而我们今天就采用了一种将传统密码学和混沌密码学相结合的方式,既利用了混沌动力系统特有的性质,又吸取了传统密码学在有限域中便于实现的优点,提出了一种新的基于混沌映射的分组加密方法。

一、伪随机二进制序列的产生

在现代通信系统和加密系统中伪随机二进制序列被广泛应用。通常人们都是采用线性反馈移位寄存器来获得伪随机二进制序列。但当序列长度不太长时,其安全性通常受到怀疑。近年来,人们注意到一些具有遍历性的非线性映射可以用来产生性质很好的伪随机二进制序列。我们常见的有三种方法可以从混沌遍历映射中获得独立同分布的二进制序列。

1、 Chcbyshcv混沌映射

第一类Chcbyshcv多项式定义为:

基于混沌映射的分组加密方法

该积分是包含原点,逆时针的闭曲线积分,它有个等价式如下:

基于混沌映射的分组加密方法

因此第一类Chcbyshcv多项式可以表示为:

基于混沌映射的分组加密方法

其中x∈[-1,1],n=1,2,…。

为了定量地刻画动力系统相邻两点相互分离或靠拢的快慢,人们引入了Lyapunov指数。

不失一般性,一维迭代混沌映射可以表示为:

基于混沌映射的分组加密方法

Lyapunov指数定义为:

基于混沌映射的分组加密方法

它表示在多次迭代中平均每次迭代所引起的相邻离散点之间以指数形式分离或靠拢的定量值。当入<0时,表示这个动力系统将收敛到一个不动点或一个稳定轨道。具有负的Lyapunov指数的系统是一个耗散系统或非保守系统,它们是渐进稳定的系统。另一方面,当入>O,这轨道是不稳定的和混沌的,初始值无论多么接近,经过多次迭代后,两条轨道会变得毫不相干。对于Chcbyshcv映射,有一种等价的计算Lyapunov指数的方法,即入_=1np。因而当p>1时,是典型的混沌系统。在我们提出的加密方法中选择p>1的映射作为伪随机序列的迭代产生式。

考虑整个动力系统产生序列{Fn(x)}的统计特性对研究动力系统的性质和行为有非常大的价值。经研究表明Chcbyshcv混沌序列具有绝对连续不变测度,均匀分布,对称分布等等。从它可以构造性质非常好的伪随机二进制序列。下面我们将讨论其产生过程。

2、Chcbyshcv映射的产生方法

假设十进制的二进制表示为:

假设十进制的二进制表示为:

第i个比特位bi可以表示为:

基于混沌映射的分组加密方法

其中θ(x)是一个阈函数定义为:

基于混沌映射的分组加密方法

由此种方法,我们可以获得一组二进制序列基于混沌映射的分组加密方法可以证明l这组序列是独立同分布的。

二、基于混沌映射的分组加解密模式

我们提出的方法采用128位的明文分组和128位的密文分组。其结构图如图1。

基于混沌映射的分组加密方法

为了叙述上的方便把128位明文分组看成由16个字节组成的二维数组,即:

基于混沌映射的分组加密方法

其中Pi为一个字节,整个加密过程就是在这一系列分组上做变换。

1、 混乱和扩散原则

有专家提出了密码学设计的两个重要原则混乱原则和扩散原则:

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

2)人们所设计的密码应使得密钥的每一位数字影响密文的许多位数字以防止对密钥进行逐段破译,而且明文的每一位数字也应影响密文的许多位数字以便隐蔽明文数字的统计特性。在我们提出的方法中用一个8×8的S-hox来达到混乱的要求,并用一个离散混沌映射来进行扩散,用基于Chcbyshcv的伪随机二进制序列作为密钥。

2、轮变换

当前的密码分析研究表明,迭代型分组密码抗击密码分析攻击的能力随轮数的增加而增加。在我们的系统中同样引入多轮变换,其中每轮分别由一个S-盒和扩散层组成。

(1)S-BOX的功能及选取

S-盒是许多密码算法中的唯一非线性部件,因此,它的密码强度决定了整个密码算法的安全强度。S-盒本质上可看作映射S(x)=f1(x),…,fm(x),其中S(x)=f1(x),…,fm(x)分别为m个布尔函数。所以S-盒是一个GF( 2n)→GF(2m)的映射。在我们的方法中n=m=8,即8×8的S盒,这也是目前比较流行的一种模式如,高级加密标准AES中的S-盒。我们提出了一种新的基于混沌映射的S-盒产生方案,给出了一个例子经过试验分析J8喧在非线性度,差分均匀性,完全雪崩效应,输出位独立性等上都达到很好的要求。在我们加密方法中就选择它作为S盒。

(2)扩散层的实现

密码分析者通常会从比较一组明文,密文对中发现一些有用的信息。为了打乱明文和密文的统计特性,引入扩散层是很有必要的,它可以增加密码分析的复杂度。在我们的方案中扩散层主要由LOGISTIC混沌映射组成,其定义为:

基于混沌映射的分组加密方法
是一个遍历的混沌映射。首先选取一个x(0)作为初值,用上节的方法获得一个8比特的二进制数,定义为Φ(t),并与经过S-盒后的字节作以下运算:

基于混沌映射的分组加密方法
其中P(i)是经过S-盒后分组中的第i个字节,C(i)是密文分组中的第i个字节。

3、密钥编排方案

密钥编排方案包括两部分,即密钥的扩展和轮密钥的选取。密钥的扩展是指如何由密码密钥得到轮密钥。在我们的加密系统中,密码密钥是由Chchyshcv多项式的p和初始值所确定的。使用上节的方法,从Chcbyshcv映射产生128比特的密钥作为一轮的轮密钥。重复此过程得到每轮的密钥。

4、加密过程的算法描述

1)对明文进行分组,1 28比特为一个分组,令P:p0,p1,p2,...p15,选取密码密钥。另r=O,statc=P。

2)产生轮密钥,记为SubKcy。

3)作运算state=statc+Subkey[r]然后通过S盒。

4)进行扩散处理。如果r<R,r=r+1,转3),否则令C=Statcj,e即就是输出密文。

其伪代码如下:

Fmcryption (state,Key)

{
GenerateSuhKey Key, SuhKey);

Fm (nt r=0; r<R , r++)

{

Round ~tate, Suhkeyrri);

其中 Round ~tate, Suhkey[r1)

{

State=State XOR SuhKey[rl;

Shox ~tate);

Dissuf'ion $tate);

}

其中Statc称为状态字节46个字节),指明文分组在进行各种变换中的中间状态。

5、解密过程

因我们采用的是对称密码系统,解密模式与加密模式非常相似。从加密算法很容易构造出解密算法。对于扩散变换,它的逆函数为:

基于混沌映射的分组加密方法

本文的思想源于混沌动力系统非常好的混沌特性。在我们提出的方法中把传统加密和混沌加密相结合产生了一种新的文件加密方法。经过多种测试和分析,它具有很好的性能,能够有效地抵抗多种密码学中常用的攻击。另外此方法具有非常好的可扩展性,比如修改明文和密文的分组长度,增加轮数,以达到满足更高安全的要求。

小知识之映射

映射,或者射影,在数学及相关的领域经常等同于函数。基于此,部分映射就相当于部分函数,而完全映射相当于完全函数。