分組加密算法之時空混沌加密

由于時空混沌序列非常復(fù)雜,借助它來設(shè)計加密算法能有效提高其安全性。為此,我們設(shè)計了一款基于時空混沌的分組加密算法,該加密算法主要是通過迭代時空混沌模型來獲取變換參數(shù),然后利用這些參數(shù)來完成對分組的加密。算法以時空混沌模型內(nèi)各點的初始狀態(tài)作為密鑰,這使得擴充密鑰空間變得非常容易。

一、時空混沌模型

1、模型分析

在時空混沌模型中,內(nèi)部各點在下一時刻的狀態(tài)不僅與該點當(dāng)前的狀態(tài)有關(guān),還與它在模型中的位置有關(guān)。耦合映象格子模型(CML: coupled map lattices)是時空混沌中的一種典型模型,其數(shù)值實驗的效率非常高。本文選用耦合映象格子模型中的最近耦合形式作為產(chǎn)生偽隨機序列的混沌映射,其數(shù)學(xué)表達(dá)式如下:

分組加密算法之時空混沌加密

其中,Xn(i)為格子i在時刻n的狀態(tài)變量,n為離散時間坐標(biāo),i為離散空間坐標(biāo),i=1,2,…,L,L為格子個數(shù));ε∈(0,1)為耦合強度,f為局部函數(shù),邊界條件為Xn(L+i)=xn(i)。

CML模型具有如下特點:

1)模型是一個多維的混沌系統(tǒng),格子之間相互耦合,整個系統(tǒng)產(chǎn)生的混沌序列比單個映射產(chǎn)生的序列更復(fù)雜。

2)耦合系數(shù)s,局部映射中的參數(shù)以及各格子的初始狀態(tài)都可用作產(chǎn)生偽隨機序列的密鑰。適當(dāng)調(diào)整格子個數(shù)可獲取足夠大的密鑰空間。

3)模型中存在多個在空間和時間上的自由度,只有當(dāng)所有格子的輸出同時退化為周期序列時,整個模型才會退化為周期序列,退化后的序列周期會更大,可減弱計算機有限精度的影響。

模型的上述特點為設(shè)計加密算法奠定了很好的基礎(chǔ)。

2、參數(shù)的選擇

CML模型具有凍結(jié)化隨機、缺陷混沌擴散和完全發(fā)展的混沌等多個狀態(tài)。從設(shè)計密碼系統(tǒng)的角度出發(fā),應(yīng)讓模型處于完全發(fā)展的混沌狀態(tài)。最近耦合CML模型的Lyapunov指數(shù)譜為:

分組加密算法之時空混沌加密

最大Lyapunov指數(shù)(LEi)對系統(tǒng)的混沌特性有至關(guān)重要的影響。LEi越大,系統(tǒng)的混沌特性越好。由式(2)知,模型的LEi與局部函數(shù)廠的LEi相同,只要f為混沌映射,則整個模型也就是混沌的。本文選用Logistic映射作為局部函數(shù),即f(x)=μx(1-x),x∈(0,1),并設(shè)置u=4。另外,LE2大于0可以避免格子之間出現(xiàn)同步,且LE2越大模型就越快處于完全發(fā)展的混沌狀態(tài)。從式(3)知,LE2隨s的增大ε而減小,因此s應(yīng)取小值。同時,考慮到格子間應(yīng)保留一定的耦合強度,本文設(shè)置ε為0.08。根據(jù)Logistic映射的最大Lyapunov指數(shù)值和s為0.08,可得:

分組加密算法之時空混沌加密

由式(5)知無論三的取什么值,LE2均大于0,即CML模型處于完全混沌的狀態(tài)。

二、加密算法設(shè)計與仿真實驗

1、加密算法

整個加密算法如圖1所示。具體步驟如下:

分組加密算法之時空混沌加密

步驟1 將明文m劃分成一系列長度為L(L≥8)字節(jié)的塊Pj (j=1,2,…),最后一塊若長度不夠則補零占位。

步驟2 設(shè)置CML中的格子個數(shù)為三,以各格子的初值作為密鑰,對應(yīng)的初值為xo(i)∈(0,1),i=1,2,…,L。

步驟3按照式(1)將CML模型迭代K次得 XK(i),其對應(yīng)的二進制形式為:

xk(i)=o.b1ib2i…,bni...其中b為第bni個i的小數(shù)點后第n比特的值。

步驟4依次從每個格子值中抽出其小數(shù)點后1~8bit,組成長度為L字節(jié)的序列A,即A=b11b21…b81b12b22…b7LbL,再依次從每個格子值中抽出小數(shù)點后的9~11bit,得到L個范圍在0~7之間的數(shù)Bi,i=1,2,…,L,即Bi=b9ib10ib11i。對所有Bi求和,設(shè)所得結(jié)果為B。

步驟5將序列4與明文塊P進行異或操作,得Cj=A+Pj。

步驟6設(shè)Cj(i)為Cj(i)中第i個字節(jié),對Cj(i)循環(huán)左移Bi位(i=1,2,…,L),然后再對得到的整個數(shù)據(jù)塊循環(huán)左移B位,產(chǎn)生加密密文0。整個移位過程如圖2所示。

分組加密算法之時空混沌加密

步驟7若明文塊全部加密完畢,則結(jié)束;否則按照式(6)調(diào)節(jié)格子的狀態(tài)值,然后轉(zhuǎn)到步驟3。

分組加密算法之時空混沌加密
其中,Pj(i)為明文塊Pj(i)的第i個字節(jié)的數(shù)值。

