作 者:东南大学 胡嵩、段强、沈弘
由此推导出本作品的设计原则:
1、使用语音信道:由于数据信道的缺点,排除数据通道而选用语音信道。
2、无法使用信道加密:上述的分析说明不能进行信道加密。
3、只能利用网络现有的信道传输能力传输加密后的信息。
因此,本作品确定采用信源加密的技术方案。该方案在语音信号进入声码器之前,采用一种针对声码器原理不破坏语音信号的语音特性的加密方法,从而可以在接收端恢复出原来的语音信号。本方案不需要改造基站设备,因此对通讯网络而言是透明的,只需要改造终端设备即可,以较小的代价换得高强度的安全。
2系统方案设计
基于上述的分析与设计原则,本作品的系统框图如图2.1所示,左侧的麦克风与耳机,通过A/D、D/A输入/输出正常的语音信号。在A/D、D/A后加入一个加解密模块,完成语音加解密。同步模块在加解密模块之后,能实现同步信号的产生与检测。回声抑制模块起到消回声作用。右侧的麦克风与耳机,完成与加密语音发送,以及密文语音接收功能。系统需要两端手机均安装同样的系统模块。系统加载在GSM手机的麦克风、耳机前端,功能为:
1)本系统麦克风采集原始语音,通过本系统加密后将密文语音传输原始手机麦克风;
2)原始手机耳机获得密文语音,通过本系统解密后将明文语音本系统耳机。
图2.1作品系统框图
工作流程为:
*加密过程:输入语音信号由麦克风输入AD变换模块,再经语音加密模块处理,接着插入同步信息,DA变换后通过手机麦克风插口输入手机,经手机中的声码器压缩后射频输出。
*解密过程:加密语音信号由手机中声码器解压后,通过手机耳机插口输出到AD模块,做回声抑制后进行同步检测,接着送到解密模块解密处理,最终DA变换后输出对方原始的语音信号。
为了快速语音加解密,需要设计适用于硬件架构的、安全快速的加解密算法,本作品设计了抗RPE-LTP压缩编码的语音加解密算法。
3抗RPE-LTP压缩编码的语音加解密算法研究
3.1算法总体框架
本算法针对RPE-LTP压缩编解码的特性,对人类自然语音信号进行变换处理,使之成为不可懂的声音信号,实现加密;同时保证加密语音信号在通过RPE-LTP编码器后能被对方的解码器恢复,且经过解密可成为可懂原始语音信号,从而完成全部加解密过程。
算法的主要思路为:
1、首先把原始语音分解成符合RPE-LTP编解码要求的单位帧;
2、接着根据分组密码的原理,通过选择合适的加密矩阵对分解后的单位帧依次在频域和时域上进行置乱;
3、最终合成的不可懂语音信号通过RPE-LTP编码后送入GSM传输信道,在接收端进行逆向解密即可。
图2.2GSM系统语音信号加密原理图
如图2.2所示,整个语音加密过程在虚线框部分,由语音分解、频域置乱、语音帧置乱和类语音合成四部分组成。反之,语音解密过程由类语音分解、帧置乱解密、频域置乱解密和语音合成四部分组成。其中各模块的功能与加密过程相对应。
其中语音分解算法的要求是找到一种合适的分解方法,便于进行后续的加密置乱运算,并且易于合成符合RPE-LTP压缩编码要求的模拟语音。另外,类语音合成算法将加密置乱后的信号合成符合RPE-LTP压缩编码要求的类似语音信号。
下面重点介绍本设计中频域置乱、语音帧置乱与算法参数选择的设计。
3.2频域置乱
在时域加密置乱之前加上一步频域置乱,可以提高整个加密算法的强度。本设计具体的做法是:首先对一定长度语音数据作N点FFT(N可以取2的幂次以提高运算速度),得到一个频谱序列,取在语音频率范围(300~3400Hz)内的M点,组成M行×1列的矩阵x,然后对这个序列进行置乱,这相当于乘上一个M行×M列的置乱矩阵P,那么置乱后的序列为Px,最后对此序列求IFFT,即从频域返回到时域。
令M为明文信息,k1、r为算法密钥,由k1、r产生的加密矩阵为Pk1、r,Qk1、r为解密矩阵(即Pk1、r-1),C为密文,则有:
置乱矩阵P的选取有以下几点限制:1)保证置乱后的序列再求IFFT得到的是实序列;2)保证只对300~3400Hz范围内的点进行置乱;3)保证最后得到的语音的剩余可懂度很小。
满足上述限制条件的矩阵有很多,其中有一种比较简单的形式是这样的[4]:
M=N*(3400-300)/fs=3100N / fs(fs是采样频率),表示频率在300~3400Hz内的点数,称为有效FFT点数。k1和r都是密钥,k1可以取与M互质并且小于M的自然数,r可以取小于M的自然数。
这样频域置乱的加密强度(本文中指密钥空间)就是M*f(M)(f(M)表示满足条件的k1的个数)。由此可见,采样频率一定,N的大小会影响该算法的加密强度,所以N的选取应该同时考虑运算速度和加密强度两方面的因素。
3.3语音帧置乱
令M为明文信息,k2为算法密钥,由k2产生的加密矩阵为Pk2’,Qk2’为解密矩阵(即Pk2’-1),C为密文,则有:
令分组长度为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同步算法研究
对于一个通信系统而言,接收端的同步是一个必须考虑的问题;对于语音加解密系统而言,它将会直接关系到接收端解密的准确性。