雙向耦合映像格子模型的圖像加密方法

目前,基于低維混沌系統(tǒng)的應(yīng)用于圖像文件加密已十分普遍,但低維混沌系統(tǒng)在有限精度下存在短周期的缺點(diǎn)成為在實(shí)際應(yīng)用中最大的障礙,但是低維混沌系統(tǒng)的實(shí)現(xiàn)簡(jiǎn)單、運(yùn)算速度快等特點(diǎn)使得它們?nèi)圆荒鼙粧仐?。為此,研究具有高自由度和高?fù)雜度的時(shí)空混沌系統(tǒng)并應(yīng)用于圖像加密迫在眉睫。我們提出了雙向耦合映像格子模型的圖像加密算法。

一、雙向耦合映像格子模型

時(shí)空耦合映像格子是一個(gè)時(shí)間空間離散化,但狀態(tài)變量仍保持連續(xù)的動(dòng)力學(xué)系統(tǒng)。耦合映像格子有著相對(duì)簡(jiǎn)單、容易計(jì)算等特點(diǎn),被廣泛應(yīng)用于時(shí)空混沌控制、同步、保密通信等研究之中。

描述時(shí)空混沌系統(tǒng)的主要數(shù)學(xué)工具有耦合常微分方程、偏微分方程、耦合映像格子模型等方程,其中耦合映像格子模型(CoupledMapLattice,CML)是研究人員經(jīng)常使用的研究工具。本文加密算法中用到的是雙向耦合映像格子模型(TwowayCoupledMapLattice,TCML)。

TCML模型的定義:

雙向耦合映像格子模型的圖像加密方法

式中,其中f(_)為非線性映射,ε為耦合系數(shù),周期性邊界條件滿足xn(0)=xn(L),xn(i)∈(0,1)。n=0,1,......為時(shí)間方向上的變量,i=0,1,......,L-1為空間方向上的變量,L為系統(tǒng)尺寸,函數(shù)f(x)取為L(zhǎng)ogistic混沌映射:

雙向耦合映像格子模型的圖像加密方法

其中3.5699456...≤μ≤4,0<xn<1。

二、TCML混沌序列的產(chǎn)生及改進(jìn)

良好的混沌圖像加密系統(tǒng)必須具有優(yōu)良相關(guān)特性的序列。用TCML模型生成三路混沌序列{b(0),b(1),b(2)}的過(guò)程如下:

(1)參數(shù)選擇:對(duì)式(1)中的雙向耦合映像格子模型,以Chebyshev映射產(chǎn)生的0到1之間的均勻分布的隨機(jī)數(shù)為初始值。系統(tǒng)尺寸L=30,迭代過(guò)渡過(guò)程長(zhǎng)度len=2000;系統(tǒng)迭代次數(shù)N=5000;Logistic映射參數(shù)μ=4,耦合系數(shù)ζ=0.234。

(2)系統(tǒng)格子初值產(chǎn)生:對(duì)式(3)Chebyshev映射取初值x0迭代2000次,得到x2000,繼續(xù)迭代,判斷此時(shí)xn值是否落入?yún)^(qū)間(0,1)。若是,將xn作為格子0的初值;否則,繼續(xù)迭代,直到xn落入?yún)^(qū)間(0,1)。重復(fù)上述步驟,直到30個(gè)格子都取得驅(qū)動(dòng)初值。

雙向耦合映像格子模型的圖像加密方法

(3)TCML序列產(chǎn)生:將步驟(2)中得到的系統(tǒng)格子初值,代入滿足步驟(1)中參數(shù)的TCML系統(tǒng)迭代N次,去掉len長(zhǎng)度的過(guò)渡過(guò)程,格子9、18、27的后N-len點(diǎn)分別作為三路混沌序列{b[0],b[1],b[2]}。

對(duì){b[0],b[1],b[2]}求序列各自的序列密度分布(量化到[0,255])、自相關(guān)特性和互相關(guān)特性來(lái)檢測(cè)序列的密碼學(xué)特性如圖1所示。

雙向耦合映像格子模型的圖像加密方法

可以看到各路序列密度分布較差,如果直接用這樣的序列對(duì)圖像進(jìn)行加密,密文很容易被攻擊者破譯。為了達(dá)到均勻分布的目的,采用一種改進(jìn)的混沌序列生成方法對(duì)直接得到的混沌值進(jìn)行預(yù)處理。整個(gè)預(yù)處理過(guò)程可由下式實(shí)現(xiàn)。

