網(wǎng)絡(luò)電話的語(yǔ)音分組動(dòng)態(tài)加密

針對(duì)目前網(wǎng)絡(luò)電話語(yǔ)音加密的不足,我們使用一種對(duì)語(yǔ)音進(jìn)行分組加密的動(dòng)態(tài)加密方法,這種方法可以通過(guò)對(duì)加密算法的動(dòng)態(tài)選擇,以及密鑰的動(dòng)態(tài)分配來(lái)增加加密的復(fù)雜度,利用數(shù)字信封技術(shù)來(lái)保證密鑰的安全傳輸,提高通話安全。

一、網(wǎng)絡(luò)電話語(yǔ)音加密的方式

目前的電話安全系統(tǒng),根據(jù)加密方式不同分為兩種:一是端到端加密;一是網(wǎng)絡(luò)加密。后者的代價(jià)較高,因此本文選擇端到端加密,首先在發(fā)送端對(duì)數(shù)字語(yǔ)音進(jìn)行分組,目的就是把信息量較大的語(yǔ)音分散成多個(gè)較小的分組,然后動(dòng)態(tài)選擇加密算法對(duì)分組分別加密,接收端收到密文后,利用約定好的方式對(duì)密文解密,最后還原信息。

1、網(wǎng)絡(luò)電話加密算法的動(dòng)態(tài)選擇

應(yīng)用表明單純地使用一種加密算法不能提供很高的安全性,因此理想的加密方式應(yīng)具有動(dòng)態(tài)性,本文采用先對(duì)語(yǔ)音分組,然后用不同算法對(duì)分組分別加密的方式來(lái)實(shí)現(xiàn)動(dòng)態(tài)性。首先在通信的兩端分別建立一個(gè)加密算法庫(kù),庫(kù)里包含有n種加密算法E,出于加密速度的考慮,算法庫(kù)使用對(duì)稱加密算法,并對(duì)這些算法編號(hào),序號(hào)為f。由隨機(jī)數(shù)產(chǎn)生器產(chǎn)生一個(gè)隨機(jī)數(shù)Key,計(jì)算i= Key%n,根據(jù)i值來(lái)選擇算法Ei,作為第一個(gè)分組的加密算法,其余的分組按照順序分別使用算法Ei+1來(lái)加密。這樣攻擊者就無(wú)法猜測(cè)每次加密時(shí)具體使用的算法,達(dá)到了算法選擇的不確定性要求。這些加密算法的執(zhí)行是同步的,因此分組加密耗贊的最長(zhǎng)時(shí)間就是整個(gè)加密過(guò)程所耗費(fèi)的時(shí)間,對(duì)整體數(shù)據(jù)處理速度影響不大。

2、密鑰的動(dòng)態(tài)分配及傳輸

密鑰是關(guān)系算法安全的一個(gè)關(guān)鍵性因素,利用隨機(jī)數(shù)產(chǎn)生器產(chǎn)生密鑰的方法應(yīng)用較多,在本文中,由產(chǎn)生器產(chǎn)生的隨機(jī)數(shù)并不直接作為加密的密鑰,因?yàn)樵诙鄠€(gè)分組中如果使用同一個(gè)隨機(jī)數(shù)作為密鑰,會(huì)降低算法的安全性,所以本文在建立算法庫(kù)的同時(shí),分別在通信兩端建立一個(gè)移位函數(shù)庫(kù),庫(kù)中包含有多種移位函數(shù)F,用于隨機(jī)數(shù)Key的移位處理。類似上面加密算法的選擇過(guò)程,選擇多種移位函數(shù)對(duì)Key移位處理,K1=F1(Key),k2=f2(Key)……然后分配給相應(yīng)的分組作為加密的密鑰,由于對(duì)Key進(jìn)行了移位處理,各分組之間的密鑰不會(huì)出現(xiàn)雷同。不同的是,本文中每次密鑰的產(chǎn)生是獨(dú)立的,直接由隨機(jī)數(shù)產(chǎn)生器產(chǎn)生,與明文及上次的密鑰無(wú)關(guān),分配簡(jiǎn)單,提高了執(zhí)行效率。

