针对数字语音数据的传输问题,我们提出一种基于网络传输的语音数据混沌加密算法,该加密算法在一定程度上解决了部分密文丢失后接收端的解密,采用混沌模型库随机加密数据的方法,可行性强,增强了混沌密码序列的随机性,克服了混沌序列加密大数据量数据时的序列周期问题。
一、基于网络传输的语音数据混沌加密算法描述
1、混沌模型库
基于网络传输的语音数据混沌加密算法采用混沌模型库的方法加密数据文件,即模型库中的任一混沌模型都可用来生成混沌序列。该加密算法混沌序列的生成速度更快,密钥空间更大。为了更方便地解释算法,这里仅介绍混沌模型库中的2种混沌模型。
Logistic映射是一种可产生混沌的一维离散动力系统,其模型为:
式中,n∈N,p为控制参数;Xn在[0,1]上遍历。设μ∞=3.56994567...,当μ∞a<μ≤4时,映射处于混沌状态。生成混沌序列,此混沌序列的伪随机性好于直接法生成的序列。
Henon映射可产生二维混沌,其混沌轨迹的复杂程度远大于Logistic映射。该映射模型方程组见式(2)。当a=1.4,b=0.3时,映射处于混沌状态。用该映射方程生成混沌子序列同样要经过线性映射变换到适合的值域区间。
上述2种序列都是实数值混沌序列,要经过一定的方法转换为二值序列,这里采用一种非线性变换的方法生成序列,此方法生成的二值序列具有不可恢复性。
2、基于网络传输的语音数据混沌加密算法
对于语音数据,数据分块加密流程如图1所示,加密步骤如下:
(1)加密前发信端先把数据分成大小固定的数据子块,每m个数据子块组成一个数据块组,特殊情况下m也可等于1。
(2)密钥产生器根据口令产生一系列密钥,由密钥和混沌模型库生成混沌序列。
(3)每一个数据块组由一个混沌序列加密,不同数据块组的混沌序列是不同的,它们可以由同一混沌模型生成,但生成参数是不同的。
(4)每个数据块包含一个数据头,数据头中存放着下一个数据块组的种子密钥,同一个数据块组的数据头是相同的。
(5)所有加密后的数据块按原顺序合并在一起,形成密文数据流。
原语音数据和附加的数据头都要作为明文文件加密,如果没有密钥,加密后的数据流中无法提取数据头,也就得不到种子密钥,这对于保护数据安全是非常重要的。种子密钥并不是混沌序列的生成参数,要得到混沌序列还要经过密钥产生器的计算才能确定混沌类型和序列生成参数。
解密算法与加密算法类似,同时加密和解密过程可以实时进行,对于先产生的语音数据先加密,继而加密后续的数据,后续数据并不影响先前的数据加密过程,解密过程类似。
二、基于网络传输的语音数据混沌加密算法分析
1、数据丢失处理
基于网络传输的语音数据混沌加密算法的主要特点是可以实现部分密文数据丢失后的数据解密。通常基于混沌的语音加密算法都不允许数据丢失,因为一旦加密数据丢失,采用流密码加密算法就不能定位数据位置,解密变成了二次加密,所以这些加密算法往往以TCP协议传送数据。但是语音数据采用TCP协议传送数据却不是最佳选择,除非网络条件极好,数据不丢失、不延时,这些要求实际是很难满足的。通常情况下语音数据都采用无连接的UDP协议传送数据。UDP协议实时性较好,但主要存在着数据包易丢失和乱序的情况,有时会出现延时问题。本文主要解决数据包丢失和乱序的问题。基于网络传输的语音数据混沌加密算法的解密程序可以在一定程度上解决数据包的丢失问题;乱序可通过在接收端设置缓存器加以处理;在网络中传输时是以分块的数据作为报文进行传输,通过减小数据分块长度,同时在IP头的DSCP字段指定较高的优先级,即可以缓解延迟问题。
从图1可以看出,每一个数据块组都是用一个混沌序列加密的,而且这个数据块组中每一个数据块的数据头都是相同的,只要从上一个数据块组中的某个数据块中得到数据头就可解密下一个数据块组的任何一个数据块,换句话说,只要每一个数据块组中有一个数据块不丢失即可,例如:设第1个数据块组的第1个数据块A1正常接收,而其他数据块都丢失了,从A1的数据头中能得到下一个数据块组的种子密钥,这样就可以解密下一个数据块组曰中的任何一个数据块(B1—Bm)。
同样,如果能够正常接收B数据块组中的任一数据块,就可以解密下一个数据块组C中的数据块,数据丢失处理如图2所示。
不难看出,这种方法允许连续丢失的最大数已为:
2、密码序列周期分析
为了能够快速加密解密语音数据,一般采用较简单的混沌模型产生混沌序列,但是语音数据的数据量太大,相应的混沌序列就必须很长,这样极容易出现混沌序列的周期现象,周期序列的出现极大地降低了密文的安全性,这一点可以用信息论的有关定理来解释。
定理对于任何保密系统,有:
式中,H(SL)表示明文的熵;H(SL|Cn)表示已知密文条件下对明文存在的不确定性;I(SL|Cn)表示从截取的密文中提取有关明文的信息;H(Br)表示密钥的熵。一般情况下,密钥空间Br的密钥是等概率分布的,H(Br)与密钥空间的密钥量有关,密钥量越大,H(Br)越大;反之亦然。定理说明:若密钥量越小,H(Br)越小,I(SL|Cn)越大,从而越接近H(SL),破译者就能从密文中获得更多关于明文的信息量,因此,加密序列如果存在周期现象会导致H(Br)减小,I(SL|Cn)增大,这势必会降低密文的安全性。
基于网络传输的语音数据混沌加密算法可以有效地克服混沌序列的短周期现象,可以在混沌模型库中存放一定数量的混沌模型。这些混沌模型都可以用来产生混沌序列,对于同一种混沌模型,不同的参数又可以产生不同的混沌序列,这样密钥空间极大地增加了,用于加密明文的混沌序列数量众多而且出现的次序没有规律,不会出现单一混沌序列的周期现象。
从图1加密流程可以看出,在加密过程中这些混沌序列是不断变化的,甚至是不同种类的混沌序列,因此可以克服基于混沌模型重构算法的攻击,这也是采用混沌模型库方法的另一个优点。
3、保密性分析
本文提出的基于网络传输的语音数据混沌加密算法采用流密码加密的方法,流密码可以产生一次一密的密码体制,在理论上是不可破解的。但是流密码加密方法对密钥流要求极高,最好是随机性极好的伪随机序列,而且这种方法对抵制已知明文攻击很弱,因此,每次加密时应使用不同的密钥流。
本加密算法加密过程中用到的多个混沌序列生成参数都由口令得到,在接收端只要输入口令,就可以完全解密数据。图3是密钥生成框图,混沌序列1完全是由口令得到的,包括混沌类型的确定,口令不同,混沌类型和序列都有可能不同。从混沌序列2开始,所有混沌序列的生成密钥不是完全由口令得到的,它们的产生是随机的,如果不能得到混沌序列1,即使是加密者也不能再生成这些混沌序列,因为混沌序列可以再生,但随机数是不可再生的,把随机数引入密钥生成,增加了混沌序列的不确定性,所以增强了序列的保密性。密钥的多值特点和混沌类型库的多样化使得用户在每次加密时都使用不同的密钥流。
三、实验结果
实验程序用Visual++6.0语言编写,传输层采用UDP协议,网络层仍为IP协议,并采用了接收端缓存、数据丢失处理和数据包排序等实时数据处理技术。图4是一段录音数据经过基于网络传输的语音数据混沌加密算法加密,在接收端经过解密后的波形显示,密文波形也在图中。从图中可以看出,正确的口令可完全解密出原数据,丢失部分密文后,仍可以解密出未丢失的语音的数据,见图4(d),而加密后的语音数据完全掩盖在噪声中,数据分块加密算法是在数字编码的基础上采用伪随机性良好的混沌流密码加密数据,效果很好。
基于网络传输的语音数据混沌加密算法有效解决了加密数据文件在网络传送过程中数据丢失后接收端的解密问题,基于网络传输的语音数据混沌加密算法采用混沌模型库随机加密数据的方法,极大增强了混沌密码序列的随机性,解决了混沌序列加密大数据量数据时的序列周期问题,并且能够有效地抵制基于混沌模型重构方法的攻击。数据分块加密算法不仅适合加密语音数据,而且也适合加密其他类型的数据,对于大数据量的数据更有优势,对于发送端可以一次加密完成整个明文,然后再发送至接收端。接收端收到全部加密数据后,在本地重新分块解密。而且加密算法还具有数据丢失处理的功能。
小知识之UDP协议
UDP协议即UDP。
UDP 是User Datagram Protocol的简称, 中文名是用户数据包协议,是OSI(开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。