雙向耦合映像格子模型的圖像加密方法

其具體思路是,將某格點(diǎn)上的狀態(tài)量與其某相鄰格點(diǎn)的狀態(tài)量相減,得到的值作為新格點(diǎn)的狀態(tài)值,改進(jìn)后的各個(gè)序列密度分布、自相關(guān)特性和互相關(guān)特性如圖1所示。

(4)對(duì)混沌序列{b[0],b[1],b[2]}進(jìn)行改進(jìn),完成混沌序列生成。

三、圖像加密系統(tǒng)設(shè)計(jì)

1、加密系統(tǒng)密鑰設(shè)計(jì)

加密系統(tǒng)的密鑰分為用戶密鑰和圖像密鑰兩部分,其中用戶密鑰是由用戶提供的,由3個(gè)字節(jié)組成,記為key1、key2、key3;圖像密鑰是根據(jù)具體明文圖像內(nèi)容提取出來(lái)的密鑰:任
意選取4個(gè)不同的圖像密鑰。這里為了方便,從原始圖像f中任取6個(gè)像素點(diǎn),每?jī)蓚€(gè)像素點(diǎn)一對(duì),按比特位進(jìn)行異或操作,得到3個(gè)8位的輔助密鑰ka,kb,kc。為了提高系統(tǒng)的明文擴(kuò)散能力和明文敏感性,混沌參數(shù)選取規(guī)則如下:

(1)系統(tǒng)尺寸L=30;

(2)Chebyshev映射參數(shù):

雙向耦合映像格子模型的圖像加密方法

以x0為初值將Chebyshev映射迭代m次,按上章的有關(guān)步驟生成初始序列{init(i)(i=0,1,.....,29)};

(3)TCML系統(tǒng)參數(shù)

雙向耦合映像格子模型的圖像加密方法

2、加密過(guò)程

(1)將TCML系統(tǒng)在初始序列{init(i)(i=0,1,.......,29)}作用下迭代len次,得到新序列{s_new(i)(i=0,1,.......,29)},對(duì)其中的s_new(9),s_new(18),s_new(27)進(jìn)行改進(jìn)處理,得到對(duì)應(yīng)的值s9、s18、s27;

(2)將s9、s18、s27分別量化到[0,255]區(qū)間,量化公式如下:

雙向耦合映像格子模型的圖像加密方法

式中q1、q2、q3分別為量化后的值,[_]表示8bit截?cái)嗖僮鳌?/p>

(3)對(duì)圖像中的第1個(gè)像素f(0,0),對(duì)q1、q2、q3和像素做如下操作:

雙向耦合映像格子模型的圖像加密方法

用式(10)對(duì)f(0,0)進(jìn)行擾亂得到新的像素值f′(0,0),過(guò)程如下:

雙向耦合映像格子模型的圖像加密方法

(4)對(duì)其余的像素重復(fù)以上步驟,直到整幅圖像完成像素值擾亂,得到圖像f′(x,y);

(5)分別對(duì)f′(x,y)像素坐標(biāo)按式(11)進(jìn)行二維Arnold置亂。

定義:設(shè)有單位正方形上的點(diǎn)(x,y),將點(diǎn)(x,y)變到另一點(diǎn)(x′,y′)的變換為:

雙向耦合映像格子模型的圖像加密方法

此變換稱作二維Arnold變換。

考慮到數(shù)字圖像的要求,Arnold變換可改寫(xiě)為:

雙向耦合映像格子模型的圖像加密方法

其中N是數(shù)字圖像的階數(shù),(x,y)為圖像上像素點(diǎn)的坐標(biāo)。將二維Arnold變換應(yīng)用在圖像f(x,y)上,可以通過(guò)像素坐標(biāo)的改變而改變?cè)紙D像灰度值的布局。

(6)整個(gè)加密過(guò)程結(jié)束,解密是加密的逆過(guò)程。

四、實(shí)驗(yàn)結(jié)果及安全性分析

1、加密和解密實(shí)驗(yàn)結(jié)果

用一幅256×256大小圖像在PC機(jī)上進(jìn)行加密和解密實(shí)驗(yàn)。實(shí)驗(yàn)參數(shù)選擇:系統(tǒng)尺寸L=30;用戶密鑰key1=0x34,key2=0xfe,key3=0xc4;Logistic映射參數(shù)μ=4;TCML系統(tǒng)耦合系數(shù)ζ=0.234;Arnold置亂輪數(shù)m=20。實(shí)驗(yàn)效果見(jiàn)圖2。

