劉義銘,過小宇,牛一如
(1.保密通信重點實驗室,四川 成都 610041;2.中國電子科技集團公司第三十研究所,四川 成都 610041)
圖像隱寫是在圖像中隱藏信息,使得隱藏信息無法被輕易檢測的技術[1],常用于秘密通信,是信息安全的熱門話題之一。近年來,在圖像隱寫技術發展的過程中出現了2個不同方向:① 對隱寫算法進行優化,使隱寫算法更加安全,嵌入信息更不易被檢測到;② 對載體圖像進行優化?;谏蓪咕W絡(Generative Adversarial Networks,GAN)的圖像隱寫正是后一種發展方向,這種圖像隱寫技術與生成對抗網絡相結合的方法使圖像隱寫技術煥發出了新活力,顯著提高了其安全性能,無論是載體的適用性、隱藏信息的安全性還是信息嵌入以及輸出的準確性等方面都有了一定的進步[2-3],證明了基于生成對抗網絡的圖像隱寫方法的研究具有一定的研究價值。
但是在圖像隱寫技術與生成對抗網絡的結合中,傳統對抗生成網絡的生成器的輸入是隨機噪聲,輸出的是根據噪聲產生的生成圖像[4]。該過程不透明,無法得知噪聲的每個維度分別控制著生成圖像的哪些特征,又是如何控制的。而信息最大化生成對抗網絡(Information Maximizing Generative Adversarial Networks,InfoGAN)[5]將生成器的輸入分為兩個部分,一部分是不可壓縮的噪聲向量,另一部分則是可以控制數據分布的語義特征的潛碼。InfoGAN的這一特性可以很好地和圖像隱寫技術進行結合,若將潛碼看作是秘密信息,便既可以實現秘密信息的隱藏又不經過信息嵌入的過程。同時,InfoGAN的這一特性使得解密過程也變得容易,只要做好秘密信息和潛碼對應的碼表,發送方和接收方同時持有這一份碼表,都能很容易地對想要傳輸的秘密信息進行加密和解密。
基于上述討論,在對深度學習和視覺關注機制的相關技術分析的基礎上,使用InfoGAN實現圖像隱寫,通過在生成器中輸入具有極大互信息的潛碼與噪音,使用二者共同生成含密圖像,通過真假圖片判別器輸出真實圖像和生成圖片的混合體,最后經由標簽分離判別器分離出潛碼。由于整個加密過程中沒有傳統圖像隱寫方法的信息嵌入過程,該方法具有更加強大的抗隱寫分析的能力。
InfoGAN是GAN網絡的一個創新。傳統GAN的輸入是連續噪聲向量z,但對生成器如何使用該噪聲的方式沒有限制。因此,生成器可能以高度糾纏的方式使用噪聲,導致z的各個維度不對應于數據的語義特征[6-8]。而InfoGAN則將輸入噪聲矢量分解為兩部分——不可壓縮噪聲來源z和針對并影響數據分布的顯著結構化語義特征c,c被稱為潛在代碼(Latent Code)。因此,InfoGAN不是使用單個非結構化噪聲矢量,而是使用的互相之間具有很大互信息的z和c。在數學上可以用c1,c2,...,ck表示潛在變量的集合。在其最簡單的形式中,可以假設為如下形式的因式分布:
該方程代表各自的潛在代碼ci概率獨立,互不影響,即:
p(c1,c2,…,ck)=p(c1)×p(c2)×…×p(ck)。
InfoGAN將生成器的輸入改為2個部分,則可得出如圖1所示的網絡結構。

圖1 InfoGAN圖像隱寫方法的網絡結構圖Fig.1 Network structure of InfoGAN image steganography method
參考InfoGAN的設計思想,將隨機噪聲z和潛變量(含密標簽c1)一起作為生成器G的驅動。隨后將參考圖像x輸入判別器,使用含密圖像生成模型G與圖像相似度判別模型D博弈,循環訓練生成隱藏有秘密信息的圖片。再由標簽分類判別模型Q在對含密圖像的含密標簽進行分離,最后將標簽輸出,完成解密過程。且由于InfoGAN使用含密標簽用作密文的索引,所以加密內容較為限制,占用容量不大,節約空間。因此,使用InfoGAN實現圖像隱寫,最大的優點是沒有嵌入操作,并且可以使用判別器Q提取機密數據。
在InfoGAN圖像隱寫網絡結構中,生成模型G用于生成安全含密圖像。本文所提出的InfoGAN的生成模型由4個卷積層[9]組成,在進行操作時,每個卷積層都會對輸入的噪聲進行3個操作,依次進行逆卷積操作,再經過一個正則化層,進行歸一化操作,最后使用激活函數進行“激活”。隱寫網絡的生成模型G的網絡結構如圖2所示。

