譚 云,秦姣華,黃麗霞,向旭宇,劉 強(qiáng)
(1.湖南應(yīng)用技術(shù)學(xué)院,常德415000;2.中南林業(yè)科技大學(xué)計(jì)算機(jī)與信息工程學(xué)院,長(zhǎng)沙410004)
傳統(tǒng)信息隱藏方法利用人類感官對(duì)數(shù)字信號(hào)的感覺冗余,在載體中嵌入秘密信息,會(huì)導(dǎo)致載體特征不同程度的改變,給攻擊者留下了破解的漏洞[1]。無載體信息隱藏?zé)o需對(duì)載體進(jìn)行修改,具有極強(qiáng)的抗隱寫分析能力,是近年來的研究熱點(diǎn)。
目前,無載體信息隱藏的方法主要包括構(gòu)造生成式和特征映射式兩種[2]。基于構(gòu)造生成的方法主要包括發(fā)送端載體構(gòu)造和接收端秘密信息構(gòu)造兩種。前者包括紋理合成、基于生成對(duì)抗網(wǎng)絡(luò)(Generative adversarial networks,GAN)等各種載體生成方法。其中,紋理合成方法通過采樣原始紋理圖像,生成任意大小、與原始圖像具有類似局部外觀的新紋理圖像,在紋理合成過程中對(duì)信息進(jìn)行隱藏[3-5]?;贕AN 的方法則是將秘密信息輸入到生成模型中,生成新的圖像[6-7]。通過最大化判別網(wǎng)絡(luò)區(qū)分度,盡可能使生成圖像和真實(shí)圖像無法區(qū)分。接收端秘密信息構(gòu)造方法是從自然圖像庫(kù)中檢索與秘密圖像相似的補(bǔ)丁塊,將其進(jìn)行組合,從而實(shí)現(xiàn)秘密圖像近似恢復(fù)[8-9]。
基于特征映射的方法是目前應(yīng)用最廣泛的無載體信息隱藏方法,通過對(duì)載體特征進(jìn)行分析和提取,建立一定的規(guī)則使其與秘密信息產(chǎn)生對(duì)應(yīng)關(guān)系。在接收端,利用該特征映射關(guān)系即可從載體中提取秘密信息。該方法于2015 年首次提出[10],根據(jù)生成的魯棒散列序列建立索引,從圖像庫(kù)中選擇哈希序列與秘密信息段相同的圖像,將其作為含秘圖像傳送給接收方,接收方從中提取秘密信息。隨后,周志立等[11]利用詞袋(Bag of words,BOW)模型提取圖像集中所有圖像的視覺關(guān)鍵詞(Visual words,VW),并建立隱藏文本信息與VW 的映射關(guān)系庫(kù),利用子圖像的VW 作為傳遞秘密信息的載體。Zheng 等[12]使用尺度不變特征變換(Scale invariant feature transform,SIFT)特征點(diǎn)的方向信息來設(shè)計(jì)圖像哈希,并采用四叉樹結(jié)構(gòu)的倒排索引,從而獲得容量和檢索效率的提升。Zou 等[13]提出基于子圖像的平均像素值的信息隱藏方法,生成散列序列,再構(gòu)建映射字典和哈希數(shù)組。吳建斌等[14]提出基于離散余弦變換(Discrete cosine transform,DCT)和混沌序列的零隱藏算法,利用混沌序列對(duì)秘密信息進(jìn)行加密,同時(shí)建立DCT 系數(shù)與已加密的秘密信息的關(guān)系文檔。文獻(xiàn)[15]利用基于定向梯度直方圖(Histogram of oriented gradient,HOG)的散列算法從圖像的非重疊塊獲得散列序列,直接從大規(guī)模數(shù)據(jù)庫(kù)中選擇散列序列等于秘密信息的原始圖像,利用其基于HOG 哈希算法的直方圖作為載體圖像。近來,有研究者對(duì)圖像進(jìn)行分塊DCT[16]和離散小波變換(Discrete wavelet transform,DWT)[17]之后,利用相鄰塊直流系數(shù)之間的關(guān)系生成魯棒特征序列,并與秘密信息進(jìn)行映射,獲得了較好的魯棒特性。通過對(duì)圖像分塊來提高隱藏信息容量,但是分塊越小,魯棒性越差。Meng 等[18]和Zhou 等[19]提出了基于目標(biāo)檢測(cè)和關(guān)系映射的隱寫算法,通過映射目標(biāo)類型、顏色和秘密信息來實(shí)現(xiàn)無載體信息隱藏,獲得了安全性和魯棒性的提升,但是算法復(fù)雜度較大。
目前已有研究中,各種無載體信息隱藏方法在隱藏容量方面均有所提高,但仍然難滿足實(shí)際需求。隱藏容量不夠大、需要構(gòu)建大樣本數(shù)據(jù)庫(kù)是目前已有算法的兩個(gè)主要問題。為改善這兩個(gè)問題,本文提出一種基于混沌塊置亂和DWT 變換的無載體信息隱藏算法。首先,對(duì)載體圖像進(jìn)行混沌塊置亂,隨后,對(duì)置亂后的圖像分塊進(jìn)行DWT 變換,根據(jù)相鄰圖像塊的低頻DWT 系數(shù)之間的關(guān)系生成對(duì)應(yīng)的哈希序列,實(shí)現(xiàn)秘密信息的隱藏。不同的混沌序列參數(shù)可以生成不同的置亂圖像,可映射為不同的秘密信息,因此通過設(shè)置不同的秘鑰,每張載體圖像可以承載的秘密信息容量獲得極大提升。實(shí)驗(yàn)結(jié)果表明,本文提出的算法方案簡(jiǎn)單,極大改善了目前已有方案中的信息容量不夠和依賴大樣本數(shù)據(jù)庫(kù)的問題,且具有很好的魯棒性和隱藏成功率,具有較強(qiáng)的實(shí)用價(jià)值。
混沌系統(tǒng)對(duì)初值和控制參數(shù)具有很高靈敏度,且具有較好的偽隨機(jī)性和狀態(tài)遍歷性,因此,被廣泛用于信息加密算法中。Zhou 等[20]提出一種集成兩個(gè)一維混沌映射的混沌系統(tǒng)架構(gòu),如基于Logistic 映射和Sine 映射構(gòu)成LSS(Logistic-Sine system)系統(tǒng),結(jié)構(gòu)如圖1 所示。
圖1 中,L(a,Xn)和S(b,Xn)分別為L(zhǎng)ogistic 映射和Sine映射,參數(shù)分別為a 和b,n 為系統(tǒng)迭代次數(shù),mod 為模運(yùn)算,從而使輸出數(shù)據(jù)范圍為[0,1]。因此,系統(tǒng)輸出函數(shù)可以表示為
式中:r 為整數(shù)且r ∈(0,4],{X1,X2,…,Xn}為生成的混沌序列。該LSS 系統(tǒng)的混沌行為存在于整個(gè)參數(shù)設(shè)置范圍內(nèi),其混沌序列在[0,1]范圍內(nèi)均勻分布。由于系統(tǒng)中包含兩個(gè)種子映射,因此當(dāng)其中一個(gè)種子映射超過混沌范圍時(shí),系統(tǒng)依然具有很好的混沌行為。
圖1 LSS 系統(tǒng)架構(gòu)Fig.1 Logistic-Sine system architecture
小波變換是基于變換基和小波變換函數(shù)的一種變換方法,DWT 變換則是通過對(duì)連續(xù)小波變換的尺度和位移進(jìn)行離散化得到的,目前已被廣泛用于圖像處理中。
DWT 變換函數(shù)為
式中:ψj,k(t)為小波基函數(shù),a0和b0為變換因子。對(duì)函數(shù)f (t),其離散化變換系數(shù)cj,k可表示為
對(duì)圖像進(jìn)行DWT 分解和變換之后,其高頻分量包含圖像的細(xì)節(jié)及邊緣特征,低頻分量包含圖像的主要能量和紋理特征,具有較強(qiáng)的穩(wěn)定特性和抗干擾性能。因此,可以利用低頻分量計(jì)算DWT 系數(shù)為
式中f(x,y)為圖像變換后的頻率分量。
針對(duì)現(xiàn)有基于特征映射的無載體信息隱藏方法容量不夠、需要構(gòu)建大樣本數(shù)據(jù)庫(kù)這兩個(gè)問題,本文提出一種基于混沌塊置亂的無載體信息隱藏算法,具體算法流程如圖2 所示。對(duì)于給定的載體圖像,首先將其轉(zhuǎn)換為灰度圖,并根據(jù)秘鑰K 對(duì)其進(jìn)行混沌塊置亂。然后,將置亂后的圖像分成J 塊,分別進(jìn)行DWT 變換。提取各圖像塊的低頻系數(shù),根據(jù)相鄰塊之間的系數(shù)大小關(guān)系生成對(duì)應(yīng)的長(zhǎng)度為N 比特的魯棒哈希序列(圖中以J=9,N=8 為例)。不同秘鑰值對(duì)應(yīng)不同的置亂方式,生成的哈希序列也不同,因此,需要構(gòu)建哈希序列與秘鑰K 的索引表。當(dāng)發(fā)送方需要進(jìn)行秘密信息傳遞時(shí),對(duì)秘密信息進(jìn)行分段預(yù)處理之后,在索引表中查詢與秘密信息相同的哈希序列所對(duì)應(yīng)的秘鑰值,將載體圖像和秘鑰值發(fā)送給接收方。接收方根據(jù)載體圖像和秘鑰即可提取對(duì)應(yīng)的秘密信息。
圖2 基于圖像混沌塊置亂的無載體信息隱藏算法Fig.2 Coverless information hiding based on chaotic scrambling of image blocks
信息隱藏包括以下過程:
(1)給定載體圖像P0,將其轉(zhuǎn)換成灰度圖Pg。
(2)對(duì)Pg進(jìn)行混沌塊置亂。其中,混沌系統(tǒng)LSS的參數(shù)由秘鑰K 計(jì)算得到[21]。將秘鑰K 轉(zhuǎn)換為e bit的二進(jìn)制數(shù)bebe-1…b1,最高(e~d)bit 代表映射的各信息段在秘密信息序列中的排列序號(hào),其余d 個(gè)低比特分別代表混沌映射的各個(gè)參數(shù)值,具體含義如圖3 所示。
混沌映射參數(shù)計(jì)算如下
圖3 秘鑰K 各比特的含義Fig.3 Meaning of each bit of secret key K
式中s 表示各信息段排列序號(hào),用于接收端對(duì)秘密信息的恢復(fù)。具體流程如算法1 所示。
算法1 混沌塊置亂
輸入:灰度圖像Pg,秘鑰K。
輸出:塊置亂圖像Ps。
(a)將Pg大小調(diào)整為512像素×512像素,并將其分成M ×M 塊;
(b)根據(jù)式(5~10),從秘鑰K 計(jì)算混沌序列的各個(gè)參數(shù),并生成混沌序列L=LSS(X0,r),L 的長(zhǎng)度為2M;
(c)將L 分成兩個(gè)長(zhǎng)度為M 的序列L1和L2,并分別對(duì)其按元素大小排序,生成索引向量I1和I2;
(d)由向量I1和I2進(jìn)行循環(huán)內(nèi)移后,生成置亂矩陣;
(e)根據(jù)置亂矩陣,實(shí)現(xiàn)對(duì)載體圖像Pg置亂,生成置亂圖像Ps。
(3)將塊置亂圖像Ps分成J 塊,分別對(duì)每塊圖像pi進(jìn)行DWT 變換,采用的小波基為rbio1.1,并取其低頻分量
(4)計(jì)算各圖像塊的低頻分量的系數(shù)平均值di。
(5)根據(jù)相鄰塊di值的大小關(guān)系,生成魯棒哈希序列h1h2,…,hN。
(6)修改秘鑰K,重復(fù)步驟(1~5),構(gòu)建索引表,不同的哈希序列對(duì)應(yīng)不同的秘鑰K 值。
(7)對(duì)秘密信息進(jìn)行預(yù)處理,將其分成每N bit 為一段,不足N 比特時(shí)在序列尾部填充“0”。針對(duì)每一段N bit 序列,從索引表中查詢其對(duì)應(yīng)K 值。
(8)將載體圖像及秘鑰K 發(fā)送給秘密信息接收方。
(9)秘密信息接收方根據(jù)步驟(1~5)進(jìn)行各秘密信息段的提取,同時(shí),根據(jù)式(11)可從秘鑰K 計(jì)算各信息段的排列序號(hào),從而成功恢復(fù)完整的秘密信息。
本文從信息隱藏容量、隱藏成功率、算法魯棒性及計(jì)算效率4 個(gè)方面對(duì)算法進(jìn)行了性能測(cè)試和分析,并復(fù)現(xiàn)了現(xiàn)有的基于像素(Pixel-based)計(jì)算的算法[10]、基于SIFT 特征哈希(Hash-based)[12]的算法、基于DCT 變換(DCT-based)的算法[16]和基于DWT 變換(DWT-based)的算法[17],與本文算法進(jìn)行了性能對(duì)比。
測(cè)試中的實(shí)驗(yàn)環(huán)境為:Intel(R)Core(TM)i7-6500CPU@2.50 GHz,16.00 GB RAM,采用的軟件是Matlab2018 和MySql Workbench6.3。
容量問題是目前無載體信息隱藏算法的主要問題,目前已有的基于特征映射的算法大多是將一張圖像映射到一個(gè)信息序列,因此信息序列的長(zhǎng)度N 越大,對(duì)應(yīng)的隱藏信息容量就越大。但是N 越大,所需要的樣本庫(kù)越大,算法效率、隱藏成功率和魯棒性都會(huì)降低。
在本文提出的算法中,假設(shè)一張?jiān)紙D像可映射的信息比特?cái)?shù)為N,將圖像Pg分成M ×M 塊,則經(jīng)過塊置亂可生成的新圖像數(shù)量W 為
因此,經(jīng)過塊置亂后可映射的信息比特?cái)?shù)為W ×N,隱藏信息容量大大提高。表1 是本文算法信息隱藏容量與已有算法的對(duì)比,Pixel-based 算法[10]和Hash-based 算法[12]中每張圖像映射的信息分別為8 bit 和18 bit,DCT-based 算法[16]、DWT-based 算法[17]和本文算法中每張圖像映射的信息比特?cái)?shù)與圖像進(jìn)行DCT 或DWT 變換時(shí)的分塊數(shù)目J 相關(guān),為方便比較,這里均假設(shè)J=9?;贕AN 網(wǎng)絡(luò)的算法(GAN-based)[22]中,假設(shè)輸入的噪聲向量維度為100,映射為3 位二進(jìn)制數(shù)。
表2 比較了不同算法承載同樣秘密信息所需圖像數(shù)量。假設(shè)Pixel-based 算法、DCT-based 算法和DWT-based 算法中,每張圖像映射的信息量均為N=8 bit,且不考慮信息序列補(bǔ)零等帶來的額外信息開銷??梢姡趥鬟f長(zhǎng)度分別為1 Byte、10 Byte、100 Byte 和1 KByte 的秘密信息時(shí),本文算法所需的載體圖像數(shù)量遠(yuǎn)小于其他同類型方案。
表1 每張圖像信息隱藏容量比較Table 1 Comparison of information hiding capacity of each image
表2 承載同樣秘密信息所需圖像數(shù)量比較Table 2 Comparison of the number of images needed to hide the same secret information
對(duì)基于特征映射的信息隱藏來說,所提取的特征序列既要保證魯棒性要求,同時(shí)也應(yīng)該反應(yīng)特征的差異性,因此,在給定數(shù)據(jù)庫(kù)的前提下,信息隱藏成功率也是衡量信息隱藏方案的重要指標(biāo)。假設(shè)每張圖像映射N bit,當(dāng)前圖像庫(kù)可映射的不同信息段數(shù)量為k,則信息隱藏成功率為
從256_ObjectCategories 數(shù)據(jù)集中隨機(jī)選擇1 000 張圖像構(gòu)成樣本庫(kù),對(duì)Pixel-based 算法[10]、DCT-based 算法[16]、DWT-based 算法[17]和本文算法的隱藏成功率進(jìn)行了測(cè)試。測(cè)試中,這4 種算法均設(shè)置為每張圖像映射8 bit 信息。結(jié)果如圖4 所示,可見,隨著圖像樣本數(shù)的增長(zhǎng),隱藏成功率隨之增長(zhǎng)。在載體圖像數(shù)量相同時(shí),本文算法的信息隱藏成功率遠(yuǎn)遠(yuǎn)高于其他算法。同時(shí),圖像置亂塊越小,即置亂分塊數(shù)M 越大,可生成的新圖像越多,隱藏成功率也越高。當(dāng)置亂分塊數(shù)M 為4 時(shí),僅需要50 張載體圖像,就可達(dá)到95%左右的隱藏成功率,而其他算法僅有15%左右的隱藏成功率。因此,本算法用于構(gòu)建和存儲(chǔ)載體圖像庫(kù)的開銷遠(yuǎn)小于其他算法。
圖4 信息隱藏成功率Fig.4 Success rate of information hiding
本文分別測(cè)試了算法在JPEG 壓縮、噪聲、濾波和裁剪等攻擊下的魯棒性能,并與現(xiàn)有算法進(jìn)行了對(duì)比。在測(cè)試中,將每張圖像映射的N bit 視為一個(gè)信息塊,采用誤塊率作為衡量標(biāo)準(zhǔn),將其定義為
式中:BLc是接收完全正確的信息塊數(shù),BLs為發(fā)送的總信息塊數(shù)。設(shè)N=8,從表3 可見,本文算法在抗JPEG 壓縮、高斯噪聲、椒鹽噪聲、散斑噪聲、中心裁剪和直方圖均衡等攻擊上,性能均超過現(xiàn)有算法。
表3 魯棒性能對(duì)比Table 3 Comparison of robustness
DCT 算法[16]、DWT 算法[17]和本文算法的計(jì)算復(fù)雜度都與DCT 或DWT 變換時(shí)的分塊數(shù)J 相關(guān),但本文算法同時(shí)增加了對(duì)圖像進(jìn)行混沌塊置亂的計(jì)算開銷。假設(shè)混沌置亂的分塊數(shù)為M ×M,其計(jì)算開銷隨著M 的增大而增加,如表4 所示。
表5 為平均隱藏1 字節(jié)秘密信息時(shí),不同算法所需的時(shí)間對(duì)比,其中DCT 算法[16]、DWT 算法[17]和本文算法中圖像分塊數(shù)J 設(shè)為8,本文算法中混沌塊數(shù)M 設(shè)為32。由于增加了混沌塊置亂,因此本文算法時(shí)耗略高于其他算法。
表4 混沌塊置亂的時(shí)耗Table 4 Time consumption of chaotic block scrambling
表5 算法效率對(duì)比Table 5 Comparison of algorithm efficiency
從魯棒性能測(cè)試結(jié)果可見,在載體圖像遭受壓縮、噪聲和濾波等攻擊時(shí),本算法具備較強(qiáng)的抗攻擊能力。同時(shí),無載體信息隱藏不會(huì)對(duì)載體圖像進(jìn)行修改,不易被隱寫分析算法檢測(cè),因此,具有極高的安全性。
無載體信息隱藏不需要對(duì)載體進(jìn)行修改,具有極強(qiáng)的抗隱寫分析能力,但是目前已有的基于特征映射的無載體信息隱藏算法容量有限,且大多需要構(gòu)建較大樣本庫(kù)。本文提出一種基于混沌塊置亂和DWT 變換的無載體信息隱藏算法,對(duì)載體圖像進(jìn)行混沌塊置亂以后可以映射到多個(gè)信息序列。實(shí)驗(yàn)表明,與現(xiàn)有算法相比,該算法獲得了信息隱藏容量和隱藏成功率的較大提升,具有較強(qiáng)的魯棒性。同時(shí),該算法架構(gòu)簡(jiǎn)單、傳輸負(fù)載小,具有較強(qiáng)的應(yīng)用價(jià)值。