APP下载

基于Speex编码的网络通话语音加密方法实现*

2014-02-09东,陈

通信技术 2014年12期
关键词:音频文件接收端通话

张 东,陈 晨

(四川大学计算机学院,四川成都610065)

基于Speex编码的网络通话语音加密方法实现*

张 东,陈 晨

(四川大学计算机学院,四川成都610065)

针对Android系统在网络通话过程中语音数据的传输效率和安全性,本文设计实现了语音的再编码和加密。通过Speex编码对获取的源音频编码压缩,使用AES和RSA算法对音频数据进行加密处理,将加密后的音频数据和加密口令发送给语音接收端,建立安全的语音通话过程。实验证明在确保语音通话质量的前提下,减少了语音数据传输时间和加密的数据量,确保了通话中的安全性。

Android系统 Speex编码 AES RSA

0 引 言

随着4G移动网络的出现,使得手机的网络应用越来越受到人们关注,其中网络电话则更是成为手机应用热门,由于它的便捷性,实用性,其价格与传统电话通信相比也更便宜。特别是如今智能手机的普及,使得用户可以安装各种实用性功能的应用到手机中,其中的网络通话软件比如代表性的微信、Skype、Line等等,不仅为用户提供了更多的交流体验也让网络语音通话逐渐成为可能。

通信是人们信息交流的重要方式,所以通信的质量和安全也显得尤为重要。在网络语音通话中,一般的通信数据都是通过IPv4封包传递,数据在传输过程中其安全性则没有确切的保证,很容易被截获和窃听。为了防止这样的情况发生,本文实现了一种安全可靠的语音加密方法[1]。

该方法通过Speex编码减少原始音频数据的容量,并确保了通话语音的质量。采用AES-128位和RSA两种加密算法对数据加密处理以确保安全性, AES-128对音频数据进行加密,RSA对口令进行加密,再发送加密后的数据和口令。加密后的语音在传输过程中占用更低的网络带宽,提高传输速度,降低了通信中的时延问题。

发送端和接收端在通话建立之前需登录SIP代理服务器获取双方的通信地址,通话的呼叫控制使

用SIP协议,该协议是应用层的会话控制协议,用于发起和结束通话管理,也用于通话过程修改。

1 Speex算法

Speex是一套功能强大的开源语音引擎编码算法,能够实现高质量和低比特率的编码。除了提供了基于码激励线性预测(CELP)算法的编/解码模块,还提供了声音预处理和声学回声消除模块,专门为码率在2~44 kbps的语音压缩设计。Speex编解码库设计非常灵活,其特点主要有:窄带(8 kHz),宽带(16 kHz)和超宽带(32 kHz)压缩于同一位流;强化立体编码;数据包丢失隐藏;可变比特率;语音捕捉;非连续传输;定点运算;感官回声消除;噪音屏蔽[3]。

相对于其它编解码器,Speex非常适用于网络,尤其是VoIP网络电话,它对于丢包能够很好的处理,不会损坏数据,而且数据包不会在传输过程中丢失。

使用Speex编码音频数据再进行加密,一方面是编码后的数据量更小,使得加密速度更快;另一方面是在Speex编码后的文件也更适用于手机网络环境,提高了数据传输速度。直接对数据加密再进行传输,在数据量大的情况下传输时间会更长,降低了用户体验,所以本文在设计中先对音频数据进行Speex编码再进行加密是一种更加优化的方案。

2 安全通话架构

整个通话过程的架构如图1所示,主要由四部分组成,密钥分发管理中心,SIP代理服务器,语音发送端和语音接收端[2]。

图1 语音通话过程建立Fig.1 Process of voice call

密钥分发管理中心存储和分配用户生成的公钥和私钥,SIP代理服务器管理用户的注册信息,当语音发送端要发送信息到接收端时,发送端先登录SIP代理服务器获取接收端的通信地址后,才能将数据正确送达。

语音发送流程如图2所示,发送端获取原始音频,编码加密原始音频,将结果文件发送给接收端,接收端进行反向处理接收到的音频文件,最后需要的语音文件。

图2 语音发送流程Fig.2 Process of sending voice data

3 语音加密解密模块

