劉義銘,過小宇,牛一如
(1.保密通信重點實驗室,四川 成都 610041;2.中國電子科技集團公司第三十研究所,四川 成都 610041)
圖像隱寫是在圖像中隱藏信息,使得隱藏信息無法被輕易檢測的技術(shù)[1],常用于秘密通信,是信息安全的熱門話題之一。近年來,在圖像隱寫技術(shù)發(fā)展的過程中出現(xiàn)了2個不同方向:① 對隱寫算法進行優(yōu)化,使隱寫算法更加安全,嵌入信息更不易被檢測到;② 對載體圖像進行優(yōu)化。基于生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)的圖像隱寫正是后一種發(fā)展方向,這種圖像隱寫技術(shù)與生成對抗網(wǎng)絡(luò)相結(jié)合的方法使圖像隱寫技術(shù)煥發(fā)出了新活力,顯著提高了其安全性能,無論是載體的適用性、隱藏信息的安全性還是信息嵌入以及輸出的準確性等方面都有了一定的進步[2-3],證明了基于生成對抗網(wǎng)絡(luò)的圖像隱寫方法的研究具有一定的研究價值。
但是在圖像隱寫技術(shù)與生成對抗網(wǎng)絡(luò)的結(jié)合中,傳統(tǒng)對抗生成網(wǎng)絡(luò)的生成器的輸入是隨機噪聲,輸出的是根據(jù)噪聲產(chǎn)生的生成圖像[4]。該過程不透明,無法得知噪聲的每個維度分別控制著生成圖像的哪些特征,又是如何控制的。而信息最大化生成對抗網(wǎng)絡(luò)(Information Maximizing Generative Adversarial Networks,InfoGAN)[5]將生成器的輸入分為兩個部分,一部分是不可壓縮的噪聲向量,另一部分則是可以控制數(shù)據(jù)分布的語義特征的潛碼。InfoGAN的這一特性可以很好地和圖像隱寫技術(shù)進行結(jié)合,若將潛碼看作是秘密信息,便既可以實現(xiàn)秘密信息的隱藏又不經(jīng)過信息嵌入的過程。同時,InfoGAN的這一特性使得解密過程也變得容易,只要做好秘密信息和潛碼對應(yīng)的碼表,發(fā)送方和接收方同時持有這一份碼表,都能很容易地對想要傳輸?shù)拿孛苄畔⑦M行加密和解密。
基于上述討論,在對深度學習和視覺關(guān)注機制的相關(guān)技術(shù)分析的基礎(chǔ)上,使用InfoGAN實現(xiàn)圖像隱寫,通過在生成器中輸入具有極大互信息的潛碼與噪音,使用二者共同生成含密圖像,通過真假圖片判別器輸出真實圖像和生成圖片的混合體,最后經(jīng)由標簽分離判別器分離出潛碼。由于整個加密過程中沒有傳統(tǒng)圖像隱寫方法的信息嵌入過程,該方法具有更加強大的抗隱寫分析的能力。
InfoGAN是GAN網(wǎng)絡(luò)的一個創(chuàng)新。傳統(tǒng)GAN的輸入是連續(xù)噪聲向量z,但對生成器如何使用該噪聲的方式?jīng)]有限制。因此,生成器可能以高度糾纏的方式使用噪聲,導致z的各個維度不對應(yīng)于數(shù)據(jù)的語義特征[6-8]。而InfoGAN則將輸入噪聲矢量分解為兩部分——不可壓縮噪聲來源z和針對并影響數(shù)據(jù)分布的顯著結(jié)構(gòu)化語義特征c,c被稱為潛在代碼(Latent Code)。因此,InfoGAN不是使用單個非結(jié)構(gòu)化噪聲矢量,而是使用的互相之間具有很大互信息的z和c。在數(shù)學上可以用c1,c2,...,ck表示潛在變量的集合。在其最簡單的形式中,可以假設(shè)為如下形式的因式分布:
該方程代表各自的潛在代碼ci概率獨立,互不影響,即:
p(c1,c2,…,ck)=p(c1)×p(c2)×…×p(ck)。
InfoGAN將生成器的輸入改為2個部分,則可得出如圖1所示的網(wǎng)絡(luò)結(jié)構(gòu)。
圖1 InfoGAN圖像隱寫方法的網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Network structure of InfoGAN image steganography method
參考InfoGAN的設(shè)計思想,將隨機噪聲z和潛變量(含密標簽c1)一起作為生成器G的驅(qū)動。隨后將參考圖像x輸入判別器,使用含密圖像生成模型G與圖像相似度判別模型D博弈,循環(huán)訓練生成隱藏有秘密信息的圖片。再由標簽分類判別模型Q在對含密圖像的含密標簽進行分離,最后將標簽輸出,完成解密過程。且由于InfoGAN使用含密標簽用作密文的索引,所以加密內(nèi)容較為限制,占用容量不大,節(jié)約空間。因此,使用InfoGAN實現(xiàn)圖像隱寫,最大的優(yōu)點是沒有嵌入操作,并且可以使用判別器Q提取機密數(shù)據(jù)。
在InfoGAN圖像隱寫網(wǎng)絡(luò)結(jié)構(gòu)中,生成模型G用于生成安全含密圖像。本文所提出的InfoGAN的生成模型由4個卷積層[9]組成,在進行操作時,每個卷積層都會對輸入的噪聲進行3個操作,依次進行逆卷積操作,再經(jīng)過一個正則化層,進行歸一化操作,最后使用激活函數(shù)進行“激活”。隱寫網(wǎng)絡(luò)的生成模型G的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 生成模型G的網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Network structure of generative model G
圖2中,k代表卷積核大小,n代表通道數(shù),例如RGB圖片有3個通道,而灰度圖像則只有一個通道數(shù),s代表步長。
其中,逆卷積操作分為3步,在傳入的參數(shù)中給定了輸入與卷積核設(shè)置,第一步為對輸入的矩陣進行一些變換,得到新的卷積,第二步為求新的卷積核設(shè)置,得到新的卷積核設(shè)置,最后用新的卷積核在新的矩陣上做常規(guī)的卷積,得到所需要的逆卷積的結(jié)果。
在正則化層中,將c-out(經(jīng)過逆卷積操作之后輸出的新矩陣)歸一化到一個均值為0,方差為1的正態(tài)分布里。需要注意的是這個歸一化操作并不是將每一層輸出后的數(shù)據(jù)都歸一化,因為此種情形會導致每一層的數(shù)據(jù)分布都是標準正態(tài)分布,導致其完全學習不到輸入數(shù)據(jù)的特征,本文所使用的BatchNorm2d方法對每個Batch做均值和方差歸一化處理,并在預測過程中通過訓練數(shù)據(jù)進行估算。由于深度神經(jīng)網(wǎng)絡(luò)的訓練十分復雜,每一層的輸入分布在訓練期間都會發(fā)生變化,因此需要對逆卷積操作生成的新矩陣進行歸一化操作,即必須使用一個較低的學習率以及對參數(shù)進行很好的初始化。但是這也會帶來一定的負面影響,即在降低訓練速度的同時也使訓練飽和非線性的模型變得十分困難。這種現(xiàn)象被稱作內(nèi)部協(xié)變量偏移(Internal Covariate Shift,ICS)。對于一個神經(jīng)網(wǎng)絡(luò)來說,前面卷積層的權(quán)重參數(shù)不斷變化時,必然導致后面卷積層的權(quán)重參數(shù)發(fā)生改變,而Batch Normalization可以弱化隱藏層權(quán)重分布變化的程度,即重整了關(guān)于權(quán)重(Weight)和偏移項(Bias)的線性函數(shù)Z,限制了前面卷積層參數(shù)更新而影響Z數(shù)值分布的程度,使得這些數(shù)值更加穩(wěn)定,將前后不同的層之間的耦合程度降低,使得每一層不過多依賴前面的層,能夠獲得更高的學習速率而不用過于關(guān)注初始化,幫助網(wǎng)絡(luò)更好地收斂。
最后使用激活函數(shù)進行激活,本文在前面幾層使用的是ReLU[11]激活函數(shù),最后一層使用的是Tanh[12]激活函數(shù)。然后用多個神經(jīng)單元進行組合,可獲得更強的分類能力。
真假圖片判別模型D的作用是對輸入模型D中的圖片進行真假判斷。在判斷真假圖片這一功能上判斷器大體操作分為兩步:提取特征以及對提取的特征進行分類,區(qū)分輸入判別器的是真實圖片還是虛假圖片。整個項目的真假圖片判別模型D的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 真假圖片判別模型D網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.3 Network structure of true and false picture discrimination model D
真假圖片判別模型D的特征提取層由3層卷積層組成。每一層卷積層之后會對輸出進行歸一化操作,最后使用LeakyReLU[13]激活函數(shù)進行操作。本文對卷積操作設(shè)置了6個參數(shù),分別為in_channels(輸入圖像的通道數(shù))、out_channels(通過卷積層之后產(chǎn)生的通道數(shù)) 、kernel_size(卷積核的大小)、stride(卷積操作的步長,默認值為1,這里設(shè)置為2可以縮小特征層的大小)、padding(將0填充到輸入的兩側(cè))和bias (若為True,則會為輸出添加可學習的偏差)。通過第1層卷積層將輸入的圖片輸出64個矩陣,然后將輸出送入正則化層進行歸一化操作。最后將經(jīng)過歸一化操作的輸出融入激活函數(shù)中。判斷模型D所使用的激活函數(shù)是LeakyReLU激活函數(shù)。在總共3層的卷積層中,每一層都做這3步操作,最終得出所需要的特征值。根據(jù)所設(shè)定的網(wǎng)絡(luò)結(jié)構(gòu),輸入判斷模型D中的圖片包括生成網(wǎng)絡(luò)G生成的含密圖片和數(shù)據(jù)集中的真實圖片。這些圖片通過判斷模型D中的特征提取層,輸出的是1 024個矩陣,而最后這些特征值則通過分類器最終會得到一個0~1區(qū)間內(nèi)的數(shù),如果這個數(shù)大于0.5就認為它是真實圖片,相反地,這個數(shù)小于0.5則認為它是生成模型G所生成的偽圖片。
輸入判別模型D的既有真實圖片又有生成模型G生成的虛假圖片,當輸入真實圖片時網(wǎng)絡(luò)會得到一個預測結(jié)果pred_f,同樣當輸入的是生成圖片時網(wǎng)絡(luò)也會得到一個預測結(jié)果pred_f。本文使用損失函數(shù)對真實結(jié)果和預測結(jié)果進行監(jiān)督,得出二者之間的誤差,再通過反向傳播算法更新前面網(wǎng)絡(luò)的參數(shù),如此反復,經(jīng)過多次的迭代使判斷網(wǎng)絡(luò)的效果越來越好。
標簽分類判別模型Q與真假圖片判別模型D共享卷積層,可以減少計算花銷,此外再通過2層卷積層實現(xiàn)標簽分類的功能。與判別模型D是二分類的分類器不同,模型Q的分類為多分類的分類器。整個項目的標簽分類判別模型Q的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 標簽分類判別模型Q的網(wǎng)絡(luò)結(jié)構(gòu)Fig.4 Network structure of label classification discrimination model Q
與判別模型Q不同,因為判別模型Q是一個多分類的分類器,所以使用的損失函數(shù)與判別模型D不同。模型Q使用的是交叉熵損失函數(shù)[14],該函數(shù)用于度量2個概率分布間的差異性信息,可以認為是在給定的真實分布下,使用非真實分布的策略消除系統(tǒng)的不確定性所需要付出的努力的大小。交叉熵越小,證明計算出的非真實分布越接近真實分布。
本文實現(xiàn)了基于InfoGAN的圖像隱寫。將潛碼與隨機噪聲一起作為驅(qū)動輸入生成模型中,使生成模型G與真假圖片判斷模型D競爭,通過反向傳播算法更新權(quán)重參數(shù),通過不斷進行迭代訓練,使二者的效果越來越好,最終達到所需要的效果。
經(jīng)過不斷訓練之后生成的含密圖片如圖5所示。
圖5 生成含密圖片可視化Fig.5 Visualization of generated secret picture
圖5中可以清楚地看見,隨著迭代次數(shù)的增加,所得到的生成圖片的清晰度與準確度都在不斷地增加。
在現(xiàn)代的隱寫術(shù)中,大多數(shù)圖像隱寫都是將秘密信息嵌入到載體圖片中,以類噪聲成分的替代來實現(xiàn)秘密信息的隱藏。隱寫分析術(shù)即是通過對載體圖片的特征變化進行分析,從而判斷所分析的圖片是否載有隱藏信息。由于只要是通過嵌入算法進行的信息隱藏,必然會有原始載體圖片某個部分數(shù)據(jù)的改變,一旦檢測出來載體圖片有修改過的痕跡,無論能不能破密,只要對整個含密圖片進行破壞就能使秘密傳輸信息的目的無法實現(xiàn)。因此,若一個信息隱藏系統(tǒng)在將秘密信息嵌入(隱藏)到載體過程中,不改變載體的概率分布,則該信息隱藏系統(tǒng)在理論上是安全的[15-17]。這便意味著若能用將噪聲與秘密信息進行某種結(jié)合,直接生成含密圖像,便可以在根本上保證原始載體的概率分布不受任何影響。因此,本文通過InfoGAN實現(xiàn)了將噪聲與含密標簽一起送入生成模型中,同時影響生成圖片的概率分布。這種方法將潛碼與噪聲結(jié)合到一起,不對載體圖片做任何嵌入操作,即隱寫分析無法根據(jù)載體圖片和秘密信息的不相關(guān)性檢測出圖片被人為做過手腳。根據(jù)文獻[15]中通過信息論所給出的隱寫系統(tǒng)安全性定義可以得出,本文提出的基于InfoGAN的圖像隱寫方法在理論上具有十分強大的抗隱寫性。文獻[18]中提到Auguste Kerckhoffs所提出的6條密碼設(shè)計與使用的基本原則,其中有一條便是密碼系統(tǒng)的安全性取決于密鑰而非算法。本文在InfoGAN的實現(xiàn)之外,提出了秘密信息與潛碼c一一對應(yīng)的碼表,相當于通信密鑰,沒有這個碼表在手里,無論如何也不能破譯其含義。因此,本文提出的隱寫方法可以抵御現(xiàn)有的基于載體圖像數(shù)據(jù)分布異常的隱寫分析方法。
除了對基于InfoGAN的圖像隱寫的安全性能進行了理論性分析之外,本文還將其與真實圖像作為信息載體和生成圖像作為載體再使用±1嵌入算法生成的含密圖片進行了對比實驗,使用隱寫分析分類器S對其進行分類,其實驗結(jié)果如下:真實圖像的檢出率為84.5%,SGAN[14]的檢出率為73.5%,InfoGAN的檢出率為1.5%。
由此可知,與將秘密信息嵌入真實圖像的傳統(tǒng)隱寫方法或是以GAN生成嵌入載體再進行秘密信息的嵌入相比,基于InfoGAN所實現(xiàn)的圖像隱寫方法由于并沒有對載體圖像進行任何修改,是可以抵御現(xiàn)有的隱寫分析技術(shù)的(檢出率1.5%屬于必然存在的誤差)。
模型Q的設(shè)計意圖是要將潛碼解析出來進行輸出,而解析器的精度關(guān)系著整個圖像隱寫功能的成敗。因此,本文使用3 000組解密實驗得出下列10個含密標簽的解密精度,如表1所示。
表1 Q模型準確率Tab.1 Accuracy of model Q
相對于現(xiàn)階段普遍使用的GAN,InfoGAN更加適用于圖像隱寫,一是因為InfoGAN的潛碼對應(yīng)隱藏信息可以不通過復雜的隱寫算法對隱秘信息進行隱藏;二是由于InfoGAN由于可以不經(jīng)過載體圖片的修改,于是相對于常規(guī)隱寫算法具有更好的抗隱寫性。
本文使用Pytorch深度框架實現(xiàn)了InfoGAN的圖像隱寫方法。所提出的圖像隱寫方法無需對載體圖像某些不被重視的區(qū)域進行修改,而是實現(xiàn)了直接將“隱寫信息”與噪聲同時作為驅(qū)動生成含密圖像,通過解碼器進行多分類,將含密標簽分離并輸出。由于該方法從來源上進行隱寫操作而沒有對載體圖片進行修改,所以這種無載體信息隱藏方法能夠從根本上解決現(xiàn)有的隱寫分析方法的檢查,具有更高的安全性。在后續(xù)的工作中,將要尋找一種方法使含密標簽的數(shù)量增多,并嘗試將標簽進行組合,成為新的含密標簽,以增加碼表的內(nèi)容量。