語音數(shù)據(jù)混沌加密算法之網絡傳輸加密

針對數(shù)字語音數(shù)據(jù)的傳輸問題,我們提出一種基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法,該加密算法在一定程度上解決了部分密文丟失后接收端的解密,采用混沌模型庫隨機加密數(shù)據(jù)的方法,可行性強,增強了混沌密碼序列的隨機性,克服了混沌序列加密大數(shù)據(jù)量數(shù)據(jù)時的序列周期問題。

一、基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法描述

1、混沌模型庫

基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法采用混沌模型庫的方法加密數(shù)據(jù)文件,即模型庫中的任一混沌模型都可用來生成混沌序列。該加密算法混沌序列的生成速度更快,密鑰空間更大。為了更方便地解釋算法,這里僅介紹混沌模型庫中的2種混沌模型。

Logistic映射是一種可產生混沌的一維離散動力系統(tǒng),其模型為:

語音數(shù)據(jù)混沌加密算法之網絡傳輸加密

式中,n∈N,p為控制參數(shù);Xn在[0,1]上遍歷。設μ∞=3.56994567...,當μ∞a<μ≤4時,映射處于混沌狀態(tài)。生成混沌序列,此混沌序列的偽隨機性好于直接法生成的序列。

Henon映射可產生二維混沌,其混沌軌跡的復雜程度遠大于Logistic映射。該映射模型方程組見式(2)。當a=1.4,b=0.3時,映射處于混沌狀態(tài)。用該映射方程生成混沌子序列同樣要經過線性映射變換到適合的值域區(qū)間。

語音數(shù)據(jù)混沌加密算法之網絡傳輸加密

上述2種序列都是實數(shù)值混沌序列,要經過一定的方法轉換為二值序列,這里采用一種非線性變換的方法生成序列,此方法生成的二值序列具有不可恢復性。

2、基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法

對于語音數(shù)據(jù),數(shù)據(jù)分塊加密流程如圖1所示,加密步驟如下:

語音數(shù)據(jù)混沌加密算法之網絡傳輸加密
(1)加密前發(fā)信端先把數(shù)據(jù)分成大小固定的數(shù)據(jù)子塊,每m個數(shù)據(jù)子塊組成一個數(shù)據(jù)塊組,特殊情況下m也可等于1。

(2)密鑰產生器根據(jù)口令產生一系列密鑰,由密鑰和混沌模型庫生成混沌序列。

(3)每一個數(shù)據(jù)塊組由一個混沌序列加密,不同數(shù)據(jù)塊組的混沌序列是不同的,它們可以由同一混沌模型生成,但生成參數(shù)是不同的。

(4)每個數(shù)據(jù)塊包含一個數(shù)據(jù)頭,數(shù)據(jù)頭中存放著下一個數(shù)據(jù)塊組的種子密鑰,同一個數(shù)據(jù)塊組的數(shù)據(jù)頭是相同的。

(5)所有加密后的數(shù)據(jù)塊按原順序合并在一起,形成密文數(shù)據(jù)流。

原語音數(shù)據(jù)和附加的數(shù)據(jù)頭都要作為明文文件加密,如果沒有密鑰,加密后的數(shù)據(jù)流中無法提取數(shù)據(jù)頭,也就得不到種子密鑰,這對于保護數(shù)據(jù)安全是非常重要的。種子密鑰并不是混沌序列的生成參數(shù),要得到混沌序列還要經過密鑰產生器的計算才能確定混沌類型和序列生成參數(shù)。

解密算法與加密算法類似,同時加密和解密過程可以實時進行,對于先產生的語音數(shù)據(jù)先加密,繼而加密后續(xù)的數(shù)據(jù),后續(xù)數(shù)據(jù)并不影響先前的數(shù)據(jù)加密過程,解密過程類似。

二、基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法分析

1、數(shù)據(jù)丟失處理

