徐志偉,高 勇
(四川大學(xué),四川 成都 610065)
0 引言
隱蔽通信是一種能在通信過程中保護(hù)秘密信息不被通信雙方之外的第三方察覺的通信方式。相比傳統(tǒng)信息加密技術(shù),隱蔽通信隱藏了秘密信息的存在性[1]。
隱蔽通信有透明性、容量、魯棒性3 個(gè)性能指標(biāo)[2-3]。它們相互制約,很難同時(shí)達(dá)到很好的效果。在不同的應(yīng)用場景,對不同指標(biāo)的需求也是不同的。
透明性是隱蔽通信中非常重要的參數(shù)。實(shí)際應(yīng)用場景中,有的場景對容量要求不高,但對魯棒性要求較高,如音頻水印。在信道質(zhì)量很高的數(shù)字通信中,魯棒性需求相對低一些,而對含密音頻的透明性和秘密信息的安全性要求相對高一些。
目前音頻隱寫技術(shù)在變換域上取得了不錯(cuò)的成績。變換域算法需要先將時(shí)域上的音頻信號變換到相應(yīng)域,然后將秘密信息嵌入到這些變換域系數(shù)上。經(jīng)典的方案基于各種不同的變換,如離散余弦變換(Discrete Cosine Transform,DCT)[4]、離散小波變換(Discrete Wavelet Transform,DWT)[5-6]、奇異值分解(Singular Value Decomposition,SVD)[7-8]和小波包分解(Wavelet Packet Decomposition,WPD)[9]等。這類算法在魯棒性上相較于時(shí)域方案[10-12]有更好的效果,但是算法復(fù)雜度較高,容量也較低。
文獻(xiàn)[7]提出了一種基于奇異值分解(Singular Value Decomposition,SVD)和指數(shù)-對數(shù)運(yùn) 算(Exponential Operation-Logarithm Operation,EOLO)的變換域盲水印音頻隱藏算法,并針對版權(quán)保護(hù)的應(yīng)用場景提出了一種數(shù)字水印方案;文獻(xiàn)[8]提出了一種基于離散小波變換(Discrete Wavelet Transformation,DWT)和奇異值分解并利用人耳聽覺系統(tǒng)(Human Audio System,HAS)特性的音頻數(shù)字水印算法。這種方案對不同攻擊具有良好的魯棒性,還具有較好的透明性;文獻(xiàn)[9]提出了一種基于小波包分解(Wavelet Packet Decomposition,WPD)和指數(shù)-對數(shù)運(yùn)算(Exponential Operation-Logarithm Operation,EO-LO)的變換域盲水印音頻隱藏算法,相比文獻(xiàn)[7]進(jìn)一步優(yōu)化了魯棒性。文獻(xiàn)[7-9]在透明性、魯棒性上都取得了較好的效果,但其容量都比較有限,算法復(fù)雜度也比較高。文獻(xiàn)[13]將深度學(xué)習(xí)與音頻隱寫相結(jié)合,取得了較好的容量與透明性。
音頻隱寫術(shù)在變換域上研究較多,但是在時(shí)域上的研究相對較少。本文在時(shí)域上針對需要透明性和容量這兩個(gè)指標(biāo)的應(yīng)用場景提出了一種透明性較高、容量較大的音頻時(shí)域隱寫算法。本文的算法有以下優(yōu)點(diǎn):(1)算法是時(shí)域上的,算法復(fù)雜度低、容量大;(2)能自適應(yīng)隱藏到載體音頻極值采樣點(diǎn),具有較高的透明性;(3)對秘密音頻幅值進(jìn)行拆分-合并運(yùn)算和擴(kuò)頻編碼,提高了秘密音頻的安全性。
1 理論基礎(chǔ)與算法原理
1.1 自適應(yīng)音頻極值定位算法
WAV 是常見的聲音文件格式之一。音頻WAV文件是按固定采樣頻率對時(shí)域音頻進(jìn)行采樣得到的幅值序列,其中,幅值極值點(diǎn)是音頻幅值序列的特征。判定自適應(yīng)定位音頻幅值采樣點(diǎn)是否為極大值的算法步驟如下:
(1)先求幅值序列的一階差分,然后取符號得到序列K(正數(shù)取為1,負(fù)數(shù)取為-1),再求一階差分,若該幅值采樣點(diǎn)為極大值,則該采樣點(diǎn)前一個(gè)采樣點(diǎn)和后一個(gè)采樣點(diǎn)都應(yīng)該小于該采樣點(diǎn),于是該采樣點(diǎn)位置與前后采樣點(diǎn)的幅值的一階差分應(yīng)該為正數(shù)和負(fù)數(shù),即原幅值序列的一階差分序列取符號后為+1 和-1。因此,序列K再求一階差分后,極大值采樣點(diǎn)處應(yīng)該為-2。
(2)當(dāng)在極小值采樣點(diǎn)時(shí),該采樣點(diǎn)的前一個(gè)和后一個(gè)采樣點(diǎn)都應(yīng)該大于該采樣點(diǎn),于是該采樣點(diǎn)位置與前后幅值采樣點(diǎn)的一階差分取符號后為-1、+1,此時(shí),序列K再求一階差分后,極大值采樣點(diǎn)處應(yīng)該為2。
1.2 音頻幅值拆分運(yùn)算與合并運(yùn)算
本文結(jié)合拆分發(fā)送與接收的思想對秘密音頻進(jìn)行處理,即在發(fā)送端對秘密音頻先進(jìn)行拆分運(yùn)算后分成兩組數(shù)據(jù),接收端進(jìn)行合并運(yùn)算。本文按二進(jìn)制位拆分秘密音頻,秘密音頻采樣位數(shù)是8 位,在發(fā)送的時(shí)候?qū)⑦@8 位數(shù)據(jù)按一定的方法分成兩組4位的數(shù)據(jù)分別發(fā)送,且將這兩組數(shù)據(jù)的4 位數(shù)據(jù)打亂順序,這是由于只用一組數(shù)據(jù)很難恢復(fù)秘密信息,接收方只有得到這兩組數(shù)據(jù)再進(jìn)行合并運(yùn)算才能得到秘密信息。因此,秘密音頻的拆分與合并運(yùn)算能提高秘密音頻的安全性。
1.3 擴(kuò)頻編碼與解碼
擴(kuò)頻編碼是將傳輸信號的頻譜(spectrum)分散到較其原始帶寬更寬的一種通信技術(shù),其特點(diǎn)是傳輸信息所用的帶寬遠(yuǎn)大于信息本身帶寬。擴(kuò)頻編碼對于音頻信號中的數(shù)據(jù)隱藏非常有效。
本文對秘密音頻比特流進(jìn)行簡單擴(kuò)頻編碼,以增強(qiáng)其安全性與魯棒性。擴(kuò)頻和解擴(kuò)的公式分別為:
式中:D0 表示原信息流的各個(gè)數(shù)據(jù);PN為擴(kuò)頻碼;D為擴(kuò)頻編碼后的相應(yīng)數(shù)據(jù)。
2 秘密音頻的隱寫和提取
載體音頻與秘密音頻參數(shù)選取如表1 所示。