由于算法庫(kù)中使用對(duì)稱加密算法,那么就存在一個(gè)Key的安全傳輸問(wèn)題,數(shù)字信封技術(shù)則解決了這個(gè)問(wèn)題:發(fā)送端使用接收端的公鑰加密Key,得到密文Key’,然后將它和語(yǔ)音密文一同發(fā)送,接收端再用私鑰解密Key’得到Key,最后對(duì)語(yǔ)音密文解密。

二、網(wǎng)絡(luò)電話語(yǔ)音加密模塊的設(shè)計(jì)

由圖1可以看出,本文是在原有通話的基礎(chǔ)上添加了加密功能,并通過(guò)動(dòng)態(tài)選擇加密算法、動(dòng)態(tài)分配密鑰來(lái)實(shí)現(xiàn)加密的動(dòng)態(tài)性,但是也存在一個(gè)問(wèn)題,即通話的實(shí)時(shí)性是否會(huì)受到影響。公用電話網(wǎng)的延時(shí)一般只有50~70 ms,IP電話的延時(shí)較大,通常為150~250 ms,如果延時(shí)超過(guò)250 ms,語(yǔ)音質(zhì)量就較差,不符合通信標(biāo)準(zhǔn)的要求。造成延時(shí)的因素有很多,比如語(yǔ)音編碼、網(wǎng)絡(luò)傳輸、消抖動(dòng)緩存器等,這里只討論加密對(duì)通話造成的延時(shí)。

本文使用DES、AES、IDEA作為加密算法,對(duì)大小為244 K的數(shù)字音頻進(jìn)行處理,利用軟件SJphone來(lái)模擬IP電話,并對(duì)加密所造成的延時(shí)進(jìn)行測(cè)量。其中加密的過(guò)程是:

Group[O...m-I]=Division(Message)。

對(duì)于其中一個(gè)分組i,設(shè)其對(duì)應(yīng)的加密算法、移位函數(shù)的序號(hào)分別為t、s。

則:Cipher[il=EI(Group[i],F(xiàn)s(Key))

下一分組:Cipher[i+Il=E,*i(Group[i+1],F(xiàn)s+l(Key))

Cipher_Key=RSA(Key)

Get Packet based on Cipher_Key and Cipher[O---m-1]

Send Packet

SJphonc跨網(wǎng)工作的延時(shí)較大,通常有1s以上,為了減少傳輸延時(shí)的影響,在這里實(shí)驗(yàn)在局域網(wǎng)內(nèi)進(jìn)行,對(duì)延時(shí)的評(píng)估使用一種比較簡(jiǎn)單的方法:

(1)準(zhǔn)備兩臺(tái)安裝有SJphone的PC,連接在一個(gè)局域網(wǎng)內(nèi);

(2)連接兩臺(tái)PC上的SJphone,一端播放音頻文件,另一端接收;

(3)使用windows錄音機(jī)記錄聲源和接收端的聲音,并保存這個(gè)錄音;

(4)利用COOLEDIT軟件對(duì)錄音進(jìn)行波形分析,兩個(gè)相同音頻波形之間的時(shí)間差就是電話的延時(shí)。

經(jīng)測(cè)量未加密前,SJphone的延時(shí)約為59 ms。以下是加密后造成的延時(shí)的實(shí)驗(yàn)結(jié)果(見(jiàn)表1):

從數(shù)據(jù)中可以看到明文分組適當(dāng)增多,加密時(shí)間會(huì)有所減少,造成的延時(shí)也會(huì)減少,實(shí)驗(yàn)中的數(shù)據(jù)是由軟件模擬得出,DES、IDEA、AES等加密算法在硬件中的運(yùn)算速度是在軟件中的幾十倍、幾百倍,甚至更多,那么加密的時(shí)間將會(huì)大大縮短。

小知識(shí)之?dāng)?shù)字信封

數(shù)字信封是將對(duì)稱密鑰通過(guò)非對(duì)稱加密(即:有公鑰和私鑰兩個(gè))的結(jié)果分發(fā)對(duì)稱密鑰的方法。