基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法的主要特點是可以實現(xiàn)部分密文數(shù)據(jù)丟失后的數(shù)據(jù)解密。通?;诨煦绲恼Z音加密算法都不允許數(shù)據(jù)丟失,因為一旦加密數(shù)據(jù)丟失,采用流密碼加密算法就不能定位數(shù)據(jù)位置,解密變成了二次加密,所以這些加密算法往往以TCP協(xié)議傳送數(shù)據(jù)。但是語音數(shù)據(jù)采用TCP協(xié)議傳送數(shù)據(jù)卻不是最佳選擇,除非網絡條件極好,數(shù)據(jù)不丟失、不延時,這些要求實際是很難滿足的。通常情況下語音數(shù)據(jù)都采用無連接的UDP協(xié)議傳送數(shù)據(jù)。UDP協(xié)議實時性較好,但主要存在著數(shù)據(jù)包易丟失和亂序的情況,有時會出現(xiàn)延時問題。本文主要解決數(shù)據(jù)包丟失和亂序的問題?;诰W絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法的解密程序可以在一定程度上解決數(shù)據(jù)包的丟失問題;亂序可通過在接收端設置緩存器加以處理;在網絡中傳輸時是以分塊的數(shù)據(jù)作為報文進行傳輸,通過減小數(shù)據(jù)分塊長度,同時在IP頭的DSCP字段指定較高的優(yōu)先級,即可以緩解延遲問題。

從圖1可以看出,每一個數(shù)據(jù)塊組都是用一個混沌序列加密的,而且這個數(shù)據(jù)塊組中每一個數(shù)據(jù)塊的數(shù)據(jù)頭都是相同的,只要從上一個數(shù)據(jù)塊組中的某個數(shù)據(jù)塊中得到數(shù)據(jù)頭就可解密下一個數(shù)據(jù)塊組的任何一個數(shù)據(jù)塊,換句話說,只要每一個數(shù)據(jù)塊組中有一個數(shù)據(jù)塊不丟失即可,例如:設第1個數(shù)據(jù)塊組的第1個數(shù)據(jù)塊A1正常接收,而其他數(shù)據(jù)塊都丟失了,從A1的數(shù)據(jù)頭中能得到下一個數(shù)據(jù)塊組的種子密鑰,這樣就可以解密下一個數(shù)據(jù)塊組曰中的任何一個數(shù)據(jù)塊(B1—Bm)。

同樣,如果能夠正常接收B數(shù)據(jù)塊組中的任一數(shù)據(jù)塊,就可以解密下一個數(shù)據(jù)塊組C中的數(shù)據(jù)塊,數(shù)據(jù)丟失處理如圖2所示。

語音數(shù)據(jù)混沌加密算法之網絡傳輸加密

不難看出,這種方法允許連續(xù)丟失的最大數(shù)已為:

語音數(shù)據(jù)混沌加密算法之網絡傳輸加密

2、密碼序列周期分析

為了能夠快速加密解密語音數(shù)據(jù),一般采用較簡單的混沌模型產生混沌序列,但是語音數(shù)據(jù)的數(shù)據(jù)量太大,相應的混沌序列就必須很長,這樣極容易出現(xiàn)混沌序列的周期現(xiàn)象,周期序列的出現(xiàn)極大地降低了密文的安全性,這一點可以用信息論的有關定理來解釋。

定理對于任何保密系統(tǒng),有:

語音數(shù)據(jù)混沌加密算法之網絡傳輸加密

式中,H(SL)表示明文的熵;H(SL|Cn)表示已知密文條件下對明文存在的不確定性;I(SL|Cn)表示從截取的密文中提取有關明文的信息;H(Br)表示密鑰的熵。一般情況下,密鑰空間Br的密鑰是等概率分布的,H(Br)與密鑰空間的密鑰量有關,密鑰量越大,H(Br)越大;反之亦然。定理說明:若密鑰量越小,H(Br)越小,I(SL|Cn)越大,從而越接近H(SL),破譯者就能從密文中獲得更多關于明文的信息量,因此,加密序列如果存在周期現(xiàn)象會導致H(Br)減小,I(SL|Cn)增大,這勢必會降低密文的安全性。

