超混沌与AES的混合加密算法

2020-11-26 03:58欧国成刘小园
江西理工大学学报 2020年5期
关键词:明文加密算法密文

欧国成, 刘小园

(罗定职业技术学院信息工程系,广东 罗定527200)

与混沌系统相比,超混沌系统的动力学行为更复杂、更难以预测,在数据保密领域具有更高的实用价值[1-2]。近年来,已有不少学者把超混沌加密应用在保密工作中,如:王勇等把超混沌序列与神经网络相结合,产生AES种子密钥用于图像加密,该算法的密钥长度约为200 bit[3];朱淑芹等把四维离散混沌映射用于图像加密,该算法的密钥长度为398 bit,能够抵抗差分攻击[4];赵方正等按照像素位置打乱超混沌序列,实现彩色图像加密,该算法的密钥长度约为286 bit,具有较强的抗攻击能力[5];刘鹏等把超混沌序列用于加密视频信息,该算法的密钥长度为144 bit[6];Khadijeh MT等提出一种超混沌图像加密算法,算法鲁棒性好但加密速度不够理想[7];张海涛等把超混沌序列用于加密处理图像的水印信息,用于保障图像水印安全性[8]。

已有的利用超混沌序列设计的加密算法普遍具有密钥长度短、密钥空间不足等弱点,不适合用于安全性能要求高的数据加密。本文利用超混沌系统复杂的动力学特性,提出一种密钥空间大、密钥敏感性好的超混沌-AES数据加密算法。首先选取2个超混沌系统并进行离散化处理,得到8个超混沌序列;然后对混沌序列进行异或混淆处理,打乱序列之间的关联性,进一步提高密钥安全性;再次对序列进行异或混淆处理,最后得到算法密钥,用于数据的加密和解密。

1 超混沌系统的选取

非线性系统的维数在一定程度上决定其动力学行为的复杂程度。一般而言,能产生超混沌现象的系统,其最低维数是四维。高维非线性系统通常是在低维非线性系统的基础上通过增加系统变量和微分方程得到[9]。例如,王兴元等通过在Lorenz系统中增加1个变量及微分方程,得到超混沌Lorenz系统[10]。朱雷等通过改进Sprott-B混沌系统,并在此基础上引入一个线性变量和一个微分方程,得到一个新的四维超混沌系统[11],其数学模型为:

为方便陈述,下面把式(1)记为系统Ⅰ。系统Ⅰ是一个四维非线性系统,具有4个变量x1、y1、z1、w1以及 4 个系统参数 a1、b1、c1、d1。 非线性系统的运动状态受系统参数和系统变量的初始值影响。系统具有2个大于零的李雅普诺夫(Lyapunov)指数是判断系统处于超混沌状态的必要条件[11]。 以、y、、分别表示变量 x1、y1、z1、w1的初始值,、、、分别表示系统的 4个 Lyapunov 指数。 令 a1=10、b1=4、c1=1、d1=0.5、=1、=1、=1、=1, 计 算 得 到=0.1509,=0.1095,=0,L=-5.2602, 可见>0、>0,此时系统Ⅰ的运动状态为超混沌,其混沌吸引子相图如图1所示。

图1 系统Ⅰ的混沌吸引子相图

分维数反映的是混沌系统中吸引子结构的复杂程度,通常以Lyapunov维数作为系统的分维数,可由以下公式计算:DL=3+(L1+L2+L3)/∣L4∣。 通过计算得到系统Ⅰ的分维数为3.0495,可见系统Ⅰ的动力学行为很复杂,具有无限相似的复杂结构[12]。

扶坤荣基于三维增广Lü系统,构建了一个四维超混沌系统[13],其数学模型为:

为方便陈述,把式(2)记为系统Ⅱ。和系统Ⅰ一样,系统Ⅱ也是一个四维非线性系统,同样具有 4 个变量 x2、y2、z2、w2以及 4 个系统参数 a2、b2、c2、d2。 以分别表示变量 x2、y2、z2、w2的 初 始 值 ,分 别 表 示 系 统 的 4个Lyapunov 指数。 令 a2=6、b2=4、c2=8、d2=2、=1、=1, 可得=1.6383,=0.1260,-37.3092,可见此时系统Ⅱ的运动状态为超混沌,其混沌吸引子相图如图2所示。

计算出系统Ⅱ的分维数为3.0472,可见系统Ⅱ和系统Ⅰ一样,具有无限相似的复杂结构。

图2 系统Ⅱ的混沌吸引子相图

