圖像加密算法之交替分段相互置亂的雙混沌序列加密

基于混沌的圖像文件加密方法在安全性、適應(yīng)性上都具有優(yōu)勢,我們在對原有的混沌圖像加密算法安全性分析的基礎(chǔ)上,提出了一種基于Logistic和Chebyshev雙混沌映射的數(shù)字灰度圖像加密算法。

一、Logistic與Chebyshev混沌系統(tǒng)簡介

Logistic映射是一個源于人口統(tǒng)計的離散時間動力學(xué)系統(tǒng),其定義為:

圖像加密算法之交替分段相互置亂的雙混沌序列加密

 

式中:xn表示狀態(tài)變量第幾次迭代的值;u為表征系統(tǒng)非線性強度的系數(shù),若U∈[O,2],則上式是從閉區(qū)間[-1,1]到它本身的一個非線性映射,當(dāng)U→1. 40115時,周期T→∞,Logistic映射進(jìn)入了混沌狀態(tài);此時輸入不同的初始值,可對應(yīng)一個迭代序列,即混沌序列。

Chebyshev映射定義為:

圖像加密算法之交替分段相互置亂的雙混沌序列加密

式中:k為表征系統(tǒng)非線性強度的系數(shù),當(dāng)k≥2時,映射處于混沌狀態(tài),將Chebyshev映射產(chǎn)生的混沌序列變換為獨立二進(jìn)制序列,可以證明其與隨機二進(jìn)制序列沒有明顯的不同。

二、交替分段相互置亂的雙混沌序列圖像加密算法原理

文中提出的圖像加密算法在加密過程中引進(jìn)了一個基于明文變化而改變的輔助密鑰,由輔助密鑰與初始密鑰控制雙混沌系統(tǒng)產(chǎn)生交替分段相互置亂的密碼序列,然后將這些密碼序列組合成密碼矩陣對明文文件加密。其中的關(guān)鍵是輔助密鑰和雙混沌置亂序列的產(chǎn)生文中加密算法的加密、解密過程,如圖1所示。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

1、輔助密鑰的產(chǎn)生

一種好的加密算法應(yīng)該既要對密鑰敏感,也要對明文敏感,且加密后的密文應(yīng)該均勻分布在整個密文取值空間。本算法中輔助密鑰起的作用有兩個:

①主要作用是作為一個調(diào)制參數(shù)對初始密鑰進(jìn)行調(diào)制(相乘),目的是使混沌映射的初始值依賴于明文產(chǎn)生,整個算法對明文比較敏感,這樣可以抵御差分攻擊;

②輔助作用是增大主密鑰空間。基于明文的輔助密鑰的引入,使得系統(tǒng)的初始值每次都不相同.由于混沌映射的初始值(借助輔助密鑰調(diào)制產(chǎn)生)對明文有很強的依賴作用,故本加密算法與常規(guī)算法相比,對明文有較強的敏感性。本加密算法中輔助密鑰的產(chǎn)生借助于明文圖像,由明文圖像各點的像素值求和,再對256取余數(shù),然后除以256,得到一個位于(0,1)之間的輔助密鑰,正是由于輔助密鑰參與加密才使得攻擊者很難通過已知明文的攻擊方式破譯加密圖像。

2、置亂數(shù)組的產(chǎn)生原理

文中采用Logistic與Chebyshev雙混沌系統(tǒng)來產(chǎn)生交替分段相互置亂的密碼序列,較好地掩蓋了混沌的動力學(xué)特性,因而用常規(guī)的混沌加密分析方法較難破解密碼序列。產(chǎn)生置亂序列的關(guān)鍵是置亂數(shù)組的產(chǎn)生,置亂數(shù)組的產(chǎn)生原理如圖2所示。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

為簡要說明其產(chǎn)生原理,假設(shè)C為混沌序列,Dc為置亂后的混沌序列,足為長度為7的且值介于[1,7]之間的一組隨機數(shù)組,第1遍遍歷數(shù)組足后,數(shù)組Fi用來標(biāo)記足中已經(jīng)存在的數(shù)的位置,例如1一5這5個數(shù)都存在,則在F1中1一5的位置均記為1,而F2用來順序標(biāo)記足中重復(fù)的數(shù)出現(xiàn)的位置,比如足數(shù)組中第2位重復(fù)了2,第5位重復(fù)了5,則Fz中前兩位記為2和5。并設(shè)置一個計數(shù)變量y用于記錄Fz中非0位的個數(shù),對于圖2,V=2;然后進(jìn)行第2遍遍歷,遍歷F1,發(fā)現(xiàn)第i位不為1,則執(zhí)行R(F2(v))=i操作,同時執(zhí)行V=V-1的操作,經(jīng)過第2遍遍歷,數(shù)組R變?yōu)榱酥脕y數(shù)組d,其值介于[1,7]之間,且各不相同。然后以數(shù)組d的值作為擾亂后數(shù)組的下標(biāo)完成對原始混沌序列的置亂,即:Dc(d(i))=C(i)。

