奚新寶, 謝淑翠, 張建中
(1.西安郵電大學(xué) 通信與信息工程學(xué)院,陜西 西安 710121; 2.西安郵電大學(xué) 理學(xué)院,陜西 西安 710121;3.陜西師范大學(xué) 數(shù)學(xué)與信息科學(xué)學(xué)院,陜西 西安 710061)
隨著網(wǎng)絡(luò)技術(shù)、數(shù)字信息化技術(shù)的發(fā)展,數(shù)字圖像越來越成為多媒體信息交流的重要載體之一。由于網(wǎng)絡(luò)的信息共享性和開放性,圖像信息數(shù)據(jù)傳輸?shù)陌踩珕栴}日益嚴(yán)峻,使得研究高安全性和高效的圖像加密算法成為當(dāng)前研究的熱點(diǎn)問題。密碼學(xué)和混沌學(xué)[1]這兩門學(xué)科在結(jié)構(gòu)上存在著許多聯(lián)系和相似性,因此,啟發(fā)人們將混沌理論的研究應(yīng)用到密碼學(xué)領(lǐng)域。且混沌系統(tǒng)具有偽隨機(jī)性、不可預(yù)測性和初值敏感性[2]等特點(diǎn),適用于圖像加密系統(tǒng)的設(shè)計(jì)。
1998年,F(xiàn)ridrich J首次將混沌系統(tǒng)和數(shù)字圖像加密相結(jié)合[3],在此之后各種基于混沌系統(tǒng)的圖像加密方案被陸續(xù)提了出來。文獻(xiàn)[4]設(shè)計(jì)了一種改進(jìn)型Henon映射,更加適用于設(shè)計(jì)安全的密碼系統(tǒng)。Chai X L等人[5]設(shè)計(jì)了一種基于脫氧核糖核酸(DNA)操作的混沌圖像加密方法,加密效果良好。盡管多種加密方案層出不窮,但部分方案的加密算法存在安全性缺陷。文獻(xiàn)[6]設(shè)計(jì)了一種基于元胞自動機(jī)(cellular automata,CA)和Tent映射的圖像加密方案,但采用一維混沌系統(tǒng),使得密鑰空間小,安全性不高。在文獻(xiàn)[7]設(shè)計(jì)了一種圖像加密算法,在像素?cái)U(kuò)散階段采用典型耦合映射格(CML)和信息熵來產(chǎn)生另一密鑰流,但密文圖像的部分信息容易暴露,從而算法安全性較低。
本文在置亂階段使用三維細(xì)胞神經(jīng)網(wǎng)絡(luò)(cellular neural network,CNN)混沌系統(tǒng)生成的偽隨機(jī)序列與二維廣義Arnold映射對圖像完成2次置亂,同時將該映射產(chǎn)生的混沌序列用于像素值擴(kuò)散階段,采用加取模和循環(huán)移位來進(jìn)行像素值擴(kuò)散得到最終密文圖像。該算法克服了混沌系統(tǒng)結(jié)構(gòu)單一等問題,仿真結(jié)果和安全性分析表明該算法是安全可行的。
收稿日期:2020—09—29
本文利用推廣后的二維廣義Arnold映射[8],方程如下
(1)
式中 (x,y)和(x′y′)分別為經(jīng)過Arnold變換前后的圖像像素位置,參數(shù)a,b均為正整數(shù),n為變換次數(shù),N為圖像矩陣的階數(shù)。
引入分段線性混沌映射(piece wise linear chaotic map,PWLCM)生成二維廣義Arnold映射的控制參數(shù),每循環(huán)一次Arnold映射的控制參數(shù)都不同,從而達(dá)到動態(tài)產(chǎn)生密鑰的效果。分段線性混沌映射表示為
(2)
式中x,c分別為該混沌映射的系統(tǒng)狀態(tài)變量和控制參數(shù),當(dāng)控制參數(shù)c∈(0,0.5),x∈(0,1)時,系統(tǒng)處于混沌狀態(tài)。
Chua L O在1988年第一次提出了CNN的概念,CNN是一種通過于局部細(xì)胞互連構(gòu)造而成的神經(jīng)網(wǎng)絡(luò)系統(tǒng)[9]。三維CNN系統(tǒng)的動力學(xué)方程為
j=1,2,3
(3)
式中j為細(xì)胞,xj為細(xì)胞狀態(tài),Ajk為反饋模板,Sjk為控制模板,Ij為閾值,f(xj)為輸出,其表達(dá)式如下
(4)
實(shí)驗(yàn)證明,當(dāng)三維CNN系統(tǒng)中的參數(shù)取值如式(5)時,三維CNN系統(tǒng)可產(chǎn)生混沌現(xiàn)象
aj=0
(5)
將以上參數(shù)代入式(3)后即可以得到三維CNN混沌系統(tǒng)的動力學(xué)方程如下
(6)
本文的加密算法主要由置亂和擴(kuò)散兩個階段構(gòu)成,明文圖像記為PM×N,M,N分別為圖像的高和寬。
步驟1 利用SHA—256函數(shù)計(jì)算明文圖像的256 bit哈希值作為密鑰,記作K,K=[k1,k2,…,k32]。其中,ki={ki1,ki2,…,ki8},i=1,2,…,32。
利用明文圖像計(jì)算輔助參數(shù)d,公式如下
d=mod(floor(sum/(MN)×256)×1012,32)+1
(7)
步驟2 將明文圖像PM×N按行或列展開成一維向量,記為A。利用步驟1產(chǎn)生三維CNN混沌系統(tǒng)的初始值,然后對三維CNN混沌系統(tǒng)迭代產(chǎn)生長度分別為MN/3的混沌序列x1(i),x2(i),x3(i),其中,ceil為向上取整函數(shù),由于混沌序列的值域范圍較大,不利于數(shù)據(jù)批處理,因此,需對其進(jìn)行優(yōu)化預(yù)處理,預(yù)處理過程如下
x1(i)=1014x1(i)-floor(1014x1(i))
(8)
式中 floor為取整函數(shù),另外2個序列的預(yù)處理運(yùn)算過程同式(8)。所得混沌序列記s={x1(i),x2(i),x3(i)},由s生成偽隨機(jī)序列X,序列X中第j個數(shù)表示如下
Xj=mod(floor((sj+100)×1010),M×N)+1,
j=1,2,…,M×N
(9)
步驟3 將序列X中重復(fù)出現(xiàn)的偽隨機(jī)數(shù)只保留一個,將集合{1,2,…,MN}中沒有出現(xiàn)在序列X中的數(shù)值按由小到大順序添加到序列X的末尾。最后將A(Xj)與A(XMN-j+1)交換位置,即完成無重復(fù)置亂,得到的中間密文圖像記為B,B=reshape(A,M,N)。
步驟4 輸入PWLCM的系統(tǒng)狀態(tài)初始值x0與控制參數(shù)c,將該映射迭代2 000次生成混沌序列F,并通過式(10)、式(11)產(chǎn)生廣義Arnold映射加密所需的控制參數(shù)
h=fix(F(k)×10p)-fix(F(k)×10q)×10p-q
(10)
u=(h×105)mod 256,v=(h×106)mod 256
(11)
式中p,q為正整數(shù);fix為朝0方向取整,k為小于2 000的正整數(shù)。對圖像B借助二維廣義Arnold映射進(jìn)行置亂,將步驟重復(fù)R輪得到2次置亂后的中間密文圖像,記為H。
步驟1 利用置亂階段步驟2得到的混沌序列s生成偽隨機(jī)序列S,公式如下
S=mod(floor(s×pow2(16)),256)
(12)
步驟2 用H和G分別為基于加取模擴(kuò)散前后的圖像,在加取模運(yùn)算過程中,需要將明文任意像素點(diǎn)信息擴(kuò)散到密文的整個圖像之中,正向的算法如下
Gi=(Gi-1+Si+Hi)mod 256
(13)
其中,G0=0,逆向的算法如下
Gi=(Gi+1+Si+Hi)mod 256
(14)
在基于加取模擴(kuò)散算法的基礎(chǔ)上添加循環(huán)移位操作,具體公式如下
Gimod 256<< (15) 式中 LSB3為取數(shù)據(jù)的最低3位,即如果是l位的灰度圖像,則應(yīng)取數(shù)據(jù)的最低log2l位或者任意的log2l位。最后,將一維向量還原成二維圖像即得到最終密文圖像,記為C。 先對密文圖像的數(shù)據(jù)點(diǎn)進(jìn)行循環(huán)右移操作。分別對加取模擴(kuò)散運(yùn)算的逆向算法進(jìn)行正向操作和對正向算法進(jìn)行逆向操作,最后對Arnold變換做逆變換,再進(jìn)行無重復(fù)置亂的逆運(yùn)算,得到明文圖像。 仿真實(shí)驗(yàn)使用的測試圖像是大小為512×512的Lena圖像,PWLCM的控制參數(shù)c=0.2,狀態(tài)變量初值x0=0.5,二維廣義Arnold映射的控制參數(shù)n=160,循環(huán)輪數(shù)R=3。使用MATLAB 2014b版本平臺下進(jìn)行加解密實(shí)驗(yàn)。仿真結(jié)果如圖1所示,可見本文算法具有很好的加解密效果。 圖1 仿真結(jié)果 文獻(xiàn)[10]指出一個安全有效的加密算法的密鑰空間大小應(yīng)該至少為2100,本文算法的密鑰由明文圖像256 bit哈希值K,PWLCM的初始狀態(tài)值x0和控制參數(shù)c,Arnold變換次數(shù)n和循環(huán)輪數(shù)R以及明文像素值之和sum組成。采用精確到小數(shù)點(diǎn)后16位的雙精度表示,密鑰空間大小為2256×(1016)4×sum≈2469?2100,說明加密算法的密鑰空間可以抵抗窮舉攻擊。 圖2給出了Lena圖像與其密文圖像的直方圖,可見明文圖像的直方圖分布是呈高低不均狀態(tài),而密文圖像的直方圖分布相對更加均勻。即本文算法加密后所得的密文圖像的像素值是滿足均勻分布的。 圖2 明密文圖像的直方圖 相鄰像素相關(guān)系數(shù)的計(jì)算公式如下 (16) (17) (18) 式中x,y為相鄰兩個像素的灰度值,E(x),E(y)分別為x,y的期望,rxy為相關(guān)系數(shù),N為相鄰像素對的數(shù)目。圖3給出了Lena明文圖像與其密文圖像的相鄰像素在水平方向相關(guān)分布情況,表1給出了本文算法相關(guān)系數(shù)的計(jì)算結(jié)果。 圖3 明密文的相鄰像素在水平方向的分布情況 表1 相鄰像素的相關(guān)系數(shù) 由表1可見,本文算法得到的密文圖像的相關(guān)系數(shù)幾乎接近于0,明文圖像的相關(guān)系數(shù)接近于1。相比于文獻(xiàn)[11~13],本文算法得到的密文圖像相關(guān)系數(shù)較小,說明密文圖像在各個方向上幾乎不具有相關(guān)性。 一般使用像素?cái)?shù)變化率(number of pixels change rate,NPCR)以及統(tǒng)一平均變化強(qiáng)度(unified average changing intensity,UACI)兩項(xiàng)指標(biāo)來衡量加密系統(tǒng)的抗差分攻擊能力[14]。NPCR和UACI定義如下 (19) (20) 式中C1(i,j)≠C2(i,j)時,D(i,j)為1;C1(i,j)=C2(i,j)時,D(i,j)為0。,M,N分別為圖像像素的行數(shù)和列數(shù),C1(i,j),C2(i,j)分別為兩幅灰度圖像。表2給出了本文算法對100組Lena原始密文圖像和隨機(jī)微小改變明文后加密得到的密文圖像之間的最大、最小和平均NPCR和UACI值。 表2 明文敏感性測試結(jié)果 由表2可見,本文算法計(jì)算得到的NPCR和UACI的平均值非常接近于理想值,相比于文獻(xiàn)[13,15],本文提出的算法對明文的微小改變的敏感性較強(qiáng),所以,本文算法更能有效地抵抗差分攻擊。 密鑰敏感性[16]是指在加解密過程中,當(dāng)密鑰發(fā)生微小變化時,加解密圖像會發(fā)生很大變化。選取一組密鑰{c,x0,K},3個微小改變后的密鑰:KEY1={c+10-14,x0,K},KEY2={c,x0+10-14,K},KEY3={c,x0,Km}。其中,密鑰c,x0微小改變的量為10-14,K的微小改變量為1 bit的哈希值,記為Km,利用微小改變后的密鑰分別加密Lena圖像并解密其密文圖像,計(jì)算得到的NPCR,UACI值如表3所示,可見計(jì)算得到的NPCR和UACI值接近于理想值。因此,本文算法的密鑰敏感性較強(qiáng)。 表3 密鑰敏感性測試結(jié)果 % 信息熵計(jì)算公式如下 (21) 式中L圖像的灰度等級,p(i)為灰度值i出現(xiàn)的概率,對于L=256的灰度圖像,其信息熵的理想值為8。表4給出了信息熵的測試結(jié)果,和文獻(xiàn)[13,17]相比,本文算法的密文圖像的信息熵更接近理論值8。所以,本文算法加密得到的密文圖像可以有效地抵抗統(tǒng)計(jì)分析攻擊。 表4 信息熵測試結(jié)果 本文提出了一種基于多混沌系統(tǒng)的圖像加密算法,首先利用三維CNN混沌系統(tǒng)產(chǎn)生的混沌序列用于對明文圖像進(jìn)行無重復(fù)置亂,并對置亂后的圖像進(jìn)行Arnold變換完成2次置亂,之后在像素?cái)U(kuò)散階段,使用三維CNN混沌系統(tǒng)產(chǎn)生的混沌序列作為會話密鑰與置亂后的圖像,采用加取模和循環(huán)移位來進(jìn)行像素值的擴(kuò)散。仿真結(jié)果和安全性分析表明:本文提出的加密算法密鑰空間大,密文圖像直方圖分布均勻,相鄰像素相關(guān)性小,密鑰敏感性高,抗差分攻擊能力強(qiáng)。因此,本文提出的算法具有較高的安全性,并在保密通信應(yīng)用中具有較大的實(shí)用價值。3 解密算法
4 仿真結(jié)果
5 安全性分析
5.1 密鑰空間
5.2 灰度直方圖
5.3 相鄰像素相關(guān)性
5.4 抗差分攻擊分析
5.5 密鑰敏感性
5.6 信息熵分析
6 結(jié)束語