1. 引言
流密码算法是当前密码学理论的关键研究问题之一,在数字信息的加密中有重要作用。普遍认为,完善保密系统是流密码算法的理论基础 [1]。自从Shannon提出了完善保密系统模型以来 [2],已有不少文献都对相关的理论模型及其实际应用进行了研究,但还是有不少相关问题值得进一步研究。例如,当前的常见流密码算法都是基于模2加法运算来设计的,但模2加法运算过于简单,因而会影响到流密码算法设计的应用效果。最近的文献 [3] 建立了一种新的更广泛完善保密系统模型。该理论模型将流密码系统设计细分为两个阶段:基本密码系统与应用密码系统。当以新旧两种完善保密系统模型作为理论基础时,尽管两种模型在应用密码系统中关键的密钥流序列的设计上的要求形式上差别不算太大,但是,它们在基本密码系统的设计上却有非常明显的区别:旧模型所能设计的基本密码系统的类型是很少的,而新模型所能设计的基本密码系统的类型与技巧都非常丰富。因此,本文将提出一种基本密码系统的新设计方法,进而再构造一种新的流密码算法。
由文献 [3] 可知,现有常见流密码算法的基本密码系统是利用模2加法设计的,这等价于利用单一的2阶拉丁方所设计的基本密码系统。文献 [3] 的主要结果将2阶拉丁方推广为更一般的任意阶拉丁方组来设计基本密码系统了。这样,一些常见流密码算法如A5和RC4等所用的基于2阶拉丁方或模2加法运算的设计方法都是在新模型下所能提出的设计方法的特殊情形。除了2阶拉丁方和文献 [4] 所用的4阶拉丁方来设计基本密码系统之外,当前很少有文献讨论利用高于4阶拉丁方来设计基本密码系统。因此,本文将研究基于16阶拉丁方设计基本密码系统的新方法,并结合基于常见的Logistic离散混沌系统来设计一种新的流密码算法。
2. 一些基本概念
参照现有密码学文献,流密码算法需要对基本明文单元依次进行加解密变换,相关步骤如下:1) 设明文单元序列为;2) 设任一密钥为k,利用一个以k为参数的密钥流产生器来产生一个密钥流序列;3) 设利用加密变换E依次加密得到的密文为,其中,,对任意;4) 最后利用解密变换D将c依次解密可恢复出明文单元序列。
当前,常见的明文单元是1比特,加密变换E为模2加法:等。参照文献 [3],在上的可逆变换只有恒等变换与取反变换,因而所能设计的基本密码系统会很简单。为了设计更复杂的基本密码系统,先介绍如下一些概念 [5]。
设n阶方阵和满足,并记
(2-1)
定义2.1. 设。如果上所有不同的数字在n阶方阵A的每行和每列中都出现,则称A为n阶拉丁方。
定义2.2. 如果A和B都是由构成的n阶方阵,且的n2个元素组成的集合等于,则称A和B是正交的。特别地,当个拉丁方两两正交时,称为正交拉丁方组。
例如,如下的4阶矩阵都是拉丁方,且是两两正交的。
(2-2)
文献 [3] [4] 研究了4阶拉丁方组来设计基本密码系统。本文将考虑利用如下更高的16阶拉丁方来设计基本密码系统。
(2-3)
其中,表示如下可逆变换:,,,,等。显然,与是一一对应的,因而可将与中相互对应的数不加区别 [3] [4]。因此,基于L设计的基本密码系统满足和。这样,下面将所设计的流密码系统的具体明文单元设为,对任意,等等。
3. 一种新的流密码算法设计
由文献 [6] [7] [8] 可知,流密码算法的设计是当前密码算法研究的一个重要问题。下面将设计一种新的流密码算法。参照文献 [3],流密码系统可分为基本密码系统和应用密码系统,其中,应用密码系统设计的关键是密钥序列空间的设计。上面已设计出一个理论基本密码系统。为了方便实际应用,还要将理论加密变换T和解密变换转化为实际密钥空间K与加密变换E和解密变换D来实现。下面先讨论与相应的实际基本密码系统的设计问题。
1) 实际基本密码系统的设计
将中每个可逆变换利用简单运算表示如下:对任意,
其中,是二进制数,表示十进制数,,。类似地,可将的代数计算公式一一写出来,在此省略。这样,可将基本实际密钥空间设计为:,对任意。因此,基本加密函数E的计算公式为。
更进一步,基本加密函数和解密函数的具体设计方法如下:
a) 基本加密函数E:对任一2比特明文和4比特密钥,其中,,可利用如下统一代数式将加密变换设计为
其中,,且
,,,
b) 基本解密函数D:对任一2比特密文和4比特密钥,其中,,可将解密变换设计为
至此就完成了实际基本密码系统的设计。
2) 应用密码系统中密钥流序列的设计
上面已设计出实际基本密码系统,还需要设计应用密钥空间才构成一个完整的流密码算法。下面再来讨论应用系统中密钥序列空间的设计问题,将利用现有的Logistic混沌系统所决定的一个密钥流发生器来对密钥流序列空间进行设计。该混沌系统表达式如下:
其中,对任意,且。当时,系统会处于混沌的状态。利用该混沌系统是容易产生2元密钥流序列的。更进一步,为了能与基本密码系统配合使用,还需要将所产生2元密钥序列变成16元密钥序列,以便下面使用。
当基本密码系统和密钥流序列组成密钥空间设计好后就能综合构造出一种流密码算法了,可将它用于数字信息的加解密变换之中,并可利用Matlab仿真来实现数字图像信息的加解密变换。
下面就给出一种新的流密码算法设计步骤:
a) 选择一幅数字灰度图像作为明文,在Matlab软件中,该明文可表示成一个矩阵,其中,,对任意;
b) 将图像矩阵I中每个8比特像素转换为比特序列而得到2元明文序列。之后,将明文序列依次转化为16元明文单元序列,其中,,,等等;
c) 利用Logistic混沌系统迭代产生16元密钥流序列,其中,等等;
d) 加密变换:依次对明文单元加密,对任一,可得到16元密文序列。若有必要,并可将c变换为2元密文序列,以便得到加密后的灰度图像;
e) 解密变换:依次对密文序列解密,对任一,可得到16元明文序列。然后将m可还原为原数字图像矩阵。
按照上述步骤,在Matlab中仿真的加解密效果图可见图1,其中,对照的流密码算法为利用模2加法和Logistic系统所设计的密码算法。
Figure 1. Simulation effect of algorithm
图1. 算法仿真效果图
更进一步,对两种算法加密图像之后的图像信息的相关性进行数值计算的结果可见表1。
Table 1. Simulation data of correlation
表1. 相关性仿真数据
由该表可知,明文在各个方向的相关系数都接近于1,经过加密后的图像的相关系数在所有的方向都接近0,说明像素间的相关性已被加密变换打乱了。与常见流密码算法相比,新算法在水平,竖直方向更好,在对角方向的相关系数和常用密码算法有微小差异。
下面再进行信息熵分析,可分析出加密后的图像像素值之间分散的均匀程度。根据图像信息熵的定义式(3-1)和最大熵原理知,由于本文所选取的Lena图像的灰度取值范围是[0, 255],因而图中各像素值的概率出现的最大信息熵为8。数值越接近8就说明图像像素之间分散得越均匀。
(3-1)
通过仿真计算,可得到原始图像信息熵为7.4442,利用新流密码算法加密图像后的信息熵为7.9974,利用常用密码系统加密图像后的信息熵为7.9972,两种密文图的熵都比明文图的熵更接近最大理想值8。这说明利用高阶拉丁方设计的流密码系统具有一定的参考价值。
4.小结
本文研究了基于16阶拉丁方的基本密码系统的设计问题,并结合常见的密钥流产生器提出了一种流密码算法。经过仿真分析可知,该算法的加密效果良好,为后续研究更高阶的拉丁方变换矩阵打下了一定的基础。
参考文献