聶文梅,李 媚
(山西大同大學數學與計算機科學學院,山西大同037009)
20世紀下半葉,非線性科學得到了蓬勃的發展[1]。其中,對混沌理論的研究占了很大份額。混沌變換的初值敏感性、混合等基本特性與密碼學有著天然的聯系。例如,混沌的軌道混合特性對應了傳統加密系統的擴散特性,而混沌信號的類隨機性和對系統參數的敏感性對應了傳統加密系統的混亂特性。他們之間這種特有的天然聯系和結構上的某些相似性,使得混沌理論被廣泛應用到了加密領域。當前混沌加密的方法主要包括:
(1)用密鑰或明文做混沌系統的初始條件或系統結構參數,然后再通過混沌系統適當次數的迭代產生密文;
(2)利用單個或多個混沌系統來產生偽隨機序列作為密鑰序列,實現對原始數據的加密;第一種方式對應于分組密碼而第二種方式對應于流加密。
本文考慮第二種的流密碼方式。流密碼系統的核心設計部件是偽隨機數發生器:它決定著一個流密碼系統的安全性。流密碼強度依賴于PRNG所生成序列的隨機性和不可預測性[2]。
偽隨機序列的產生算法層出不窮,目前較流行的主要有下面幾類:
(1)利用Logistic映射先產生混沌的二值序列,然后將所得二值序列進行某種函數運算從而得到最終的偽隨機序列;或利用Logistic映射生成兩個混沌實值序列,通過比較兩個序列值的大小從而生成二值序列;或利用時空混沌系統生成實值序列,然后二進制化序列的小數部分從而生成二值序列[3];
(2)利用三維混沌系統來生成混沌序列,然后對序列進行改進進而生成所需的序列;
(3)利用超混沌系統來生成偽隨機序列,超混沌系統被稱作是一種特殊的混沌系統,因為其具有兩個或兩個以上正的Lyapunov指數。這種方法先多位量化混沌實值來生成多個二值序列,然后對其進行異或運算從而生成最終的混沌序列,這種方法可以有效避免計算機有限精度效應所引起的序列短周期問題。
前兩種方法使用單一較低維的混沌系統,加密系統的安全性較低,而且其中有些序列已經成功的得到破譯。采用第三種方法就目前來說是比較安全的,因為對于混沌系統來說,正的Lyapunov指數越多,表示系統軌道的不穩定的方向越多,隨機性越強,因而利用該種系統所生成的偽隨機序列的安全性就越強,就目前計算機的計算水平,想要破譯是有一定困難的。
本文采用廣義貓映射和陳氏超混沌系統相結合的方式對圖像進行加解密研究。
離散化處理后的廣義貓映射定義如下:

陳氏超混沌系統是

其中,a,b,c,d和k均為系統參數。當-0.7≤k≤0.7和a=36,b=3,c=28,d=-16時,系統進入了超混沌狀態。當k=0.2時,其Lyapunov指數為λ1=1.552,λ2=0.023,λ3=0,λ4=-12.573。
求解混沌系統微分方程組,令步長h=0.01,首先對陳氏超混沌系統進行N次迭代以保證其進入穩定狀態,接下來繼續迭代超混沌系統來生成二值序列,具體方法如下:
1)首先設定系統初始值,求解系統方程組,先迭代超混沌系統N次,然后繼續迭代,生成4個實數值分別為x1,x2,x3,x4,接下來通過以下式子(3)得到實數值的小數部分。

其中,Abs(x)返回x的絕對值,Floor(x)返回不大于x的整數值,t表示迭代次數。
2)用二進制來表示上一步所生成的實數值的小數部分,對于xt,如下式(4)所示:

其中,bi=1或0,n表示的是計算機精度,i=1,2,…,n-1。
3)分別取上一步所生成的二進制小數部分從而得到二值序列X={b1,b2,…,bi,…,bn-1}。
4)將得到的4個二值序列按下式(5)進行異或運算,得到一個新的序列Xt(i):

5)繼續迭代超混沌系統,并重復上述4個步驟,順次排列得到的二值序列,直至所需要的長度從而得到最終的超混沌序列L。
針對數據圖像的特點,為增加圖像的安全性在以下算法中仍采用位置變換和像素值改變相結合的方式對其進行加密。由于Arnold是最簡單快速的一種像素置亂方法,所以進行位置變換時仍然采用廣義貓映射。另外采用了陳氏超混沌系統來對像素值進行改變。
Step1:首先讀入一個數字圖像文件令其為I(i,j),其中i=0,1,…,W;j=0,1… H;如果W≠H,則對邊緣進行值填充,填充時,可用數值0或255,從而使W=H。
Step2:輸入密鑰K=(n1,n2,a,b,k,x10,x20,x30,x40),其中n1是位置置亂次數,n2是陳氏超混沌系統的初始迭代次數,a,b是Arnold映射的C的兩個元素,k和x10,x20,x30,x40分別是陳氏超混沌系統的系統參數和初值。
Step3:對圖像利用Arnold映射進行n1次的位置置亂。并保留其置亂后的結果I'(i,j),等待對其利用陳氏超混沌系統序列進行像素值改變。
Step4:利用前面所介紹的超混沌序列的產生方法生成超混沌序列L。
Step5:將L每八位為一組轉化成無符號的整數,從而得到整數值序列Xn,利用以下式子,進行密文反饋加密,得到最終加密圖像。

