圖像加密之基于函數(shù)展開(kāi)與超混沌系統(tǒng)的加密
為有效保護(hù)數(shù)字圖像的安全,我們提出一種基于小波展開(kāi)函數(shù)與超混沌系統(tǒng)的數(shù)字圖像加密算法。這種圖像加密算法利用小波展開(kāi)函數(shù)對(duì)圖像進(jìn)行置亂通過(guò)超混沌系統(tǒng)擾亂原圖像與加密圖像文件之間的關(guān)系。
一、小波展開(kāi)函數(shù)與超混沌系統(tǒng)
1、小波函數(shù)的展開(kāi)
一個(gè)小波函數(shù):
![]()
改變常系數(shù)k,系統(tǒng)的混沌特性就發(fā)生改變,隨著k的增加,逐漸出現(xiàn)很多分岔,當(dāng)k=1.25時(shí),u在-0.5鄰域內(nèi)變化的時(shí)候出現(xiàn)了混沌現(xiàn)象。它的(u,y)分岔圖與其他函數(shù)的迭代分岔圖有很大的區(qū)別,隨著u的增加,會(huì)出現(xiàn)1周期到2冪周期再到混沌,然后又從混沌中走出到2冪周期最后到1周期,中間出現(xiàn)了一些明顯的奇數(shù)周期,正分岔與逆分岔完整地結(jié)合。
將式(1)中的小波函數(shù)進(jìn)行泰勒展開(kāi)后再經(jīng)過(guò)改進(jìn),得到如下多項(xiàng)式函數(shù)式:
![]()
其中, 0.5<d<1.5; -1<c<0;k>1.28; 一1<μ<0;p為正有理數(shù);floop(p)表示小于p的最大整數(shù)。
式(2)的多項(xiàng)式函數(shù)中具有5個(gè)參數(shù),在上述給定的參數(shù)區(qū)間內(nèi),存在大量的混沌區(qū)域,由于這些區(qū)間基本上接近,這樣給進(jìn)行搜索可用參數(shù)的程序設(shè)計(jì)提供了方便。
事實(shí)上,多項(xiàng)式函數(shù)有很多是混沌的。另外,容易證明,單位區(qū)域上的曲線(xiàn)只要滿(mǎn)足一定條件就是Li-Yorke混沌或者Devaney混沌,而參數(shù)的小幅度變化并沒(méi)有更多的改變曲線(xiàn)的位置與形狀,式(2)正是利用這些理論而構(gòu)造的。
2、超混沌系統(tǒng)的四階Runge-Kutta公式
在提出的加密方案中,一種新的超混沌系統(tǒng)從Chen混沌系統(tǒng)演變而來(lái)。超混沌Chen系統(tǒng)是四維混沌系統(tǒng),其動(dòng)力學(xué)方程式如下:

在式(3)中,當(dāng)a=36,b=3,c=28,d=-16,-0.7≤k≤0.7時(shí),系統(tǒng)處于超混沌狀態(tài)。當(dāng)k= 0.2時(shí),系統(tǒng)Lyapunov指數(shù)為λ1= -12.573,λ2 =0,λ3=0.023,λ4 =1.522,超混沌系統(tǒng)有2個(gè)正的Lyapunov指數(shù),擁有更為復(fù)雜的行為,隨機(jī)性更強(qiáng),因此,將超混沌系統(tǒng)用于圖像加密,能大幅度提升系統(tǒng)的抗破譯能力。
在構(gòu)造混沌序列時(shí)使用四階Runge-Kutta公式,在該式的中間過(guò)程插入?yún)?shù),如式(4)所示:

