張 東,陳 晨
(四川大學計算機學院,四川成都610065)
基于Speex編碼的網絡通話語音加密方法實現*
張 東,陳 晨
(四川大學計算機學院,四川成都610065)
針對Android系統在網絡通話過程中語音數據的傳輸效率和安全性,本文設計實現了語音的再編碼和加密。通過Speex編碼對獲取的源音頻編碼壓縮,使用AES和RSA算法對音頻數據進行加密處理,將加密后的音頻數據和加密口令發(fā)送給語音接收端,建立安全的語音通話過程。實驗證明在確保語音通話質量的前提下,減少了語音數據傳輸時間和加密的數據量,確保了通話中的安全性。
Android系統 Speex編碼 AES RSA
隨著4G移動網絡的出現,使得手機的網絡應用越來越受到人們關注,其中網絡電話則更是成為手機應用熱門,由于它的便捷性,實用性,其價格與傳統電話通信相比也更便宜。特別是如今智能手機的普及,使得用戶可以安裝各種實用性功能的應用到手機中,其中的網絡通話軟件比如代表性的微信、Skype、Line等等,不僅為用戶提供了更多的交流體驗也讓網絡語音通話逐漸成為可能。
通信是人們信息交流的重要方式,所以通信的質量和安全也顯得尤為重要。在網絡語音通話中,一般的通信數據都是通過IPv4封包傳遞,數據在傳輸過程中其安全性則沒有確切的保證,很容易被截獲和竊聽。為了防止這樣的情況發(fā)生,本文實現了一種安全可靠的語音加密方法[1]。
該方法通過Speex編碼減少原始音頻數據的容量,并確保了通話語音的質量。采用AES-128位和RSA兩種加密算法對數據加密處理以確保安全性, AES-128對音頻數據進行加密,RSA對口令進行加密,再發(fā)送加密后的數據和口令。加密后的語音在傳輸過程中占用更低的網絡帶寬,提高傳輸速度,降低了通信中的時延問題。
發(fā)送端和接收端在通話建立之前需登錄SIP代理服務器獲取雙方的通信地址,通話的呼叫控制使
用SIP協議,該協議是應用層的會話控制協議,用于發(fā)起和結束通話管理,也用于通話過程修改。
Speex是一套功能強大的開源語音引擎編碼算法,能夠實現高質量和低比特率的編碼。除了提供了基于碼激勵線性預測(CELP)算法的編/解碼模塊,還提供了聲音預處理和聲學回聲消除模塊,專門為碼率在2~44 kbps的語音壓縮設計。Speex編解碼庫設計非常靈活,其特點主要有:窄帶(8 kHz),寬帶(16 kHz)和超寬帶(32 kHz)壓縮于同一位流;強化立體編碼;數據包丟失隱藏;可變比特率;語音捕捉;非連續(xù)傳輸;定點運算;感官回聲消除;噪音屏蔽[3]。
相對于其它編解碼器,Speex非常適用于網絡,尤其是VoIP網絡電話,它對于丟包能夠很好的處理,不會損壞數據,而且數據包不會在傳輸過程中丟失。
使用Speex編碼音頻數據再進行加密,一方面是編碼后的數據量更小,使得加密速度更快;另一方面是在Speex編碼后的文件也更適用于手機網絡環(huán)境,提高了數據傳輸速度。直接對數據加密再進行傳輸,在數據量大的情況下傳輸時間會更長,降低了用戶體驗,所以本文在設計中先對音頻數據進行Speex編碼再進行加密是一種更加優(yōu)化的方案。
整個通話過程的架構如圖1所示,主要由四部分組成,密鑰分發(fā)管理中心,SIP代理服務器,語音發(fā)送端和語音接收端[2]。
圖1 語音通話過程建立Fig.1 Process of voice call
密鑰分發(fā)管理中心存儲和分配用戶生成的公鑰和私鑰,SIP代理服務器管理用戶的注冊信息,當語音發(fā)送端要發(fā)送信息到接收端時,發(fā)送端先登錄SIP代理服務器獲取接收端的通信地址后,才能將數據正確送達。
語音發(fā)送流程如圖2所示,發(fā)送端獲取原始音頻,編碼加密原始音頻,將結果文件發(fā)送給接收端,接收端進行反向處理接收到的音頻文件,最后需要的語音文件。
圖2 語音發(fā)送流程Fig.2 Process of sending voice data
本文是基于Android平臺上實現的語音編碼加密解密。通過Android手機的麥克風獲取用戶聲音模擬信號,再通過抽樣、量化、編碼三個步驟將連續(xù)變化的模擬信號轉換為數字信號,存儲為脈沖代碼調制編碼(PCM編碼)。在生成PCM編碼后,立即對PCM文件進行Speex編碼,編碼結束則進行音頻數據的加密。首先用戶輸入加密口令,通過用戶的加密口令使用AES-128位算法加密原始語音,接著RSA生成私鑰和公鑰,并用私鑰加密加密口令[4]。
完成語音的整個加密過程后,發(fā)送端連接SIP代理服務器獲取接收端的IP和相關信息,接著發(fā)送端呼叫接收端并獲取回復,建立通話過程,然后將加密后的語音傳送給接收方。當語音接收方獲取到加密的語音后通過公鑰解密出加密口令,再次通過加密口令解密數據最終解碼出原始語音。
3.1 編碼與解碼模塊
開發(fā)環(huán)境為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,并將它們發(fā)送至遠程密鑰分發(fā)中心進行保存,使用RSAPrivateKey方法加密InputKey,得到EncryptKey;
3)使用keyGenerator方法將用戶輸入的Input-Key生成隨機的128位AES密鑰,獲取編碼模塊生成的.spx音頻文件,CipherInputStream方法和Input-Key對音頻文件進行加密,得到EncryptData;
4)將加密后的EncryptKey和EncryptData發(fā)送到接收端。
5)接收端回復確認連接信息。
圖4 加密過程Fig.4 Process of encryption
解密過程如圖5所示,步驟如下:
1)接收端用戶首先通過遠程密鑰分發(fā)管理中心獲取PublicKey;
2)調用RSAPublicKey方法通過PublickKey解密EncryptKey獲得對稱密鑰InputKey;
3)使用CipherOutputStream方法和InputKey解密EncryptData,得到.spx音頻文件;
4)Speex編碼解碼模塊將解密出來的.spx音頻文件解碼得到原始音頻。
5)接收端獲取原始音頻文件,最終通話建立。
圖5 解密過程Fig.5 Process of decryption
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
時間結果對比可以看出,直接發(fā)送音頻和編碼加密后再發(fā)送音頻,兩種過程的時間差距不是很大,在通話中所帶來的時間延遲基本不會影響通話質量。
4.3 音頻編碼波形圖對比
同時對比了Speex編碼前后音頻文件的波形圖,在圖5和圖6中,可以看出通過Speex編碼和解碼后的音頻波形圖和原始音頻波形圖相差不大,語音略有失真但不影響在通話過程中的語音質量。
圖7 原始音頻文件波形Fig.7 Oscillograph of original audio file
圖8 Speex編碼解碼后音頻文件波形Fig.8 Oscillograph of coded audio file
本文研究了在網絡通話中如何提高語音傳輸速度和確保語音通信的安全,文中設計并實現了Speex編碼引擎對語音文件的編碼和加密算法對編碼音頻文件的加密,使之減少了數據傳輸容量和傳輸時間,加密后的數據也確保了即使被截獲也不會暴露信息,實驗結果表明在網絡通話中該方案提高了傳輸效率,能夠保證語音數據的安全性。
[1] 李濤.網絡安全概論[M].北京:電子工業(yè)出版社,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].科技創(chuàng)新導報,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