JPEG圖像加密算法之DCT量化系數(shù)重組

為了降低圖像存儲(chǔ)的數(shù)據(jù)量,提高在現(xiàn)有通信信道容量下的信息傳輸效率,需要對(duì)圖像進(jìn)行數(shù)據(jù)壓縮,因此,對(duì)壓縮圖像的加密顯得尤為重要。為此我們提出了一種基于DCT量化系數(shù)重組的JPEG圖像加密算法。

一、混沌系統(tǒng)

加密過(guò)程中需要用兩類遍歷矩陣對(duì)圖像進(jìn)行置亂加密,一類用來(lái)對(duì)明文圖像進(jìn)行以8×8圖像塊為單位的統(tǒng)一置亂;另一類用來(lái)對(duì)圖像DCT變換量化后的系數(shù)重新組合后的8×8系數(shù)塊內(nèi)的系數(shù)進(jìn)行置亂加密。利用混沌系統(tǒng)產(chǎn)生隨即序列,然后對(duì)這該序列按大小進(jìn)行排序,根據(jù)排序的序號(hào)可以產(chǎn)生所需要的遍歷矩陣。

利用Logistic混沌映射生成第一類遍歷矩陣Sa,用來(lái)對(duì)明文圖像以8×8圖像塊為單位進(jìn)行置亂,Losigstic函數(shù)如式(1):

1

利用Chen's系統(tǒng)構(gòu)造第二類類遍歷矩陣,Chen's系統(tǒng)描述如式(2):

1

式中,a、b、c為系統(tǒng)常參數(shù),若它們?nèi)∠铝兄担篴=35,b=3,20 低頻系數(shù)置亂;生成遍歷矩陣Sb2用來(lái)對(duì)重組后的低頻系數(shù)置亂。

二、加密算法

變換域中不同系數(shù)值代表著原始圖像中不同頻率的信息,每一個(gè)系數(shù)值的變化都會(huì)對(duì)整個(gè)圖像產(chǎn)生影響,通過(guò)對(duì)變換域量化后的系數(shù)進(jìn)行置亂,可以快速地改變圖像的視覺效果,把圖像變得雜亂無(wú)章、無(wú)法理解。置亂加密包括原始圖像數(shù)據(jù)的基于8×8圖像塊的統(tǒng)一圖像置亂加密和量化后系數(shù)的低頻、高頻系數(shù)分別置亂加密兩個(gè)過(guò)程。具體的加密流程如圖1所示,解密為它的逆過(guò)程。

1

圖中加密模塊為算法設(shè)計(jì)的加密過(guò)程,其余模塊為JPEG壓縮編碼的標(biāo)準(zhǔn)過(guò)程。假設(shè)原始圖像大小為M×N,其中,M表示圖像的高度,N表示圖像的寬度,由Logistic系統(tǒng)產(chǎn)生的隨機(jī)序列{X(n)),生成一個(gè)大小為M/8×N/8的遍歷矩陣Sa,再由Chen,s系統(tǒng)產(chǎn)生三個(gè)隨機(jī)序列{x(t)}、{y(t)}和{z(t)},選取任意兩個(gè)隨機(jī)序列產(chǎn)生8×8大小的遍歷矩陣Sbl、Sb2原始圖像的DCT變換和編碼是以8×8圖像塊為基本單位,因此對(duì)原始明文圖像進(jìn)行8×8塊的統(tǒng)一置亂不會(huì)改變8×8圖像塊內(nèi)部的像素之間的空間相關(guān)性,能夠保持后續(xù)編碼的結(jié)構(gòu)不變性,不會(huì)增加加密后壓縮圖像的數(shù)據(jù),而且可以使得圖像在視覺上看起來(lái)雜亂無(wú)章.量化后的DCT系數(shù)低頻部分一般非零值較多,而高頻部分為非零值較少,按照zig-zag掃描進(jìn)行游程編碼,高頻部分的零值系數(shù)對(duì)壓縮率貢獻(xiàn)較大.如果將兩個(gè)8×8塊DCT變換后的低頻系數(shù)重新組合放在一起進(jìn)行置亂,高頻系數(shù)重新組合放在一起進(jìn)行置亂,然后再將置亂后的高低頻系數(shù)組合回8×8系數(shù)塊,那么對(duì)游程編碼的影響會(huì)較直接對(duì)8×8DCT量化后系數(shù)塊置亂的影響小,對(duì)加密壓縮后JPEG圖像數(shù)據(jù)量改變不大。