由于式(3)包含4個(gè)表達(dá)式,因此K1,K2,K3,K4,Xn,Yn,Yn+1,P1,P2,P3,P4都含有4個(gè)元素(P1,P2,P3,P4是后加入到Runge-Kutta公式中的),共計(jì)16個(gè)元素。
研究表明,一個(gè)混沌系統(tǒng)多數(shù)是在其混沌狀態(tài)的某些參數(shù)區(qū)間內(nèi)逐漸向非混沌過(guò)渡,這就為混沌加密提供了一定的密鑰空間,而在四階Runge-Kutta公式中插入的這些參數(shù)也都可以擴(kuò)大密鑰空間。實(shí)驗(yàn)分析表明這種插入?yún)?shù)的方法是可行的。在眾多的參數(shù)空間中,其超混沌特性(即有2個(gè)正的Lyapunov指數(shù))不變。
由于步長(zhǎng)h很小,因此加在每個(gè)表達(dá)式上的參數(shù)p經(jīng)過(guò)計(jì)算后變得很小,這樣就相當(dāng)于每一個(gè)曲面(或者幾何體)向上或者向下作微小移動(dòng),根據(jù)研究的結(jié)果,多數(shù)情形下變換后的系統(tǒng)還是混沌的,但由于改變了(常數(shù))參數(shù),在相同初始值與相同參數(shù)的情形下,其生成的混沌序列不同,這就相當(dāng)于擴(kuò)大了密鑰空間。
二、圖像文件加密方案
圖像文件加密過(guò)程包含2個(gè)部分:圖像像素置亂過(guò)程和圖像像素值的替換過(guò)程。
1、置亂過(guò)程
由于數(shù)字圖像相鄰的像素之間具有高度的相關(guān)性,為降低像素之間的相關(guān)性,采用小波函數(shù)展開(kāi)式(2)進(jìn)行迭代,產(chǎn)生混沌序列用來(lái)置換像素的位置。設(shè)原圖像P,大小為M×N,P(i,j)表示圖像的像素灰度值,i=1,2,L,M,j=l,2,L,N。
置亂過(guò)程描述如加密算法1所示。
加密算法1使用小波展開(kāi)函數(shù)置亂圖像的算法
(1)在初始化參數(shù)后,計(jì)算式(2)迭代序列的近似Lyapunov指數(shù),如果Lyapunov指數(shù)小于0,更換參數(shù),繼續(xù)步驟(1),大于0,向下執(zhí)行程序。
(2)通過(guò)式(2)迭代得到混沌實(shí)值序列:
![]()
上述序列用于行變換;如果在這個(gè)混沌序列中不存在相同迭代點(diǎn),就進(jìn)行步驟(3),反之,則去掉序列中的相同元素(所謂相同,規(guī)定好差值小于一定數(shù)值,軟件的取舍精度也要有規(guī)定),繼續(xù)迭代,續(xù)加補(bǔ)夠M個(gè)元素(這樣會(huì)獲得較好的加密效果)。
(3)在步驟(1)所確定的初始化參數(shù)的鄰域內(nèi)更換新的初始化參數(shù)(是否重新計(jì)算近似Lyapunov指數(shù)根據(jù)具體情況決定),迭代得到序列(用于列變換),使用前2步的方法,得到?jīng)]有重復(fù)值的混沌實(shí)值序列:
![]()
(4)將式(5)實(shí)值混沌序列和式(6)實(shí)值混沌序列中元素由小到大排序,分別形成有序序列s1,S2,L,SM和k1,k2,L,kN。
(5)分別確定式(5)混沌序列和式(6)混沌序列中的每個(gè)m(i)和n(j)分別在有序序列s1,S2,L,SM和k1,k2,L,kN中的位置編號(hào),形成置換地址集合T={t1,t2,L,tM)和P={p1,p2,L,pN}。
(2)按置換地址集合丁和P對(duì)原始圖像的像素進(jìn)行置換,得到置亂后的位置矩陣E(i,j)。
對(duì)原圖像文件完成置亂后,破壞了原像素的相鄰像素點(diǎn)的相關(guān)性,但是像素點(diǎn)的灰度并沒(méi)有改變,即圖像直方圖并沒(méi)有發(fā)生變化,圖像的加密效果不太理想叼因此,為提高圖像文件加密的效果,使用下節(jié)中的替換過(guò)程對(duì)置亂后的圖像的像素灰度進(jìn)行改變。
2、替換過(guò)程
使用超混沌系統(tǒng)產(chǎn)生的混沌序列對(duì)置亂后的圖像像素灰度值進(jìn)行加密。替換過(guò)程如加密算法2所示。
加密算法2使用超混沌系統(tǒng)(替換)加密圖像的算法
(1)把置亂后二維圖像矩陣E(i,j)轉(zhuǎn)化為一維序列A(i),i=1,2,L,M×N。
(2)計(jì)算參數(shù)的混沌區(qū)域,在該區(qū)域內(nèi)給各個(gè)參數(shù)賦值,給定迭代初始值x1(0),x2 (0),x3(0),x4(0),超混沌陳系統(tǒng)(式(3))在四階龍格一庫(kù)塔法迭代式(式(4))作用下生成混沌序列
{x1(k),x2(k),x3(k),x4(k),k=1,2,L。對(duì)該混沌序列進(jìn)行如下預(yù)處理:
![]()
其中,Abs(xi)表示xi的絕對(duì)值;函數(shù)Floor(z)表示小于z的最小整數(shù);mod(x,y)表示x對(duì)y取余。
(3)通過(guò)d=mod(d,4),d∈[o,3],超混沌系統(tǒng)參數(shù)x1,x2,x3,x4不同結(jié)合狀態(tài)如表1所示。

如果d等于序號(hào)組的序列,則選擇相應(yīng)的序列組執(zhí)行加密操作。例如d=1,則選擇(x1,x2,x3)用來(lái)進(jìn)行加密。用序列A(i)數(shù)據(jù)的3 Byte和狀態(tài)組數(shù)據(jù)的3 Byte做XOR(異或)操作。
通過(guò)以下公式進(jìn)行計(jì)算:

其中,i=1,2,…表示超混沌陳系統(tǒng)第f次迭代;+表示按位異或操作Bx1,Bx2,Bx3表示相應(yīng)狀態(tài)組的值;A表示置亂后序列A(i),i=1,2,L,M×N。
(4)繼續(xù)上述操作,直到A={A1,A2,L,AM×N}中的所有像素值全部被加密為止。此時(shí)得到加密后像素集合為C={C1,C2,L,CM×N},然后將其轉(zhuǎn)化為二維圖像形式,得到了加密圖像D(i,j)i=o,1,L,M一1,j=0,1,L,N-1。加密后的效果如圖1(b)所示。

解密過(guò)程基本與加密過(guò)程的算法相似,是加密的逆操作過(guò)程。應(yīng)首先由超Chen混沌系統(tǒng)進(jìn)行解密對(duì)應(yīng)于加密式(式(8)),解密所用的計(jì)算公式為:

將解密得到的序列么轉(zhuǎn)換成二維矩陣形式;再用小波展開(kāi)函數(shù)對(duì)解密矩陣進(jìn)行反置亂,即可得到最后的解密圖像,如圖1(d)所示。
三、實(shí)驗(yàn)結(jié)果和安全性分析
1、密鑰敏感性測(cè)試
為驗(yàn)證上述算法的有效性,本文以256×256的lena.bmp圖像作實(shí)驗(yàn)測(cè)試圖像。在本算法中初始參數(shù)也作為密鑰。如果密鑰稍有微小變化,如修改參數(shù)k=1.300 000 000 000 08(原k為1.3)加密效果如圖1(c)所示,它與如圖1(b)加密效果不同。經(jīng)實(shí)驗(yàn)測(cè)試加密后的2幅圖像中有99.06%的像素灰度值不相同。密鑰的微小變化導(dǎo)致密文幾乎完全不同,這就說(shuō)明密鑰的一點(diǎn)微小的變化將產(chǎn)生完全不同的加密效果,密鑰敏感性高,因此,可以抗差分攻擊。
比較加密前后圖像的直方圖,如圖2所示。可以看出,加密后圖像的直方圖與原始圖像的直方圖有很大的不同,并且非常均勻。變換后的直方圖呈均勻分布,它掩蓋了變換前分布規(guī)律,增加了破譯的難度。

2、相鄰像素的相關(guān)性分析
研究表明,圖像置亂效果的好壞,與相鄰像素相關(guān)性的大小存在反比關(guān)系:相關(guān)性越大,置亂效果越差;相關(guān)性越小,置亂的效果越好。為檢驗(yàn)原始圖像和密文圖像相鄰像素的相關(guān)性,從原圖像和加密圖像文件中隨機(jī)選取4 000對(duì)相鄰像素(水平、垂直或?qū)牵?,利用下式?jì)算其相鄰像素的相關(guān)系數(shù):

