鄭思飛,馮子婧,劉成語(yǔ),陳日清,柳曉龍
(福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院,福建 福州 350002)
在信息技術(shù)日益發(fā)展的當(dāng)今時(shí)代,云存儲(chǔ)將數(shù)據(jù)存儲(chǔ)服務(wù)帶入了一個(gè)新時(shí)代,為大眾提供了便捷的網(wǎng)絡(luò)訪問(wèn)和數(shù)據(jù)共享方式。近年來(lái),隨著云存儲(chǔ)技術(shù)的飛速發(fā)展,存儲(chǔ)在第三方數(shù)據(jù)庫(kù)中的云端圖像文件與日俱增,然而隨之而來(lái)的是日益增多的泄密事件[1]。在此背景下,用戶(hù)對(duì)將含有個(gè)人隱私或敏感數(shù)據(jù)的內(nèi)容直接暴露在開(kāi)放的信道或不可靠的數(shù)據(jù)庫(kù)中頗具顧慮。因此,基于保證隱私性等目的,圖像所有者有必要在圖像傳輸至云端服務(wù)器之前先進(jìn)行加密,避免未經(jīng)授權(quán)的訪問(wèn)。
目前,學(xué)者們已經(jīng)提出了許多基于頻域或空間域的圖像加密方法,以保護(hù)云端圖像[2 - 4]。頻域圖像加密方法[5]通常被設(shè)計(jì)為在頻域中使用安全密鑰系數(shù)更改圖像數(shù)據(jù)或更改變換函數(shù),例如離散分?jǐn)?shù)階傅里葉變換、量子傅里葉變換和倒數(shù)正交參數(shù)變換等,以達(dá)到加密圖像的目的??臻g域圖像加密方法[6]基于著名的替代置換網(wǎng)絡(luò),利用替換過(guò)程更改圖像像素值,并利用置換過(guò)程更改圖像像素位置。這些置換過(guò)程和替換過(guò)程是空間域圖像加密方法的核心,包括P-Fibonacci變換、隨機(jī)網(wǎng)格和混沌系統(tǒng)等技術(shù)??臻g域和頻域圖像加密方法都能夠以較高的安全性保護(hù)圖像,然而它們輸出的加密圖像在視覺(jué)上都類(lèi)似紋理或噪聲。從安全的角度來(lái)看,這種類(lèi)似紋理或噪聲的特征是明顯的視覺(jué)信號(hào),表明存在可能包含重要信息的加密圖像。因此,這些圖像無(wú)疑會(huì)引起攻擊者的關(guān)注,從而導(dǎo)致大量不同類(lèi)型的密碼分析、非法編輯甚至刪除圖像內(nèi)容等惡意攻擊與分析[7]。
針對(duì)上述問(wèn)題,Lee等人[8]曾試圖利用色彩轉(zhuǎn)換技術(shù)將原始圖像轉(zhuǎn)換成一幅同樣大小的可見(jiàn)秘密碎片馬賽克圖像,以達(dá)到圖像偽裝的目的。然而這種方法在解密時(shí)會(huì)造成圖像失真,并不能完整地還原出原始圖像。Bao等人[9]和Zheng等人[10]分別提出了基于離散小波變換DWT(Discret Wavelet Transform)與最低有效位修改的圖像偽裝加密算法,雖然能夠完整地還原原始圖像,但是偽裝加密后的圖像尺寸急劇增大,嚴(yán)重影響了存儲(chǔ)效率。為使偽裝圖像與原始圖像的大小保持一致,學(xué)者們相繼提出了基于圖像塊分類(lèi)的偽裝加密方法[11-13],其基本思想是根據(jù)圖像塊的標(biāo)準(zhǔn)差分別對(duì)原始圖像和目標(biāo)圖像進(jìn)行固定分位數(shù)分類(lèi),進(jìn)而實(shí)現(xiàn)不同圖像的自適應(yīng)分類(lèi)與塊之間的匹配。然而,以上基于塊分類(lèi)的轉(zhuǎn)換方式?jīng)]有考慮子塊間的邊緣失真問(wèn)題,偽裝加密后的圖像有較大失真,視覺(jué)質(zhì)量與安全性有待提高。
因此,為進(jìn)一步提高云端圖像存儲(chǔ)效率與偽裝圖像的視覺(jué)質(zhì)量,本文提出了一種新型的基于矢量量化VQ(Vector Quantization)[14]的圖像偽裝加密方法。在對(duì)原始圖像進(jìn)行偽裝加密之前,通過(guò)矢量量化將原始圖像轉(zhuǎn)化為VQ索引表,接著利用離散小波變換(DWT),以“明文-明文”的偽裝加密方式在掩蓋原始圖像內(nèi)容的同時(shí)隱蔽加密行為本身。本文方法不僅可以像傳統(tǒng)加密方法一樣以正常方式保護(hù)圖像,而且還提供了額外的視覺(jué)偽裝保護(hù)。實(shí)驗(yàn)結(jié)果表明,通過(guò)本文方法偽裝加密后的圖像具有良好的視覺(jué)效果與偽裝性能。
圖像偽裝加密階段提供一種“明文—明文”的新型圖像加密方式,可以從根本上掩蓋秘密圖像信息與加密行為本身。此階段擬引入一幅與原始圖像完全不同的參照?qǐng)D像,通過(guò)對(duì)圖像載體先后執(zhí)行矢量量化、預(yù)加密與偽裝轉(zhuǎn)換完成“原始圖像—參照?qǐng)D像”的轉(zhuǎn)換。圖像偽裝加密基本過(guò)程如圖1所示。
Figure 1 Image camouflage encryption process圖1 圖像偽裝加密過(guò)程圖
2.1.1 矢量量化
矢量量化(VQ)是一種圖像編碼技術(shù),具有框架簡(jiǎn)單和解碼高效的特性,廣泛應(yīng)用于圖像處理。在矢量量化過(guò)程中,首先將原始圖像分割為多個(gè)塊,每個(gè)塊由4*4個(gè)像素組成。假設(shè)原始圖像大小為4m*4n,則將該圖像分割為m*n個(gè)4*4大小的像素塊。當(dāng)圖像尺寸不能平均分割時(shí),需將原始圖像的最后一行與最后一列擴(kuò)展,使其長(zhǎng)寬補(bǔ)齊至4的倍數(shù)。量化過(guò)程中所使用的碼書(shū)是通過(guò)大量訓(xùn)練生成的數(shù)據(jù)集,包含許多稱(chēng)為代碼字(cw)的代表性圖像塊。通常碼書(shū)的行數(shù)為256,列數(shù)為16,如圖2所示。碼書(shū)通過(guò)矢量量化算法LBG(Linde Buzo Gray)生成,首先從網(wǎng)絡(luò)數(shù)據(jù)庫(kù)中選擇大量不同種類(lèi)的圖像用于訓(xùn)練,隨后將這些圖像分割為大小相同的塊,組成訓(xùn)練集,塊大小與上述矢量量化過(guò)程中的塊大小相同,即4*4。然后隨機(jī)選取256個(gè)塊作為初始碼字,即可得到初始碼書(shū)。分別以選出的256個(gè)初始碼字為重心,將訓(xùn)練集中的其他塊分配到最近的重心(以歐幾里得距離進(jìn)行判斷)。所有訓(xùn)練集將產(chǎn)生256個(gè)由4*4的塊組成的群落。針對(duì)每個(gè)群落計(jì)算出新的重心,比較新重心與舊重心之間的歐幾里得距離,如果比較結(jié)果都小于閾值,說(shuō)明群落的重心變化不大,已經(jīng)產(chǎn)生收斂。每個(gè)群的重心向量即為碼書(shū)。否則回到分配重心的步驟進(jìn)行循環(huán)。本文矢量量化過(guò)程中所有的圖像均使用同一碼書(shū)。
在矢量量化過(guò)程中,計(jì)算每個(gè)原始圖像塊相對(duì)應(yīng)的16個(gè)像素值與碼書(shū)中每一行的16個(gè)值的歐幾里得距離,得到的歐幾里得距離最小的那一行,即表示該行與原始圖像塊最為相似,可以用該行的值代替原始圖像中的像素值,并將該行對(duì)應(yīng)的行號(hào)存入VQ索引表中。對(duì)原始圖像中的每一個(gè)塊分別執(zhí)行上述相同的操作,將所有塊對(duì)應(yīng)的值存入VQ索引表中,即得到VQ索引表,具體實(shí)例如圖2所示。
Figure 2 Examples of vector quantization圖2 矢量量化實(shí)例
2.1.2 偽裝加密
無(wú)線傳感器網(wǎng)絡(luò)初始部署以及改進(jìn)的單目標(biāo)粒子群算法覆蓋優(yōu)化和考慮安全連通度以及網(wǎng)絡(luò)覆蓋率多目標(biāo)粒子群算法覆蓋優(yōu)化以及改進(jìn)的多目標(biāo)粒子群算法覆蓋優(yōu)化的網(wǎng)絡(luò)覆蓋率的仿真結(jié)果如圖2,圓表示節(jié)點(diǎn)的通信半徑。
經(jīng)過(guò)矢量量化后的VQ索引表將作為偽裝加密過(guò)程的輸入圖像,其大小為m*n。為了進(jìn)一步保護(hù)原始圖像的內(nèi)容以提升安全性,在將VQ索引表進(jìn)行偽裝加密之前需要對(duì)其進(jìn)行預(yù)加密處理。預(yù)加密通過(guò)排列和替換來(lái)改變VQ索引表中像素的位置和值的大小,其定義如式(1)所示:
P=T(O,K)
(1)
其中,P是經(jīng)過(guò)預(yù)加密處理之后得到的預(yù)加密圖像,O是VQ索引表,K是進(jìn)行預(yù)加密處理時(shí)所需要的密鑰,T(·)是預(yù)加密處理的變換函數(shù)。預(yù)加密處理所使用的預(yù)加密算法可以使用傳統(tǒng)加密算法。
在完成預(yù)加密過(guò)程之后,對(duì)預(yù)加密圖像進(jìn)行偽裝變換,以將其轉(zhuǎn)換為偽裝圖像,其定義如式(2)所示:
E=F(P,R)
(2)
其中,E表示最終的偽裝圖像,P表示經(jīng)過(guò)預(yù)加密處理的預(yù)加密圖像,R表示參考圖像。選取的參考圖像R的長(zhǎng)和寬需分別是預(yù)加密圖像P的長(zhǎng)和寬的4倍,與矢量量化前的原始圖像大小相同,即4m*4n。在偽裝轉(zhuǎn)換過(guò)程中,首先將參考圖像R進(jìn)行離散小波變換(DWT),得到4個(gè)子帶,分別為:水平和垂直方向上的低頻分量(CA)、水平方向上的低頻和垂直方向上的高頻分量(CH)、水平方向上的高頻和垂直方向上的低頻分量(CV)、水平和垂直方向上的高頻分量(CD)。隨后將預(yù)加密圖像經(jīng)過(guò)二進(jìn)制轉(zhuǎn)換后嵌入到經(jīng)過(guò)變換的參考圖像的CV和CD子帶中。最后將經(jīng)過(guò)變換的參考圖像進(jìn)行DWT逆變換,得到最終的偽裝圖像。
偽裝變換過(guò)程以圖3為例,假設(shè)參考圖像的大小為8*8,經(jīng)過(guò)矢量量化與預(yù)加密后的預(yù)加密圖像大小為2*2,圖中的每一個(gè)數(shù)字代表當(dāng)前像素點(diǎn)的像素值。首先將參考圖像進(jìn)行DWT變換得到4個(gè)子帶,由DWT的特性可知,分解得到的CA和CH分量包含了原始圖像的主要能量,而其他2個(gè)中頻分量CV與CD表達(dá)的是圖像的細(xì)節(jié)部分,代表的圖像信息相對(duì)較少,因此將預(yù)加密圖像P轉(zhuǎn)換為二進(jìn)制數(shù)值并嵌入CV和CD子帶中并不會(huì)影響偽裝圖像的視覺(jué)效果。為了降低嵌入原始圖像后參考圖像的失真率,CV和CD子帶中的每1個(gè)像素值只嵌入原始圖像像素值中的1位。以第1個(gè)像素59為例,其二進(jìn)制數(shù)為00111011,將其直接替換CV子帶的相應(yīng)位置的值即可完成嵌入操作。對(duì)圖像P中的所有像素值執(zhí)行完相同操作后,再將該經(jīng)過(guò)處理的參考圖像進(jìn)行DWT逆變換,即可得到最終的偽裝圖像。
從圖3中的例子可以看出,由于參考圖像經(jīng)過(guò)DWT變化后的CV和CD中的像素值普遍較小,故將其用數(shù)字0或1代替后對(duì)整體圖像的影響也較小。因此,最終得到的偽裝圖像像素值與參考圖像像素值差異不大,且一定程度上保留了像素之間的相關(guān)性,保證了最終偽裝圖像的視覺(jué)效果。將這樣一幅具有視覺(jué)意義的偽裝圖像放置到具有大量圖像的云環(huán)境中,他人很難將其與普通圖像區(qū)分開(kāi)來(lái),從而躲避了被攻擊的風(fēng)險(xiǎn),提升了云環(huán)境中圖像存儲(chǔ)的安全性。
Figure 3 Example of camouflage transformation圖3 偽裝變換實(shí)例
具有解密密鑰的授權(quán)用戶(hù)能夠從云環(huán)境中下載偽裝圖像,并恢復(fù)出原始圖像。具體過(guò)程如圖4所示。
Figure 4 Image restoration process圖4 圖像還原過(guò)程
圖像還原階段是偽裝加密階段的逆過(guò)程。首先將偽裝圖像進(jìn)行DWT變換,得到CA、CH、CV和CD子帶。隨后提取出CV和CD子帶中的像素值,按照嵌入階段相反的過(guò)程進(jìn)行重組即可得到預(yù)加密圖像,如圖5所示。從提取結(jié)果可知,偽裝轉(zhuǎn)換沒(méi)有在轉(zhuǎn)換過(guò)程中損失預(yù)加密圖像的任何信息,在保證安全性的基礎(chǔ)上也保證了信息的完整性。最后使用與預(yù)加密算法對(duì)應(yīng)的解密算法并使用解密密鑰K進(jìn)行解密,即可得到經(jīng)過(guò)矢量量化的VQ索引表。
Figure 5 Example of pre encrypted image extraction圖5 預(yù)加密圖像提取實(shí)例
對(duì)于VQ索引表中的每一個(gè)值,找到碼書(shū)中該碼字編號(hào)(cw)所對(duì)應(yīng)的16個(gè)像素值,即可將其恢復(fù)為原始圖像中所對(duì)應(yīng)的塊,如圖6所示。完成VQ索引表的所有塊恢復(fù)之后即可得到最終的恢復(fù)圖像。
Figure 6 Example of image restoration圖6 圖像恢復(fù)實(shí)例
PSNR=10×lg((255)2)/
(3)
其中,x(i,j)與x′(i,j)分別表示2幅圖像在位置(x,y)上的像素值。值得注意的是,30 dB為一幅重構(gòu)圖像的評(píng)價(jià)閾值,當(dāng)PSNR大于該閾值時(shí),2幅圖像之間的差異性很難被人眼識(shí)別。
Figure 7 Test images圖7 測(cè)試圖像
本文實(shí)驗(yàn)預(yù)加密過(guò)程使用分塊異或置亂加密算法,具體過(guò)程如下:首先將原始圖像分割為大小相同的塊,塊的數(shù)量為N。隨后隨機(jī)生成由N個(gè)0~255的隨機(jī)數(shù)組成的隨機(jī)序列作為加密秘鑰K1。每個(gè)塊中的每個(gè)像素值與隨機(jī)序列中對(duì)應(yīng)的隨機(jī)數(shù)進(jìn)行異或運(yùn)算,即可得到異或加密后的圖像。然后生成1~N的正整數(shù)的自然數(shù)列作為加密秘鑰K2,并按其順序?qū)Ξ惢蚣用芎蟮膱D像進(jìn)行置亂,得到經(jīng)過(guò)分塊異或置亂加密的圖像,即預(yù)加密圖像。
使用不同的原始圖像與不同的參考圖像得到的PSNR值如表1所示??梢钥闯?,PSNR值主要受到參考圖像的影響,不同的參考圖像對(duì)PSNR的影響較大,而不同的原始圖像對(duì)PSNR值影響較小,幾乎可以忽略不計(jì)。此外,實(shí)驗(yàn)中所有PSNR值均大于30 dB,所以從視覺(jué)上很難將參考圖像與偽裝圖像區(qū)別開(kāi)來(lái)。
Table 1 PSNR results of the proposed method after camouflage encryption
本文方法經(jīng)解密后可無(wú)損地恢復(fù)出經(jīng)矢量量化的VQ索引表,通過(guò)解碼VQ索引表可近似地恢復(fù)出原始圖像。表2展示了恢復(fù)圖像與原始圖像的PSNR結(jié)果,所有圖像的PSNR值在恢復(fù)后均超過(guò) 30 dB,2幅圖像之間的差異性很難被人眼識(shí)別,而且具有很高的壓縮視覺(jué)質(zhì)量。
Table 2 PSNR results of the proposed method after decryption
為了更好地展示出本文方法所具有的偽裝性能,將本文方法與Bao等人[9]和Zheng等人[10]提出的方法進(jìn)行對(duì)比。由于本文方法使用的原始圖像與參考圖像大小均為512*512,而B(niǎo)ao等人和Zheng等人提出的方法只能將具有參考圖像1/4大小的原始圖像嵌入到參考圖像中,即只可將256*256大小的原始圖像偽裝成512*512的參考圖像,因此,Bao等人和Zheng等人提出的方法偽裝加密后的圖像尺寸將急劇增大,嚴(yán)重影響了云端圖像的存儲(chǔ)效率。
從偽裝后的圖像視覺(jué)效果的角度出發(fā),以原始圖像A嵌入到參考圖像F為例,圖8顯示了本文方法與Bao等人所提方法偽裝加密后圖像視覺(jué)效果的對(duì)比結(jié)果。從圖8中可以看出,本文方法的偽裝加密圖像和普通圖像并無(wú)太大差異。而B(niǎo)ao等人所提方法的偽裝加密圖像雖然在外觀上與參考圖像之間具有一定的相似度,但其圖像上顯現(xiàn)的條狀曲線頗為明顯,容易使人將其與普通圖像區(qū)分開(kāi)來(lái)。因此,相比于Bao等人所提方法,本文方法偽裝加密后的圖像視覺(jué)效果更優(yōu),具有更好的偽裝性。
Figure 8 Visual effect comparison of camouflage encrypted image圖8 偽裝加密圖像視覺(jué)效果對(duì)比
為進(jìn)一步對(duì)比不同方法偽裝加密后的圖像視覺(jué)效果,表3展示了本文方法與Bao等人[9]和Ping等人[12]所提方法的PSNR值對(duì)比結(jié)果。
Table 3 Comparison of PSNR values after camouflage encryption
從表3中可以看出,在相同的原始圖像與參考圖像條件下,本文方法的PSNR值均高于Bao等人與Ping等人所提方法的。3種方法在面對(duì)較為平滑的參考圖像時(shí)PSNR值都比較高,都表現(xiàn)出較為良好的特性。因此,總體來(lái)看,本文提出的方法在各種條件下都表現(xiàn)出了更好的性能,能夠?yàn)閳D像偽裝加密提供更高的安全保障。
本文提出了一種新型的圖像偽裝加密方法,利用矢量量化與離散小波變換的特性,以“明文-明文”的偽裝加密方式從根本上掩蓋了原始圖像在云存儲(chǔ)環(huán)境中的內(nèi)容與加密行為。本文方法不僅可以像傳統(tǒng)加密方法一樣以正常方式保護(hù)圖像,而且還提供了額外的視覺(jué)偽裝保護(hù)。實(shí)驗(yàn)結(jié)果表明,本文方法在偽裝加密過(guò)程中可以很好地保留原始圖像的圖像信息。此外,最終產(chǎn)生的偽裝圖像在視覺(jué)效果與PSNR值上都表現(xiàn)出了良好的性能。與相關(guān)研究相比,本文方法不僅能夠有效提高云端圖像的存儲(chǔ)效率,而且還具有更好的視覺(jué)效果與偽裝性。目前,本文方法的偽裝圖像在不同類(lèi)型噪聲、扭曲、旋轉(zhuǎn)和裁剪等攻擊下,不能恢復(fù)出原始圖像。未來(lái)我們將進(jìn)一步研究具有魯棒性的偽裝加密方法,為圖像偽裝加密提供更高的安全保障。