基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

混沌動(dòng)力系統(tǒng)具有很好的初始敏感性、偽隨機(jī)性以及遍歷性,使得混沌動(dòng)力系統(tǒng)廣泛應(yīng)用到信息的加密和隱藏的應(yīng)用上。作為重要信息媒體的數(shù)字圖像具有很大的信息量,使得傳統(tǒng)的加密方法不適合應(yīng)用到圖像文件加密上。那么,今天我就給大家介紹一種基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密方法:

一、基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密原理

一般在圖像加密過(guò)程中置亂度和密鑰空間越大,加密效果越好。利用二維和三維Arnold變換混沌軌道的遍歷性,我們提出了一個(gè)新的空間置亂方法。傳統(tǒng)的二維和三維Arnold變換是直接利用Ar2nold變換對(duì)像素位置進(jìn)行變換,變換的初始值是全體像素位置,變換一次引起的置亂效果并不是很理想,變換的密鑰就是變換矩陣的整數(shù)系數(shù),范圍與圖像的大小一樣,因此密鑰空間不大。本文所提出的置亂方法,在(0,1)區(qū)間上隨機(jī)選取初始值并將變換矩陣系數(shù)擴(kuò)大到正實(shí)數(shù)域,利用Arnold變換的軌道混沌遍歷性。使圖像像素位置與混沌軌道相近點(diǎn)相應(yīng)的軌跡序號(hào)對(duì)應(yīng),來(lái)進(jìn)行位置的變換,達(dá)到圖像位置置亂的目的。與基于二維和三維Arnold變換傳統(tǒng)置亂方法比較,本算法具有更大的密鑰空間和更好的置亂度。

為了進(jìn)一步增加圖像的加密效果,在利用Arnold變換進(jìn)行空間置亂之后,運(yùn)用耦合映向格子(CML)映射的混沌性質(zhì)生成混沌系列,經(jīng)過(guò)按位異或運(yùn)算實(shí)現(xiàn)灰度值的擴(kuò)散,有效抵御統(tǒng)計(jì)攻擊。數(shù)值實(shí)驗(yàn)表明該算法加密效果良好,密鑰空間大,提高加密強(qiáng)度,符合密碼學(xué)的要求。

二、三維Arnold混沌變換

經(jīng)典二維Arnold混沌變換形式為:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

變換(1)是保面積變換,該變換矩陣的特征值基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密<1,對(duì)應(yīng)的最大Lyapunov指數(shù)為1nσ1=019624>0,所以二維Arnold變換是混沌的,引入兩個(gè)參量a,b得到更一般的形式:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

進(jìn)一步地將(2)式擴(kuò)展到三維空間,構(gòu)造三維Arnold混沌變換,過(guò)程如下:

在x-y-z三維空間中擴(kuò)展變換(2)式,保持z方向值不變,在x-y平面上類似于二維Arnold變換得到如下變換(3):

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

類似地可以得到式(4)、(5):

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

級(jí)聯(lián)(3)、(4)、(5),得到下面一般的三維變換:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

其中:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

ax,bx,ay,by,az,bz都是正整數(shù),并且det(A)=1。

取ax=bx=ay=by=az=bz=1得基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密,矩陣A的特征值:σ1=711842>1,σ2=012430<1,σ3=015728<1,對(duì)應(yīng)最大Lyapunov指數(shù)為lnσ1=119719>1,與對(duì)應(yīng)二維Arnold變換最大Lyapunov指數(shù)比較,三維Arnold變換為混沌性更強(qiáng)的混沌系統(tǒng)。

三、加密算法

1、 基于三維Arnold變換的圖像置亂

(1)二維矩陣數(shù)據(jù)堆積為三維矩陣數(shù)據(jù):設(shè)數(shù)字圖像數(shù)據(jù)為二維矩陣A,記A=(amn)M×N,M,N為矩陣的行列數(shù),按矩陣的列(行)順序依次讀取矩陣A的元素amn并依次(從最底層開始,填滿每一層,在每一層中按列順序依次放置)放至三維矩陣B中,矩陣B的大小為I×J×K+R,滿足條件:M×N=I×J×K+R,其中當(dāng)M,N為素?cái)?shù)時(shí)R為較小正整數(shù),否則取R=0,記B=(bijk)I×J×K+R。

(2)取初始點(diǎn)(x0,y0,z0),其中x0,y0,z0∈(0,1),由三維Arnold變換(6)可以得到(x0,y0,z0)迭代的軌道點(diǎn)(xn,yn,zn),n=1,2,…M×N;量化軌道點(diǎn)(xn,yn,zn),令sn=Lxn×I」, tn=Lyn×J」, un=Lzn×K」,其中Lx」表示不大于x的最大整數(shù)。