其中,x和y分別表示圖像中相鄰2個(gè)像素的灰度;rxy為相鄰2個(gè)像素的相關(guān)系數(shù)。圖3展示了原始圖像和加密后圖像的2個(gè)垂直方向的相鄰像素的相關(guān)分布情況。

表2列出了加密前后各個(gè)方向的相關(guān)系數(shù),可以看出,原始明文圖像的相鄰像素是高度相關(guān)的,相關(guān)系數(shù)接近于1,而加密圖像的相鄰像素相關(guān)系數(shù)比0還小,說(shuō)明相鄰像素不相關(guān),明文的統(tǒng)計(jì)特性已被擴(kuò)散到隨機(jī)的密文中。

小知識(shí)之泰勒公式
在數(shù)學(xué)中,泰勒公式是一個(gè)用函數(shù)在某點(diǎn)的信息描述其附近取值的公式。如果函數(shù)足夠光滑的話(huà),在已知函數(shù)在某一點(diǎn)的各階導(dǎo)數(shù)值的情況之下,泰勒公式可以用這些導(dǎo)數(shù)值做系數(shù)構(gòu)建一個(gè)多項(xiàng)式來(lái)近似函數(shù)在這一點(diǎn)的鄰域中的值。泰勒公式還給出了這個(gè)多項(xiàng)式和實(shí)際的函數(shù)值之間的偏差。










