郭 雨,柏 森,陽 溢,唐鑒波
(1.重慶通信學院,重慶 400035;2.應急通信重慶市重點實驗室,重慶 400035)
傳統的圖像壓縮和加密過程往往是分開的,這樣不但增加了算法的復雜度,并且由于加密破壞了圖像的相關性,還會降低圖像的壓縮性能。因此,發展一種能夠同時對圖像進行壓縮和加密處理的算法就成了新的需要。對圖像同時進行加密和壓縮,既能夠解決圖像傳輸中帶寬利用率的問題,又可以解決傳輸安全的問題。基于數論的圖像同時壓縮和加密算法[1](Number Theory based Image Compression Encryption,NTICE)正是這樣的一種技術。
文獻[2]中提到的方法是先壓縮,后加密。由于先對圖像進行壓縮,沒有破壞圖像相關性,因此可以得到較高的壓縮比,但由于其加密和壓縮是兩個獨立的部分,增加了算法復雜度,降低了運算效率。文獻[3]提出了一種基于騎士巡游的圖像加密和壓縮同時進行的方法。此方法可以得到較好的壓縮比和加密效果,但是嚴格來說,此方法是先加密,后壓縮。文獻[1]中首先使用了NTICE算法對RGB彩色模型的彩色圖像進行加密和壓縮。文獻[4]為了進一步提高NTICE算法的安全性和壓縮效率,通過將兩幅不同的圖像的高4比特位和低4比特位互換的方法,使兩幅圖像復合成為一幅圖像后,再對復合圖像使用NTICE算法進行加密和壓縮處理。文獻[4]為多幅圖像同時加密和壓縮提供了一個思路。
為保證圖像傳輸的安全性和傳輸效率,本文在前人應用數論知識對圖像進行同步壓縮和加密研究的基礎之上,結合圖像復用技術[6-7],提出了一種改進算法。本文首先利用圖像復用技術將4幅圖像復合1幅圖像,再對復合圖像使用NTICE算法進行壓縮和加密。經由上述算法對圖像進行壓縮和加密,圖像的壓縮率和安全性都得到了一定程度的提升。
中國剩余定理(Chinese Remainder Theorem,CRT)解決了同余方程組的求解問題。具體表述如下。
設有以下同余方程組:

設n1,n2,…,nk(k≥1)為k個兩兩互素的正整數,令

則同余方程組的一般解為

式中:ci是滿足同余方程(4)的一個特解。

式中:i=1,2,…,k。其求解方法可以采用“大衍求一數”或“輾轉相除法”,具體方法見文獻[5]。
NTICE算法是CRT的一種應用。把像素值作為同余方程組的余數ak,而將兩兩互素的密鑰分別作為同余方程組的模數nk,從而求解出同余方程組的通解x。可以得知,多個像素值經過同余方程組的求解,最終變成了一個正整數,也就是通解,達到了圖像壓縮的目的。若將圖像還原,只需將通解x代入式(1)就可得到原始像素值。若此時模數nk不正確,即解密密鑰錯誤,就無法還原出原始像素值,達到了加密的目的。
由于圖像的像素之間存在著強相關性,在應用NTICE算法對圖像加密時,如果正確的解密密鑰和錯誤的解密密鑰相差不是很大時,使用錯誤密鑰解密仍可得到部分原始圖像。為了進一步提高安全性和壓縮比,本文首先對4幅m×n大小的圖像進行DCT變換,得到4個m×n大小的DCT系數矩陣,再按照一定的規則將4個DCT系數矩陣結合成1個m×n大小的DCT系數矩陣,再對生成的DCT系數矩陣進行DCT逆變換,得到復合圖像,最后對復合圖像使用NTICE算法進行同步加密和壓縮,得到加密和壓縮后的數據流。解密過程是上述算法的逆過程。算法過程如圖1所示。

圖1 本文算法示意圖
文獻[6]和文獻[7]中的圖像復用技術可以提高圖像壓縮效率,但是復用后的圖像仍可以顯示其中的部分原始圖像信息。本文在其基礎上進行了改進,復用后的圖像不顯示原始圖像信息,安全性得到了一定的提升。其示意圖如圖2所示,步驟如下。

