令分组长度为T,那么时域语音帧置乱的加密强度(密钥空间)为T!。由于我们采用的是两级加密技术,结合前面频域置乱,整个加密算法的加密强度(密钥空间)为M*f(M)*T!。
3.4 算法参数选择
通过大量实验研究,发现对测试结果有较大影响的因素有两个:语音分解帧尺寸和分组长度。我们主要选择语音分解帧长为5ms、10ms、20ms、分组长度为15帧、20帧、25帧共九种情况进行了研究分析。
通过测试和比较,发现以20ms作为语音分解帧长,加密语音可以基本解密恢复,而且所恢复的语音可以很好地满足人耳的可懂度要求。同时根据声码器的编解码原理,20ms作为单位帧长能保持信号的语音特性。因此本方案将选择20ms作为语音分解帧长。
对于分组长度(用n表示),从整个加密算法的加密强度公式,可以发现n越大,算法的加密强度就越大,但考虑整个加解密系统的延时等因素,n必须取一个合适的值。通过大量仿真测试结果发现,分组长度取20或25可以在这对矛盾间取得一个好的平衡。
总之,本算法结合了语音信号处理和分组密码加密运算的特点,具有对RPE-LTP压缩编码很好的恢复性,其加密强度也可满足需求。
4 同步算法研究
对于一个通信系统而言,接收端的同步是一个必须考虑的问题;对于语音加解密系统而言,它将会直接关系到接收端解密的准确性。
要精确完成同步,考虑在语音帧中插入同步帧,对于同步帧有以下几点要求:
1)要求同步帧能顺利通过GSM的语音编码器,并且经过声码器后还能顺利被检测出来。
2)同步帧是插在数据帧中的,并不用于携带话音信息,所以如果同步帧取得较长,将会带来较大延时,影响通信系统的性能。因此在确保精确同步的情况下,同步帧应取的尽量短。
3)同步帧的波形经自相关运算后的峰值须足够高,以便和普通语音信号区别出来,否则会影响同步位置的判决,造成误判。
鉴于以上三点考虑,选择正弦波序列作为同步帧。正弦波序列能够顺利通过GSM系统的声码器不发生大的波形畸变。此外,正弦波序列的自相关函数峰值等参数符合作为同步帧的要求,能够在较短的长度内完成精确同步。对于同步帧的插入位置,采用在算法中固定下来的方式,在每个置乱单元的起始位置插入同步帧,较之随机插入的方法,简单但同样有效。
5 系统实现
系统具体实现分硬件和软件两部分,具体架构如图5.1所示:
图5.1 系统具体架构
为了实现全双工通信,我们设计并制作了一块拓展电路板,通过开发板拓展槽插口实现连接。两路语音通道均使用McBSP传输ADDA数据,开发板上语音芯片使用I2C总线初化,拓展板上的语音芯片采用McBSP时钟停止模式下的SPI总线进行初始化。
图5.2拓展板上AIC23B的接口示意图
图5.3 拓展音频模块实物图
此外,为了实现作品能够通过手机的语音接口实现即插即用,我们对手机配件的耳麦线路进行了改造。
整个语音加解密软件包括语音分解算法模块,语音加解密算法模块,类语音合成算法模块三部分。其中语音分解帧大小为20ms,加解密处理帧数为28,最后实现抗RPE-LTP压缩的语音加解密。语音信号同步模块用于为加密后的语音提供同步。我们选取一帧正弦波序列作为同步头,每196帧数据插入一帧同步头序列,在接收端用相同正弦波序列进行检测。
此外,我们通过减小加解密算法的复杂度并采用DMA技术以减小通话时延。回声抑制和自适应同步检测算法的应用可以提高通话语音的质量。
6 结果与测试
本作品测试时需两部手机,测试地点需有中国移动或中国联通的信号覆盖。测试工具为Cool Edit软件以及matlab软件,前者主要用于录音及时域分析,后者则用于频域分析。
测试点位置参见图6.1。其中的语音加密模块包含了语音分解、加密和合成算法。我们对抽样量化后的语音A、加密后的语音B、经RPE-LTP编解码后的语音C,以及解密后的语音D分别进行了测试比较。