圖2 生成模型G的網絡結構Fig.2 Network structure of generative model G
圖2中,k代表卷積核大小,n代表通道數,例如RGB圖片有3個通道,而灰度圖像則只有一個通道數,s代表步長。
其中,逆卷積操作分為3步,在傳入的參數中給定了輸入與卷積核設置,第一步為對輸入的矩陣進行一些變換,得到新的卷積,第二步為求新的卷積核設置,得到新的卷積核設置,最后用新的卷積核在新的矩陣上做常規的卷積,得到所需要的逆卷積的結果。
在正則化層中,將c-out(經過逆卷積操作之后輸出的新矩陣)歸一化到一個均值為0,方差為1的正態分布里。需要注意的是這個歸一化操作并不是將每一層輸出后的數據都歸一化,因為此種情形會導致每一層的數據分布都是標準正態分布,導致其完全學習不到輸入數據的特征,本文所使用的BatchNorm2d方法對每個Batch做均值和方差歸一化處理,并在預測過程中通過訓練數據進行估算。由于深度神經網絡的訓練十分復雜,每一層的輸入分布在訓練期間都會發生變化,因此需要對逆卷積操作生成的新矩陣進行歸一化操作,即必須使用一個較低的學習率以及對參數進行很好的初始化。但是這也會帶來一定的負面影響,即在降低訓練速度的同時也使訓練飽和非線性的模型變得十分困難。這種現象被稱作內部協變量偏移(Internal Covariate Shift,ICS)。對于一個神經網絡來說,前面卷積層的權重參數不斷變化時,必然導致后面卷積層的權重參數發生改變,而Batch Normalization可以弱化隱藏層權重分布變化的程度,即重整了關于權重(Weight)和偏移項(Bias)的線性函數Z,限制了前面卷積層參數更新而影響Z數值分布的程度,使得這些數值更加穩定,將前后不同的層之間的耦合程度降低,使得每一層不過多依賴前面的層,能夠獲得更高的學習速率而不用過于關注初始化,幫助網絡更好地收斂。
最后使用激活函數進行激活,本文在前面幾層使用的是ReLU[11]激活函數,最后一層使用的是Tanh[12]激活函數。然后用多個神經單元進行組合,可獲得更強的分類能力。
真假圖片判別模型D的作用是對輸入模型D中的圖片進行真假判斷。在判斷真假圖片這一功能上判斷器大體操作分為兩步:提取特征以及對提取的特征進行分類,區分輸入判別器的是真實圖片還是虛假圖片。整個項目的真假圖片判別模型D的網絡結構如圖3所示。

圖3 真假圖片判別模型D網絡結構圖Fig.3 Network structure of true and false picture discrimination model D
真假圖片判別模型D的特征提取層由3層卷積層組成。每一層卷積層之后會對輸出進行歸一化操作,最后使用LeakyReLU[13]激活函數進行操作。本文對卷積操作設置了6個參數,分別為in_channels(輸入圖像的通道數)、out_channels(通過卷積層之后產生的通道數) 、kernel_size(卷積核的大小)、stride(卷積操作的步長,默認值為1,這里設置為2可以縮小特征層的大小)、padding(將0填充到輸入的兩側)和bias (若為True,則會為輸出添加可學習的偏差)。通過第1層卷積層將輸入的圖片輸出64個矩陣,然后將輸出送入正則化層進行歸一化操作。最后將經過歸一化操作的輸出融入激活函數中。判斷模型D所使用的激活函數是LeakyReLU激活函數。在總共3層的卷積層中,每一層都做這3步操作,最終得出所需要的特征值。根據所設定的網絡結構,輸入判斷模型D中的圖片包括生成網絡G生成的含密圖片和數據集中的真實圖片。這些圖片通過判斷模型D中的特征提取層,輸出的是1 024個矩陣,而最后這些特征值則通過分類器最終會得到一個0~1區間內的數,如果這個數大于0.5就認為它是真實圖片,相反地,這個數小于0.5則認為它是生成模型G所生成的偽圖片。
輸入判別模型D的既有真實圖片又有生成模型G生成的虛假圖片,當輸入真實圖片時網絡會得到一個預測結果pred_f,同樣當輸入的是生成圖片時網絡也會得到一個預測結果pred_f。本文使用損失函數對真實結果和預測結果進行監督,得出二者之間的誤差,再通過反向傳播算法更新前面網絡的參數,如此反復,經過多次的迭代使判斷網絡的效果越來越好。
標簽分類判別模型Q與真假圖片判別模型D共享卷積層,可以減少計算花銷,此外再通過2層卷積層實現標簽分類的功能。與判別模型D是二分類的分類器不同,模型Q的分類為多分類的分類器。整個項目的標簽分類判別模型Q的網絡結構如圖4所示。

