聶文梅,李 媚
(山西大同大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,山西大同037009)
20世紀(jì)下半葉,非線性科學(xué)得到了蓬勃的發(fā)展[1]。其中,對(duì)混沌理論的研究占了很大份額。混沌變換的初值敏感性、混合等基本特性與密碼學(xué)有著天然的聯(lián)系。例如,混沌的軌道混合特性對(duì)應(yīng)了傳統(tǒng)加密系統(tǒng)的擴(kuò)散特性,而混沌信號(hào)的類隨機(jī)性和對(duì)系統(tǒng)參數(shù)的敏感性對(duì)應(yīng)了傳統(tǒng)加密系統(tǒng)的混亂特性。他們之間這種特有的天然聯(lián)系和結(jié)構(gòu)上的某些相似性,使得混沌理論被廣泛應(yīng)用到了加密領(lǐng)域。當(dāng)前混沌加密的方法主要包括:
(1)用密鑰或明文做混沌系統(tǒng)的初始條件或系統(tǒng)結(jié)構(gòu)參數(shù),然后再通過(guò)混沌系統(tǒng)適當(dāng)次數(shù)的迭代產(chǎn)生密文;
(2)利用單個(gè)或多個(gè)混沌系統(tǒng)來(lái)產(chǎn)生偽隨機(jī)序列作為密鑰序列,實(shí)現(xiàn)對(duì)原始數(shù)據(jù)的加密;第一種方式對(duì)應(yīng)于分組密碼而第二種方式對(duì)應(yīng)于流加密。
本文考慮第二種的流密碼方式。流密碼系統(tǒng)的核心設(shè)計(jì)部件是偽隨機(jī)數(shù)發(fā)生器:它決定著一個(gè)流密碼系統(tǒng)的安全性。流密碼強(qiáng)度依賴于PRNG所生成序列的隨機(jī)性和不可預(yù)測(cè)性[2]。
偽隨機(jī)序列的產(chǎn)生算法層出不窮,目前較流行的主要有下面幾類:
(1)利用Logistic映射先產(chǎn)生混沌的二值序列,然后將所得二值序列進(jìn)行某種函數(shù)運(yùn)算從而得到最終的偽隨機(jī)序列;或利用Logistic映射生成兩個(gè)混沌實(shí)值序列,通過(guò)比較兩個(gè)序列值的大小從而生成二值序列;或利用時(shí)空混沌系統(tǒng)生成實(shí)值序列,然后二進(jìn)制化序列的小數(shù)部分從而生成二值序列[3];
(2)利用三維混沌系統(tǒng)來(lái)生成混沌序列,然后對(duì)序列進(jìn)行改進(jìn)進(jìn)而生成所需的序列;
(3)利用超混沌系統(tǒng)來(lái)生成偽隨機(jī)序列,超混沌系統(tǒng)被稱作是一種特殊的混沌系統(tǒng),因?yàn)槠渚哂袃蓚€(gè)或兩個(gè)以上正的Lyapunov指數(shù)。這種方法先多位量化混沌實(shí)值來(lái)生成多個(gè)二值序列,然后對(duì)其進(jìn)行異或運(yùn)算從而生成最終的混沌序列,這種方法可以有效避免計(jì)算機(jī)有限精度效應(yīng)所引起的序列短周期問(wèn)題。
前兩種方法使用單一較低維的混沌系統(tǒng),加密系統(tǒng)的安全性較低,而且其中有些序列已經(jīng)成功的得到破譯。采用第三種方法就目前來(lái)說(shuō)是比較安全的,因?yàn)閷?duì)于混沌系統(tǒng)來(lái)說(shuō),正的Lyapunov指數(shù)越多,表示系統(tǒng)軌道的不穩(wěn)定的方向越多,隨機(jī)性越強(qiáng),因而利用該種系統(tǒng)所生成的偽隨機(jī)序列的安全性就越強(qiáng),就目前計(jì)算機(jī)的計(jì)算水平,想要破譯是有一定困難的。
本文采用廣義貓映射和陳氏超混沌系統(tǒng)相結(jié)合的方式對(duì)圖像進(jìn)行加解密研究。
離散化處理后的廣義貓映射定義如下:
陳氏超混沌系統(tǒng)是
其中,a,b,c,d和k均為系統(tǒng)參數(shù)。當(dāng)-0.7≤k≤0.7和a=36,b=3,c=28,d=-16時(shí),系統(tǒng)進(jìn)入了超混沌狀態(tài)。當(dāng)k=0.2時(shí),其Lyapunov指數(shù)為λ1=1.552,λ2=0.023,λ3=0,λ4=-12.573。
求解混沌系統(tǒng)微分方程組,令步長(zhǎng)h=0.01,首先對(duì)陳氏超混沌系統(tǒng)進(jìn)行N次迭代以保證其進(jìn)入穩(wěn)定狀態(tài),接下來(lái)繼續(xù)迭代超混沌系統(tǒng)來(lái)生成二值序列,具體方法如下:
1)首先設(shè)定系統(tǒng)初始值,求解系統(tǒng)方程組,先迭代超混沌系統(tǒng)N次,然后繼續(xù)迭代,生成4個(gè)實(shí)數(shù)值分別為x1,x2,x3,x4,接下來(lái)通過(guò)以下式子(3)得到實(shí)數(shù)值的小數(shù)部分。
其中,Abs(x)返回x的絕對(duì)值,Floor(x)返回不大于x的整數(shù)值,t表示迭代次數(shù)。
2)用二進(jìn)制來(lái)表示上一步所生成的實(shí)數(shù)值的小數(shù)部分,對(duì)于xt,如下式(4)所示:
其中,bi=1或0,n表示的是計(jì)算機(jī)精度,i=1,2,…,n-1。
3)分別取上一步所生成的二進(jìn)制小數(shù)部分從而得到二值序列X={b1,b2,…,bi,…,bn-1}。
4)將得到的4個(gè)二值序列按下式(5)進(jìn)行異或運(yùn)算,得到一個(gè)新的序列Xt(i):
5)繼續(xù)迭代超混沌系統(tǒng),并重復(fù)上述4個(gè)步驟,順次排列得到的二值序列,直至所需要的長(zhǎng)度從而得到最終的超混沌序列L。
針對(duì)數(shù)據(jù)圖像的特點(diǎn),為增加圖像的安全性在以下算法中仍采用位置變換和像素值改變相結(jié)合的方式對(duì)其進(jìn)行加密。由于Arnold是最簡(jiǎn)單快速的一種像素置亂方法,所以進(jìn)行位置變換時(shí)仍然采用廣義貓映射。另外采用了陳氏超混沌系統(tǒng)來(lái)對(duì)像素值進(jìn)行改變。
Step1:首先讀入一個(gè)數(shù)字圖像文件令其為I(i,j),其中i=0,1,…,W;j=0,1… H;如果W≠H,則對(duì)邊緣進(jìn)行值填充,填充時(shí),可用數(shù)值0或255,從而使W=H。
Step2:輸入密鑰K=(n1,n2,a,b,k,x10,x20,x30,x40),其中n1是位置置亂次數(shù),n2是陳氏超混沌系統(tǒng)的初始迭代次數(shù),a,b是Arnold映射的C的兩個(gè)元素,k和x10,x20,x30,x40分別是陳氏超混沌系統(tǒng)的系統(tǒng)參數(shù)和初值。
Step3:對(duì)圖像利用Arnold映射進(jìn)行n1次的位置置亂。并保留其置亂后的結(jié)果I'(i,j),等待對(duì)其利用陳氏超混沌系統(tǒng)序列進(jìn)行像素值改變。
Step4:利用前面所介紹的超混沌序列的產(chǎn)生方法生成超混沌序列L。
Step5:將L每八位為一組轉(zhuǎn)化成無(wú)符號(hào)的整數(shù),從而得到整數(shù)值序列Xn,利用以下式子,進(jìn)行密文反饋加密,得到最終加密圖像。
其中,Mk表示明文,Z表示圖像灰度級(jí),Ck表示密文。
Step6:判斷數(shù)字圖像的加密是否完成。如果完成進(jìn)入下一步;否則返回Step 2再進(jìn)行新一輪的加密。
Step7:加密完成,保存并輸出加密結(jié)果。
解密算法較簡(jiǎn)單,因?yàn)榫仃嚲哂锌赡嫘?所以對(duì)于采用Arnold映射進(jìn)行位置置亂的恢復(fù)只需將伴隨矩陣C用其逆陣代替即可,由于加密過(guò)程使用異或運(yùn)算以及加密反饋算法,很容易從加密算法中得到解密算法,故不再贅述。
利用MATLAB 7.8.0軟件,采用上述算法,對(duì)“penguin.jpg”圖像進(jìn)行了加/解密的仿真實(shí)驗(yàn),密鑰選取:K=(50,1000,1,2,0.2,0,0,0.0001,0),得到實(shí)驗(yàn)結(jié)果分別如下圖1,2,3,4。
圖1 原圖像
圖2 加密后圖像
圖3 解密后圖像
圖4 錯(cuò)解密圖像
圖2 “加密后的penguin.jpg”為圖1原圖像的加密結(jié)果,顯然從中已經(jīng)看不出原圖像的任何信息,加密算法取得了較好的效果;圖3解密后的圖像為對(duì)圖2加密后圖像的解密結(jié)果,通過(guò)比較圖1和圖3得知,兩個(gè)圖像的像素值完全相同,說(shuō)明采用本文提到的算法進(jìn)行加密不會(huì)造成任何圖像原始數(shù)據(jù)信息的丟失;圖4錯(cuò)解密圖像是將陳氏超混沌系統(tǒng)的初始值置為(0,0,0.000 2,0)即只改變x30值所得的解密結(jié)果,顯然,只簡(jiǎn)單的修改初始值即只讓x0僅僅相差0.000 1也不能正確解密,而且從解密結(jié)果圖4中還可以看出得不到原圖像任何信息,這一結(jié)果充分說(shuō)明了算法中混沌系統(tǒng)的初值敏感性,也充分體現(xiàn)了算法的安全性。
1)混亂和擴(kuò)散效果分析。錯(cuò)誤擴(kuò)散是指密文的很小錯(cuò)誤就能轉(zhuǎn)變成明文很大的錯(cuò)誤。因?yàn)閷?duì)混沌系統(tǒng)而言,如果正的Lyapunov指數(shù)越多,表明系統(tǒng)軌道不穩(wěn)定的方向就越多,其隨機(jī)性就越強(qiáng),那么基于該混沌系統(tǒng)生成的隨機(jī)序列的安全性就越強(qiáng)。而且本算法在生成隨機(jī)序列L時(shí),首先采用了四個(gè)值的異或,加密時(shí),又采用密文反饋的加密過(guò)程,這些措施都盡可能的實(shí)現(xiàn)了混亂與擴(kuò)散,用于掩蓋明文與密文間的關(guān)系,顯然,如果在加密過(guò)程中某一處出錯(cuò)的話,錯(cuò)誤擴(kuò)散將導(dǎo)致整個(gè)圖像不能正確的解密,進(jìn)一步又增強(qiáng)了圖像的加密效果。
2)密鑰分析。初始密鑰的強(qiáng)弱是衡量一個(gè)密碼算法安全與否的重要指標(biāo)。該算法的密鑰K為(n1,n2,a,b,k,x10,x20,x30,x40),該算法中初值(x10,x20,x30,x40)可以取值于(0,1)之間的任何值,k可以取[-0.7,0.7]其密鑰空間無(wú)窮大,n1,n2,a,b的不確定性,更極大地增大了密鑰空間,從而使得對(duì)密鑰K的窮舉攻擊變得不可行。
除了從密鑰空間角度的分析,密鑰是安全的,從密鑰敏感依賴性而言,由于混沌系統(tǒng)的初值敏感性使得密文對(duì)初始密鑰敏感性增強(qiáng),從而進(jìn)一步增強(qiáng)了算法的安全性。
3)算法充分考慮了位置變換和像素值改變相結(jié)合的圖像加密方式,采用像素值變換可以極大地改變圖像的直方圖,在一定程度上抵抗統(tǒng)計(jì)分析攻擊。本文在提出的算法中采用陳氏超混沌系統(tǒng)生成的序列對(duì)圖像灰度置亂即像素值改變,使得原來(lái)較集中的分布在某些灰度上的像素值加密后能夠均勻分布在整個(gè)灰度值空間,說(shuō)明該加密方法具有很好的灰度值均勻分布的特性,另外又結(jié)合廣義貓映射進(jìn)行位置置亂,使得整個(gè)加密算法加密效果更好、更安全。
本文利用Arnold和陳氏超混沌系統(tǒng)對(duì)數(shù)字圖像進(jìn)行了加解密研究,通過(guò)仿真實(shí)驗(yàn)結(jié)果和算法分析表明,該算法具有較好的加密效果和較強(qiáng)的安全性.但只是簡(jiǎn)單的對(duì)算法進(jìn)行了分析以及仿真實(shí)驗(yàn)驗(yàn)證,證明其加密效果良好,還有待進(jìn)一步與其它加密算法作詳細(xì)比較性研究,從而證明其優(yōu)越性.
[1]廖曉峰,肖迪,陳勇,等.混沌密碼學(xué)原理及其應(yīng)用[M].北京:科學(xué)出版社,2009.
[2]宋少忠,顏輝.電子商務(wù)安全與支付[M].北京:中國(guó)水利水電出版社,2009.
[3]Li Ping,Li Zhong,Halanga W A,et al.A multiple pseudor andombit generator based on a spatio temporal chaotic map[J].Physics Letters A,2006,349(6):467-473.
[4]黎羅羅.Arnold置亂變換周期分析[J].中山大學(xué)學(xué)報(bào),2005,44(2):124.
[5]劉金梅,丘水生,劉偉平.基于超混沌系統(tǒng)的圖像加密算法的安全性分析[J].計(jì)算機(jī)應(yīng)用研究,2010,27(3):1042-1043.