圖像加密算法之一維離散混沌映射加密
將混沌映射應(yīng)用于加密和解密,產(chǎn)生的加密算法比現(xiàn)有的加密算法實現(xiàn)方便,加密和解密速度快,安全性高,使得近年來混沌加密的研究成為加密研究領(lǐng)域的一個熱點。那么,我今天就給大家介紹一種基于一維離散混沌映射的圖像加密算法。
一、基于一維離散混沌映射的圖像加密算法
該加密算琺的結(jié)構(gòu)類似于Feistel網(wǎng)絡(luò)結(jié)構(gòu)中的SP網(wǎng)絡(luò)結(jié)構(gòu),分為替代變換和置換變換兩部分,用于給圖像文件加密,圖像為N×N的矩陣,I(i,j)為圖像(i,j)點的像素值,L為圖像的灰度級數(shù)。先對像素值I(i,j)進行替代變換,再對位置點(i,j)進行置換變換,迭代r輪后進行加解密。
其中替代變換算法如下:

加密過程,首先由混沌映射式(2)產(chǎn)生一個偽隨機序列Xn,經(jīng)過式(4)處理為一致分布的混沌序列,再經(jīng)過式(5)轉(zhuǎn)化為整數(shù)賦值給K(i,j),最后由式(1)將像素值替代。其中,η>1且不大,密鑰為(x0,η)。
置換變換算法如下:

置換變換將像素從位置點(i,j)移位到(S1,S2),r為迭代的輪數(shù),密鑰為(ki,o,k2,0,a,b)。算法流程如圖1所示。

二、對基于一維離散混沌映射的圖像加密算法的分析
首先,分析該算法的置換變換,將置換變換中的式(8)和式(9)分別代入式(6)和式(7),得
![]()
由此可見,每一輪后,新位置點的一維順序mi都可以表不成i,j和k i,j的固定函數(shù):
![]()
其中p,p'為只含i,j變量的表達式且modN的函數(shù),q,q’為只含kn1、n2變量且modN的函數(shù)。
由式(14)可知迭代r輪后,新位置點的位置由q(kn1、n2)與q’(kn1、n2)確定,q(kn1、n2)與q’(kn1、n2)所有的不同值只有N×N個,即新位置點的不同種類也只有N×N個,而不是隨機變換應(yīng)有(N×N)!個。N×N是很小的一個數(shù),使用窮舉方法,幾分鐘就可找到正確的新位置點的位置。該加密算法的置換變換所提供的密鑰空間太小,不能保證數(shù)據(jù)的安全性。
再分析替代變換算法,在加密算法中,該文作者使用了稱之為“完全不可預(yù)測”的離散混沌映射式(2),該文認為該序列的下一個值不能由序列的以前值預(yù)測,并舉例:
η= 3/2,xn,xn+1可表示為:
![]()
-1<t<1,若想從Xn計算Xn+1則有兩種可能:
![]()
因此從當(dāng)前值不能預(yù)測下一個值。但該例只能證明當(dāng)密碼攻擊者掌握的序列值不夠多時,無法預(yù)測序列值。而當(dāng)密碼攻擊者掌握的序列值足夠多時完全可以求得式(2)中的θ與η。比如該例中,若密碼攻擊者知道從第n項開始的若干個序列值,則由式(2)知:
![]()
由于θπηn為一有限值,則式(18)的解集的個數(shù)有限,再由式(17)知對式(18)的解集,xn+1有兩種可能,則加入xn+1的方程,解集的個數(shù)成倍減小,繼續(xù)加入序列值,可以求出唯一的θ與η值(見表1)。

更糟糕的是,當(dāng)密碼攻擊者掌握了序列的前3個點時,由于θ值<1/2,η不大,則僅3個點就可求出θ與η(由于圖像文件的格式標(biāo)志處于文件頭,這部分的明文容易猜出)??梢娛褂迷撘痪S離散混沌映射的替代算法也不安全。
又由式(1)知,由明密文對可推知k(i,j),再由式(5)知,yn約等于k(i,j)/(L-1)(當(dāng)L很大時,比如對于L=232+1,并且數(shù)據(jù)使用單精度,則二者沒有誤差;而當(dāng)L比較小時,可求密鑰的前若干數(shù)位的值),又由式(4)可求得xn。由此可知由明密文對可推算出該一維離散混沌映射值(見式(1 9))。
![]()
將式(2)和式(4)代入式(19)得:
![]()
其中mi為該點在i輪時的順序。式(20)可化簡為式(21)。
![]()
int()為求整函數(shù)。將式(14)展開:

