陸詩依, 高 勇
(四川大學 電子信息學院,四川 成都 610065)
隱蔽信息嵌入到數(shù)字音頻信號中的算法主要分為兩種:時域嵌入和變換域嵌入。時域是將隱蔽信息嵌入到音頻采樣信號中。變換域嵌入是先將采樣的音頻信號在變換域處理,然后將隱蔽信息嵌入到處理后的音頻信號中。在變換域算法中,文獻[1]給出了離散傅里葉變換(discrete Fourier transform,DFT)的信息隱藏算法,主要用于版權保護。文獻[2]提出了一種結合奇異值分解(singular value decomposition,SVD)和離散小波變換(discrete wavelet transform,DWT)的隱藏算法,主要是在小波包系數(shù)中修改特征矩陣的值。文獻[3]給出了擴頻信息隱藏算法,主要對擴頻后的性能進行一些描述。文獻[4]提出了離散傅里葉變換和離散小波變換相結合的隱藏算法。文獻[5~10]提出了提升小波變換(lifting wavelet transform,LWT)-SVD算法,這些文章算法的共同點都是把秘密信息轉(zhuǎn)換為二進制比特,通過改變奇異矩陣的某些值進行嵌入。以往的LWT-SVD算法,都存在隱藏容量不夠大、嵌入點固定等問題。其中隱藏容量不夠大一直是語音隱藏算法中較難解決的問題,本文的算法可以進一步地提高隱藏容量,并且能靈活決定嵌入秘密語音的位置。
首先把隱藏信息進行Logistic一維變換,再將輸出的數(shù)據(jù)流經(jīng)過里所(Reed-Solomon,RS)編碼,得到兩層加密的秘密語音。同時載體語音經(jīng)過提升小波變換,得到兩個系數(shù),即近似系數(shù)和細節(jié)系數(shù)。本文在近似系數(shù)中藏入秘密語音,在細節(jié)系數(shù)中藏入嵌入點的位置,經(jīng)過SVD的變換來更新近似系數(shù),用更新后的近似系數(shù)和細節(jié)系數(shù)形成含密語音。
通過實驗測試,本文算法顯著地提升了語音的透明度,隱藏容量和抗干擾能力,可以實現(xiàn)嵌入語音位置的動態(tài)化。
在文獻[10]中,Islam M提出了一種不依賴于傅里葉變換的新的小波構造的方法,即提升小波變換法。提升小波變換可以實現(xiàn)系數(shù)的整數(shù)化,使其在運算中減小了計算冗余度。提升小波變換即Harr,其具有如下特性:1)任一函數(shù)均可由其位移函數(shù)組成;2)任意函數(shù)都可以由常函數(shù),以及其位移函數(shù)組成;3)具有正交性等。
Logistic變換,其序列映射之后的信號具有混沌特性,很難預測。表達式為
Bk+1=μBk(1-Bk),-1≤Bk≤1,0<μ≤4
(1)
式中μ為控制參數(shù),Bk為第k個語音數(shù)據(jù)。根據(jù)不斷的累計迭代,最終序列的值與初始值B0以及控制參數(shù)μ有關。通常,可以用Lyapunov指數(shù)來判別一個系統(tǒng)是否具有混沌特性,當系統(tǒng)的Lyapunov指數(shù)為正時,系統(tǒng)才呈現(xiàn)出混沌狀態(tài)。文獻[8]中指出,只有當控制參數(shù)μ∈[3.75,4]時,Logistic序列才呈現(xiàn)出混沌狀態(tài)。本文置亂采用的Logistic序列初始值為B0為0.61,μ為3.90。
一種特殊的BCH碼,且其碼元和生成多項式g(x)都在伽羅華域GF(qm)(qm≠2)上。其能夠糾正信號在信道中傳輸時引入的隨機錯誤與突發(fā)錯誤。RS(n,k)編碼的一些基本性質(zhì)如下:
n=2m-1表示碼字的長度,r=n-k=2t為監(jiān)督碼元,其能夠糾正t個錯誤。
RS編碼生成多項式的表達式為g(x)=(x-α)(x-α2)…(x-α2t),其中α為多項式g(x)的根,生成多項式的定義如下:在碼元RS(n,k)中,存在唯一的n-k次多項式g(x),使得每一個碼字多項式c(x)都是g(x)的倍式。
RS碼的校驗多項式為h(x)=(xn-1)/g(x),其階數(shù)為k,滿足
g0h1+g1hi-1+…+gn-khi-(n-k)=0,i=1,2,…,n-1
(2)
生成矩陣G=[Ikpz],其中Ik為k×k階的單位方陣,表示碼字多項式c(x)中的第n-1~n-k次的系數(shù),這些系數(shù)是信息位,其余位置是監(jiān)督位。具體有
Pz=[xn-1(modg(x))xn-2(modg(x))…
xn-k(modg(x))]T
(3)
(4)
式中 mod為模二運算。
RS碼的校驗矩陣H為
(5)
RS的編碼主要解決一個除法問題,以生成多項式為模,而RS的解碼比編碼要更加復雜,其主要是從接收多項式r(x)中找出錯誤圖樣e(x),其中錯誤圖樣可以表示為
(6)
式中Yi∈GF(2m)為錯誤值,xi=αli為錯誤位置。RS解碼分為時域解碼和頻域解碼兩種方法,由于頻域解碼實現(xiàn)開銷大,一般采用時域解碼方法,解碼步驟如下:
1)根據(jù)接收碼字計算伴隨式,計算第i個伴隨式為
=r0(αi)0+r1(αi)1+r2(αi)2+…+rn-1(αi)n-1
(7)
(8)
將式(8)寫成矩陣形式,得
(9)
2)采用BM算法[11]計算錯誤位置多項式。
BM算法就是用伴隨式計算錯誤位置多項式的一種迭代算法,錯誤位置多項式為
(10)
式中σi為錯誤位置多項式的系數(shù),t為實際發(fā)生錯誤的符號的總數(shù)。
將式(10)展開并變形,寫成矩陣的形式為
(11)
根據(jù)式(11),利用BM迭代算法可求出錯誤位置σi。
3)求解錯誤位置多項式的根,錯誤位置為多項式的根的導數(shù);亦即檢驗r(x)=rn-1xn-1+rn-2xn-2+…+r1x+r0中有幾處錯誤,錢氏搜索法[8]就是依次對每一個rn-i(i=1,2,…,n)檢驗,從而求出σ(x)=0的根。
4)計算錯誤符號的值,表達式為
(12)
5)譯碼輸出等于接收碼字減去錯誤圖樣。
本文采用RS(15,7)編碼。RS編碼的輸入為經(jīng)過置亂之后的秘密信息w2(n),輸出為s(n)。
1)將載體語音C先進行一維小波變換,得兩個系數(shù)。
2)秘密語音S(二進制比特流)進行Logistic一維變換,再經(jīng)過RS編碼,得到加密的秘密語音。
3)在小波變換的低頻系數(shù)中嵌入秘密信息,高頻系數(shù)中嵌入秘密語音的位置,C的長度大于S。
嵌入方式如下:
先將C進行小波變換,按照式(13)~式(15)的公式隱藏信息
CL=UPVT
(13)
D=CL+KS
(14)
(15)
式中CL為C經(jīng)過小波變換的低頻系數(shù)(近似系數(shù)),經(jīng)過SVD變換得到右特征矩陣V、奇異值矩陣P、左特征矩陣U,式(14)中0 4)將式(14)中的秘密語音的嵌入點q(嵌入系數(shù)CL中的第q個點)轉(zhuǎn)換為二進制比特流{ai}(i=1,…,n),取載體語音高頻系數(shù)CH前面n(n為偶數(shù))個數(shù)值嵌入,并將其按照降序排列,每隔n個數(shù)值嵌入一個信息位,具體嵌入方式為 (16) 式中CHt為原始的第t(t=q+n)個高頻系數(shù),CH′為更新之后的第i個高頻系數(shù)值,K為語音嵌入強度,藏好信息位將CH的位置還原。 經(jīng)過反小波變換,把{CL′,CH′ }重新組合為新的含密語音C′。 1)傳遞的密匙為{U1,V1,P,K},得到含密語音C′,將含密語音進行小波變換,分別取出來CL′和CH′。 2)取CH′中的前n項值,將其按照降序排列,按照式(17)取秘密語音位置隱藏點 (17) (18) 3)按照如下公式進行SVD構造和分解 CL′=UP1V (19) U1P1V1=D (20) UPV=CL (21) 式中 先將CL′進行SVD變換,將奇異值矩陣P1、密匙中的左特征矩陣U1、右特征矩陣V1進行SVD反變換,構成式(20)中的融合語音D,再經(jīng)一次SVD反變換構成式(21)中的CL。 4)提取的秘密語音為 (22) 5)判斷門限值 (23) 式中S(i)為S中的第i個值。 6)提取出來的比特流進行RS譯碼,經(jīng)過逆Logistic變換,得到秘密語音 實驗均采用8 kHz采樣,16 bits量化的語音,取一段4.2 s 載體語音C,取1.54 s秘密語音S,C的長度大于S,分解出來的細節(jié)系數(shù)CL的長度要大于S的長度,每幀嵌入點隨意,在CL的一部分中隱藏信息,靈活的嵌入點讓信息隱藏更加安全。實驗結果如圖1所示。 圖1 實驗結果 1)在客觀上,用信噪比(SNR)來衡量嵌入秘密語音后載體的失真,定義為 (24) 式中C(m)為原始載體語音,C′(m)為含有秘密語音的載體語音,h為秘密語音的長度。 2)用歸一化相關系數(shù)(NC)來衡量恢復出的秘密語音的失真,定義為 (25) 式中s(m)為原始的秘密語音,s′(m)為恢復出的秘密語音。SNR與NC的值越大,說明算法的透明性越好。由該算法計算出的載體信息的SNR為36.96 dB,密語音的NC值為0.996 8。這些數(shù)據(jù)從客觀上說明該算法的透明性好,而且恢復出的秘密語音幾乎與原始的秘密語音失真很小,語音的舒適度較好。 本文采用RS對秘密語音進行編碼,對比了未進行RS編碼的算法,經(jīng)過取MIMIT語音庫中的300條語音的測試,得出信噪比與誤碼率的關系如圖2。 圖2 提取之后的秘密語音 可以看出,未加RS編碼的誤碼率明顯高于有RS編碼的情況,并且信噪比在20 dB以上時,誤碼率很少,在一定地程度上可以抵抗噪聲,在實驗中還發(fā)現(xiàn),只要誤碼率小于或者等于4 %,恢復出的秘密語音雖然夾雜著噪聲,但有一定地可懂度,人耳能夠分辨出語音的內(nèi)容 取MIMIT語音庫中300條純凈語音進行對比實驗,對不同算法的含密語音結果測量其SNR值,進行透明性打分:采用MOS[12]評價標準進行音質(zhì)主觀性打分;測量隱藏量(秘密語音/載體語音長度)。結果如表1~表4。 表1 魯棒性分析(誤碼率) % 表2 不同載體音樂的SNR值 dB 表3 不同算法的透明程度MOS打分 表4 隱藏量 % 把所選取的300條純凈語音作為載體語音,嵌入秘密信息后,對含密語音進行了各種攻擊,攻擊實驗如下:1)帶通濾波。截止頻率為800 Hz和5 kHz;2)加高斯白噪聲,信噪比為20 dB;3)重采樣。將待測音頻先下采樣的方法到44.1 kHz,再上采樣到96 kHz;4)重量化。將音頻從16 bit量化到8 bit再量化為16 bit;5)MP3壓縮。將音頻信號進行比特率為64 kbp的壓縮,再解壓縮;6)MP4壓縮。將音頻信號進行比特率為 128 kbps的壓縮,再解壓縮。對被攻擊的含密語音進行水印提取,并統(tǒng)計信息誤碼率的平均值,得到表1數(shù)據(jù),可以看出本文算法有較好的魯棒性。 在表3中不同算法使用了不同的載體對含秘密語音進行了MOS打分,評分接近5表示語量優(yōu)質(zhì),使用本文算法之后的含密語音,在一定程度的信噪比中,仍然具有可聽性,在表4中,進行了隱藏量的對比,對于隱藏一段秘密語音,有時候情況并不允許傳輸很長的載體,所以隱藏容量一直是算法的一個重點,經(jīng)過測試,本文算法的隱藏容量有一定程度提高。 本文所采用的隱藏算法結合了LWT和SVD兩種變換,考慮到含密語音在傳輸過程中的抗噪聲干擾問題,在秘密語音中加入了RS編碼,可以糾正一定的錯誤碼元,降低了傳輸?shù)恼`碼率,提高了算法的魯棒性。在傳統(tǒng)LWT-SVD算法中,秘密語音的嵌入點不能動態(tài)地變化,導致了透明性不高,在本文的算法中,將秘密語音隱藏位置點量化進入細節(jié)系數(shù)中,可以做到秘密語音的動態(tài)嵌入,提高了算法透明性。隱藏容量一直都是隱藏算法中重視的問題,本文的算法使得隱藏容量較以前的算法有明顯的提高,本文算法在魯棒性、透明性、隱藏容量上都有極大的改善。1.5 秘密語音提取
2 仿真實驗與結果分析
2.1 算法實驗結果
2.2 RS編碼對比實驗
2.3 算法性能的對比實驗
3 結束語