本文是基于Android平台上实现的语音编码加密解密。通过Android手机的麦克风获取用户声音模拟信号,再通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字信号,存储为脉冲代码调制编码(PCM编码)。在生成PCM编码后,立即对PCM文件进行Speex编码,编码结束则进行音频数据的加密。首先用户输入加密口令,通过用户的加密口令使用AES-128位算法加密原始语音,接着RSA生成私钥和公钥,并用私钥加密加密口令[4]。

完成语音的整个加密过程后,发送端连接SIP代理服务器获取接收端的IP和相关信息,接着发送端呼叫接收端并获取回复,建立通话过程,然后将加密后的语音传送给接收方。当语音接收方获取到加密的语音后通过公钥解密出加密口令,再次通过加密口令解密数据最终解码出原始语音。

3.1 编码与解码模块

开发环境为eclipse ADT,所用系统版本为Android 4.4.2,Java JDK版本好8u5,使用了speex-1. 2rc1音频编码版本库。

编译配置,让其可以在Android平台下调用C/ C++代码。新建Application.mk,描述程序运行中需要的模块。新建speex_jni.cpp调用Speex库的C代码函数。在com.nisec.speex包内新建Speex.java用于程序中直接调用Speex中的主要方法。

编码的过程先初始化Speex库,调用getFrame-Size()获取编码值,调用encode方法对音频文件进行压缩编码。生成.spx文件。解码步骤相似直接

调用decode方法获得初始音频文件。

编码压缩和解码解压缩流程如图3。

图3 语音Speex编码解码过程Fig.3 Process of voice codec with Speex

3.3 加密解密模块

加密解密模块分别使用了AES和RSA加密算法,使用AES-128算法加密音频数据,RSA算法生成公钥publicKey和私钥PrivateKey。

本文在Android 4.4.2平台下进行语音数据的加密和解密,AES使用的是128位长度的密钥作为加密口令,AES算法直接采用JAVA-8u5版本的JDK中的函数包:

java.security.* //加密方法类

javax.crypto.* //加密操作的类和接口

加密过程如图4所示,步骤如下:

1)用户输入InputKey,即对称密钥;

2)RSA加密算法调用KeyPairGenerator方法随机生成1024位的PublickKey和PrivateKey,并将它们发送至远程密钥分发中心进行保存,使用RSAPrivateKey方法加密InputKey,得到EncryptKey;

3)使用keyGenerator方法将用户输入的Input-Key生成随机的128位AES密钥,获取编码模块生成的.spx音频文件,CipherInputStream方法和Input-Key对音频文件进行加密,得到EncryptData;

4)将加密后的EncryptKey和EncryptData发送到接收端。

5)接收端回复确认连接信息。

图4 加密过程Fig.4 Process of encryption

解密过程如图5所示,步骤如下:

1)接收端用户首先通过远程密钥分发管理中心获取PublicKey;

2)调用RSAPublicKey方法通过PublickKey解密EncryptKey获得对称密钥InputKey;

3)使用CipherOutputStream方法和InputKey解密EncryptData,得到.spx音频文件;

4)Speex编码解码模块将解密出来的.spx音频文件解码得到原始音频。

5)接收端获取原始音频文件,最终通话建立。

图5 解密过程Fig.5 Process of decryption

4 实验分析与测试

4.1 音频文件处理前后大小对比

实验中录制了时长分别为10秒和60秒的音频文件,将两个不同时长的文件分别和原始的音频文件进行了比对,Speex编码前后文件大小的比对和文件加密前后的大小比对,其文件大小对比如下表格:

表1 10秒音频文件对比Table 1 File size comparison of 10 seconds

表2 60秒音频文件对比Table 2 File size comparison of 60 seconds

从上面的表1和表2可以看出音频文件在通过Speex编码后文件大小减少了20%,这在网络传输过程中很大程度提升了网络传输效率,同时也减少了加密的数据量。

4.2 时延对比

在实验中我们令获取原始音频后不处理直接进行传输通话的过程时间为Ts,令获取原始音频后进行编码和加密处理后再传输通话的过程时间为Te。

分别录制了10 s、30 s、60 s、120 s时长的音频文件,并获取每个时长的音频文件的Ts和Te时间,通过每个时长的音频文件所耗费的时间与其编码加密后所耗费的时间进行对比,判断在时延可接受的情况下,对音频文件的编码和加密处理后是否会影响到通话效率。实验结果如图6所示。

