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

表1 算法音頻參數
2.1 音頻隱寫算法
音頻隱寫算法如圖1 所示,其詳細步驟如下:

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

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

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

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

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

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

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

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