2 高级加密标准

高级加密标准(Advanced Encryption Standard,AES),又称为Rijndael加密算法,是对称密钥加密中最流行的算法之一,具有安全性好、效率高、易实现性和灵活性等优点[14-15]。AES算法在加解密过程中需要把数据进行分组,每组数据长度固定为128 bit。AES通过多次迭代操作实现数据的变换,按照迭代次数的不同,可分为3种不同的加密模式:第一种加密模式经过10次迭代变换得到密文,其密钥长度为128 bit,记为AES-128;第二种加密模式经过12次迭代变换得到密文,其密钥长度为192 bit,记为AES-192;第三种加密模式经过14次迭代变换得到密文,其密钥长度为256 bit,记为AES-256。其中AES-128的加密流程及解密流程如图3所示。

图3 AES-128加密和解密流程

3 超混沌与AES混合加密算法

利用系统Ⅰ、系统Ⅱ具有的复杂动力学特性,提出一种密钥空间大、密钥敏感性好的超混沌-AES加密算法。首先对系统Ⅰ、系统Ⅱ进行离散化处理,得到8个超混沌序列;然后对这8个混沌序列交叉进行异或混淆处理,打乱同一个系统中不同序列之间的关联性,得到4个混沌序列;接着把这4个混沌序列两两间进行异或混淆处理,得到2个混沌序列S1、S2,进一步提高密钥安全性;最后把混沌序列S1作为超混沌加密的密钥,混沌序列S2作为产生AES加密密钥的参数之一。混合加密方案如图4所示,具体步骤如下:

1)产生混沌序列。 令 a1=10、b1=4、c1=1、d1=0.5、a2=6、b2=4、c2=8、d2=2,保证系统Ⅰ、系统Ⅱ的运动状态为超混沌。以2个系统8个状态变量的初始值为 密 钥 参 数 , 保 证 算 法 的密钥空间足够大。采用四阶龙格-库塔法分别对2个超混沌系统进行离散化处理,将迭代步长均设置为 0.001,得到 8 个超混沌序列 x1、y1、z1、w1、x2、y2、z2、w2。

2)处理混沌序列。分别在序列 x1、y1、z1、w1、x2、y2、z2、w2中截取一段长度为 32 byte 的数据,截取位置可自定,得到8个长度为32 byte的序列。为了使序列适合用于数据加密,需要进行如下处理:

式(3)中,k=1、2,分别表示系统Ⅰ、系统Ⅱ;i表示序列中第i个值。利用floor函数获得一个不大于原值的最大整数,利用mod函数对256取模求余,最后利用round函数进行四舍五入取整操作。混沌序列被处理后,其值均为0~255之间的整数。

图4 超混沌与AES混合加密算法

3)加密密钥的产生。为了打乱同一个系统4个状态变量之间的关联性,首先将8个超混沌序列分别进行异或混淆处理,处理方法见式(4)。

混淆后得到 4 个序列 x12、y12、z12、w12,为进一步提高密钥安全性,再次把 x12、y12、z12、w12进行异或运算,得到序列 S1、S2,处理方法见式(5)。

在式(4)、式(5)中,“⊕”表示按位异或运算,序列S1作为超混沌加密的密钥,序列S2与用户输入的密钥(Input_key)进行异或运算后,得到用于AES加密的密钥AES_key。

4)数据混合加密。先把明文数据分组,分组长度为16 bit,分组后的数据依次进行超混沌加密、AES加密。其中超混沌加密是混合加密中的第一次加密,通过把明文数据与S1进行异或运算实现,AES加密是混合加密中的第二次加密,最终输出密文。

5)解密过程。本算法是一种对称加密算法,解密是加密的逆过程。解密时,当8个密钥参数以及 Input_key 与 加 密时完全一致时,密文先经过AES解密、再经过超混沌解密(与序列S1进行异或运算),可解密出明文。

4 实验结果分析

按照算法思想,在MATLAB平台上开发了“基于超混沌与AES的混合加密系统”,如图5所示。用户输入2个系统的初始值,选择一种AES模式(AES-128、AES-192 或 AES-256),输入用户密钥,直接输入待加密的数据或通过文件导入数据。点击“Encrypt”按钮,对明文进行加密,点击“Decrypt”按钮对密文进行解密,点击“保存密文”按钮把密文保存为文件输出。另外系统界面能直观显示加密和解密的结果。

4.1 算法密钥空间分析