基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法可以有效地克服混沌序列的短周期現(xiàn)象,可以在混沌模型庫中存放一定數(shù)量的混沌模型。這些混沌模型都可以用來產生混沌序列,對于同一種混沌模型,不同的參數(shù)又可以產生不同的混沌序列,這樣密鑰空間極大地增加了,用于加密明文的混沌序列數(shù)量眾多而且出現(xiàn)的次序沒有規(guī)律,不會出現(xiàn)單一混沌序列的周期現(xiàn)象。

從圖1加密流程可以看出,在加密過程中這些混沌序列是不斷變化的,甚至是不同種類的混沌序列,因此可以克服基于混沌模型重構算法的攻擊,這也是采用混沌模型庫方法的另一個優(yōu)點。

3、保密性分析

本文提出的基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法采用流密碼加密的方法,流密碼可以產生一次一密的密碼體制,在理論上是不可破解的。但是流密碼加密方法對密鑰流要求極高,最好是隨機性極好的偽隨機序列,而且這種方法對抵制已知明文攻擊很弱,因此,每次加密時應使用不同的密鑰流。

本加密算法加密過程中用到的多個混沌序列生成參數(shù)都由口令得到,在接收端只要輸入口令,就可以完全解密數(shù)據(jù)。圖3是密鑰生成框圖,混沌序列1完全是由口令得到的,包括混沌類型的確定,口令不同,混沌類型和序列都有可能不同。從混沌序列2開始,所有混沌序列的生成密鑰不是完全由口令得到的,它們的產生是隨機的,如果不能得到混沌序列1,即使是加密者也不能再生成這些混沌序列,因為混沌序列可以再生,但隨機數(shù)是不可再生的,把隨機數(shù)引入密鑰生成,增加了混沌序列的不確定性,所以增強了序列的保密性。密鑰的多值特點和混沌類型庫的多樣化使得用戶在每次加密時都使用不同的密鑰流。

語音數(shù)據(jù)混沌加密算法之網絡傳輸加密

三、實驗結果

實驗程序用Visual++6.0語言編寫,傳輸層采用UDP協(xié)議,網絡層仍為IP協(xié)議,并采用了接收端緩存、數(shù)據(jù)丟失處理和數(shù)據(jù)包排序等實時數(shù)據(jù)處理技術。圖4是一段錄音數(shù)據(jù)經過基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法加密,在接收端經過解密后的波形顯示,密文波形也在圖中。從圖中可以看出,正確的口令可完全解密出原數(shù)據(jù),丟失部分密文后,仍可以解密出未丟失的語音的數(shù)據(jù),見圖4(d),而加密后的語音數(shù)據(jù)完全掩蓋在噪聲中,數(shù)據(jù)分塊加密算法是在數(shù)字編碼的基礎上采用偽隨機性良好的混沌流密碼加密數(shù)據(jù),效果很好。

語音數(shù)據(jù)混沌加密算法之網絡傳輸加密

基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法有效解決了加密數(shù)據(jù)文件在網絡傳送過程中數(shù)據(jù)丟失后接收端的解密問題,基于網絡傳輸?shù)恼Z音數(shù)據(jù)混沌加密算法采用混沌模型庫隨機加密數(shù)據(jù)的方法,極大增強了混沌密碼序列的隨機性,解決了混沌序列加密大數(shù)據(jù)量數(shù)據(jù)時的序列周期問題,并且能夠有效地抵制基于混沌模型重構方法的攻擊。數(shù)據(jù)分塊加密算法不僅適合加密語音數(shù)據(jù),而且也適合加密其他類型的數(shù)據(jù),對于大數(shù)據(jù)量的數(shù)據(jù)更有優(yōu)勢,對于發(fā)送端可以一次加密完成整個明文,然后再發(fā)送至接收端。接收端收到全部加密數(shù)據(jù)后,在本地重新分塊解密。而且加密算法還具有數(shù)據(jù)丟失處理的功能。

小知識之UDP協(xié)議

UDP協(xié)議即UDP。

UDP 是User Datagram Protocol的簡稱, 中文名是用戶數(shù)據(jù)包協(xié)議,是OSI(開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規(guī)范。UDP在IP報文的協(xié)議號是17。