1、量化系數(shù)重組

DCT變換和量化后的8×8系數(shù)塊中左上角第一個(gè)系數(shù)稱為零頻分量,越往右下角頻率越高,右下角最后一個(gè)系數(shù)稱為最高頻,用對(duì)角線將左上角和右下角進(jìn)行平均劃分,定義左上角的從左到右,從上到下的32個(gè)系數(shù)分量為圖像的低頻分量,右下角的32個(gè)系數(shù)分量為高頻分量,如圖2所示。

1

在進(jìn)行系數(shù)重組時(shí),相鄰兩個(gè)8×8系數(shù)塊的低頻分量組成一個(gè)新的8×8系數(shù)塊,高頻分量組成一個(gè)8×8系數(shù)塊,如圖3所示。

1

當(dāng)8X8塊內(nèi)部的置亂加密結(jié)束后,再進(jìn)行反向的系數(shù)塊重組。

2、加密步驟

假設(shè)待加密原始圖像為mXn,其中,圖像高度為m,寬度為n,置亂加密算法如下:

(1)設(shè)定Logistic系統(tǒng)的參數(shù):0≤Xn≤1,3.57<μ<4,為了保持序列的隨機(jī)性,舍去序列開始部分,分別從序列的第ki (ki>400)個(gè)值開始,連續(xù)順序取m/8×n/8個(gè)元素組成子序列sa;設(shè)定Chen's混沌系統(tǒng)的系統(tǒng)參數(shù)值:a=35,b=3,20400)、k3 (k3>400)個(gè)值開始,分別順序選mXn/2、mXn/2個(gè)元素組成兩個(gè)子序列S2、S3。

(2)將子序列Si按照從上到下,從左到右的順序重排生成矩陣Mi;將子序列S2、S3分別分割成大小為64的子段S2j和S3j Q—o,每個(gè)子段按照從上到下,從左到右的順序重排生成大小為8×8的矩陣MJ和M3j;

(3)用置亂矩陣固對(duì)原始圖像mXn以8×8圖像塊為基本單位進(jìn)行統(tǒng)一置亂,得到置亂后的圖像。

(4)圖像mXn進(jìn)行DCT變換和量化,從圖像左上角開始,按照從左到右,從上到下的順序,首先對(duì)第0個(gè)和第1個(gè)8×8量化系數(shù)塊進(jìn)行系數(shù)塊重組,組成低頻系數(shù)塊L和高頻系數(shù)塊日,利用置亂矩陣膨。和M30分別對(duì)其進(jìn)行置亂加密,置亂后再將低頻系數(shù)塊L和高頻系數(shù)塊日進(jìn)行反向系數(shù)重組。

(5)對(duì)第2j和2j+l量化系數(shù)塊利用M2J和M3j分別進(jìn)行步驟(4)的操作,直到所有系數(shù)塊都加密完成得到加密圖像mXn。

三、實(shí)驗(yàn)結(jié)果分析

在CPU為Intel雙核3.3 GHz,內(nèi)存為2.0 GHz的筆記本計(jì)算機(jī)上,利用Visual Studi0 2005 C++平臺(tái),取lena .bmp作為明文圖像進(jìn)行實(shí)驗(yàn)。Logistic系統(tǒng)參數(shù)取值為:Xo=0.901,μ=3.89,取隨機(jī)序列的第一個(gè)值位置為ki一500;Chen's系統(tǒng)的參數(shù)取值為:a=35,b—3,c= 21.6,x0=0.15,y0=1.26,Z0=0.75,任取兩個(gè)隨機(jī)序列各取第一個(gè)值的位置k2=510,k3=520,系統(tǒng)時(shí)間參數(shù)t取值范圍為t∈[0,150],采用步長(zhǎng)為0.OOI的四階五級(jí)Runge-Kutta算法求解混沌系統(tǒng)。