圖2 圖像復用技術示意圖
1)分別對4幅m ×n大小的圖像I1,I2,I3,I4以8×8為大小進行分塊,將每幅圖像都分別分成i×j塊,得到4個塊化矩陣,其中i=,j=。再分別對每一個塊化矩陣的每一個8×8小塊進行DCT變換,得到4個DCT 系數塊化矩陣 S1,S2,S3,S4。
2)為了提高加密圖像的安全性,本文采用如下方法進行旋轉加密。令k1=n1mod 4,k2=n2mod 4,k3=n3mod 4,k4=n4mod 4,其中 n1,n2,n3,n4分別為 NTICE 算法中作為密鑰的k個正整數中的任意4個正整數。當k1=0,1,2,3時,將S1的每個8×8小塊相應地逆時針旋轉180°,90°,270°,0°。也可采用其他組合方式,只要滿足4個旋轉角度與k1可能出現的4個數值一一對應即可。同理,k2,k3,k4分別決定S2,S3,S4的每個8×8小塊的旋轉角度。圖2展示了DCT系數矩陣的一個8×8小塊由上到下分別按照逆時針旋轉180°,90°,270°,0°的方法示意圖。
3)將旋轉后的S1每個8×8小塊的低頻1/4部分置于復合圖像的塊化系數矩陣S對應塊的左上1/4部分;將旋轉后S2每個8×8小塊的低頻1/4部分置于復合圖像的塊化系數矩陣S對應塊的右上1/4部分;將旋轉后S3每個8×8小塊的低頻1/4部分置于復合圖像的塊化系數矩陣S對應塊的左下1/4部分;將旋轉后S4每個8×8小塊的低頻1/4部分置于復合圖像的塊化系數矩陣S對應塊的右下1/4部分。
4)將S每個8×8塊進行DCT逆變換,得到復合圖像。由于復合圖像的DCT系數是由原始4幅圖像的DCT系數經旋轉合并成的,因此復合圖像不再顯示出原始的圖像信息,且4幅圖像經運算后變成1幅圖像,所以圖像復用算法是一種同步進行加密和壓縮的算法。
5)在接收端,按照上述過程的逆過程,還原出原始的4幅圖像。
NTICE算法的示意圖如圖3所示。

圖3 基于NTICE算法的圖像加密壓縮同步方法示意圖
1)讀取原始圖像I,圖像大小為m×n,對圖像進行1×k分塊,其中圖像的列數可以被k整除,即n≡0(mod k)。
2)對劃分好的像素塊中的每個像素ri按照式(5)分別得到像素值的高4比特位的十進制數值和低4比特的十進制數值。

式中:ai表示像素值的高4比特位的十進制數值;a′i表示像素值的低4比特位的十進制數值。


4)根據中國剩余定理解同余方程組,分別計算每一個一次同余式Pix≡1( mod ni)的一個特解ci。由于中國剩余定理的一次同余式計算僅與Pi和ni有關,與像素值無關,因此像素值的高4比特位a1和低4比特位a′1的一次同余式的特解ci是相同的,即無論像素值怎么變化,特解都不會變化。根據這一性質,可以在計算得出特解ci之后,將其存儲起來,而不用每次都進行計算,以提高計算效率。
5)根據式(7),分別得出像素值高4比特和低4比特的加密后的數據,也就是式(6)的通解TR和TR′。計算出所有TR后,統計相同的TR的個數。將不同的TR按照出現頻率的大小,依次由高到低排列后,采用Huffman方法進行編碼。TR′采用同TR的方法進行編碼。由上述敘述可以看出TR和TR′既是加密后的數據,又是壓縮后的數據,達到了同時加密和壓縮的目的。

如果僅保留圖像像素值的高4比特位的數據,而將其低4比特位的數據置為0,也可以得到較好的圖像顯示效果。因此對解壓縮后圖像質量要求較高時,可以采用無損壓縮模式,既同時傳輸高4比特位的加密數據TR和低4比特位的加密數據TR′;對解壓縮后的圖像質量要求不高時,可以采用有損壓縮模式,僅傳輸高4比特位的加密數據TR。
6)在接收端還原圖像,只需要將接收到的數據解碼得到通解TR和TR′,并將通解TR和TR′代入式(8)

式中:mi是解密密鑰;ari和ar′是解密后圖像像素值的高4比特位和低4比特位。
7)將像素的高4比特位和低4比特位合并,重建圖像Si,計算公式為

本文主要是針對灰度圖像進行仿真實驗,對彩色圖像進行同時加密和壓縮時,可以將彩色圖像按照RGB顏色模型分解成三基色的3個矩陣,然后按照灰度圖像加密和壓縮方法,分別對3個矩陣進行加密和壓縮。本文使用MTALAB軟件對4幅520×520大小的測試圖像進行仿真實驗。設置密鑰長度為10,即選取10個兩兩互素的正整數(18,25,43,31,29,37,17,23,41,19)作為密鑰。其正確密鑰解密效果圖和錯誤密鑰(22,21,19,44,31,32,39,17,41,23)的解密效果圖如圖4所示。

圖4 正確密鑰和錯誤密鑰解密效果圖
壓縮比是評價圖像壓縮算法的一個重要指標,它指的是原始圖像每個像素的平均比特數c1同編碼后每個像素的平均比特數c2的比值,壓縮比越大表示壓縮效果越好[8],定義為

壓縮比測試中,采用無損壓縮模式,密鑰長度分別選為10和8,即分別選取10個兩兩互素的正整數和8個兩兩互素的正整數作為密鑰。其中峰值信噪比(PSNR)是進行解壓縮后的重建圖像與原始圖像進行比較得到的。
由表1 可知,密鑰長度為10(29,37,17,23,41,19,18,25,43,31)的壓縮比要比密鑰長度為8(29,37,17,23,41,19,18,25)效果好。這是因為隨著密鑰長度增加,一個通解TR可以表示更多的像素。由于目前缺乏關于多幅圖像同時進行加密和壓縮的資料,所以無法與其他文獻進行壓縮比的比較。