雙向耦合映像格子模型的圖像加密方法

2、安全性分析

(1)密鑰空間分析

一個(gè)好的加密方案應(yīng)該使其密鑰空間足夠大從而使得強(qiáng)行攻擊不可行。在加密算法中,可擴(kuò)展的外部密鑰提供了所需安全等級(jí)的任意長(zhǎng)度密鑰,因此本方案密鑰空間是足夠大的。

(2)密鑰敏感性分析

密鑰敏感性,即密鑰的微小差別可以對(duì)密文造成很大的變化,從密文中也就很難得出有關(guān)密鑰的信息,從而獲取密鑰。在加密系統(tǒng)中,使用錯(cuò)誤密鑰的解密結(jié)果見(jiàn)圖3??梢钥闯鲥e(cuò)誤密鑰對(duì)加密圖進(jìn)行解密無(wú)法得到原始圖像的任何信息。

雙向耦合映像格子模型的圖像加密方法

(3)直方圖分析

圖4為對(duì)圖像進(jìn)行加密前后的直方圖。圖4(a)和圖4(b)比較,可見(jiàn)使用本算法所得的密圖的直方圖分布很均勻,完全掩蓋了變換前的分布規(guī)律,才能使破譯難度進(jìn)一步增加。

雙向耦合映像格子模型的圖像加密方法

(4)相鄰像素的相關(guān)性

加密前圖像中相鄰像素的相關(guān)性明顯很大,降低相鄰兩個(gè)像素的相關(guān)性才能破壞統(tǒng)計(jì)攻擊。所以在原始圖像和加密圖像中各隨機(jī)選1000對(duì)像素對(duì),測(cè)試其相關(guān)性(垂直方向、水平方向),并進(jìn)行相關(guān)系數(shù)計(jì)算。其中x,y表示像素灰度(兩個(gè)相鄰)。在測(cè)試中,使用如下3個(gè)離散化公式:

雙向耦合映像格子模型的圖像加密方法

圖5給出了利用本算法對(duì)Lena圖像進(jìn)行加密前后圖像的相鄰像素水平相關(guān)性。

雙向耦合映像格子模型的圖像加密方法

表1列出了圖像加密前后相關(guān)系數(shù)(水平,垂直方向)。由表1和圖5可見(jiàn),加密后圖像相鄰像素間的相關(guān)性要遠(yuǎn)小于Lena原圖像的,這表明本算法具有較強(qiáng)的抗統(tǒng)計(jì)分析能力。

(5)差分攻擊

攻擊者通過(guò)圖像中很小的一點(diǎn)(例如一個(gè)像素)來(lái)觀察加密后圖像的變化,來(lái)破解加密圖像。

這里以原始圖像一個(gè)像素的改變對(duì)加密圖像的影響為例測(cè)試了差分攻擊。先定義了兩個(gè)量:歸一化平均變化強(qiáng)度(UACI)和像素變化率(NPCR)。令加密圖像(兩幅)分別為C1和C2,這些圖像只有一個(gè)像素的改變。像素在位置(i,j)的灰度值為C1(i,j)和C2(i,j)。定義一個(gè)二值矩陣D,它和C1與C2有相同的尺寸。若C1(i,j)=C2(i,j),則D(i,j)=1;否則D(i,j)=0。

NPCR定義為:

雙向耦合映像格子模型的圖像加密方法

UACI定義為:

雙向耦合映像格子模型的圖像加密方法

經(jīng)過(guò)計(jì)算可以得到NPCR=0.424%,UACI=27.12%,由此可見(jiàn)算法不僅僅對(duì)密鑰是敏感的,對(duì)要加密的圖像也是非常敏感的,可見(jiàn)可以有效地抵抗差分攻擊。

?小知識(shí)之耦合

耦合是指兩個(gè)或兩個(gè)以上的電路元件或電網(wǎng)絡(luò)的輸入與輸出之間存在緊密配合與相互影響,并通過(guò)相互作用從一側(cè)向另一側(cè)傳輸能量的現(xiàn)象;概括的說(shuō)耦合就是指兩個(gè)或兩個(gè)以上的實(shí)體相互依賴于對(duì)方的一個(gè)量度。