(3)因?yàn)榛煦鐒?dòng)力系統(tǒng)具有遍歷性,混沌軌道的點(diǎn)可以任意接近區(qū)域中的任意點(diǎn),因此通過(guò)該混沌軌道量化得到的地址可以遍歷三維矩陣B的任意位置,從而根據(jù)該位置遍歷的次序?qū)D像進(jìn)行重新排序,便可以達(dá)到圖像置亂的目的。在上述對(duì)序列量化取整得到序號(hào)的過(guò)程中,一個(gè)序列值可能會(huì)出現(xiàn)多次,從而發(fā)生碰撞,破壞了置亂過(guò)程一一對(duì)應(yīng)的關(guān)系,故需索引矩陣Index。取大小為I×J×K+R索引矩陣Index=0,即未遍歷到的點(diǎn)位置標(biāo)志為零。遍歷過(guò)程中當(dāng)發(fā)生碰撞時(shí),取第一次得到的序列的位置即可,即若Index(sn,tn,un)=0(表明位置(Sn,Tn,Un)的點(diǎn)未遍歷到),將矩陣B在(sn,tn,un)處的值B(sn,tn,un)依次放置在向量I(k)中,即I(k)=B(sn,tn,un),k=1,2,…,T,T≤M×N-R,并令I(lǐng)ndex(si,ti,ui)=1(表明位置(sn,tn,un)的點(diǎn)已遍歷到)。

(4)由于計(jì)算精度和量化處理的關(guān)系,點(diǎn)(x0,y0,z0)經(jīng)過(guò)M×N次迭代得到的軌道點(diǎn)經(jīng)過(guò)量化取整后仍會(huì)有少數(shù)像素點(diǎn)位置未能遍歷到,所以利用索引矩陣Index檢查混沌軌道未遍歷到的像素點(diǎn)所在位置,即若Index(i,j,k)=0(即表明該位置的像素點(diǎn)未遍歷到),i=0,1,…,I,j=0,1,…,J,k=0,1,…,K,此時(shí)將三維矩陣B在(i,j,k)處的值B(i,j,k)依次放置在向量I(k’)中,即I(k’)=B(i,j,k),k’=T+1,T+2,…,M×N-R;對(duì)于R≠0時(shí),即位置(i,j,k)的點(diǎn),其中0<i<I,0<j<J,k=K+1,也依次放置在向量I(k’),即I(k’)=B(i,j,k),k’=M×N-R,M×N-R+1,…,M×N,0<i<I,0<j<J,而k=K+1。

(5)將向量I(k)按行或按列存儲(chǔ)為二維矩陣C,完成一次置亂。

(6)重復(fù)步驟(2)、(3)、(4)進(jìn)行多次置亂,提高置亂度。

為了檢驗(yàn)本文置亂方法的效果,分別利用傳統(tǒng)的Arnold變換置亂和本文提出的置亂方法對(duì)256×256的Lena圖像進(jìn)行置亂,采用盧振泰等提出的圖像置亂程度評(píng)價(jià)方法對(duì)置亂度評(píng)價(jià)。置亂度定義為:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

其中I為原始圖像,I’為加密后圖像,N1,N2,N3,N4分別為圖像的水平,垂直,主對(duì)角線,次對(duì)角線相鄰元素差值的平方和,即:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

實(shí)驗(yàn)數(shù)據(jù)表1表明,本文提出的置亂算法比傳統(tǒng)的置亂算法更有效。

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

圖1-圖3分別是運(yùn)用傳統(tǒng)二維Arnold置亂和本文的二維與三維Arnold置亂方法進(jìn)行3,26,64次置亂效果圖,其中二維Arnold變換系數(shù)矩陣A中參數(shù)取a=1,b=1,三維Arnold變換系數(shù)矩陣A中參數(shù)取ax=bx=ay=by=az=bz=1。

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

從圖2,圖3與圖1比較可以看出本文的二維和三維Arnold變換的置亂算法置亂3次時(shí),比傳統(tǒng)二維Arnold變換置亂效果好。同時(shí)注意到傳統(tǒng)的二維Arnold變換置亂具有周期性,但本文提出的置亂算法周期可以非常大,置亂效果可以很穩(wěn)定。

2、基于耦合映像格子(CML)映射的灰度值置亂擴(kuò)散

Logistic映射為xn+1=axn(1-xn),xn∈(0,1)。當(dāng)參數(shù)a∈(315699456,4]時(shí),Logistic映射處于混沌狀態(tài)。為了應(yīng)對(duì)統(tǒng)計(jì)分析和差分分析的攻擊,得到更好的擴(kuò)散效果,通過(guò)Logistic映射構(gòu)造如下CML映射:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

其中f為L(zhǎng)ogistic映射,n=0,1,2…,y1,2(i)∈[-1,1],ε∈(0,1),并取ε=0199。用數(shù)值方法,將a作為參數(shù),a分別從21001到410和31601到410變化時(shí)的Lyapunov指數(shù)的圖形,見圖4。

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

從圖4可見,CML系統(tǒng)最多可以有兩個(gè)正Lyapunov指數(shù),通過(guò)實(shí)驗(yàn)得到當(dāng)a>318540,CML系統(tǒng)有兩個(gè)正Lyapunov指數(shù),所以CML系統(tǒng)是混沌的。取參數(shù)a=410,運(yùn)用CML混沌系統(tǒng)對(duì)圖像灰度值擴(kuò)散。擴(kuò)散算法如下:

(1)取初始值y1(0),y2(0),由(7),(8),得到均勻分布的混沌系列y1(n),y2(n),y1(n),y2(n)∈(0,1),n=1…M×N。

(2)取Y1(n)=[y1(n)×256],Y2(n)=[y2(n)×256],將Y1,Y2按列分別構(gòu)成大小為M×N矩陣D1,D2,利用矩陣D1,D2與C按位異或運(yùn)算即:D1⊕D2⊕C,從而改變C的灰度值,達(dá)到灰度值的擴(kuò)散。

上述整個(gè)加密過(guò)程是可逆的,解密過(guò)程對(duì)算法反操作便可以實(shí)現(xiàn)。

四、加密安全分析

1、密鑰空間和密鑰敏感性分析

一個(gè)好的加密系統(tǒng)應(yīng)該具有對(duì)密鑰高度敏感性,應(yīng)具有足夠大的密碼空間可以抵抗非法攻擊。在加密過(guò)程中密鑰個(gè)數(shù)達(dá)11個(gè),包括三維Arnold置亂過(guò)程9個(gè)密鑰和灰度值擴(kuò)散過(guò)程的兩個(gè)密鑰。三維Arnold置亂過(guò)程9個(gè)密鑰為ax,bx,ay,by,az,bz,x0,y0,z0,密鑰空間大小至少為28×6×1016×1016×1016=218147×1062,同時(shí)還必須知道所堆積矩陣的大小,進(jìn)一步擴(kuò)大了密碼空間,加大了破解的難度;在灰度值擴(kuò)散中需要2個(gè)密鑰,密鑰空間為1016×1016=1032??梢姳疚乃惴梢赃_(dá)到足夠大的密鑰空間。

密鑰敏感性測(cè)試:對(duì)256×256大小Lena圖像加密。假設(shè)兩組初值密鑰分別為:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

而兩組密鑰其他部分均為y1(0)=013,y2(0)=016,ax=bx=ay=by=az=bz=1,加密次數(shù)為5次。本文用以下方法測(cè)試密鑰敏感性:

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

其中I,I’為使用不同密鑰加密得到的密文,n(I-I’)為I,I’灰度值不同的數(shù)目,M×N為圖像的大小。通過(guò)實(shí)驗(yàn)表明:雖然初始密鑰x0只差10-15,但Cdr=9913729%。

圖5(a)為原始Lena圖像;圖5(b)為x0=01123456789654321,y0=018,z0=015加密得到的加密圖像;圖5(c)為x0=01123456789654322,y0=018,z0=015加密得到的加密圖像;圖5(d)圖為圖5(b)與圖5(c)的差別圖像;圖5(e)為x0=01123456789654322,y0=018,z0=015對(duì)圖5(b)的解密結(jié)果;圖5(f)為x0=01123456789654321,y0=018,z0=015對(duì)(b)圖解密結(jié)果。

1c

2、統(tǒng)計(jì)分析

本文提出的灰度值置亂算法可以有效的對(duì)圖像灰度進(jìn)行置亂,如圖7通過(guò)原圖像與加密圖像的灰度值直方圖比較后看出加密后的直方圖分布比較均勻。

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

分別從原圖和加密圖隨機(jī)選取1000個(gè)相鄰(垂直、水平、對(duì)角)像素點(diǎn)判斷其相關(guān)性,將灰度值顯示如圖8;計(jì)算相關(guān)系數(shù);結(jié)果如表2。從數(shù)值結(jié)果可以看出,本文的加密算法可以有效去除相關(guān)性,有效抵御統(tǒng)計(jì)和差分等攻擊。

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

為了檢驗(yàn)本文的加密方案的魯棒性,我們對(duì)圖像進(jìn)行剪切,壓縮等攻擊進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖8,其中Jpeg壓縮的品質(zhì)因子為60。通過(guò)攻擊實(shí)驗(yàn)表明,該加密算法有較好的魯棒性。

基于Arnold變換的混沌軌道遍歷性的數(shù)字圖像加密

數(shù)值實(shí)驗(yàn)表明本文的加密算法具有更好的加密效果,更大的密鑰空間以及更高的安全性,可以有效地抵抗了統(tǒng)計(jì)分析以及剪切、壓縮等攻擊。

小知識(shí)之Arnold變換

Arnold變換是一種常用的圖像置亂技術(shù),Arnold變換的定義如下:
對(duì)任意N*N矩陣(所有元素都相同的矩陣除外),設(shè)i,j為矩陣元素原始下標(biāo),經(jīng)過(guò)Arnold變換后新下標(biāo)為i',j',且滿足下式:
i'=(i+j)mod N
j'=(i+2j)mod N
i,j:0,1,.........N-1
Arnold變換具有周期性,即經(jīng)過(guò)若干次變換后,矩陣回到最初狀態(tài),且周期T與N的大小有關(guān)。理論基礎(chǔ)沒(méi)找到,但可以用程序來(lái)進(jìn)行計(jì)算,可以設(shè)i,j從一個(gè)點(diǎn)出發(fā),不斷使用以上變換,再次回到這個(gè)起點(diǎn)時(shí),經(jīng)歷的變換次數(shù)就是周期。