表1 無損加密和壓縮的壓縮比
如果在對重建圖像質量要求不是非常高,可以僅傳輸原始復合圖像像素值的高4位比特的加密數據TR,進行有損加密和壓縮來得到較高的壓縮比。由表2和圖5可以看出,有損加密和壓縮的重建圖像的質量和PSNR有所下降,但仍可較為清晰地顯示出圖像內容,顯示效果仍在可接受范圍之內。

表2 有損加密和壓縮的壓縮比

圖5 有損加密和壓縮的重建圖像
3.3.1 密鑰空間容量分析
一個好的加密算法應該是對密鑰非常敏感的,且密鑰空間要足夠大以抵抗窮舉攻擊[9]。本算法安全性取決于密鑰ni(由兩兩互素的正整數組成的)。本算法中,取每個正整數的長度為6 bit,那么當取10個兩兩互素的正整數作為密鑰時,密鑰總長度為60 bit。由于作為密鑰的正整數順序之間可以互相變化,總的變化數目是作為密鑰的正整數個數的階乘l。本算法為了進一步增加安全性,在圖像復合時,將圖像的旋轉方向也作為密鑰。令k1=n1mod 4,k2=n2mod 4 ,k3=n3mod 4 ,k4=n4mod 4 ,其中n1,n2,n3,n4分別為加密密鑰的任意4個正整數,共有種
3.3.2 密鑰雪崩效應分析

圖6 加密模型
從密鑰更換的有效性考慮,圖像加密算法對密鑰的變換應是敏感的,即密鑰具有所謂的雪崩現象[10]。由于本文密鑰是兩兩互素的正整數,具有特殊性,所以測試密鑰雪崩效應時,在保證測試密鑰是兩兩互素的正整數的前提下,選取與初始密鑰歐氏距離最小的兩兩互素的正整數作為測試密鑰。設初始密鑰 key1 為 18,25,43,31,29,37,17,23,41,19,改變后的密鑰 key2 為 16,25,43,31,29,37,17,23,41,19。測試結果如圖7 所示。

圖7 密文對密鑰的敏感性測試
從圖7中可以看出,當密鑰發生細微改變時,會導致密文產生較大的變化,此加密算法對密鑰有較好的敏感性。
3.3.3 明文雪崩效應
加密算法應該對明文的變化是敏感的,即明文對密文存在著雪崩現象[10]。通常攻擊者可以通過對圖像作微小的改變來觀察加密效果,這樣可能發現加密圖像與原始圖像的某種關系,但是如果對原始圖像做細微改變,導致加密圖像有很大變化,這樣差分攻擊將失去作用[9]。首先對4幅原始圖像進行加密,然后改變4幅原圖像某一個像素點的值(如:I(i,j)=I(i,j)+1),再用同樣密鑰進行加密,比較兩個密文對應位置的像素值(如圖8)。由圖8可以看出,明文發生細微改變,密文多數都改變,具有較強的抗差分攻擊能力。
本文在前人用數論對圖像進行壓縮和加密研究的基礎之上,結合圖像復用技術,提出了一個改進的算法。經實驗證明,本文算法具有較大的密鑰量和較好的壓縮比。在圖像壓縮和加密技術快速發展的今天,具有較好的應用前景。

圖8 密文對明文的敏感性測試
[1]JAGANNATHAN V,MAHADEVAN A,HARIHARAN R,et al.Simultaneous color image compression and encryption using number theory[C]//Proc.ICIS 2005.[S.l.]:IEEE Press,2005:1-6.
[2]侯啟檳,王陽生,黃向生,等.結合EZW和AES的圖像加密機制[J].中國科學院研究生院學報,2004,21(1):119-124.
[3]劉博文,柏森,劉程浩,等.基于騎士巡游的灰度圖像加密壓縮算法[J].電視技術,2012,36(9):10-13.
[4]JAGANNATHAN V,MAHADEVAN A,HARIHARAN R,et al.Number theory based image compression encryption and application to image multiplexing[J].Signal Processing,Communications and Networking,2007(11):59-64.
[5]胡冠章.應用近世代數[M].北京:清華大學出版社,1999.
[6]ALFALOU A,ELBOUZ M,JRIDI M,et al.A new simultaneous compression&encryption method for images suitable to recognize form by optical correlation[C]//Proc.SPIE 2009.Berlin,Germany:IEEE Press,2009:1117.
[7]LOUSSERT A,ALFAOU A,SAWDA E L R,et al.Enhances system for image’s compression and encryption by addition of biometric characteristics[J].International Journal of Software Engineering and Its Applications,2008,2(2):111-118.
[8]姚敏.數字圖像處理[M].北京:機械工業出版社,2006.
[9]吳成茂,候文濱.基于SMS4分組密碼的彩色圖像加密方法[J].西安郵電學院學報,2011,16(5):1-6.
[10]陳果,廖曉峰.一種基于混沌映射的圖像加密算法[J].計算機應用,2005,25(S1):121-123.