及iam算法中的迭代次數(shù)K,利用卡方檢測方式來確定,具體步驟如下:

1)將區(qū)間[0,1]劃分為m個相等的子區(qū)間,表示為:

分組加密算法之時空混沌加密

2)隨機設(shè)置CML的初始狀態(tài),將其迭代K次,對應(yīng)的狀態(tài)變量表示為XK(i),i=1,2,…,L。然后,隨機選擇一個格子j,把微小變量△α加到xo(j)上,將CML再迭代K次,相應(yīng)的狀態(tài)變量表示為xk(i),i=1,2,…,L。重復(fù)上述過程,計算出S組xk(i)和xK(i)。

3)對CML中的每個格子建立一個m×n的頻率表。表中單元格的值nef(e,f分別為表的行標(biāo)和列標(biāo))為滿足條件(e/m)<xk(i)<(e+1)/(m)和(f/m)<XK' (i)<(f+1)/(m)的數(shù)對xk(i)和xK(i)的個數(shù)。按照式(7)計算CML中每個格子的x2值。

4)取各格子中最大的x2值作為CML的X2值。

分組加密算法之時空混沌加密

例如,設(shè)置格子個數(shù)L為1 6時,取m = 11,S=1000,△α= 0.000 1,得到CML的x2值與迭代次數(shù)K之?dāng)痰年P(guān)系如圖3所示。由于X2值小于5%對應(yīng)的臨界值時2個變量無關(guān),在自由度為(m-1)(m-1)=100時,查x2表得臨界值xk2為124.3。結(jié)合圖3知,當(dāng)K>42時,能保證2個迭代后的CML狀態(tài)完全無關(guān)??紤]一定的富余,取K=45。

分組加密算法之時空混沌加密

2、解密算法

解密過程與加密過程類似,首先按照相同方式獲取A、B、Bi,然后,將密文進行循環(huán)右移變換,再進行異或運算產(chǎn)生明文。

3、仿真實驗

加密算法具有較好的靈活性,通過調(diào)整時空混沌中格子的個數(shù)可調(diào)整加密分組的大小。此處設(shè)置格子個數(shù)為16,即加密分組大小為128bit。對圖片Lena文件加密。原圖像、加密圖像及其直方圖如圖4所示。從中可以看出本算法有很好的混亂和擴散特性。

分組加密算法之時空混沌加密

三、安全性分析

1、密鑰空間分析

加密算法中的密鑰為CML模型中格子的初始值。僅以計算機精度為10-4進行估算,各格子的取值范圍為(0,0.9999],共有104個可取的值。在模型中格子個數(shù)不小于8的情況下,算法的密鑰空間不小于1032>2100。實際上,目前計算機系統(tǒng)的計算精度遠(yuǎn)大于10-4,則相應(yīng)的密鑰空間會更大,擁有足夠大的密鑰空間,對于抵抗窮舉攻擊具有重要的意義。

2、信息熵分析

設(shè)信息為m,則其信息熵的計算式為:

分組加密算法之時空混沌加密

其中,p(mi)為信息值mi出現(xiàn)的概率。假設(shè)信息m共有28種狀態(tài)值且出現(xiàn)的概率相同,則根據(jù)式(8)得H(m)=8,這表明信息是完全隨機的。對信息文件加密后,總希望密文的信息熵盡可能的接近于理想值8,若信息熵小于8則表明從理論上看密文存在一定程度的信息泄漏。

加密后圖片文件的信息熵值為7.998 9,接近于理想值8,說明加密過程中信息的泄漏非常小,加密算法是安全的。

3、混亂與擴散性能分析

混亂和擴散是加密過程中2個重要的步驟。加密算法在加密每個分組時使用的參數(shù)為A、B和Bi,它們均是通過抽取時空混沌模型內(nèi)各點的狀態(tài)值而得到。由于刻意避免了模型內(nèi)各格子之間出現(xiàn)同步的可能,模型處于完全發(fā)展的混沌狀態(tài),因此能很好地保證A、B和Bi的偽隨機性和對變換后明文的混亂性。

在加密新的明文分組之前,算法對模型中各格子的狀態(tài)值進行了調(diào)整,并通過K次迭代來消除調(diào)整的直接影響。這不僅能保證每次加密時使用的A、B和Bi沒有相關(guān)性,而且還使A,B和Bi與密鑰相關(guān)的同時,與明文相關(guān),進一步提高了算法的擴散性。為說明本文加密算法的混亂與擴散特性,以一個特殊的文本文件(由1 000個字符a構(gòu)成)為例,分別對明文、時空混沌模型的狀態(tài)初值進行微小的改變,具體如下:

1)將文件中第1 00個字符a更改為字符b;

2)將第一個格子的初始狀態(tài)值由xo(1)=0.123 456改為0.123 457。

改變前后密文的差值如圖5和圖6所示??梢钥闯鏊惴ㄓ泻芎玫幕靵y和擴散性能。

分組加密算法之時空混沌加密

小知識之Lyapunov

Lyapunov指數(shù)是衡量系統(tǒng)動力學(xué)特性的一個重要定量指標(biāo),它表征了系統(tǒng)在相空間中相鄰軌道間收斂或發(fā)散的平均指數(shù)率。對于系統(tǒng)是否存在動力學(xué)混沌, 可以從最大Lyapunov指數(shù)是否大于零非常直觀的判斷出來: 一個正的Lyapunov指數(shù),意味著在系統(tǒng)相空間中,無論初始兩條軌線的間距多么小,其差別都會隨著時間的演化而成指數(shù)率的增加以致達(dá)到無法預(yù)測,這就是混沌現(xiàn)象。