其中,Mk表示明文,Z表示圖像灰度級,Ck表示密文。
Step6:判斷數字圖像的加密是否完成。如果完成進入下一步;否則返回Step 2再進行新一輪的加密。
Step7:加密完成,保存并輸出加密結果。
解密算法較簡單,因為矩陣具有可逆性,所以對于采用Arnold映射進行位置置亂的恢復只需將伴隨矩陣C用其逆陣代替即可,由于加密過程使用異或運算以及加密反饋算法,很容易從加密算法中得到解密算法,故不再贅述。
利用MATLAB 7.8.0軟件,采用上述算法,對“penguin.jpg”圖像進行了加/解密的仿真實驗,密鑰選取:K=(50,1000,1,2,0.2,0,0,0.0001,0),得到實驗結果分別如下圖1,2,3,4。

圖1 原圖像

圖2 加密后圖像

圖3 解密后圖像

圖4 錯解密圖像
圖2 “加密后的penguin.jpg”為圖1原圖像的加密結果,顯然從中已經看不出原圖像的任何信息,加密算法取得了較好的效果;圖3解密后的圖像為對圖2加密后圖像的解密結果,通過比較圖1和圖3得知,兩個圖像的像素值完全相同,說明采用本文提到的算法進行加密不會造成任何圖像原始數據信息的丟失;圖4錯解密圖像是將陳氏超混沌系統的初始值置為(0,0,0.000 2,0)即只改變x30值所得的解密結果,顯然,只簡單的修改初始值即只讓x0僅僅相差0.000 1也不能正確解密,而且從解密結果圖4中還可以看出得不到原圖像任何信息,這一結果充分說明了算法中混沌系統的初值敏感性,也充分體現了算法的安全性。
1)混亂和擴散效果分析。錯誤擴散是指密文的很小錯誤就能轉變成明文很大的錯誤。因為對混沌系統而言,如果正的Lyapunov指數越多,表明系統軌道不穩定的方向就越多,其隨機性就越強,那么基于該混沌系統生成的隨機序列的安全性就越強。而且本算法在生成隨機序列L時,首先采用了四個值的異或,加密時,又采用密文反饋的加密過程,這些措施都盡可能的實現了混亂與擴散,用于掩蓋明文與密文間的關系,顯然,如果在加密過程中某一處出錯的話,錯誤擴散將導致整個圖像不能正確的解密,進一步又增強了圖像的加密效果。
2)密鑰分析。初始密鑰的強弱是衡量一個密碼算法安全與否的重要指標。該算法的密鑰K為(n1,n2,a,b,k,x10,x20,x30,x40),該算法中初值(x10,x20,x30,x40)可以取值于(0,1)之間的任何值,k可以取[-0.7,0.7]其密鑰空間無窮大,n1,n2,a,b的不確定性,更極大地增大了密鑰空間,從而使得對密鑰K的窮舉攻擊變得不可行。
除了從密鑰空間角度的分析,密鑰是安全的,從密鑰敏感依賴性而言,由于混沌系統的初值敏感性使得密文對初始密鑰敏感性增強,從而進一步增強了算法的安全性。
3)算法充分考慮了位置變換和像素值改變相結合的圖像加密方式,采用像素值變換可以極大地改變圖像的直方圖,在一定程度上抵抗統計分析攻擊。本文在提出的算法中采用陳氏超混沌系統生成的序列對圖像灰度置亂即像素值改變,使得原來較集中的分布在某些灰度上的像素值加密后能夠均勻分布在整個灰度值空間,說明該加密方法具有很好的灰度值均勻分布的特性,另外又結合廣義貓映射進行位置置亂,使得整個加密算法加密效果更好、更安全。
本文利用Arnold和陳氏超混沌系統對數字圖像進行了加解密研究,通過仿真實驗結果和算法分析表明,該算法具有較好的加密效果和較強的安全性.但只是簡單的對算法進行了分析以及仿真實驗驗證,證明其加密效果良好,還有待進一步與其它加密算法作詳細比較性研究,從而證明其優越性.
[1]廖曉峰,肖迪,陳勇,等.混沌密碼學原理及其應用[M].北京:科學出版社,2009.
[2]宋少忠,顏輝.電子商務安全與支付[M].北京:中國水利水電出版社,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].中山大學學報,2005,44(2):124.
[5]劉金梅,丘水生,劉偉平.基于超混沌系統的圖像加密算法的安全性分析[J].計算機應用研究,2010,27(3):1042-1043.