随着计算机与通信网络的迅速发展,各种形式的多媒体数字作品,纷纷以网络途径传播,这为创作者和使用者提供了很大的便利。但这种便利性和不安全性,往往是并存的,也容易被非法侵权者所利用。特别是音频文件,常常遭受到盗版问题的困扰,因此我们需要采取加密方法对音频文件进行加密,下面我们将Tent混沌系统和Chen混沌系统相结合,设计出了一种基于混沌的音频数据加密方法,通过把音频数据对应的二进制序列与混沌加密因子序列做异或操作,来实现对音频数据的加密。
一、混沌系统
混沌是非线性系统中出现的一种貌似无规则的类随机过程,是普遍存在的复杂运动形式和自然现象。对于确定型的非线性系统出现的具有内在随机性的解,就称为混沌解,这种解在短期内可以预测,而在长期内却不可预测。混沌不是简单的无序,而是没有明显的周期性和对称性,但却是具有丰富内部层次的有序结构。混沌具有如下的特征:对初始条件的敏感依赖性、整体稳定而局部不稳定、轨道不稳定及分岔、长期不可预测性等。
Tent混沌系统又称为帐篷映射,其表达式如下:
其中,k为一个常数,0<k<1;Tent系统将区间[0,1]映射到其自身上。对任意选定的一个初值x0,由迭代xn+1=f(xn)所得到的序列{xi},i=0,1,2,……,在区间[0,1]上遍历且均匀分布。
Tent系统具有如下的特点:是一种分段线性的一维映射,是混沌的,并具有均匀的概率密度与功率谱密度,以及较理想的自相关性。
Chen混沌系统是一种三维常微分系统,具有复杂的动力学行为,其表示为:
其中,(x,y,z)为系统轨迹;
a,b,c是系统参数,且都为正实数;
当a=35,b=3,c=28时,系统有奇异吸引子,处于混沌状态。
二、加密算法
为了实现对数字音频的加密,下面提出一种将Tent混沌系统与Chen混沌系统相结合的加密方法。该方法的原理是使用Chen混沌系统产生Tent混沌系统中的参数k的值,然后用Tent混沌系统实现对音频的加密。由于参数k的值是由Chen混沌系统产生的,因此比直接为其选取一个值更具有保密性,并增加了被破译的难度。
1、产生混沌序列的计算步骤
该方法产生混沌序列的计算步骤如下:
(1)选取Chen系统的初值x0,y0,z0;使用有限差分法对Chen系统进行离散化并求解;把求得的解作为新的初值,重复地迭代求解Chen系统,进行n次。例如,n=100。
(2)对由第一步产生的3个值xn,yn,zn;取这3个值的小数部分,并计算其平均值;将该值作为Tent系统中参数k的值。
(3)使用Tent系统对音频进行加密,即由第二步中确定的参数k的值,通过使用公式pn+1=f(pn)进行迭代,产生一个混沌序列{pi},i=0,1,2,……。
(4)根据序列{pi},生成另一个序列{qi}。当pi<0.5时,qi=0;当pi≥0.5时,qi=1。从所产生的这个序列{qi}中选出一部分qs,qs+1,…,qs+t作为对音频加密时使用的混沌序列。这里s和t为一个正整数。对音频的加密需要对音频文件的结构进行分析。
而本文主要是针对wav格式的音频文件,这种文件是由文件头和数据体两大部分组成。对单声道wav音频文件的文件头信息是开始的40个字节,而对双声道wav音频文件则是开始的54个字节。在加密时对文件头信息不做处理,只对其后的数据体部分进行处理。
2、音频加密方法的步骤音频加密方法的步骤如下:
(1)打开一个音频文件。
(2)读取音频文件中的数据,获得数据体部分。
(3)使用Tent系统和Chen系统,产生一个如前所述的序列qs,qs+1,…,qs+t,以作为加密时的混沌序列。
(4)把音频数据所对应的二进制序列与混沌序列进行异或操作。异或的结果,是一个与音频数据原来的二进制序列不相同的序列,将该序列转换为音频文件格式中的数据体部分,就得到了经过加密后的音频文件。
我们用VisualC++编制了如上的基于混沌的音频加密方法的程序,实现了对音频数据文件加密与解密。在实验时,对给定的初值,对Chen系统进行迭代的次数为1000次,即n=1000。下图是对一个wav格式的音频数据文件加密与解密的实验结果:
图1是音频的原始波形,图2是经过加密后的波形,图3是解密后的音频波形。实验结果说明,从加密后的音频波形无法得知原音频的内容,两者有很大的差别;同时当解密密钥与加密密钥存在微小的偏差,即当Tent系统中参数k的值具有微小的偏差例如10-4时,不能正确地解密出原始音频。
由于混沌具有长期不可预测性、对初值敏感性等特征,因此适合于对音频数据进行加密。基于混沌的加密方法的一个特点,是预测系统参数或初始值都非常困难,使得密码难于被分析和破译。采用多个混沌系统的结合,来实现音频数据的加密,可以进一步增强加密方法的安全性与可靠性。
小知识之混沌:
在非线性科学中,混沌现象指的是一种确定的但不可预测的运动状态。它的外在表现和纯粹的随机运动很相似,即都不可预测。但和随机运动不同的是,混沌运动在动力学上是确定的,它的不可预测性是来源于运动的不稳定性。