文中的置亂序列將借助上述方法產(chǎn)生:①由Logistic和Chebyshey兩個映射在某初始條件下產(chǎn)生兩組長度為MN的混沌序列,并將其值變換到[0,255]之間,得到兩個數(shù)組L1與C1;②由另兩組初始條件產(chǎn)生兩組混沌序列,并將兩組序列值分別變換到[1,MN]之間,作為隨機數(shù)組,對該兩組序列進(jìn)行遍歷,用介于[1,MN]之間但不存在于該兩組序列中的值取代序列中重復(fù)存在的值,得到兩個置亂數(shù)組L2與C2;③在映射關(guān)系M1(C2 (i)))=Li (i),Mz(Lz(i)) =C1 (i)的條件下產(chǎn)生兩組密鑰序列M1與M2,生成與明文圖像矩陣同樣大小的加密矩陣,其中奇數(shù)行由被ChebysheV映射序列C2置亂的Logistic映射序列肘,相應(yīng)位賦值,偶數(shù)行由被Logistic映射序列L2置亂的Chebyshev映射序列M2相應(yīng)位賦值,最終生成密碼矩陣Mkey。

3、加密步驟

設(shè)A表示大小為M×N的圖像,加密步驟如下:

(1)設(shè)定初值。給定Logistic系統(tǒng)的參數(shù)值u1、u2和初始值x0、x1,以及Chebyshev系統(tǒng)參數(shù)值k1、k2及初始值yo、y1。

(2)輔助密鑰的生成。將明文圖像A所有像素的值求和,并對256取余數(shù),得到一個[0,255]之間的數(shù),接著將該數(shù)除以256,得到一個(0,1)之間的輔助密鑰0,輔助密鑰隨著明文的變化而變化:

圖像加密算法之交替分段相互置亂的雙混沌序列加密

(3)基于輔助密鑰的系統(tǒng)初值的產(chǎn)生。用θr與x0、yo、x1、y1分別相乘(θr作為調(diào)制因子)。得到4個新的系統(tǒng)初值x0'、yo'、x1'、y1'。

(4)混沌序列L1、C1的產(chǎn)生,將x0',u1',yo'、k1代入Logistic映射方程與Chebyshev映射方程相應(yīng)地產(chǎn)生兩個長度為MN的混沌序列L1'、C1',序列中的值乘以一個足夠大的正整數(shù)Rm,取絕對值后再對256取余數(shù),轉(zhuǎn)化為[0,255]之間的值,得到序列L1、C1:

圖像加密算法之交替分段相互置亂的雙混沌序列加密

(5)混沌序列L2'、C2'的產(chǎn)生,將參數(shù)u2、k2,初值膏x1',y1'分別代入Logistic系統(tǒng)與Chebyshev系統(tǒng),產(chǎn)生兩個長度為MN的混沌序列L2''、C2''將序列中每個值都乘以某個足夠大的正整數(shù)Rm,取絕對值后再對MN取余數(shù)后加1,得到兩個長度為MN并且值介于[1,MN]之間的兩個序列L2'、C2'。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

(6)置亂序列產(chǎn)生。對序列L2'、C2'從1到MN進(jìn)行遍歷,如果序列L2'、C2'中出現(xiàn)重復(fù)的數(shù),便用1到MV之間但不存在于序列L2'、C2'中的數(shù)進(jìn)行替換,得到兩個值互不相等且分布在[1,MN]之間的序列L2'、C2',這兩個序列為置亂序列,用于對序列C1、L1進(jìn)行置亂,置亂數(shù)組L2、C2與數(shù)組L1、C1之間的映射關(guān)系為:M1(C2(i))=L1(i),M2(L2(i))=C1 (i),即通過Chebyshev映射序列置亂Logistic映射序列,由Logistic映射序列置亂Chebyshey映射序列。

(7)加密矩陣生成,將序列M1、M2共同組成密碼序列甌,以N為單位輪流截取M1、M2中相應(yīng)位置的值,這些位置與甌中的位置相對應(yīng),然后將這些值置于Sk中的對應(yīng)位置,Sk長度為MN,最終將甌按行優(yōu)先的原則構(gòu)成加密矩陣MKEY,其大小與明文圖像大小相同,即其中奇數(shù)行是由M1相應(yīng)位賦值,偶數(shù)行是由M2相應(yīng)位賦值。將明文矩陣A與密文矩陣MKE/r異或以后得到加密后的矩陣B。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

式中:i/N為i除以N的整數(shù)商,reshape()為Matlab中的矩陣成形函數(shù)。

解密過程是加密的逆過程。

三、加密算法仿真分析