图6 音频文件通信过程时延对比Fig.6 Time-delay comparison chart in voice data transmission

时间结果对比可以看出,直接发送音频和编码加密后再发送音频,两种过程的时间差距不是很大,在通话中所带来的时间延迟基本不会影响通话质量。

4.3 音频编码波形图对比

同时对比了Speex编码前后音频文件的波形图,在图5和图6中,可以看出通过Speex编码和解码后的音频波形图和原始音频波形图相差不大,语音略有失真但不影响在通话过程中的语音质量。

图7 原始音频文件波形Fig.7 Oscillograph of original audio file

图8 Speex编码解码后音频文件波形Fig.8 Oscillograph of coded audio file

5 结 语

本文研究了在网络通话中如何提高语音传输速度和确保语音通信的安全,文中设计并实现了Speex编码引擎对语音文件的编码和加密算法对编码音频文件的加密,使之减少了数据传输容量和传输时间,加密后的数据也确保了即使被截获也不会暴露信息,实验结果表明在网络通话中该方案提高了传输效率,能够保证语音数据的安全性。

[1] 李涛.网络安全概论[M].北京:电子工业出版社,2004.

LITao.Introduction to Network Security[M].BeiJing: Publishing House of Electronics Industry,2004.

[2] Byounghee SON,Euiseok NAHM,Hagbae KIM.VoIP encryptionmodule for securing privacy[J].Multimed Tools and application,2013(63):181-193.

[3] 付璐,刘哲,韩琨.基于Speex算法的语言压缩解压程序设计[J].电脑知识与技术,2012,8(26):6357-6360.

Fu Lu,LIUZhe,HAN Kun.Design of Voice Encoder/ Decoder Based on Speex Algorithm[J].Computer Knowledge and Technology,2012,8(26):6357-6360.

[4] 佟铭,杨立波,槐宇超.基于AES加密算法的语言加密通信的实现[J].科技创新导报,2013(11):50.

TONGMing,YANG Li-bo,HUAIYu-chao.Implementation of voice encryption communication based on AES.Science and Technology InnovationHerald[J],2013(11):50.

[5] 王先泉.基于ACC音频编码与混沌加密的语音加密技术实现[J].现代电子技术,2012,35(24):006-010.

WANG Xian-quan.Implementation of voice encryption technology based on AAC audio coding and chaotic encryption[J].Modern Electronics Technique,2012,35 (24):006-010.

张 东(1988—),男,硕士研究生,主要研究方向为网络安全技术与应用;

ZHANG Dong(1988-),male,graduate student,majoring in network security technology and application.

陈 晨(1989—),男,硕士研究生,主要研究方向为网络安全技术与应用。

CHEN Chen(1989-),male,graduate student,majoring in network security technology and application.

Im p lementation of Voice Encryption in Network Calls based on Speex Codec

ZHANG Dong,CHEN Chen
(College of Computer Science,Sichuan University,Chengdu Sichuan 610065,China)

Aiming at the transmission efficiency and security of voice data in network calls of Android system this paper proposes a design and implementation of voice recoding and encryption.The acquired source voice data is encoded and compressed through Speex codec,then the voice data is encrpted via AES and RSA algorithm,and then the encrypted voice data and encrypt-password is sent to the receiver,thus the secure voice communication is established.Experiments indicate thatwithout any influence on voice quality,the transmission time of voice data and the data size of encryption operation are reduced while the data security guaranteed.

android system;speex codec;AES;RSA

TP311

A

1002-0802(2014)12-1451-04

10.3969/j.issn.1002-0802.2014.12.021

2014-07-15;

2014-10-21 Received date:2014-07-15;Revised date:2014-10-21

猜你喜欢

音频文件接收端通话
基于扰动观察法的光通信接收端优化策略
微信上小额借款 请务必通话确认
顶管接收端脱壳及混凝土浇筑关键技术
基于多接收线圈的无线电能传输系统优化研究
电脑音频随手录制随手转换
音频录编任我行
手机无线充电收发设计
《戊戌元日与友人通话》
提取APP中的音频文件
3G视频通话技术获飞跃