設(shè)q(kni,n2)×N+q’(kni,n2)為T i,則每一輪的順序可由一個變量決定點的位置。
綜合以上分析,對該加密算法可提出完整的已知明文攻擊方法:
(1)對已知明文窮舉N×N種密文位置,獲得明密文對。
(2)每一個明密文對,推算出式(20)的右邊的值(設(shè)為ai)。
(3)每一個明密文對,對應(yīng)一個方程,由所有的明密文對列出如式(21)的方程組。該方程組有r+1個未知數(shù),則需要有r+1個明密文對,由于式(10)和式(11)的關(guān)系,未知數(shù)的個數(shù)不會隨r的變化而增加,理想的情況下僅需6個方程就可求出任意r輪的密鑰。
(4)使用牛頓迭代法或其它方法解此非線性方程組,求出Ti和θ,η。
(5)用解得的密鑰解密圖像,直到得到正確圖像為止(見圖2)。

三、基于一維離散混沌映射的圖像加密算法攻擊實例
設(shè)r=2, 0=0.223 456 7,η=1.ooi 432, ti=1(k1,i=0,k2. 1=1),N=256,L=232+1,并且數(shù)據(jù)使用單精度,將圖像pepper加密,如圖3(a)所示。已知圖像點(0,0),點(0,1),點(1,0)的像素值,窮舉65 536種密文位置后,由其中一種正確的明密文對推算出ai=1.107 688 8,a2=1.548 374 6,a3=1.978 115 1(ai,a2,a3還可能等于0.107 688 8,0.548 374 6,0.978 115 1但獲得的解不能解密圖像)。列出的方程組如下:

使用牛頓迭代法,θ初值為0.22,η初值為1.001,t1初值為0,int(x)的導(dǎo)數(shù)為0。求得結(jié)果為θ=0.223 456 7,r1= 1.025432,t1=1,破譯的結(jié)果如圖3(b)所示。結(jié)果完全正確,說明該加密算法分析的攻擊方法有效。

四、基于一維離散混沌映射的圖像加密算法建議改進方案
基于一維離散混沌映射的圖像加密算法的存在以下安全漏洞:
(1)替代算法的混沌加密不能抵御已知明文攻擊;
(2)替換算法的混沌替換只提供了很小的密鑰空間,不能抵抗窮舉攻擊。
本文建議修改其替代變換算法和置換變換算法,首先使用分段線性映射式(24)經(jīng)過多次迭代前饋的一維離散混沌算法來代替式(2)的算法。
![]()
使用式(24)時,采用多次迭代進行前饋,即Xn+i=Fm(xn),迭代的次數(shù)m如果大于數(shù)據(jù)的實現(xiàn)精度,則可抵御已知明文攻擊。事實上,即使攻擊者知道多個經(jīng)過m次迭代的混沌序列值,由于Xn+1與Xn之間可能的分段種類有4m種,比窮舉密鑰的次數(shù)還多,又任意Xn+l與Xn之間的分段都不同,lyapunov指數(shù)也求不出來,因此已知明文攻擊無效。其次本文建議將置換算法進行如下修改:每輪迭代替換之前,由式(11)產(chǎn)生一個不同的混沌序列數(shù),將其作為式(10)的初始值,由式(10)產(chǎn)生N2個混沌序列數(shù),將這N2個不相等的混沌序列數(shù)由小到大排序,序列的原順序與排序后順序形成的一對一映射作為置換變換。新的置換變換的種類有(N2)!個,窮舉攻擊完全無效。經(jīng)過如上修改,該加密算法的安全性得到很大提高。
小知識之Lyapunov指數(shù)
Lyapunov指數(shù)是衡量系統(tǒng)動力學(xué)特性的一個重要定量指標(biāo),它表征了系統(tǒng)在相空間中相鄰軌道間收斂或發(fā)散的平均指數(shù)率。對于系統(tǒng)是否存在動力學(xué)混沌, 可以從最大Lyapunov指數(shù)是否大于零非常直觀的判斷出來: 一個正的Lyapunov指數(shù),意味著在系統(tǒng)相空間中,無論初始兩條軌線的間距多么小,其差別都會隨著時間的演化而成指數(shù)率的增加以致達到無法預(yù)測,這就是混沌現(xiàn)象。










