易 爽, 周 娟
(1.物證技術(shù)重慶市高校工程研究中心, 重慶 4000120; 2.西南政法大學(xué)刑事偵查學(xué)院, 重慶 4000120)
數(shù)字圖像作為最常用的一種媒體資源被廣泛應(yīng)用到生活、軍事、醫(yī)療、法律等各個領(lǐng)域。隨著云計(jì)算的興起和云存儲的廣泛應(yīng)用,原本在本地PC或手機(jī)端存儲、編輯、處理數(shù)據(jù)的模式逐漸變?yōu)橛稍朴?jì)算平臺提供服務(wù)和支持的模式。用戶在將自己的圖像存于第三方云服務(wù)提供商時(shí),又不信任對方,因此,需要將自己的數(shù)據(jù)先進(jìn)行加密,再上傳到云服務(wù)中心。云服務(wù)提供商為了方便數(shù)據(jù)的管理和認(rèn)證,需要對所有數(shù)據(jù)打上標(biāo)記再存儲,這些標(biāo)記即隱藏的秘密信息,而這些過程完全不需要知道圖像的內(nèi)容信息。因此,信息隱藏過程是在圖像的密文域上進(jìn)行的。而對于一些數(shù)據(jù)認(rèn)證要求高的應(yīng)用場景要求信息的提取與圖像的恢復(fù)完全可逆,因此,密文域可逆信息隱藏(Reversible data hiding in encrypted domain)技術(shù)應(yīng)運(yùn)而生。
密文域信息隱藏技術(shù)為網(wǎng)絡(luò)安全提供新的方法和技術(shù)支持,在眾多領(lǐng)域都有較大的應(yīng)用需求。比如在醫(yī)療健康領(lǐng)域,為了保護(hù)患者的隱私,遠(yuǎn)程醫(yī)療和診斷中的醫(yī)學(xué)圖像需要先經(jīng)過加密再存儲和傳輸,管理者需要在密文圖像中嵌入患者的性別、年齡、診斷結(jié)果等身份認(rèn)證信息和病歷信息[1]。整個加密和信息提取過程都需要完全可逆,以避免因數(shù)據(jù)錯誤而導(dǎo)致的醫(yī)療糾紛事件。再比如國家機(jī)密文件管理系統(tǒng)中[2],對于高級別的機(jī)密文件,即使加密也不能任意在公網(wǎng)上傳輸。為了防止因人為因素造成的文件泄露,可以在密文文件中加上指明文件密級的標(biāo)記,這樣當(dāng)高密級文件在公網(wǎng)上傳輸時(shí)就能被網(wǎng)關(guān)攔截下來。因此,密文域信息隱藏技術(shù)在數(shù)據(jù)的保密通信和云計(jì)算環(huán)境下的存儲和管理中都起著舉足輕重的作用,是當(dāng)前隱私保護(hù)研究的重點(diǎn)和熱點(diǎn)之一。
密文域可逆信息隱藏系統(tǒng)一般包含3個參與者,即圖像持有者、信息隱藏者、接收方。整個系統(tǒng)框架如圖1所示。首先,圖像持有者將載體圖像C進(jìn)行加密,然后將生成的密文圖像E傳給信息隱藏者;其次,信息隱藏者將自己的秘密信息S嵌入到密文圖像中,得到載密密文圖像M;最后,接收方從載密圖像中提取出秘密信息S并恢復(fù)出原始圖像C。值得注意的是,在加密、解密、信息隱藏、信息提取時(shí),都需要相應(yīng)的密鑰,為了簡化流程,在此不作過多描述。
圖1 密文域可逆信息隱藏系統(tǒng)框架
根據(jù)信息提取和圖像解密兩個步驟是否可分,將密文域可逆信息隱藏算法分為兩個大類:不可分離的算法和可分離的算法。對于不可分離的算法,信息提取和圖像解密是同時(shí)進(jìn)行的,信息提取是基于解密圖像的平滑度分析;對于可分離的算法,根據(jù)信息提取和圖像解密的順序不同,又可分為先解密后提取,和先提取后解密兩個子類。對于先解密后提取的算法,假如接收方只有圖像解密密鑰,則可以對載密密文圖像直接進(jìn)行解密,得到載密明文圖像C’,該圖像與原始載體圖像人眼從直觀上看基本沒有區(qū)別;假如接收方同時(shí)具有信息提取密鑰,則可以進(jìn)一步對信息進(jìn)行提取,獲得秘密信息S,進(jìn)而通過圖像恢復(fù)算法還原出原始圖像C。對于先提取后解密的算法,接收方先從載密密文圖像中提取秘密信息S,得到密文圖像E,再對其解密得到原始載體圖像C。
密文域的可逆信息隱藏技術(shù)由美國學(xué)者W.Puech等人[3]在2008年的SPIE會議上首次提出,然而該文當(dāng)時(shí)并沒有引起學(xué)術(shù)界的重視,隨后的兩年也沒有任何相關(guān)成果發(fā)表,直到2011年,Zhang[1]在IEEE SPL上發(fā)表了又一篇論文之后,才逐漸掀起了這個領(lǐng)域的研究熱潮。下文便對密文域可逆信息隱藏技術(shù)近十年來的研究和進(jìn)展進(jìn)行整理,對其經(jīng)典算法和相應(yīng)的改進(jìn)措施進(jìn)行分析,最后對主要算法進(jìn)行性能比較。
對于不可分離的密文域可逆信息隱藏算法,其基本思想是利用兩種直接解密圖像的平滑度來判斷嵌入的比特信息是0還是1,由此判定解密圖像是兩者之一的哪一個,因此,此類算法對于紋理較多的圖像來說會存在信息提取的誤差。
在Zhang[1]的方法中,原始圖像首先被分割成不重疊的圖像塊,每個圖像塊用流密碼進(jìn)行加密。信息隱藏階段,每個密文圖像塊嵌入1比特信息,其具體操作是先將當(dāng)前密文圖像塊的像素隨機(jī)分成兩組,記為S0和S1,當(dāng)嵌入的比特信息為0時(shí),將S0的所有像素的3 LSB(Least Significant Bit)位進(jìn)行翻轉(zhuǎn)(0變?yōu)?,1變?yōu)?),若嵌入的比特信息為1,則對S1的所有像素3 LSB位進(jìn)行翻轉(zhuǎn)。信息提取階段,先對每個載密密文圖像塊直接進(jìn)行解密,再按照與信息隱藏階段同樣的方式將每個解密圖像塊的像素分割成S0和S1兩個組,分別對S0和S1兩個組的像素的3 LSB位進(jìn)行翻轉(zhuǎn),得到兩個解密圖像塊C0和C1,最后通過設(shè)計(jì)波動函數(shù)來計(jì)算C0和C1的平滑度,若C0的平滑度更高,則嵌入信息為0,而C0即為最終解密的圖像塊,否則,嵌入信息為1,而C1即為最終解密的圖像塊。
上述算法的優(yōu)點(diǎn)在于計(jì)算復(fù)雜度低,易于實(shí)現(xiàn),由于信息隱藏只改變了低3位的比特值,因此,即使信息提取錯誤,直接解密圖像的PSNR(Peak Signal to Noise Ratio)值能始終保持37.9 dB以上。但此算法嵌入率比較低,且信息提取和圖像恢復(fù)的正確性依賴于原始圖像的特征,因此,對于圖像塊較小或者紋理較為豐富的圖像來說,存在較大的信息提取誤差。
隨后,學(xué)者們對Zhang[1]的算法進(jìn)行了改進(jìn),比如考慮圖像塊之間的相關(guān)性設(shè)計(jì)性能更好的波動函數(shù)來降低信息提取的錯誤率[4];通過對原始圖像像素值進(jìn)行十字型精確預(yù)測來增大嵌入率,并通過對信息的重復(fù)嵌入來減少提取誤差和增強(qiáng)容錯性[5-6];采用公鑰調(diào)制機(jī)制和位異或方式來嵌入信息,并設(shè)計(jì)SVM(Support Vector Machine)分類器來降低信息提取錯誤率[7];通過對MSB(Most Significant Bit)位的替換來嵌入信息和提升圖像恢復(fù)性能[8]等等。
以改進(jìn)的文獻(xiàn)[7]算法為例,作者先將圖像分為大小相等的不重疊的圖像塊,然后用流加密的方式對每個圖像塊進(jìn)行加密。在信息隱藏階段,先根據(jù)嵌入容量設(shè)計(jì)一系列跟圖像塊大小和位深度一致的公鑰Q0,Q1,…,QS-1,其中S=2n,n為每個圖像塊嵌入的信息比特?cái)?shù)。其次,對于每個密文圖像塊,將待嵌入的n比特信息轉(zhuǎn)換為對應(yīng)的公鑰Qi,再跟圖像塊進(jìn)行比特級異或得到最終含密文的圖像。如,假設(shè)每個圖像塊嵌入3比特信息,則設(shè)計(jì)8個公鑰Q0,Q1,…,Q7,再將3比特二進(jìn)制數(shù)信息轉(zhuǎn)換為十進(jìn)制數(shù)i,找到對應(yīng)的公鑰Qi,利用該公鑰與密文圖像塊進(jìn)行比特級異或。信息提取和圖像恢復(fù)階段,先對含密文的圖像塊進(jìn)行流密碼的直接解密操作,再用S個公鑰依次對直接解密的含密文圖像塊進(jìn)行比特級異或,得到S個最終解密的圖像塊。由于S個最終解密圖像塊中只有一個才是原始圖像塊,通過SVM技術(shù)對這S個像素塊進(jìn)行平滑度度量,平滑度最高的那個圖像塊即為原始圖像塊,再通過圖像塊的編號計(jì)算出對應(yīng)嵌入的二進(jìn)制信息。此算法通過設(shè)計(jì)公鑰機(jī)制,不需要額外的信息隱藏密鑰,增強(qiáng)了算法的安全性;除此之外,采用SVM分類器大大提高了信息提取和圖像恢復(fù)的準(zhǔn)確性。
為了使算法的應(yīng)用更具靈活性,大量的學(xué)者們致力于研究可分離密文域的可逆信息隱藏方案。現(xiàn)有的可分離方案可以分為兩個類別:加密前預(yù)留空間來進(jìn)行信息隱藏和加密后騰出空間嵌入信息。下面,對這兩類算法分別進(jìn)行總結(jié)和分析。
2.2.1 加密前預(yù)留空間
由于密文圖像冗余度低,在密文圖像中騰出空間來嵌入信息的難度較大,因此,Ma等人[9]首次提出在明文圖像中先預(yù)留出承載秘密信息的空間,再對圖像進(jìn)行加密的方案。加密前預(yù)留空間的方法大致采用了以下兩類技術(shù):基于傳統(tǒng)可逆信息隱藏技術(shù)和基于壓縮編碼技術(shù)。
(1)基于傳統(tǒng)可逆信息隱藏技術(shù)
Ma等人[9]的文獻(xiàn)先將載體圖像分割成兩部分,平滑度高的區(qū)域和平滑度低的區(qū)域;其次,用傳統(tǒng)可逆信息隱藏中的直方圖平移法[10]將平滑度低的區(qū)域的低位(低1位至低3位)比特值嵌入到平滑度高的區(qū)域;再次,對圖像進(jìn)行流加密,并在密文圖像中標(biāo)出哪些位置可供信息隱藏;最后,信息隱藏者根據(jù)標(biāo)識將秘密信息采用位替換的方式進(jìn)行嵌入。由于信息提取不需要利用載體圖像的內(nèi)容信息,因此,其是可分離且無損的。隨后,Mathew等人[11]在此基礎(chǔ)上提出了改進(jìn)方案,即將圖像分割成更精細(xì)的塊來更好地劃分平滑區(qū)域和非平滑區(qū)域,以便提高騰出空間的容量。
(2)基于壓縮編碼技術(shù)
為了在載體圖像中騰出空間,自然而然會聯(lián)想到利用壓縮編碼技術(shù)。因此,Cao[12]等人借鑒Ma等人[9]論文的基本思想,先對圖像塊進(jìn)行稀疏表示,將殘差較小的圖像塊(即平滑的圖像塊)編碼后用作空間預(yù)留,其對應(yīng)的殘差則用傳統(tǒng)可逆信息隱藏的方式隱藏到非平滑圖像塊中,以便恢復(fù)時(shí)達(dá)到完全無損。Chen等人[13]結(jié)合擴(kuò)展的游程長度編碼和基于圖像塊的MSB平面重排機(jī)制,將MSB平面進(jìn)行壓縮來騰出空間。Yin等人[14]采用中位數(shù)邊緣檢測器(Median Edge Detector)對圖像進(jìn)行預(yù)測,然后對原像素值和預(yù)測像素值相同的高比特位進(jìn)行可變長度的霍夫曼編碼,得到較高的壓縮效率。
2.2.2 加密后騰出空間
對于計(jì)算能力不足的終端,比如移動終端用戶,進(jìn)行大量的計(jì)算來處理加密前騰出空間的操作可能不適用,因此部分學(xué)者致力于開發(fā)加密后騰出空間來進(jìn)行信息隱藏的算法。對于此類算法,從技術(shù)上主要分為以下3類:基于同態(tài)加密技術(shù)、基于壓縮技術(shù)和密文冗余保留技術(shù)。
(1)基于同態(tài)加密技術(shù)
同態(tài)加密的基本思想是對明文進(jìn)行加法/乘法運(yùn)算后再進(jìn)行加密,與加密后對密文進(jìn)行相應(yīng)的加法/乘法運(yùn)算是等價(jià)的。這種加密算法使得在密文上的操作如同在明文上一般,等于間接地把明文中的信息冗余延伸到了密文中,而且又不破壞密文的安全性?;谶@個優(yōu)點(diǎn),同態(tài)加密廣泛應(yīng)用于圖像加密方案。這類算法先采用加同態(tài)機(jī)制對明文圖像進(jìn)行加密,如Paillier加密機(jī)制,然后通過同態(tài)屬性將信息隱藏到密文圖像中。
Chen等人[15]首次提出在密文域可逆信息隱藏中引入同態(tài)加密機(jī)制,該算法將每個像素分成一個偶整數(shù)和一個比特值,兩者之和等于原始像素值,然后對兩部分值分別用Paillier加密方案進(jìn)行加密;信息隱藏則通過修改密文中兩個相鄰像素第二個像素值來完成。在接收方,通過對解密的像素點(diǎn)進(jìn)行比較可提取出秘密信息和恢復(fù)原始圖像。此算法的優(yōu)點(diǎn)在于采用了公鑰加密機(jī)制,解決了圖像持有者、信息隱藏者與接收方共享密鑰所導(dǎo)致的安全問題,但由于像素值的拆分,每個密文圖像比原始圖像尺寸擴(kuò)大了一倍,并且在嵌入信息后,兩個加密部分的明文像素值之和大于255,因此始終存在溢出。
隨后,Shiu等人[16]和Li等人[17]的文獻(xiàn)中分別采用差擴(kuò)展技術(shù)[18]和直方圖平移技術(shù)[10]對上述算法進(jìn)行了改進(jìn)。Zhang等人[19]則采用Paillier和Damgard-Jurik[20]兩種機(jī)制進(jìn)行加密,提出了無損、可逆以及兩者結(jié)合的信息隱藏方案。由于Paillier加密方案本身的特性,上述同態(tài)加密的算法安全性高,但存在計(jì)算量大、像素位深度擴(kuò)張的問題,即密文圖像的像素比特位遠(yuǎn)大于明文圖像,這也無形中增加了存儲負(fù)擔(dān)。
(2)基于壓縮技術(shù)
在Zhang等人[21]的文獻(xiàn)中,作者先用流密碼對圖像進(jìn)行加密,然后對密文圖像的LSB位進(jìn)行分塊,每個塊再通過矩陣運(yùn)算來進(jìn)行壓縮,騰出的空間則用作信息隱藏。在本算法中,通過控制參數(shù)可以改變壓縮力度,通過增加LSB平面數(shù)量可以增加嵌入率。由于信息的嵌入直接采用位替換的方式,因此提取時(shí)直接讀取相應(yīng)位置的信息即可。由于圖像的恢復(fù)依靠失真函數(shù)來實(shí)現(xiàn),因此在壓縮力度較小或平滑度高的圖像中,圖像恢復(fù)可能存在有損情況。Zhang等人[22]的另一篇文獻(xiàn)同樣采用流密碼技術(shù)對原始圖像進(jìn)行加密,然后用LDPC碼(Low-Density Parity-check Code)對密文圖像進(jìn)行壓縮,基于對圖像恢復(fù)質(zhì)量的考慮,此算法僅對第4 LSB平面的一半比特?cái)?shù)據(jù)進(jìn)行壓縮。
(3)基于密文冗余保留技術(shù)
密文冗余保留技術(shù)是指在密文圖像中保留圖像的部分相關(guān)信息,并利用此相關(guān)信息和傳統(tǒng)可逆信息隱藏技術(shù)、編碼技術(shù)等進(jìn)行信息隱藏。Qian等人[20]的文獻(xiàn)采用映射函數(shù)將載體圖像的像素值一一映射到另外的值上,以達(dá)到加密的目的。信息隱藏則通過多進(jìn)制的方式來修改直方圖的值,將最高的直方映射到n個最低的直方中。Yi等人[23]使用下采樣的方式獲得原始圖像1/4的像素,并用這些像素去預(yù)測剩余3/4的像素,得到預(yù)測誤差,然后對下采樣圖像和預(yù)測誤差分別進(jìn)行加密,其中預(yù)測誤差用置亂的方式進(jìn)行加密。由于密文中預(yù)測誤差值同樣保留了形如拉普拉斯分布的直方圖統(tǒng)計(jì)信息,在信息隱藏階段,則通過直方圖平移的方式來隱藏信息。隨后,Yi等人[24]又提出改進(jìn)措施,使用帶權(quán)重的棋盤預(yù)測器來對下采樣的3/4的像素進(jìn)行預(yù)測,加密方式和文獻(xiàn)[23]類似,在信息隱藏階段通過對預(yù)測誤差進(jìn)行編碼的方式來完成。Yin等人[25]將圖像分成不重疊的塊,通過對圖像塊和圖像塊內(nèi)部的像素進(jìn)行隨機(jī)置亂的方式進(jìn)行加密。由于像素值沒有改變,因此,密文圖像和圖像塊保留了原始圖像的統(tǒng)計(jì)直方圖信息。信息隱藏則采用直方圖平移的方式來完成。由于僅僅是置亂操作,圖像加密的安全性不高,Yi等人[26]和Huang等人[27]則以像素塊為單位進(jìn)行流加密和圖像塊進(jìn)行置亂操作。在加密階段,由于同一個圖像塊中的像素采用同樣的隨機(jī)比特流進(jìn)行位異或運(yùn)算,因此,塊內(nèi)的像素相關(guān)性得以保留。在信息隱藏階段,兩者均采用了像素值預(yù)測誤差直方圖平移技術(shù)[28],只是前者引入了重復(fù)嵌入機(jī)制。實(shí)驗(yàn)表明,兩者的算法在增強(qiáng)了安全性的同時(shí)也提高了嵌入率。不同于Huang等人的方法,Yi等人的文獻(xiàn)[29]以像素塊為單位進(jìn)行取模的方式來修改像素值,并同樣采用塊置亂的方式來改變像素位置。信息隱藏階段則通過對塊內(nèi)像素值的預(yù)測誤差進(jìn)行二值編碼的方式來實(shí)現(xiàn)。
本節(jié)對密文域可逆信息隱藏的代表性算法進(jìn)行性能評估和總結(jié),包括加密前是否預(yù)留空間、加密方式、信息隱藏方式、圖像擴(kuò)張率、是否可分離、是否無損、嵌入率,其結(jié)果如表1所示。統(tǒng)一采用Lena圖像(如圖2所示)作為測試用例,其圖像尺寸為512×512像素,每個像素為8比特。嵌入率(單位:bpp,bit per pixel)和圖像擴(kuò)張率分別利用公式(1)和公式(2)進(jìn)行計(jì)算。由于基于Paillier加密的算法存在圖像擴(kuò)張,統(tǒng)一把載秘密文圖像轉(zhuǎn)換到每個像素8比特位深來進(jìn)行計(jì)算。
表1 密文域可逆信息隱藏算法性能評估
圖2 測試圖像Lena
(1)
(2)
由表1可以得出:從技術(shù)上來說,密文域的信息隱藏也沿用了明文域中的信息隱藏相關(guān)技術(shù),比如位替換、直方圖平移、直方圖修改等;從嵌入率來說,采用加密前預(yù)留空間的算法比加密后直接嵌入信息的算法嵌入率普遍要高,因?yàn)樵诿魑膱D像中做壓縮來騰出空間比直接在密文中操作要相對容易;從加密方式來看,采用Paillier加密的方式會加大密文圖像的尺寸,從而增大存儲空間;從信息的提取和圖像的恢復(fù)是否無損來說,采用可分離的方式設(shè)計(jì)的算法大多是無損的,而通過計(jì)算原始圖像平滑度的方式來恢復(fù)數(shù)據(jù)的一般都是有損的,這取決于原始圖像的平滑程度;從算法的功能性和靈活性來說,更多的學(xué)者致力于研究可分離的、無損的、嵌入率高的算法,而嵌入率和各方面性能也有了大幅度提高。
密文域信息可逆隱藏的算法眾多,基于篇幅限制,本文僅針對主流的算法作了歸納和分析,分別介紹算法的類別、所用的關(guān)鍵技術(shù)、以及對主要性能指標(biāo)進(jìn)行了總結(jié),并對相關(guān)的技術(shù)進(jìn)行了展望。隨著用戶對安全需求的不斷增加,密文域可逆信息隱藏技術(shù)將有更廣闊的發(fā)展空間。
近十年以來,密文域的可逆信息隱藏技術(shù)蓬勃發(fā)展,已經(jīng)取得了較多的研究成果,但同時(shí)也存在一些有待優(yōu)化的地方。綜上所述,密文域可逆信息隱藏技術(shù)未來的發(fā)展趨勢包括以下幾個方面:
(1)從安全性角度來說,由于加密是為了破壞原始載體的冗余,信息隱藏則是要依靠密文的冗余,兩者是對立的,在增強(qiáng)安全性的條件下勢必要降低嵌入率,因此,如何設(shè)計(jì)安全性高,同時(shí)又能滿足嵌入率需求的算法是學(xué)者們需要探究的問題之一。
(2)從評價(jià)標(biāo)準(zhǔn)來說,現(xiàn)有的評價(jià)機(jī)制基本是基于嵌入率和圖像恢復(fù)的質(zhì)量而言的,然而,在一味追求嵌入率的情況下就會導(dǎo)致弱化安全性,從而違背本研究領(lǐng)域的初衷。因此算法的評價(jià)應(yīng)該首先考慮安全性,其次才是嵌入率。