通常圖像信息存儲和傳輸?shù)牧鞒虨椋涸紙D像一壓縮(有損或無損壓縮算法)一加密一解密—解壓縮。從信息論的角度來看,圖像文件加密后,由于相鄰像素點間相關(guān)性的破壞,很難再進(jìn)行壓縮,難獲得高壓縮率,這樣壓縮效果并不好,因此一般的過程是先壓縮再加密,解密過程是先解密后解壓縮,文中利用Matlab 7.0軟件,結(jié)合上述算法,先進(jìn)行無壓縮仿真,再進(jìn)行有損壓縮明文后仿真.在系統(tǒng)參數(shù)u1 =1. 911158,u2=1. 9275723,k1=4.775 865,k2 =5,初始值x0=0.588 234,x1=0.362 754,y0=o.627491.y1=0.322356時,對一幅256 ×256的灰度圖像“camenunan.tif”進(jìn)行了加密解密仿真實驗,結(jié)果見圖3(a)一(c)。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

由圖3(a)、(b)可見,明文圖像的像素值數(shù)目分布是不均勻的,而密文圖像的像素值在數(shù)目上呈現(xiàn)均勻分布,掩蓋了加密前的分布規(guī)律,從而增大了破澤者的工作量和難度,使得密文具有良好的抵抗統(tǒng)計分析攻擊的能力;由圖3(c)、(d)可見,密鑰的微小差別將導(dǎo)致密圖完全不能解密,表明加密算法對初始密鑰有較強的敏感性,圖4(a)為密鑰初始值x0分別為0.588235與0.588 234時,其他初始條件不變的情況下得到的加密圖像的差圖,如果兩次加密的密圖像素值完全相同,差圖顯示出來將是一幅完全黑色的圖像(即所有像素點的值都是0)。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

而本圖像加密算法差圖顯示的卻是值分布在[0,255]之間的一個矩陣,密鑰的微小改變導(dǎo)致了加密圖像效果很大的不同,再次證明了本加密算法對密鑰的較強敏感性;圖4(b)為改變明文圖像中一個點A15,使其灰度值從158變到159,其他初始條件不變的情況下得到的加密圖像的差圖,與圖4(a)相似,可見明文僅一個像素的微小差別就導(dǎo)致了加密效果的截然不同,表明本加密算法對明文圖像也具有較強的敏感性;其中圖5為用Pic manager軟件壓縮過后的明文圖像(原始圖像為63. 7kB,壓縮后為12. 8kB),用本算法加密后的圖像以及正確解密后的壓縮圖像,由圖5可知本算法適用于壓縮后的圖像加密傳輸。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

由圖3、4可知,本圖像加密算法對密鑰和明文均有較好的敏感性,因而能有效抵抗基于對明文圖像做微小修改的差分攻擊方法。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

圖6為混沌序列相空間圖,由圖6(c)可知,密碼序列Sk完全掩蓋了原混沌序列的相空間軌跡,其混沌動力學(xué)行為被很好地遮掩。因而依賴于所截獲的信號的混沌動力學(xué)行為的解密分析方法失效,攻擊者無法進(jìn)行相空間重構(gòu),從而無法恢復(fù)出混沌系統(tǒng)的表達(dá)式。

四、加密算法統(tǒng)計特性分析

在明文圖像和密文圖像中隨機選取20個像素點,垂直方向10個,水平方向10個,通過以下方法計算明文與密文相鄰像素點間的相關(guān)系數(shù)rry,計算公式如下:

圖像加密算法之交替分段相互置亂的雙混沌序列加密

式中:x、y表示兩個相鄰像素的灰度值,在實際測試中采用如下離散化的計算公式:

圖像加密算法之交替分段相互置亂的雙混沌序列加密

式中:COV(.)表示協(xié)方差;E(.)表示期望;D(.)表示方差;二表示數(shù)據(jù)長度,通過計算,得到明文圖像相鄰像素點的相關(guān)系數(shù)矩陣(見表1)和密文圖像的相鄰像素點的相關(guān)系數(shù)矩陣(見表2)。由表1、2可以看出,加密前的圖像像素值間具有較強的相關(guān)性,經(jīng)過加密過后,這種相關(guān)性被破壞。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

圖7(a)、(b)分別是交替分段相互置亂的密碼序列Sk的自相關(guān)、互相關(guān)特性,平均分布的的白噪聲序列的自相關(guān)、互相關(guān)特性分別如圖7(c)、(d)所示。由圖7可見,二者的特點相似,表明采用Logistic與Chebyshev雙混沌系統(tǒng)產(chǎn)生的交替分段相互置亂的密碼序列Sk符合平均分布,因而文中加密算法能很好地隱藏明文的信息。

圖像加密算法之交替分段相互置亂的雙混沌序列加密

小知識之密鑰

密鑰是一種參數(shù),它是在明文轉(zhuǎn)換為密文或?qū)⒚芪霓D(zhuǎn)換為明文的算法中輸入的數(shù)據(jù)。