1、視覺效果分析

圖4(a)為原始圖像,圖4(b)所示為加密后圖像,圖像大小為256×256,從加密后圖像可以看到,加密后圖像在視覺上已經(jīng)無(wú)法看到原始圖像的信息,達(dá)到了視覺上雜亂無(wú)章的目的。

1

2、安全性分析

(1)密鑰空間

本文的密鑰包括Xo,x0,y0,xo,y0,Z0,μ,k,k3,在window s平臺(tái)32位機(jī)上,利用Visual studio2005 C++進(jìn)行加密時(shí),Xo,μ,c,xo,y0,Zo,ki,k2,k3這9個(gè)參數(shù)均取值為DWORD類型,取值空間大小均為232,那么密鑰空間為232X9—2288,密鑰長(zhǎng)度遠(yuǎn)大于256比特,故加密系統(tǒng)能夠有效抵御窮舉攻擊。

(2)密鑰敏感性

解密時(shí)所用的Logistic混沌系統(tǒng)和Che‘s系統(tǒng)參數(shù)Xo,xo,yo,Z0,μ,任意一個(gè)與加密時(shí)的取值相差10 -12,而其他條件相同,都無(wú)法得到正確的解密圖像。圖5(a)所示為舶時(shí)得到的錯(cuò)誤解密圖像,正確輸入密鑰時(shí)解密得到圖5(b)??梢娝惴ň哂泻軓?qiáng)的密鑰敏感性。

1

3、對(duì)壓縮影響分析

JPEG圖像壓縮主要是利用DCT變換量化后零值系數(shù)較多,而且zig-zag掃描時(shí)零游程較長(zhǎng)的特點(diǎn),非零值分布在低頻系數(shù)區(qū)域,高頻區(qū)域零值系數(shù)居多。將相鄰兩個(gè)DCT系數(shù)塊的低頻系數(shù)組合在一起置亂,而將高頻系數(shù)組合在一起置亂,可以盡量較少的破壞零游程的結(jié)構(gòu),減少對(duì)圖像壓縮的影響,實(shí)驗(yàn)中壓縮加密圖像大小隨質(zhì)量因子的變化情況用matlab畫圖展示如圖6所示(本例中使用原始圖像大小為65.O kB)。

1

4、加密速度分析

使用置亂加密算法對(duì)DCT變化量化系數(shù)進(jìn)行位置置亂,只是改變了圖像的頻率成分,在具體的加密計(jì)算中做了數(shù)據(jù)的位置變換,沒(méi)有改變DCT量化系數(shù)值,較少使用乘除運(yùn)算,因此加密速度比較快,可以滿足實(shí)時(shí)性的要求,對(duì)不同大小的lenabmp圖片進(jìn)行壓縮加密所使用的時(shí)間長(zhǎng)度如表1所示。

1

小知識(shí)之DCT

離散余弦變換(DCT)是N.Ahmed等人在1974年提出的正交變換方法。它常被認(rèn)為是對(duì)語(yǔ)音和圖像信號(hào)進(jìn)行變換的最佳方法。為了工程上實(shí)現(xiàn)的需要,國(guó)內(nèi)外許多學(xué)者花費(fèi)了很大精力去尋找或改進(jìn)離散余弦變換的快速算法。由于近年來(lái)數(shù)字信號(hào)處理芯片(DSP)的發(fā)展,加上專用集成電路設(shè)計(jì)上的優(yōu)勢(shì),這就牢固地確立離散余弦變換(DCT)在目前圖像編碼中的重要地位,成為H.261、JPEG、MPEG等國(guó)際上公用的編碼標(biāo)準(zhǔn)的重要環(huán)節(jié)。