圖4 標簽分類判別模型Q的網絡結構Fig.4 Network structure of label classification discrimination model Q
與判別模型Q不同,因為判別模型Q是一個多分類的分類器,所以使用的損失函數與判別模型D不同。模型Q使用的是交叉熵損失函數[14],該函數用于度量2個概率分布間的差異性信息,可以認為是在給定的真實分布下,使用非真實分布的策略消除系統的不確定性所需要付出的努力的大小。交叉熵越小,證明計算出的非真實分布越接近真實分布。
本文實現了基于InfoGAN的圖像隱寫。將潛碼與隨機噪聲一起作為驅動輸入生成模型中,使生成模型G與真假圖片判斷模型D競爭,通過反向傳播算法更新權重參數,通過不斷進行迭代訓練,使二者的效果越來越好,最終達到所需要的效果。
經過不斷訓練之后生成的含密圖片如圖5所示。

圖5 生成含密圖片可視化Fig.5 Visualization of generated secret picture
圖5中可以清楚地看見,隨著迭代次數的增加,所得到的生成圖片的清晰度與準確度都在不斷地增加。
在現代的隱寫術中,大多數圖像隱寫都是將秘密信息嵌入到載體圖片中,以類噪聲成分的替代來實現秘密信息的隱藏。隱寫分析術即是通過對載體圖片的特征變化進行分析,從而判斷所分析的圖片是否載有隱藏信息。由于只要是通過嵌入算法進行的信息隱藏,必然會有原始載體圖片某個部分數據的改變,一旦檢測出來載體圖片有修改過的痕跡,無論能不能破密,只要對整個含密圖片進行破壞就能使秘密傳輸信息的目的無法實現。因此,若一個信息隱藏系統在將秘密信息嵌入(隱藏)到載體過程中,不改變載體的概率分布,則該信息隱藏系統在理論上是安全的[15-17]。這便意味著若能用將噪聲與秘密信息進行某種結合,直接生成含密圖像,便可以在根本上保證原始載體的概率分布不受任何影響。因此,本文通過InfoGAN實現了將噪聲與含密標簽一起送入生成模型中,同時影響生成圖片的概率分布。這種方法將潛碼與噪聲結合到一起,不對載體圖片做任何嵌入操作,即隱寫分析無法根據載體圖片和秘密信息的不相關性檢測出圖片被人為做過手腳。根據文獻[15]中通過信息論所給出的隱寫系統安全性定義可以得出,本文提出的基于InfoGAN的圖像隱寫方法在理論上具有十分強大的抗隱寫性。文獻[18]中提到Auguste Kerckhoffs所提出的6條密碼設計與使用的基本原則,其中有一條便是密碼系統的安全性取決于密鑰而非算法。本文在InfoGAN的實現之外,提出了秘密信息與潛碼c一一對應的碼表,相當于通信密鑰,沒有這個碼表在手里,無論如何也不能破譯其含義。因此,本文提出的隱寫方法可以抵御現有的基于載體圖像數據分布異常的隱寫分析方法。
除了對基于InfoGAN的圖像隱寫的安全性能進行了理論性分析之外,本文還將其與真實圖像作為信息載體和生成圖像作為載體再使用±1嵌入算法生成的含密圖片進行了對比實驗,使用隱寫分析分類器S對其進行分類,其實驗結果如下:真實圖像的檢出率為84.5%,SGAN[14]的檢出率為73.5%,InfoGAN的檢出率為1.5%。
由此可知,與將秘密信息嵌入真實圖像的傳統隱寫方法或是以GAN生成嵌入載體再進行秘密信息的嵌入相比,基于InfoGAN所實現的圖像隱寫方法由于并沒有對載體圖像進行任何修改,是可以抵御現有的隱寫分析技術的(檢出率1.5%屬于必然存在的誤差)。
模型Q的設計意圖是要將潛碼解析出來進行輸出,而解析器的精度關系著整個圖像隱寫功能的成敗。因此,本文使用3 000組解密實驗得出下列10個含密標簽的解密精度,如表1所示。

表1 Q模型準確率Tab.1 Accuracy of model Q
相對于現階段普遍使用的GAN,InfoGAN更加適用于圖像隱寫,一是因為InfoGAN的潛碼對應隱藏信息可以不通過復雜的隱寫算法對隱秘信息進行隱藏;二是由于InfoGAN由于可以不經過載體圖片的修改,于是相對于常規隱寫算法具有更好的抗隱寫性。
本文使用Pytorch深度框架實現了InfoGAN的圖像隱寫方法。所提出的圖像隱寫方法無需對載體圖像某些不被重視的區域進行修改,而是實現了直接將“隱寫信息”與噪聲同時作為驅動生成含密圖像,通過解碼器進行多分類,將含密標簽分離并輸出。由于該方法從來源上進行隱寫操作而沒有對載體圖片進行修改,所以這種無載體信息隱藏方法能夠從根本上解決現有的隱寫分析方法的檢查,具有更高的安全性。在后續的工作中,將要尋找一種方法使含密標簽的數量增多,并嘗試將標簽進行組合,成為新的含密標簽,以增加碼表的內容量。