摘 要: 设计并实现了一个基于Nios II的语音加密传输系统。介绍了进行语音信号处理的功能模块,包括语音采集回放模块、基于G.729A的语音压缩与解压缩模块和基于AES的数据加解密模块。在控制模块的协调下,使得语音数据通过MODEM能够在公共电话网中安全地传输,实现了语音的保密通信。
关键词: Nios II;语音加密;G.729A;AES
由于缺乏保密措施,使得电话窃听事件不断发生,严重威胁着个人隐私、军事商业秘密甚至地区或国家的信息安全。因此,以语音压缩和数据加密为基础的语音加密传输技术受到人们关注。G.729A是G.729(共轭结构代数码本激励线性预测编码方案CS-ACELP)的简化方案[1,2],降低了计算的复杂度以便于实时实现。美国国家标准和技术研究所(NIST)在众多的分组密码中经过三轮筛选,选中Rijndael算法[3,4]作为高级数据加密标准(AES)。
本文基于G.729A和AES,结合Nios II[5]设计了一种语音加密传输系统,对通信内容进行加密,有效防止了因通话内容被窃听而引起的泄密。
1 总体结构
语音加密传输系统主要包括语音处理模块、语音传输模块、控制模块及相应语音输入输出设备。其中语音模块由语音采集回放模块、语音编解码模块、加解密模块三部分组成。系统总体设计如图1所示,系统各部分功能如下。
(1)语音采集回放模块:此模块实现语音的采集及回放,一方面,此模块接收由麦克传来的模拟语音,通过A/D转换,生成数字语音;另一方面,此模块接收来自语音编解码器传来的解压过的语音数据,经过D/A转换,将数字语音还原成模拟语音,经扬声设备输出。
(2)语音编解码模块:对语音进行编解码,就是通过对语音的压缩与还原,能在较低速率下传送优质的语音。语音编解码器包括编码器与译码器。编码器对采集回放模块传来的原始数字语音信息进行处理,对数字语音信号进行分析,提取语音参数,将压缩后的数据送到数据加密模块。译码器的作用是接收来自数据加解密模块的数据,经过对数据的解压,把这些数据恢复成原始的数字语音信息,再传送至语音采集回放模块。
(3)加解密模块:语音加解密模块是保证语音通信安全的核心。加解密模块接收来自数字语音解压缩器的数据,并对其进行加密,然后发送至通信传输模块,将数据通过调制解调器传送至公共电话网;同时,加解密模块要接收来自通信模块的数据,将其解密后传送至数字语音解压缩器,进行数据的解压。
(4)通信传输模块:在控制模块的控制下,当系统一方的控制模块检测到拨号信息或者接收到另一方请求时,与对方完成互联;在双方建立连接的基础上,通信传输模块将数据转换为可以在公共电话网上传输的数据,进行加密语音数据的传输。
(5)Nios II系统控制模块:当通信一方发起或者接收到通信请求时,Nios II系统控制模块控制整个系统的协调运行,使通信双方能够安全地通信。
2 系统设计
2.1 硬件功能模块设计
本设计以Nios II微处理器为核心,实现语音采集回放、数字语音编解码和加解密等功能,通过调制解调器进行数据交换,实现了语音的加密传输。经过对设计的研究与分析,结合DE1开发板,将整个系统硬件划分为语音处理模块和语音传输模块,系统总体硬件结构框图如图2所示。
2.1.1 语音采集回放模块
本模块是语音加密通信的起点和终点,利用开发板上提供的24 bit CD-Quality Audio CODEC芯片完成系统的语音信号A/D、D/A转换。CODEC芯片中封装了WM8731编解码器,其采样率为8 kHz~96 kHz可变。它是一款低电压并集成有耳机驱动的编解码器,提供立体音和单一麦克风音频输入,并具有降低输入噪声、可编程音量控制以及适合于电气型麦克风的输出电压可增益的特点。WM8731内部有11个寄存器,该芯片的初始化和内部功能设置是通过I2C控制模块对其内部的这11个寄存器进行相应的配置实现的。本设计中WM8731工作于从模式,采样频率设为48 kHz,转换的数据位长度为16 bit,WM8731的寄存器参数(十六进制)设置如表1。
根据芯片寄存器的特点和功能,要进行I2C控制模块的设计,并以IP核的形式通过SoPC Builder连接到系统的Avalon总线上。I2C控制模块通过该模块中I2C_SDAT数据端口,向目标寄存器写入相应的控制信息,达到对WM8731工作状态的配置。
2.1.2 G.729A语音编解码模块
基于CELP编码模型的G.729A处理语音帧,以每秒8 000样点进行采样,每10 ms对应80个样点为1帧,语音质量与32 kb/s的ADPCM相当。
(1)编码器
G.729A编码器的工作原理如图3所示。在预处理块中,输入的语音信号首先进行高通滤波并按比例放缩,对预处理后的语音每10 ms计算一次LP滤波器系数,把LP系数转换成为线频谱对系数LSP,并将LSP系数利用预测式两级矢量量化(VQ)量化为18 bit。激励信号用分析合成(ABS)搜索算法进行选择,在该算法中,依据感觉加权失真测度使原始与重建语音信号间的误差最小。
具体上是重构语音与预处理后语音的误差,通过自适应感觉加权滤波器,搜索最小的滤波后误差,感觉加权滤波器的自适应系数由未量化的LP系数控制。G.729A的激励参数(自适应和固定码书)每5 ms(40个样点)子帧确定一次。首先一个开环基音延迟每10 ms帧基于感觉加权语音信号估算一次,使LP残差信号通过加权合成滤波器获得目标信号。滤波器的初始状态是通过对LP残差信与激励之间的误差进行滤波来更新的。在得到加权合成滤波器的冲击响应后,就可以利用冲击响应和目标信号进行闭环基音分析(寻找自适应码书的时延和增益)。在考虑自适应码书的影响后更新目标信号,用于搜索固定码书。自适应码书和固定码书搜索完成后用7 bit进行矢量量化。最后滤波器的记忆值由已确定的激励信号来更新。
(2)解码器
G.729A解码器原理如图4所示。首先,从接收到的比特流中提取参数标号,这些标号被译码以获得对应一个10 ms语音帧的编码参数。这些参数是LSP,2个分数基音延迟,2个固定码书矢量,2组自适应码书和固定码书增益。LSP系数在每一子帧中进行插值并转化为LP滤波器系数。然后,对每5 ms子帧进行如下操作: 将自适应码书和固定码书乘以各自增益后相加,获得激励;用LP合成滤波器对激励滤波,获得合成语音;合成语音通过一个包括长时和短时合成滤波器的自适应后滤波器进行增强,然后经高通滤波和定标去除得到最终的重建语音。
2.1.3 AES加解密模块
G.729A的语音编码帧为80 bit/10 ms,根据对语音进行分帧编码和传输的特点,在利用该声码器构造语音保密通信时选用分组密码。本文采用高级加密标准AES完成数字语音信号的加解密,为了提高AES加解密速度,将AES加解密过程设计成Nios II的一条自定义指令。
(1)AES算法及硬件实现
AES加密模块工作原理如下:在运算控制模块(Control)控制下,待加密明文与初始圈密钥进行异或(AddRoundKey),接着进行Nr次圈迭代变换,除最后一圈(第Nr圈)省略列混合变换处,每圈包含字节代替变换(ByteSub)、行移位变换(ShiftRow)、列混合变换(MixColumn)和圈密钥加法(AddRoundKey)四步变换。
解密工作过程与加密相类似,待脱密的密文与初始圈密钥进行异或(AddRoundKey),然后进行Nr圈迭代运算,除最后一圈(第Nr圈)省略逆列混合变换外,每圈包含逆字节代替变换(InvByteSub)、逆行移位变换(InvShiftRow)、逆列混合变换(InvMixColumn)、圈密钥加(AddRoundKey)四步变换。
G.729A的语音编码帧为80 bit/10 ms,每秒所需加密的数据约为8 Kbit,因此,在满足语音加密的情况下,本文采用循环方式实现AES,节省硬件资源。其硬件加解密结构及其相关控制信号如图5所示。
(2)自定义指令逻辑
Nios II自定制AES加密指令的内部硬件结构如图6所示。从图6可以看到用户自定义逻辑功能(AES)连接到了ALU的2个输入端以及ALU的输出端,当使用Nios II的自定义指令时,Nios II内部的ALU操作将被放弃,以用户自定义逻辑的输出结果作为有效结果。
AES加解密模块设计得到的自定义逻辑在多个时钟周期完成,采用多周期自定义指令结构。涉及的信号线在dataa、datab、result 的基础上增加了clk、clk_en、reset、start 4个信号。其指令结构如图7所示。
2.1.4 通信传输模块
通信传输模块利用MODEM在公共电话网PSTN上实现通信。PSTN网络覆盖面广,用户通过MODEM就可以方便地完成对接,实现通信,这在现有条件下非常实用。
MODEM通过RS232接口与DE1相连,通过RJ45与PSTN网络相连,解析来自Nios II控制系统的命令,来实现通信双方的互连通信。
(1)工作原理
通信发起方使用键盘拨对方号码,Nios II控制系统采集到拨号信息,组装成为MODEM拨号的AT命令[6],MODEM根据命令拨号;对方的MODEM接收到拨号信息,发出来电提醒,开启语音处理功能,双方便可通信。MODEM对经过加密的语音分组信息进行封装,使其适合在PSTN网络上传输。接收方MODEM接收到数据包,对其解封装,等待解密处理。在本系统中,MODEM工作于半双工方式。
(2)MODEM与Nios II控制模块的连接
系统要正常工作,需要MODEM与Nios II控制系统间进行交互,用到的信号如图8所示,各信号的功能如下:
DSR:表示MODEM电源已接上,已处于可用的状态。
RTS:请求发送信号,串行通信接口用RTS来向MODEM表示发送数据的请求,该信号应控制MODEM进入发送状态或打开MODEM的发送器。
CTS:清除发送信号,又称为允许发送,是MODEM对RTS的响应信号,表示MODEM已作好发送的准备,收到CTS后即可输出发送的数据。
DCD:数据载波检测信号,向终端设备表示MODEM已收到通信链路上的数据载波信号,通知另一方准备接收。
TXD:发送数据信号,把终端欲发送的数据串行送往MODEM。
RXD:接收数据信号,接收从MODEM串行发来的数据。
SG:信号地,连接设备和通信设备的信号地。
由于使用了公共电话网(PSTN),因此在上述7个信号的基础上增加了DTR和RI两个信号。振铃指示RI通知系统,MODEM已收到交换台送来的振铃呼叫信号;然后系统启动数据准备好DTR信号送给MODEM作为对RI的响应。当RI和DTR信号握手联络上以后,MODEM才可以“接线”以建立通信链路;当数据传送结束后,应复位这些信号以指示“拆线”,让出通信链路。
2.2 Nios II控制模块设计
控制模块利用Nios II IDE集成开发环境进行开发,控制从拨号(接听)、语音采集、编解码、加解密、传输、挂机的整个系统工作。
2.2.1 建立通信
拨号用的键盘连接在DE1开发板的PS2口上,采用中断方式与处理器进行交互。当控制模块接收到键盘中断后,读取用户按键信息。根据拨号信息,控制模块通过RS232向MODEM发出相应含有拨号信息的AT命令,MODEM拨相应的号码;接听方MODEM发出振铃指示后,根据命令为通话双方建立连接。
2.2.2 语音处理控制
Nios II控制模块实现对语音处理的控制,其主要功能是读取一个语音处理模块的结果,并将其按将要进行的处理写入下一个功能模块。控制模块操纵I2C控制语音采集回放模块采集语音并数字化,然后将数字语音信号送到编解码模块进行编解码,进而调用Nios II自定义的AES指令,对数据进行加密,最后通过MODEM发送数据。在接收方, MODEM读取对方发送过来的语音数据,控制模块调用Nios II自定义AES指令对数据进行解密,再将解密后的数据写入语音编解码模块进行解码,最后调用语音采集回放模块还原语音。
2.2.3 通信结束控制
在通话过程中,如果检测到通信中断或者通信一方结束通信的信息,则向各功能模块发出复位信号,同时控制MODEM复位于待机状态,通信结束。
本设计适用于对语音保密通信有需求的政府机关、军队等,也适合需要保密的商业通信。采用本系统用户可以像使用普通电话机一样,实现语音保密通信。本设计系统使用方便,通过调制解调器进行连接,可以在现有的PSTN电话网上使用。如果将调制解调器改进为CDMA DTU等无线调制方式,则用户还可以进行无线保密通信。
参考文献
[1] ITU-T Rec.G.729(03/96) Coding of Speech at 8 kbit/s Using Conjugate-Structure Algebraic-Code-Excited Linear-Prediction[S].
[2] ITU-T Rec.G.729 Annex A(11/96) Reduced Complexity 8 kbit/s CS-ACELP Speech CODEC[S].
[3] FIPS-197.Advanced Encryption Standard(AES)[S].2001.
[4] DAEMEN J ,RIJMEN V.The design of rijndael:AES-the advanced encryption stand[M].Berlin:Springer-Verlag,2002.
[5] 李兰英.Nios II嵌入式软核SOPC设计原理及应用[M].北京:北京航空航天大学出版社,2006.
[6] Gilbred Held.调制解调器参考大全[M].田学锋,王刚译. 北京:电子工业出版社,1996.