謝凱明,鄧家先
(海南大學(xué)信息科學(xué)技術(shù)學(xué)院,海南???570228)
為減小數(shù)字圖像存儲空間、降低傳輸帶寬、提高信息的安全性,數(shù)字圖像壓縮和加密技術(shù)成為當(dāng)前研究的一個熱點領(lǐng)域[1-11]。同時為提高數(shù)據(jù)傳輸?shù)膶崟r性,將SPIHT、EZW等壓縮算法與加密技術(shù)相結(jié)合成為一個新的研究方向[12-14]。文獻[12]提出先對小波系數(shù)使用標(biāo)準映射和logistic映射進行擴散和混淆來加密,再利用SPIHT算法進行壓縮,但是加密改變了圖像的能量分布和小波系數(shù)間的相關(guān)性,降低了圖像的壓縮效率。文獻[13]提出在EZW編碼的基礎(chǔ)上引入自適應(yīng)算術(shù)編碼來實現(xiàn)聯(lián)合壓縮加密,但是該算法使用的是固定密鑰,密鑰空間小、周期短、敏感性低,不能很好地抵抗攻擊。文獻[14]利用EZW編碼的漸進式傳輸特性和樹形結(jié)構(gòu)特征進行加密,取得了較好的壓縮加密效果,但是該算法將密文反饋到密鑰發(fā)生器,使得混沌映射的高精度迭代次數(shù)太多導(dǎo)致加密時間太長,降低了整個系統(tǒng)的運行效率。
針對文獻[12-14]存在的問題,本文提出的算法利用MQ算術(shù)編碼器對數(shù)據(jù)快速自適應(yīng)概率估計的特性,使用其對EZW編碼進行改進,結(jié)合chebyshev映射對初值、參數(shù)的高敏感性和線性反饋移位寄存器(Linear Feedback Shift Register,LFSR)的簡單易實現(xiàn)來產(chǎn)生混合混沌序列,并將其作為流密鑰對比特平面編碼產(chǎn)生的上下文和判決進行修正。加密過程約束在比特平面編碼和熵編碼之間進行,并不破壞小波變換后各分辨率子帶系數(shù)間的相關(guān)性。仿真結(jié)果表明,該算法不僅具有很好的安全性能和壓縮效率,而且具有較高的時間效率。
MQ編碼器是一種基于上下文CX(Context)的自適應(yīng)二進制算術(shù)編碼器,其自適應(yīng)的概率估計模型能夠使輸出的碼長逼近信源的熵,已經(jīng)廣泛應(yīng)用于JPEG2000、H.264等圖像和視頻壓縮編碼算法[15-16]。CX用于選擇編碼判決D(Decision)時所用的概率估計值,可以很好地降低信源的相關(guān)性。利用條件交換和概率估計狀態(tài)機中的貝葉斯學(xué)習(xí)過程實現(xiàn)符號概率模型自適應(yīng)過程,并采用位填充技術(shù)解決編碼中的進位問題,是一種高效率物理可實現(xiàn)的壓縮編碼算法。其算法如圖1所示,CODE0與CODE1編碼過程類似,未予列出。
圖1 MQ編碼算法流程圖
由圖1知,根據(jù)判決D的不同分別進行CODE0或者CODE1編碼過程。I(CX)用于索引Qe值,根據(jù)概率估計結(jié)果的不同對D進行大概率符號編碼(CODEMPS)或者小概率符號編碼(CODELPS)。因此,可以使用密鑰對D進行修正來改變原來的CODE0或者CODE1編碼過程,進而改變原來的CODEMPS或者CODELPS編碼過程;同時,也可以使用密鑰對CX進行修正,并通過I(CX)索引獲得新的Qe值來改變原來的概率空間,從而使得最后調(diào)用byteout()函數(shù)輸出的碼流發(fā)生變化來實現(xiàn)算術(shù)加密。
零樹編碼是由Shapiro提出的一種基于小波變換和比特平面編碼的方法[17],利用了小波變換后各級子帶系數(shù)在空間上和方向上所呈現(xiàn)出的帶間相似性進行數(shù)據(jù)壓縮,本文引入MQ算術(shù)編碼器對其進行改進,改進零樹編碼的框圖如圖2所示。
圖2 改進零樹編碼
由于MQ編碼器有CX和D兩個輸入?yún)?shù),現(xiàn)對比特平面編碼產(chǎn)生的判決使用相鄰系數(shù)或者相鄰集合的重要性進行分類,稱之為系數(shù)上下文或集合上下文。與優(yōu)化截斷的嵌入式分塊編碼(Embedded Block Coding with Optimized Truncation,EBCOT)[18-20]算法一樣,系數(shù)上下文進一步細化為零編碼上下文、幅值細化上下文、符號編碼上下文,其具體計算方法與EBCOT中的一致,這里不再贅述。下面闡述集合上下文的形成過程。以三級小波變換為例,零樹結(jié)構(gòu)如圖3所示。本文對具有相同分辨率的相鄰集合重要性進行分類來形成集合上下文CXS,集合的鄰居關(guān)系如圖4所示,將8個鄰居形成的256種上下文合并成4種集合上下文[13],CXS表示為
其中:“|”表示邏輯或運算,V0,V1,H0,H1,E0,E1,E2,E3表示X的鄰居,其取值為{0,1}(其中0表示不重要,1表示重要)。
圖3 零樹結(jié)構(gòu)
圖4 集合鄰居
本文采用chebyshev混沌映射迭代運算來產(chǎn)生混沌序列,并將其與基于LFSR產(chǎn)生的m序列進行非線性運算來生成最終的混合混沌序列密鑰,密鑰生成過程如圖5所示。
圖5 混合混沌序列密鑰的生成
chebyshev混沌映射的迭代方程為
設(shè)ni級LFSR產(chǎn)生的m序列的周期為Ti,則非線性序列x2[n]的周期為
其中r表示m序列的組數(shù)。顯然,經(jīng)非線性函數(shù)運算后,密鑰序列的復(fù)雜度會得到很大的提高。
本文提出算法的原理如圖6所示。
圖6 圖像聯(lián)合壓縮加密算法原理框圖
使用MQ編碼器對EZW算法進行改進,直接對離散小波變換后零樹的集合重要性和系數(shù)重要性進行編碼,將混合混沌序列作為流密鑰對比特平面編碼產(chǎn)生的數(shù)據(jù)對(CX,D)進行修正,并將修正后的(CX1,D1)送入MQ編碼器進行熵編碼,從而實現(xiàn)聯(lián)合壓縮加密。因為(CX1,D1)改變了MQ編碼時的概率空間,所以MQ編碼器不僅提高了數(shù)據(jù)的壓縮效率,而且在數(shù)據(jù)壓縮的同時實現(xiàn)了算術(shù)加密。解密解壓縮的過程與之相反,不予贅述。下面分別闡述判決修正和上下文修正的加密原理。
1)基于判決修正的算術(shù)加密原理如下:
設(shè)D=(d1,d2,…,dN)表示比特平面編碼產(chǎn)生的長度為N的二進制判決矢量,定義一種運算
其中key表示圖5所產(chǎn)生的混合混沌序列密鑰,D1=(d11,d12,…,d1N)也是長度為N的矢量,且每個元素仍然是二進制的。即利用流密鑰對判決進行某種修正來改變原來的判決,進而改變MQ編碼時的概率分布,從而實現(xiàn)算術(shù)加密。
其中f-1為式(4)對應(yīng)的逆運算,即要求式(4)定義的運算對正確密鑰是可逆的。本文采用異或運算對判決進行修正,每使用一次流密鑰進行加密后將其移位一次,以供下一次判決修正使用。
2)基于上下文修正的算術(shù)加密原理如下:
設(shè)原始上下文CX對應(yīng)的取值范圍為(m,m+1,…,m+L),經(jīng)密鑰修正后的上下文CX1對應(yīng)的取值范圍為(m,m+1,…,m+L'),其中m為該類上下文的初始值,L,L'分別表示原始上下文CX和修正上下文CX1的種類。上下文修正可以表示為
其中,g()為某種運算,key表示圖5所產(chǎn)生的混合混沌序列密鑰,n表示該類上下文出現(xiàn)的順序。使用式(6)進行上下文修正需要滿足以下要求[13]:
(1)因為MQ編碼器的概率跳轉(zhuǎn)規(guī)律由上下文和判決共同確定,這就要求原始上下文和修正后的上下文必須在MQ編碼器所使用的上下文的范圍之內(nèi),否則會改變不同類別上下文的概率分布,從而導(dǎo)致壓縮效率的降低;
(2)若在加解密過程中使用相同的流密鑰代入式(6)對比特平面編解碼產(chǎn)生的上下文進行修正,則送往MQ編、解碼器的上下文就會相同,進而不會產(chǎn)生上下文引起的解密錯誤。因為加解密使用相同的運算進行修正,所以式(6)不需要是可逆的;
(3)對于給定的原始上下文CX和密鑰key,對于不同的n,經(jīng)式(6)修正后的上下文CX1不能總是固定值,否則不能改變MQ編碼時的概率分布來實現(xiàn)算術(shù)加密。
為滿足上下文修正提出的三條要求,本文在每次加密前先對流密鑰key進行移位,再取移位后的最低若干位二進制數(shù)據(jù)dk與原始上下文CX進行運算,表示為
其中:mod()表示取模運算,m表示該類上下文的初始值,Lm表示修正上下文CX1的種類。
對本文提出的算法進行仿真,具體過程如下:
1)將原始圖像進行三級(9,7)離散小波變換,形成3個不同分辨率的子帶;
2)實驗選取r=4,k=8來產(chǎn)生混合混沌序列。為3個不同分辨率的子帶分配3組不同的密鑰初始值,隨機選擇對應(yīng)于不同分辨率級數(shù)l的LFSR和Chebyshev映射的初始值如表1。
表1 密鑰初始值
對應(yīng)不同LFSR級數(shù)的反饋函數(shù)如下
本文提出的算法中非線性函數(shù)表示為
其中,“m”表示對m取反運算,“⊕”表示異或運算。
3)將生成的混合混沌序列作為流密鑰對比特平面編碼產(chǎn)生的(CX,D)數(shù)據(jù)對進行修正,并將修正后的(CX1,D1)送入MQ編碼器進行熵編碼,從而實現(xiàn)圖像聯(lián)合壓縮加密。
采用大小為512×512的標(biāo)準8位灰度級圖像(Pepper,Barbara,Lena)對所提出的算法進行仿真,當(dāng)碼率分別為0.50 bpp(bit per pixel)、0.75 bpp、1.00 bpp 時,重建圖像的PSNR值如表2所示。從表中可以看出,相對于原始EZW算法,在使用MQ編碼器對EZW壓縮算法進行改進后,重構(gòu)圖像的PSNR值提高了2 dB左右;在使用混合混沌序列作為流密鑰對比特平面編碼產(chǎn)生的數(shù)據(jù)對(CX,D)修正進行算術(shù)加密后,重構(gòu)圖像的PSNR值提高了1 dB以上。
表2 原壓縮算法與本文算法重構(gòu)圖像的PSNR比較 dB
針對文獻[13]使用固定密鑰不能很好抵抗攻擊的缺點,本文使用混合混沌序列作為流密鑰來進行加密,下面分別從密鑰空間、密鑰敏感性、明文敏感性、加解密速度對本文提出的算法進行分析。
1)密鑰空間:因為二元域的異或相當(dāng)于相加運算,結(jié)合式(3)和表1,則生成的混合混沌序列密鑰的周期P為
其中S和T分別表示混沌序列x1[n]和非線性序列x2[n]的周期,h(S,T)表示求二者的最小公倍數(shù)。本文分別為3個不同分辨率的子帶產(chǎn)生了256×128=215bit的流密鑰,相應(yīng)的密鑰空間為23×215bit。因此,算法擁有足夠長的密鑰周期和密鑰空間,能夠很好地抵抗窮舉攻擊。
2)密鑰敏感性測試:利用混沌現(xiàn)象對初值的敏感性,將Chebyshev映射密鑰初始值的最后一位加1或減1來測試密鑰的敏感性。僅對l=3時的Chebyshev映射秘密初始值由x3=0.735 196 280 479 536改為x3=0.735 196 280 479 537,其他的密鑰初始值不變。對上下文和判決進行修正,然后逐位比較兩種情況下產(chǎn)生的密文序列,并計算其比特變化百分比。對Pepper,Barbara,Lena測試的結(jié)果如表3所示。實驗表明,在不同的碼率下,位變化百分比相同且都在50%左右,說明密文對密鑰是敏感的。
表3 密鑰敏感性測試
3)明文敏感性測試:為測試明文敏感性,任意選取明文圖像幾個不同位置的像數(shù)值與1進行異或,然后使用相同的密鑰對上下文和判決進行修正。隨機選取Pepper,Barbara,Lena 圖像的(35,78)、(69,483)、(218,256)、(379,18)、(492,508)五個位置的像數(shù)值在碼率為1.00 bpp時進行測試,并將其位置順序編號。逐位比較兩種情況下產(chǎn)生的密文序列,計算比特變化百分比如表4所示。從表中可以看出,不同位置的微小變化,位變化百分比都在50%以上,說明明文對密鑰是敏感的。
表4 明文敏感性測試
4)加解密速度:對上下文和判決修正的情況進行測試,實驗結(jié)果列于表5中。從表中的數(shù)據(jù)可知,加密時間占算法總時間的百分比均小于15%,即通過增加相對短的時間進行加密來增加圖像的安全性能是可行的。表中的加密時間表示加密時間占總時間的百分比。
表5 加解密速度
將文獻[14]提出的EZW+密文反饋壓縮加密同步算法和文獻[12]提出的SPIHT+SHA-1先加密后壓縮的算法與本文提出的算法進行比較,采用Lena圖像進行測試,結(jié)果列于表6中。結(jié)果表明,相對于前者,本文提出算法的加解密速度有了很大的提高,因為本文使用流密鑰進行加密,而文獻[14]對MQ編碼器每生成一個字節(jié)的碼流就將其反饋到密鑰發(fā)生器進行重新迭代,因混沌映射的高精度迭代次數(shù)太多導(dǎo)致加密時間太長,降低了整個系統(tǒng)的運行效率。相對于后者,本文提出算法的圖像重構(gòu)質(zhì)量PSNR值提高了2 dB,因為本文引入MQ編碼器進行再壓縮,而文獻[12]先對小波系數(shù)加密,使得小波變換后各子帶系數(shù)間的相關(guān)性被破壞,從而降低了圖像的壓縮效率。
表6 本文算法與其他算法的比較
本文為不同分辨率的小波子帶系數(shù)分配了不同的密鑰初始值,實現(xiàn)了分辨率選擇性加密。對上下文和判決進行修正,采用Pepper圖像進行測試,不同分辨率級數(shù)l密鑰錯誤時的重構(gòu)圖像相對于正確解密時的效果如圖7所示。由圖7可知,重構(gòu)圖像的視覺質(zhì)量隨子帶分辨率的降低而下降,因為離散小波變換使得圖像的能量分布隨子帶分辨率的降低而增加。因此,三級子帶密鑰出錯使得重構(gòu)圖像的視覺質(zhì)量最差。
圖7 視覺質(zhì)量對比
通過上文對理論和仿真數(shù)據(jù)的分析,可得出以下結(jié)論:1)上下文修正和判決修正都可以在數(shù)據(jù)壓縮的同時實現(xiàn)算術(shù)加密;2)相對于使用固定密鑰進行加密,使用混合混沌序列進行加密的抗攻擊性更好;3)能夠?qū)崿F(xiàn)圖像的分辨率選擇性加密。
:
[1]鄧海濤,鄧家先,鄧小梅.一種基于EZW的ROI圖像聯(lián)合壓縮加密算法[J].電視技術(shù),2013,37(7):45-51.
[2]郭雨,柏森,陽溢,等.基于復(fù)用技術(shù)和數(shù)論的圖像加密壓縮同步算法[J].電視技術(shù),2013,37(5):33-37.
[3]劉博文,柏森,劉程浩,等.基于騎士巡游的灰度圖像加密壓縮算法[J].電視技術(shù),2012,36(9):10-13.
[4]張健,張思杰,汪振興,等.基于小波變換的圖像快速壓縮算法[J].電視技術(shù),2011,35(23):25-28.
[5]李其虎,任國強,吳欽章.適合于高分辨力航測圖像壓縮的低復(fù)雜度算法[J].電視技術(shù),2011,35(17):21-24.
[6]李娟,馮勇,楊旭強.壓縮圖像的三維混沌加密算法[J].光學(xué)學(xué)報,2010,30(2):399-404.
[7]李園園,張紹武.小波變換和SHA-1相結(jié)合的圖像壓縮加密[J].中國圖象圖形學(xué)報,2013,18(4):376-381.
[8]段黎力,廖曉峰,向濤.基于Markov性質(zhì)的一階安全算術(shù)編碼及應(yīng)用[J].物理學(xué)報,2010,59(10):6744-6751.
[9]文昌辭,王沁,黃付敏,等.基于仿射和復(fù)合混沌的圖像自適應(yīng)加密算法[J].通信學(xué)報,2012,33(11):119-127.
[10]邸志雄,史江義,劉凱,等.多上下文MQ編碼器優(yōu)化與VLSI實現(xiàn)[J].電子學(xué)報,2013,41(5):918-925.
[11]周映虹,馬爭鳴.基于上下文建模的分類排序小波圖像編碼算法[J].電子與信息學(xué)報,2006,28(12):2405-2408.
[12]楊華千,廖曉峰,KWOK-W W,等.基于SPIHT的圖像加密與壓縮關(guān)聯(lián)算法[J].物理學(xué)報,2012,61(4):1-8.
[13]鄧家先,任玉莉.基于改進零樹編碼的圖像聯(lián)合壓縮加密算法[J].光子學(xué)報,2013,42(1):121-126.
[14]鄧海濤,鄧家先,鄧小梅.基于EZW的圖像壓縮和樹形加密同步算法[J].物理學(xué)報,2013,62(11):1-8.
[15]平亮,孫軍,周軍.一種基于JPEG2000標(biāo)準的數(shù)字圖像加密算法[J].電視技術(shù),2006,30(7):87-90.
[16]陳志玉,宋建新.基于H.264/AVC視頻安全級別可分的加密方案[J].電視技術(shù),2013,37(5):15-18.
[17]SHAPIRO J M.Embedded image coding using zerotrees of wavelet coefficients [J].IEEE Trans.Signal Processing,1993,41(12):3445-3462.
[18]TAUBMAN D.High performance scalable image compression with EBCOT[J].IEEE Trans.Image Processing,2000,9(7):1151-1170.
[19]TAUBMAN D,ORDENTLICH E,WEINBERGRE M,et al.Embedded block coding in JPEG200[J].Signal Processing on Image Communication,2002,17(1):49-72.
[20]ISO/IEC JTC 1/SC 29/WG1 FCD 14495 public draft[EB/OL].[2013-12-9].http://www.jpeg.org/public/jpeglinks.htm.