摘 要: 設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Nios II的語(yǔ)音加密傳輸系統(tǒng)。介紹了進(jìn)行語(yǔ)音信號(hào)處理的功能模塊,包括語(yǔ)音采集回放模塊、基于G.729A的語(yǔ)音壓縮與解壓縮模塊和基于AES的數(shù)據(jù)加解密模塊。在控制模塊的協(xié)調(diào)下,使得語(yǔ)音數(shù)據(jù)通過(guò)MODEM能夠在公共電話網(wǎng)中安全地傳輸,實(shí)現(xiàn)了語(yǔ)音的保密通信。
關(guān)鍵詞: Nios II;語(yǔ)音加密;G.729A;AES
由于缺乏保密措施,使得電話竊聽(tīng)事件不斷發(fā)生,嚴(yán)重威脅著個(gè)人隱私、軍事商業(yè)秘密甚至地區(qū)或國(guó)家的信息安全。因此,以語(yǔ)音壓縮和數(shù)據(jù)加密為基礎(chǔ)的語(yǔ)音加密傳輸技術(shù)受到人們關(guān)注。G.729A是G.729(共軛結(jié)構(gòu)代數(shù)碼本激勵(lì)線性預(yù)測(cè)編碼方案CS-ACELP)的簡(jiǎn)化方案[1,2],降低了計(jì)算的復(fù)雜度以便于實(shí)時(shí)實(shí)現(xiàn)。美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)在眾多的分組密碼中經(jīng)過(guò)三輪篩選,選中Rijndael算法[3,4]作為高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)(AES)。
本文基于G.729A和AES,結(jié)合Nios II[5]設(shè)計(jì)了一種語(yǔ)音加密傳輸系統(tǒng),對(duì)通信內(nèi)容進(jìn)行加密,有效防止了因通話內(nèi)容被竊聽(tīng)而引起的泄密。
1 總體結(jié)構(gòu)
語(yǔ)音加密傳輸系統(tǒng)主要包括語(yǔ)音處理模塊、語(yǔ)音傳輸模塊、控制模塊及相應(yīng)語(yǔ)音輸入輸出設(shè)備。其中語(yǔ)音模塊由語(yǔ)音采集回放模塊、語(yǔ)音編解碼模塊、加解密模塊三部分組成。系統(tǒng)總體設(shè)計(jì)如圖1所示,系統(tǒng)各部分功能如下。
(1)語(yǔ)音采集回放模塊:此模塊實(shí)現(xiàn)語(yǔ)音的采集及回放,一方面,此模塊接收由麥克傳來(lái)的模擬語(yǔ)音,通過(guò)A/D轉(zhuǎn)換,生成數(shù)字語(yǔ)音;另一方面,此模塊接收來(lái)自語(yǔ)音編解碼器傳來(lái)的解壓過(guò)的語(yǔ)音數(shù)據(jù),經(jīng)過(guò)D/A轉(zhuǎn)換,將數(shù)字語(yǔ)音還原成模擬語(yǔ)音,經(jīng)揚(yáng)聲設(shè)備輸出。
(2)語(yǔ)音編解碼模塊:對(duì)語(yǔ)音進(jìn)行編解碼,就是通過(guò)對(duì)語(yǔ)音的壓縮與還原,能在較低速率下傳送優(yōu)質(zhì)的語(yǔ)音。語(yǔ)音編解碼器包括編碼器與譯碼器。編碼器對(duì)采集回放模塊傳來(lái)的原始數(shù)字語(yǔ)音信息進(jìn)行處理,對(duì)數(shù)字語(yǔ)音信號(hào)進(jìn)行分析,提取語(yǔ)音參數(shù),將壓縮后的數(shù)據(jù)送到數(shù)據(jù)加密模塊。譯碼器的作用是接收來(lái)自數(shù)據(jù)加解密模塊的數(shù)據(jù),經(jīng)過(guò)對(duì)數(shù)據(jù)的解壓,把這些數(shù)據(jù)恢復(fù)成原始的數(shù)字語(yǔ)音信息,再傳送至語(yǔ)音采集回放模塊。
(3)加解密模塊:語(yǔ)音加解密模塊是保證語(yǔ)音通信安全的核心。加解密模塊接收來(lái)自數(shù)字語(yǔ)音解壓縮器的數(shù)據(jù),并對(duì)其進(jìn)行加密,然后發(fā)送至通信傳輸模塊,將數(shù)據(jù)通過(guò)調(diào)制解調(diào)器傳送至公共電話網(wǎng);同時(shí),加解密模塊要接收來(lái)自通信模塊的數(shù)據(jù),將其解密后傳送至數(shù)字語(yǔ)音解壓縮器,進(jìn)行數(shù)據(jù)的解壓。
(4)通信傳輸模塊:在控制模塊的控制下,當(dāng)系統(tǒng)一方的控制模塊檢測(cè)到撥號(hào)信息或者接收到另一方請(qǐng)求時(shí),與對(duì)方完成互聯(lián);在雙方建立連接的基礎(chǔ)上,通信傳輸模塊將數(shù)據(jù)轉(zhuǎn)換為可以在公共電話網(wǎng)上傳輸?shù)臄?shù)據(jù),進(jìn)行加密語(yǔ)音數(shù)據(jù)的傳輸。
(5)Nios II系統(tǒng)控制模塊:當(dāng)通信一方發(fā)起或者接收到通信請(qǐng)求時(shí),Nios II系統(tǒng)控制模塊控制整個(gè)系統(tǒng)的協(xié)調(diào)運(yùn)行,使通信雙方能夠安全地通信。
2 系統(tǒng)設(shè)計(jì)
2.1 硬件功能模塊設(shè)計(jì)
本設(shè)計(jì)以Nios II微處理器為核心,實(shí)現(xiàn)語(yǔ)音采集回放、數(shù)字語(yǔ)音編解碼和加解密等功能,通過(guò)調(diào)制解調(diào)器進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)了語(yǔ)音的加密傳輸。經(jīng)過(guò)對(duì)設(shè)計(jì)的研究與分析,結(jié)合DE1開(kāi)發(fā)板,將整個(gè)系統(tǒng)硬件劃分為語(yǔ)音處理模塊和語(yǔ)音傳輸模塊,系統(tǒng)總體硬件結(jié)構(gòu)框圖如圖2所示。
2.1.1 語(yǔ)音采集回放模塊
本模塊是語(yǔ)音加密通信的起點(diǎn)和終點(diǎn),利用開(kāi)發(fā)板上提供的24 bit CD-Quality Audio CODEC芯片完成系統(tǒng)的語(yǔ)音信號(hào)A/D、D/A轉(zhuǎn)換。CODEC芯片中封裝了WM8731編解碼器,其采樣率為8 kHz~96 kHz可變。它是一款低電壓并集成有耳機(jī)驅(qū)動(dòng)的編解碼器,提供立體音和單一麥克風(fēng)音頻輸入,并具有降低輸入噪聲、可編程音量控制以及適合于電氣型麥克風(fēng)的輸出電壓可增益的特點(diǎn)。WM8731內(nèi)部有11個(gè)寄存器,該芯片的初始化和內(nèi)部功能設(shè)置是通過(guò)I2C控制模塊對(duì)其內(nèi)部的這11個(gè)寄存器進(jìn)行相應(yīng)的配置實(shí)現(xiàn)的。本設(shè)計(jì)中WM8731工作于從模式,采樣頻率設(shè)為48 kHz,轉(zhuǎn)換的數(shù)據(jù)位長(zhǎng)度為16 bit,WM8731的寄存器參數(shù)(十六進(jìn)制)設(shè)置如表1。
根據(jù)芯片寄存器的特點(diǎn)和功能,要進(jìn)行I2C控制模塊的設(shè)計(jì),并以IP核的形式通過(guò)SoPC Builder連接到系統(tǒng)的Avalon總線上。I2C控制模塊通過(guò)該模塊中I2C_SDAT數(shù)據(jù)端口,向目標(biāo)寄存器寫(xiě)入相應(yīng)的控制信息,達(dá)到對(duì)WM8731工作狀態(tài)的配置。
2.1.2 G.729A語(yǔ)音編解碼模塊
基于CELP編碼模型的G.729A處理語(yǔ)音幀,以每秒8 000樣點(diǎn)進(jìn)行采樣,每10 ms對(duì)應(yīng)80個(gè)樣點(diǎn)為1幀,語(yǔ)音質(zhì)量與32 kb/s的ADPCM相當(dāng)。
(1)編碼器
G.729A編碼器的工作原理如圖3所示。在預(yù)處理塊中,輸入的語(yǔ)音信號(hào)首先進(jìn)行高通濾波并按比例放縮,對(duì)預(yù)處理后的語(yǔ)音每10 ms計(jì)算一次LP濾波器系數(shù),把LP系數(shù)轉(zhuǎn)換成為線頻譜對(duì)系數(shù)LSP,并將LSP系數(shù)利用預(yù)測(cè)式兩級(jí)矢量量化(VQ)量化為18 bit。激勵(lì)信號(hào)用分析合成(ABS)搜索算法進(jìn)行選擇,在該算法中,依據(jù)感覺(jué)加權(quán)失真測(cè)度使原始與重建語(yǔ)音信號(hào)間的誤差最小。
具體上是重構(gòu)語(yǔ)音與預(yù)處理后語(yǔ)音的誤差,通過(guò)自適應(yīng)感覺(jué)加權(quán)濾波器,搜索最小的濾波后誤差,感覺(jué)加權(quán)濾波器的自適應(yīng)系數(shù)由未量化的LP系數(shù)控制。G.729A的激勵(lì)參數(shù)(自適應(yīng)和固定碼書(shū))每5 ms(40個(gè)樣點(diǎn))子幀確定一次。首先一個(gè)開(kāi)環(huán)基音延遲每10 ms幀基于感覺(jué)加權(quán)語(yǔ)音信號(hào)估算一次,使LP殘差信號(hào)通過(guò)加權(quán)合成濾波器獲得目標(biāo)信號(hào)。濾波器的初始狀態(tài)是通過(guò)對(duì)LP殘差信與激勵(lì)之間的誤差進(jìn)行濾波來(lái)更新的。在得到加權(quán)合成濾波器的沖擊響應(yīng)后,就可以利用沖擊響應(yīng)和目標(biāo)信號(hào)進(jìn)行閉環(huán)基音分析(尋找自適應(yīng)碼書(shū)的時(shí)延和增益)。在考慮自適應(yīng)碼書(shū)的影響后更新目標(biāo)信號(hào),用于搜索固定碼書(shū)。自適應(yīng)碼書(shū)和固定碼書(shū)搜索完成后用7 bit進(jìn)行矢量量化。最后濾波器的記憶值由已確定的激勵(lì)信號(hào)來(lái)更新。
(2)解碼器
G.729A解碼器原理如圖4所示。首先,從接收到的比特流中提取參數(shù)標(biāo)號(hào),這些標(biāo)號(hào)被譯碼以獲得對(duì)應(yīng)一個(gè)10 ms語(yǔ)音幀的編碼參數(shù)。這些參數(shù)是LSP,2個(gè)分?jǐn)?shù)基音延遲,2個(gè)固定碼書(shū)矢量,2組自適應(yīng)碼書(shū)和固定碼書(shū)增益。LSP系數(shù)在每一子幀中進(jìn)行插值并轉(zhuǎn)化為L(zhǎng)P濾波器系數(shù)。然后,對(duì)每5 ms子幀進(jìn)行如下操作: 將自適應(yīng)碼書(shū)和固定碼書(shū)乘以各自增益后相加,獲得激勵(lì);用LP合成濾波器對(duì)激勵(lì)濾波,獲得合成語(yǔ)音;合成語(yǔ)音通過(guò)一個(gè)包括長(zhǎng)時(shí)和短時(shí)合成濾波器的自適應(yīng)后濾波器進(jìn)行增強(qiáng),然后經(jīng)高通濾波和定標(biāo)去除得到最終的重建語(yǔ)音。
2.1.3 AES加解密模塊
G.729A的語(yǔ)音編碼幀為80 bit/10 ms,根據(jù)對(duì)語(yǔ)音進(jìn)行分幀編碼和傳輸?shù)奶攸c(diǎn),在利用該聲碼器構(gòu)造語(yǔ)音保密通信時(shí)選用分組密碼。本文采用高級(jí)加密標(biāo)準(zhǔn)AES完成數(shù)字語(yǔ)音信號(hào)的加解密,為了提高AES加解密速度,將AES加解密過(guò)程設(shè)計(jì)成Nios II的一條自定義指令。
(1)AES算法及硬件實(shí)現(xiàn)
AES加密模塊工作原理如下:在運(yùn)算控制模塊(Control)控制下,待加密明文與初始圈密鑰進(jìn)行異或(AddRoundKey),接著進(jìn)行Nr次圈迭代變換,除最后一圈(第Nr圈)省略列混合變換處,每圈包含字節(jié)代替變換(ByteSub)、行移位變換(ShiftRow)、列混合變換(MixColumn)和圈密鑰加法(AddRoundKey)四步變換。
解密工作過(guò)程與加密相類似,待脫密的密文與初始圈密鑰進(jìn)行異或(AddRoundKey),然后進(jìn)行Nr圈迭代運(yùn)算,除最后一圈(第Nr圈)省略逆列混合變換外,每圈包含逆字節(jié)代替變換(InvByteSub)、逆行移位變換(InvShiftRow)、逆列混合變換(InvMixColumn)、圈密鑰加(AddRoundKey)四步變換。
G.729A的語(yǔ)音編碼幀為80 bit/10 ms,每秒所需加密的數(shù)據(jù)約為8 Kbit,因此,在滿足語(yǔ)音加密的情況下,本文采用循環(huán)方式實(shí)現(xiàn)AES,節(jié)省硬件資源。其硬件加解密結(jié)構(gòu)及其相關(guān)控制信號(hào)如圖5所示。
(2)自定義指令邏輯
Nios II自定制AES加密指令的內(nèi)部硬件結(jié)構(gòu)如圖6所示。從圖6可以看到用戶自定義邏輯功能(AES)連接到了ALU的2個(gè)輸入端以及ALU的輸出端,當(dāng)使用Nios II的自定義指令時(shí),Nios II內(nèi)部的ALU操作將被放棄,以用戶自定義邏輯的輸出結(jié)果作為有效結(jié)果。
AES加解密模塊設(shè)計(jì)得到的自定義邏輯在多個(gè)時(shí)鐘周期完成,采用多周期自定義指令結(jié)構(gòu)。涉及的信號(hào)線在dataa、datab、result 的基礎(chǔ)上增加了clk、clk_en、reset、start 4個(gè)信號(hào)。其指令結(jié)構(gòu)如圖7所示。
2.1.4 通信傳輸模塊
通信傳輸模塊利用MODEM在公共電話網(wǎng)PSTN上實(shí)現(xiàn)通信。PSTN網(wǎng)絡(luò)覆蓋面廣,用戶通過(guò)MODEM就可以方便地完成對(duì)接,實(shí)現(xiàn)通信,這在現(xiàn)有條件下非常實(shí)用。
MODEM通過(guò)RS232接口與DE1相連,通過(guò)RJ45與PSTN網(wǎng)絡(luò)相連,解析來(lái)自Nios II控制系統(tǒng)的命令,來(lái)實(shí)現(xiàn)通信雙方的互連通信。
(1)工作原理
通信發(fā)起方使用鍵盤撥對(duì)方號(hào)碼,Nios II控制系統(tǒng)采集到撥號(hào)信息,組裝成為MODEM撥號(hào)的AT命令[6],MODEM根據(jù)命令撥號(hào);對(duì)方的MODEM接收到撥號(hào)信息,發(fā)出來(lái)電提醒,開(kāi)啟語(yǔ)音處理功能,雙方便可通信。MODEM對(duì)經(jīng)過(guò)加密的語(yǔ)音分組信息進(jìn)行封裝,使其適合在PSTN網(wǎng)絡(luò)上傳輸。接收方MODEM接收到數(shù)據(jù)包,對(duì)其解封裝,等待解密處理。在本系統(tǒng)中,MODEM工作于半雙工方式。
(2)MODEM與Nios II控制模塊的連接
系統(tǒng)要正常工作,需要MODEM與Nios II控制系統(tǒng)間進(jìn)行交互,用到的信號(hào)如圖8所示,各信號(hào)的功能如下:
DSR:表示MODEM電源已接上,已處于可用的狀態(tài)。
RTS:請(qǐng)求發(fā)送信號(hào),串行通信接口用RTS來(lái)向MODEM表示發(fā)送數(shù)據(jù)的請(qǐng)求,該信號(hào)應(yīng)控制MODEM進(jìn)入發(fā)送狀態(tài)或打開(kāi)MODEM的發(fā)送器。
CTS:清除發(fā)送信號(hào),又稱為允許發(fā)送,是MODEM對(duì)RTS的響應(yīng)信號(hào),表示MODEM已作好發(fā)送的準(zhǔn)備,收到CTS后即可輸出發(fā)送的數(shù)據(jù)。
DCD:數(shù)據(jù)載波檢測(cè)信號(hào),向終端設(shè)備表示MODEM已收到通信鏈路上的數(shù)據(jù)載波信號(hào),通知另一方準(zhǔn)備接收。
TXD:發(fā)送數(shù)據(jù)信號(hào),把終端欲發(fā)送的數(shù)據(jù)串行送往MODEM。
RXD:接收數(shù)據(jù)信號(hào),接收從MODEM串行發(fā)來(lái)的數(shù)據(jù)。
SG:信號(hào)地,連接設(shè)備和通信設(shè)備的信號(hào)地。
由于使用了公共電話網(wǎng)(PSTN),因此在上述7個(gè)信號(hào)的基礎(chǔ)上增加了DTR和RI兩個(gè)信號(hào)。振鈴指示RI通知系統(tǒng),MODEM已收到交換臺(tái)送來(lái)的振鈴呼叫信號(hào);然后系統(tǒng)啟動(dòng)數(shù)據(jù)準(zhǔn)備好DTR信號(hào)送給MODEM作為對(duì)RI的響應(yīng)。當(dāng)RI和DTR信號(hào)握手聯(lián)絡(luò)上以后,MODEM才可以“接線”以建立通信鏈路;當(dāng)數(shù)據(jù)傳送結(jié)束后,應(yīng)復(fù)位這些信號(hào)以指示“拆線”,讓出通信鏈路。
2.2 Nios II控制模塊設(shè)計(jì)
控制模塊利用Nios II IDE集成開(kāi)發(fā)環(huán)境進(jìn)行開(kāi)發(fā),控制從撥號(hào)(接聽(tīng))、語(yǔ)音采集、編解碼、加解密、傳輸、掛機(jī)的整個(gè)系統(tǒng)工作。
2.2.1 建立通信
撥號(hào)用的鍵盤連接在DE1開(kāi)發(fā)板的PS2口上,采用中斷方式與處理器進(jìn)行交互。當(dāng)控制模塊接收到鍵盤中斷后,讀取用戶按鍵信息。根據(jù)撥號(hào)信息,控制模塊通過(guò)RS232向MODEM發(fā)出相應(yīng)含有撥號(hào)信息的AT命令,MODEM撥相應(yīng)的號(hào)碼;接聽(tīng)方MODEM發(fā)出振鈴指示后,根據(jù)命令為通話雙方建立連接。
2.2.2 語(yǔ)音處理控制
Nios II控制模塊實(shí)現(xiàn)對(duì)語(yǔ)音處理的控制,其主要功能是讀取一個(gè)語(yǔ)音處理模塊的結(jié)果,并將其按將要進(jìn)行的處理寫(xiě)入下一個(gè)功能模塊??刂颇K操縱I2C控制語(yǔ)音采集回放模塊采集語(yǔ)音并數(shù)字化,然后將數(shù)字語(yǔ)音信號(hào)送到編解碼模塊進(jìn)行編解碼,進(jìn)而調(diào)用Nios II自定義的AES指令,對(duì)數(shù)據(jù)進(jìn)行加密,最后通過(guò)MODEM發(fā)送數(shù)據(jù)。在接收方, MODEM讀取對(duì)方發(fā)送過(guò)來(lái)的語(yǔ)音數(shù)據(jù),控制模塊調(diào)用Nios II自定義AES指令對(duì)數(shù)據(jù)進(jìn)行解密,再將解密后的數(shù)據(jù)寫(xiě)入語(yǔ)音編解碼模塊進(jìn)行解碼,最后調(diào)用語(yǔ)音采集回放模塊還原語(yǔ)音。
2.2.3 通信結(jié)束控制
在通話過(guò)程中,如果檢測(cè)到通信中斷或者通信一方結(jié)束通信的信息,則向各功能模塊發(fā)出復(fù)位信號(hào),同時(shí)控制MODEM復(fù)位于待機(jī)狀態(tài),通信結(jié)束。
本設(shè)計(jì)適用于對(duì)語(yǔ)音保密通信有需求的政府機(jī)關(guān)、軍隊(duì)等,也適合需要保密的商業(yè)通信。采用本系統(tǒng)用戶可以像使用普通電話機(jī)一樣,實(shí)現(xiàn)語(yǔ)音保密通信。本設(shè)計(jì)系統(tǒng)使用方便,通過(guò)調(diào)制解調(diào)器進(jìn)行連接,可以在現(xiàn)有的PSTN電話網(wǎng)上使用。如果將調(diào)制解調(diào)器改進(jìn)為CDMA DTU等無(wú)線調(diào)制方式,則用戶還可以進(jìn)行無(wú)線保密通信。
參考文獻(xiàn)
[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設(shè)計(jì)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.
[6] Gilbred Held.調(diào)制解調(diào)器參考大全[M].田學(xué)鋒,王剛譯. 北京:電子工業(yè)出版社,1996.