表1 算法音頻參數(shù)
2.1 音頻隱寫算法
音頻隱寫算法如圖1 所示,其詳細(xì)步驟如下:

圖1 音頻隱寫嵌入過程
(1)假設(shè)載體音頻序列表示為:
式中:K為采樣點(diǎn)序號,用于記錄采樣點(diǎn)位置;D0為采樣點(diǎn)幅值,因?yàn)檩d體音頻是16 位的,所以 -215
式中:floor函數(shù)表示對序列元素向下取整。8 位有效位包含1 位符號位和7 位數(shù)值位,此操作的目的是解決后續(xù)低有效位嵌入數(shù)據(jù)后對音頻序列排序順序的影響。
然后得到冗余序列:
(2)求出音頻信號(K,D2)所有的采樣點(diǎn)極值位置(包含極大值與極小值)。為了求載體音頻D2 時(shí)域的極值位置,先對序列D2求差分,再取其符號,然后再求差分得到新序列D':
式中:diff函數(shù)表示對序列求差分;sign函數(shù)表示對序列求符號。
當(dāng)D'=-2 時(shí),表示該位置為極大值;當(dāng)D'=2 時(shí),該位置為極小值。極大值和極小值采樣點(diǎn)與其對應(yīng)的序號分別為:
(3)對二進(jìn)制8 位有效位的極大值采樣點(diǎn)按Dmax值的大小進(jìn)行排序,得到新的序列為:
對二進(jìn)制8 位有效位的極小值采樣點(diǎn)按Dmin值的大小進(jìn)行排序,得新的序列:
(4)假設(shè)秘密音頻為:
Ks=1,2,3,…為采樣點(diǎn)序號,Ks為8 位采樣點(diǎn)量化值,對每個(gè)采樣點(diǎn)數(shù)據(jù)Ds,拆分成Ds1和Ds2兩部分,每部分由4 位二進(jìn)制數(shù)據(jù)組成,其中Ds1的第1~4位分別為Ds的第5、4、1、7位,Ds2的第1~4位分別為Ds的第6、3、2、8 位。得到兩組數(shù)據(jù):
(5)對兩組數(shù)據(jù)DS1,DS2 擴(kuò)頻編碼得到:
式中:PNI,PN2 為擴(kuò)頻碼,本算法中為設(shè)定的任意4 位二進(jìn)制數(shù)。
(6)將DS1',DS2'分別嵌入載體音頻極大值采樣點(diǎn)Dmax 和Dmin 的不重要位,先對極值采樣點(diǎn)的不重要位進(jìn)行數(shù)據(jù)清洗運(yùn)算:
然后將DS1',DS2'相加嵌入:
式中:floor函數(shù)表示對序列元素向下取整。D0(K)表示序列D0 的K序號對應(yīng)的值。得到含密音頻(K,D0)。
2.2 音頻提取算法
音頻提取算法如圖2 所示,其詳細(xì)步驟如下:

圖2 音頻的提取過程
(1)根據(jù)2.1 節(jié)音頻隱寫算法的步驟(1)~(3)得到排序后的極值采樣點(diǎn)序列為:
(2)按順序?qū)O大值采樣點(diǎn)和極小值采樣點(diǎn)中不重要位的兩組數(shù)據(jù)提取出來得到:
式中:PNI,PN2 為擴(kuò)頻碼,為隱藏算法中設(shè)定的二進(jìn)制數(shù)。
(3)用提取的兩組數(shù)據(jù)Ds1,Ds2合并得到秘密音頻幅值序列Ds后,可得秘密音頻DS:
式中:Ks=1,2,3,…為采樣點(diǎn)序號。其中,Ds的第5,4,1,7 位分別為Ds1的第1~4 位,Ds的第6,3,2,8 位分別為Ds2的第1~4 位。
3 實(shí)驗(yàn)結(jié)果與分析
測試實(shí)驗(yàn)中,秘密音頻選取人聲錄音,載體音頻分別選取了搖滾音樂、流行音樂、民謠、鋼琴曲、歐美音樂分別測試算法,并從容量、透明性和魯棒性這3 個(gè)指標(biāo)來分析算法性能。
3.1 音頻隱寫算法容量測試
隱蔽通信中嵌入容量(Cap)通常用單位時(shí)間內(nèi)可以嵌入的秘密信息比特?cái)?shù)(bit/s)來衡量:
本文方案在保證透明性的前提下選取了更多的不重要位,因此具有可觀的容量。但本文方案嵌入容量和具體載體音頻有關(guān),使用不同載體音頻測試結(jié)果如表2 所示,它們的容量均值為14 829 bit/s。相比文獻(xiàn)[7-9]的方案大幅提升。表3 展示了本文方案隱藏容量的測試結(jié)果。

表2 不同載體音頻信號的容量

表3 與其他文獻(xiàn)的容量比較
表2 測試數(shù)據(jù)中,算法對不同載體音頻容量表現(xiàn)不一致,但可以發(fā)現(xiàn),在柔和的音樂中容量差一些,在搖滾音樂中表現(xiàn)較佳。
表3 展示了本文方案隱藏容量的測試結(jié)果與相關(guān)文獻(xiàn)的隱藏容量對比。
圖3 顯示了秘密音頻在含密音頻的嵌入位置,每個(gè)位置嵌入4 bit 數(shù)據(jù)。其中載體選擇的是人聲錄音的一段,從隱藏位置也可以發(fā)現(xiàn),秘密音頻的嵌入在極值位置,因此保證了方案較好的透明性。

圖3 含密音頻隱寫位置
3.2 音頻隱寫算法透明性測試
透明性也稱不可感知性,是衡量含密音頻不能被感知到包含秘密音頻的指標(biāo)。對于一個(gè)多媒體媒介,嵌入秘密信息必然會改變其原有信號特征,因此隱藏方案不應(yīng)導(dǎo)致原媒體質(zhì)量的明顯下降,也不能對載體的正常使用產(chǎn)生影響。隱蔽通信中通常用信噪比(Signal Noise Ratio,SNR)來衡量,其計(jì)算公式為:
使用不同載體音頻測試的結(jié)果如表4 所示,它們的信噪比平均值為39.97 dB。表5 展示了本文方法與其他相關(guān)文獻(xiàn)所提方法的透明性對比。

表4 不同載體音頻信號的信噪比

表5 與其他文獻(xiàn)算法的信噪比比較
圖4 展示了載體音頻與含密音頻的時(shí)域?qū)Ρ,可以看出,兩者差值非常小,且在?shí)際聽覺感受上也幾乎沒有差異。

圖4 載體音頻與含密音頻對比
4 結(jié)語
本文提出了一種先對秘密音頻進(jìn)行拆分-合并運(yùn)算,然后擴(kuò)頻自適應(yīng)嵌入到載體音頻時(shí)域極值采樣點(diǎn)的音頻隱寫算法。算法主要通過在極值位置的不重要位嵌入與提取秘密音頻,并結(jié)合秘密信息拆分發(fā)送與接收的思路,有效提高了隱蔽通信的透明性和安全性。實(shí)驗(yàn)結(jié)果表明,算法透明性和對比文獻(xiàn)所提算法相比最少提高了10 dB,容量相比對比文獻(xiàn)最少提升了84 倍,但對多種攻擊魯棒性表現(xiàn)較差。因此,本文算法很適合音頻文件端對端的秘密通信應(yīng)用場景。以后的工作中,還將就提高算法的魯棒性作進(jìn)一步研究。