彩色圖像文件加密算法之二維Arnold映射
根據(jù)彩色圖像的特點(diǎn),基于二維Arnold映射和Logistic映射,我們設(shè)計(jì)了一種彩色圖像文件加密算法。
一、算法原理
1、Logistic映射
1)Logistic映射
Logistic映射具有結(jié)構(gòu)簡單、初值敏感和具有白噪聲統(tǒng)計(jì)特性等屬性,ak是初值a經(jīng)過k次迭代的迭代值,μ∈[0,4]被稱為Logistic控制參數(shù),有時(shí)又被稱為分支參數(shù),對(duì)不同的μ值系統(tǒng)將呈現(xiàn)不同的特性。該映射所產(chǎn)生的序列由μ和初始值a0控制,這兩個(gè)值中的任何一個(gè)有細(xì)微差別時(shí),所產(chǎn)生的序列都將會(huì)截然不同,研究表明當(dāng)μ∈(3. 5699--,4]時(shí),ak∈(0,1),系統(tǒng)處于混沌狀態(tài)。
2)Logistic置換
按照1)式給定的初始值a0∈(0,1),可以計(jì)算出一個(gè)由N個(gè)不重復(fù)數(shù)據(jù)構(gòu)成的序列{ak|k=1,2,…,N}。然后,將它們按遞增順序進(jìn)行排序得到ak,而ak原來的下標(biāo)記錄在b中,使得:
其中,bk是一個(gè)整數(shù),變化范圍為從1到N。
2、離散Arnold映射
Arnold變換是在研究混沌遍歷理論時(shí)提出的,因?yàn)榻?jīng)常用一張貓臉演示而得名,也稱為貓映射,它采用階數(shù)圖像矩陣把原來(xn,yn)點(diǎn)處的像素變換到點(diǎn)(xn+1,yn+1)處。Arnold變換公式為:
3、廣義貓映射
將Arnold變換擴(kuò)展為廣義貓映射,將二維Arnold映射引入?yún)?shù),并擴(kuò)展到NxN,同時(shí)離散化。
二、加密算法描述
1、基于二維Arnold映射的彩色圖像加密算法
1)基于二維Arnold映射和Logistic映射生成混沌偽隨機(jī)序列
由于二維Arnold映射數(shù)字化時(shí)具有周期性現(xiàn)象,所以基于Arnold映射的圖像加密只要知道加密算法,按照密文空間中任一個(gè)狀態(tài)進(jìn)行迭代,都會(huì)在有限步驟內(nèi)恢復(fù)明文,例如當(dāng)a=40,b=8,N=124時(shí),用式4)對(duì)Lena圖像像素位置進(jìn)行置亂,經(jīng)過5輪迭代,圖像即可恢復(fù)原樣,因而需要將Arnold變換和其它加密算法結(jié)合起來,以增強(qiáng)算法的安全性。
針對(duì)離散化后的二維貓映射輸出可能出現(xiàn)的偏差,使用Logistic映射與其進(jìn)行異或操作,偽隨機(jī)二進(jìn)制流由算法1產(chǎn)生。
算法1.設(shè)離散化Arnold映射二進(jìn)制輸出序列為C={ci},Logistic映射置換后輸出二進(jìn)制序列為B={bi},若輸出二進(jìn)制序列0={oi},則oi =ci+bi。
算法1得到的混沌偽隨機(jī)整數(shù)序列具有很好的統(tǒng)計(jì)學(xué)特性,可以修正離散化貓映射輸出的統(tǒng)計(jì)學(xué)缺陷,改變Arnold變換的周期性。
2)擴(kuò)散操作
在加密算法中引入擴(kuò)散,一方面可以使得離散化的混沌映射不可逆;另一方面通過在整個(gè)密文圖像上散播明文圖像每一比特的影響,可以改變明文圖像的統(tǒng)計(jì)特性,有效阻止攻擊者通過比較成對(duì)的明文與密文發(fā)現(xiàn)有用信息而攻破密碼系統(tǒng)。
為保證各顏色分量的微小變動(dòng)能擴(kuò)散到其他顏色分量,本加密算法使用交叉擴(kuò)散。
定義1、交叉加密擴(kuò)散,其中,R(i,j)、G (i,j)和B(i,j)表示彩色圖像像素點(diǎn)(i,j)紅、綠和藍(lán)三色的分量值,L為量化等級(jí)。
算法2、交叉擴(kuò)散操作:
步驟1、在紅、綠、藍(lán)三種顏色分量中按照6)式進(jìn)行交叉擴(kuò)散操作。
步驟2、除最后一行外,每行的最后一個(gè)像素按照6)式使用前一行第一個(gè)像素的值修改。
3)替換操作
對(duì)于彩色圖像分別在紅、綠、藍(lán)三種顏色分量間使用替換操作,利用偽隨機(jī)序列對(duì)明文圖像進(jìn)行掩蓋。
定義2、替換操作:
其中,KeystreamR、KeystreamG和KeystreamB是由算法1在不同顏色分量下生成的偽隨機(jī)序列流。
算法3、基于偽隨機(jī)序列的替換操作:使用偽隨機(jī)序列掩蓋彩色圖像的其他像素值,保持0,0)點(diǎn)的像素值不變,按照式7)進(jìn)行替換操作.
4)置亂操作
圖像置亂的基本思想是把圖像像素的位置打亂,做一次新的全排列,使圖像數(shù)據(jù)成為貌似隨機(jī)數(shù)據(jù)而達(dá)到加密的目的。由于圖像像素的相鄰關(guān)系和色彩的漸變效果發(fā)生了改變,從直觀的視覺效果中,已經(jīng)無法辨認(rèn)原圖像,利用Arnold變換的周期性、編碼與解碼的特性,應(yīng)用在圖像處理中效果良好。
定義3、Arnold映射的控制參數(shù):a,b和M由初始密鑰和0,O)點(diǎn)的像素值按8)式計(jì)算:
其中,keyg、keyh和keyM表示參數(shù)a、b和M的初始密鑰,R O,0)、GO,0)和BO,O)表示彩色圖像0,0)點(diǎn)的紅綠藍(lán)三個(gè)顏色分量的值。
定義4、位置置亂:圖像中坐標(biāo)為(i,j)的像素點(diǎn)在密文圖像中的新位置為(i‘,j’),用9)式計(jì)算:
其中N為圖像的大小,以像素為單位。
算法4、基于Arnold映射的置亂操作
步驟1、使用式8)確定貓映射的控制參數(shù)a、b和M。
步驟2、使用式9)對(duì)彩色圖像像素位置進(jìn)行置亂,即計(jì)算圖像中坐標(biāo)為(i,j)的像素點(diǎn)在密文圖像中的新位置為(i’,J)。
步驟3.置亂操作結(jié)束后,將0,O)點(diǎn)的像素值與由通訊雙方預(yù)先約定好的(r,c)點(diǎn)像素值進(jìn)行互換(r,c)點(diǎn)的像素值可以每輪不同。
為了達(dá)到更好的加密效果,更高的安全性,需要重復(fù)上述操作步驟,經(jīng)大量實(shí)驗(yàn)驗(yàn)證,重復(fù)兩輪就可以達(dá)到理想的加密效果。
2、解密算法
定義5、貓映射的逆映射
定義6、解密擴(kuò)散:紅、綠、藍(lán)三種顏色分量按照11)式恢復(fù)擴(kuò)散,對(duì)每行的最后一個(gè)像素最后一行除外),按照12)式恢復(fù)。
三、加密實(shí)驗(yàn)效果與安全性分析
1、加密實(shí)驗(yàn)效果
本文以經(jīng)典512×512的Lena彩色圖像作為明文圖像樣例,以內(nèi)存為IGB、CPU為1.90GHz的MABLABT 7.0為仿真性,圖2為加密前與解密后圖像的直方圖對(duì)比。
本文算法加密后的密文圖像的直方圖與原始圖像的直方圖有很大的不同,加密后的直方圖分布均勻,掩蓋了加密前的分布規(guī)律,增加了破譯難度。
2、像素相關(guān)性
像素相關(guān)性是測試圖像加密性能的重要指標(biāo)之一,相鄰兩點(diǎn)像素x,y相關(guān)系數(shù)可定義為:
其中E(x)是x的期望,D(x)是方差,N表示像素對(duì)的數(shù)量,對(duì)于mXn的圖像,N=2m(n-1)。
使用公式13)、11)、15)分別計(jì)算原始圖像圖1a)和密文圖像圖1 b)各顏色分量的像素間相關(guān)性如圖3所示),發(fā)現(xiàn)密文圖像各顏色分量的相關(guān)性極大地被降低了。
3、差分攻擊
測試明文圖像第一個(gè)像素的改變對(duì)密文圖像的影響,檢驗(yàn)算法對(duì)明文圖像任何改變的敏感性,比如明文圖像的任意1個(gè)比特、2個(gè)比特、3個(gè)比特等的改變會(huì)引起密文圖像多大的變化,用密文圖像的像素改變率RGB)和平均亮度變化率AICR)來度量.本文給出了明文圖像第一個(gè)像素的低8位受到不同改變時(shí),密文圖像的像素改變率和平均亮度變化率,反應(yīng)原文改變對(duì)密文的影響知表1所列)。
由表1看出,算法對(duì)于明文的改變導(dǎo)致密文的RCP值相同,即只要改變明文數(shù)據(jù),密文數(shù)據(jù)就會(huì)有相同的改變,而密文數(shù)據(jù)平均改變量的大小是隨明文數(shù)據(jù)改變量的增加而單調(diào)增加的。
4、密鑰空間及敏感性分析
本算法的所有操作都是基于混沌映射,初始值或控制參數(shù)的微小變化都會(huì)導(dǎo)致輸出的劇烈變化,致使圖像解密失敗,正確密鑰和錯(cuò)誤密鑰的解密圖,因而本文提出的算法密鑰空間很大,且具有密鑰敏感性。
小知識(shí)之Arnold變換
Arnold變換是一種常用的圖像置亂技術(shù),Arnold變換的定義如下:
對(duì)任意N*N矩陣(所有元素都相同的矩陣除外),設(shè)i,j為矩陣元素原始下標(biāo),經(jīng)過Arnold變換后新下標(biāo)為i',j',且滿足下式:
i'=(i+j)mod N
j'=(i+2j)mod N
i,j:0,1,.........N-1
Arnold變換具有周期性,即經(jīng)過若干次變換后,矩陣回到最初狀態(tài),且周期T與N的大小有關(guān)。理論基礎(chǔ)沒找到,但可以用程序來進(jìn)行計(jì)算,可以設(shè)i,j從一個(gè)點(diǎn)出發(fā),不斷使用以上變換,再次回到這個(gè)起點(diǎn)時(shí),經(jīng)歷的變換次數(shù)就是周期。