从表1可以看出,与其他几种算法相比,本算法的密钥长度更长、密钥空间更大、安全性更好。系统Ⅰ、系统Ⅱ中的 8 个控制参数 a1、b1、c1、d1、a2、b2、c2、d2用于控制系统处于超混沌状态,在本例中令a1=10、b1=4、c1=1、d1=0.5、a2=6、b2=4、c2=8、d2=2,但它们的取值可以是不固定的,若把8个控制参数作为可变参数,本算法的密钥空间可进一步扩大。可见,本算法具有足够大的密钥空间,能抵抗暴力破解攻击。

图5 超混沌与AES混合加密系统

表1 几种加密算法密钥空间对比

4.2 密文统计特性分析

以本文的中英文题目、作者信息、摘要、关键词共1734字节的明文数据为例,分别画出加密前明文数据分布频数、加密后密文数据分布频数直方图,如图6所示。

从图6可以看出,明文数据分布频数差异较大,其统计特性具有一定的规律,而密文数据分布比较均匀,其统计特性随机性很大,没有规律可循,可见本算法具有良好的密文统计特性。

4.3 算法密钥敏感性分析

算法的密钥敏感性是衡量算法安全性的重要指标之一。首先以上述1734 bit的明文数据为例,把8个密钥参数都设置为 1,AES模式选择为AES-256,Input_key 设置为“123456”,执行加密操作得到密文;保持Input_key不变,分别把8个密钥参数增加 10-15,例如把x10=1变为 x10=1.000000000000001,然后执行解密操作,把解密得到的明文与原始明文对比,统计出解密错误字节数,计算出解密错误率(解密错误率=解密错误字节数/原始明文字节数×100%),如图7所示。

图6 明文及密文数据统计直方图

图7 密钥参数改变10-15时解密错误率

从图7可以看出,当任何一个密钥参数改变超过10-15时,生成的解密密钥都无法正确解密出原始明文,解密错误率最高达99.83%、最低为93.14%,可见本文算法具有良好的密钥敏感性。

为进一步说明本算法具有良好的密钥敏感性,再以256×256的Lena图为例进行测试。首先把8个密钥参数都设置为 1,AES模式选择为 AES-256,Input_key设置为“123456”,执行加密操作得到加密图像;然后保持密钥参数和Input_key不变,执行解密操作得到正确解密图像;最后把密钥参数x10=1变为=1.000000000000001,并保持Input_key不变,执行解密操作,得到错误解密图像,如图8所示。

图8 密钥参数改变10-15时解密错误

从图8可以看出,当密钥参数改变超过10-15时,无法正确解密出明文图像,说明本算法具有良好的密钥敏感性。

4.4 算法效率分析

把本算法的3种加密模式分别记为CHAOSAES-128、CHAOS-AES-192、CHAOS-AES-256,以100 kB明文数据为例,将本算法与典型AES算法的加密效率进行对比。为保证实验数据的公平性,在同一台计算机(处理器为双核 Intel(R)Core(TM)2 Duo CPU T6670@2.20GHz, 内存为 4 GB,64 位Windows 7旗舰版SP1操作系统)、相同平台上用相同语言(Matlab语言)分别实现AES算法和本算法,利用2种算法对同一份样本数据进行加密操作,并记录所需的加密时间,对比结果如图9所示。

图9 算法效率对比

由于本文算法采用超混沌与AES混合加密,需要经过一次超混沌加密、一次AES加密,故本文算法的加密效率略低于典型AES算法的加密效率。与AES算法一样,本文算法属于分组加密算法,分组长度均为16 bit,加密后密文输出长度与明文输入长度一致,不会增大通信开销。

5 结 论

本文利用超混沌系统的复杂动力学特性,提出一种用于保障数据安全的超混沌-AES混合加密算法,并开发了“基于超混沌与AES的混合加密系统”。系统运行结果表明,该算法的密钥长度最大可达654 bit,且密钥空间还有进一步扩大的可能,具有良好的密文统计特性,具有良好的密钥敏感性,任何一个密钥参数发生超过10-15的变化后都无法正确解密出原始明文,能充分保障数据的机密性,适合用于安全性能要求高的数据加密。

猜你喜欢
明文加密算法密文
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
基于DES加密算法的改进研究
基于网络报文流量的协议密文分析方法
密钥共享下跨用户密文数据去重挖掘方法*
基于整数矩阵乘法的图像加密算法
奇怪的处罚
混沌参数调制下RSA数据加密算法研究
奇怪的处罚
基于小波变换和混沌映射的图像加密算法