歐國成, 劉小園
(羅定職業(yè)技術(shù)學院信息工程系,廣東 羅定527200)
與混沌系統(tǒng)相比,超混沌系統(tǒng)的動力學行為更復雜、更難以預測,在數(shù)據(jù)保密領(lǐng)域具有更高的實用價值[1-2]。近年來,已有不少學者把超混沌加密應(yīng)用在保密工作中,如:王勇等把超混沌序列與神經(jīng)網(wǎng)絡(luò)相結(jié)合,產(chǎn)生AES種子密鑰用于圖像加密,該算法的密鑰長度約為200 bit[3];朱淑芹等把四維離散混沌映射用于圖像加密,該算法的密鑰長度為398 bit,能夠抵抗差分攻擊[4];趙方正等按照像素位置打亂超混沌序列,實現(xiàn)彩色圖像加密,該算法的密鑰長度約為286 bit,具有較強的抗攻擊能力[5];劉鵬等把超混沌序列用于加密視頻信息,該算法的密鑰長度為144 bit[6];Khadijeh MT等提出一種超混沌圖像加密算法,算法魯棒性好但加密速度不夠理想[7];張海濤等把超混沌序列用于加密處理圖像的水印信息,用于保障圖像水印安全性[8]。
已有的利用超混沌序列設(shè)計的加密算法普遍具有密鑰長度短、密鑰空間不足等弱點,不適合用于安全性能要求高的數(shù)據(jù)加密。本文利用超混沌系統(tǒng)復雜的動力學特性,提出一種密鑰空間大、密鑰敏感性好的超混沌-AES數(shù)據(jù)加密算法。首先選取2個超混沌系統(tǒng)并進行離散化處理,得到8個超混沌序列;然后對混沌序列進行異或混淆處理,打亂序列之間的關(guān)聯(lián)性,進一步提高密鑰安全性;再次對序列進行異或混淆處理,最后得到算法密鑰,用于數(shù)據(jù)的加密和解密。
非線性系統(tǒng)的維數(shù)在一定程度上決定其動力學行為的復雜程度。一般而言,能產(chǎn)生超混沌現(xiàn)象的系統(tǒng),其最低維數(shù)是四維。高維非線性系統(tǒng)通常是在低維非線性系統(tǒng)的基礎(chǔ)上通過增加系統(tǒng)變量和微分方程得到[9]。例如,王興元等通過在Lorenz系統(tǒng)中增加1個變量及微分方程,得到超混沌Lorenz系統(tǒng)[10]。朱雷等通過改進Sprott-B混沌系統(tǒng),并在此基礎(chǔ)上引入一個線性變量和一個微分方程,得到一個新的四維超混沌系統(tǒng)[11],其數(shù)學模型為:
為方便陳述,下面把式(1)記為系統(tǒng)Ⅰ。系統(tǒng)Ⅰ是一個四維非線性系統(tǒng),具有4個變量x1、y1、z1、w1以及 4 個系統(tǒng)參數(shù) a1、b1、c1、d1。 非線性系統(tǒng)的運動狀態(tài)受系統(tǒng)參數(shù)和系統(tǒng)變量的初始值影響。系統(tǒng)具有2個大于零的李雅普諾夫(Lyapunov)指數(shù)是判斷系統(tǒng)處于超混沌狀態(tài)的必要條件[11]。 以、y、、分別表示變量 x1、y1、z1、w1的初始值,、、、分別表示系統(tǒng)的 4個 Lyapunov 指數(shù)。 令 a1=10、b1=4、c1=1、d1=0.5、=1、=1、=1、=1, 計 算 得 到=0.1509,=0.1095,=0,L=-5.2602, 可見>0、>0,此時系統(tǒng)Ⅰ的運動狀態(tài)為超混沌,其混沌吸引子相圖如圖1所示。
圖1 系統(tǒng)Ⅰ的混沌吸引子相圖
分維數(shù)反映的是混沌系統(tǒng)中吸引子結(jié)構(gòu)的復雜程度,通常以Lyapunov維數(shù)作為系統(tǒng)的分維數(shù),可由以下公式計算:DL=3+(L1+L2+L3)/∣L4∣。 通過計算得到系統(tǒng)Ⅰ的分維數(shù)為3.0495,可見系統(tǒng)Ⅰ的動力學行為很復雜,具有無限相似的復雜結(jié)構(gòu)[12]。
扶坤榮基于三維增廣Lü系統(tǒng),構(gòu)建了一個四維超混沌系統(tǒng)[13],其數(shù)學模型為:
為方便陳述,把式(2)記為系統(tǒng)Ⅱ。和系統(tǒng)Ⅰ一樣,系統(tǒng)Ⅱ也是一個四維非線性系統(tǒng),同樣具有 4 個變量 x2、y2、z2、w2以及 4 個系統(tǒng)參數(shù) a2、b2、c2、d2。 以分別表示變量 x2、y2、z2、w2的 初 始 值 ,分 別 表 示 系 統(tǒng) 的 4個Lyapunov 指數(shù)。 令 a2=6、b2=4、c2=8、d2=2、=1、=1, 可得=1.6383,=0.1260,-37.3092,可見此時系統(tǒng)Ⅱ的運動狀態(tài)為超混沌,其混沌吸引子相圖如圖2所示。
計算出系統(tǒng)Ⅱ的分維數(shù)為3.0472,可見系統(tǒng)Ⅱ和系統(tǒng)Ⅰ一樣,具有無限相似的復雜結(jié)構(gòu)。
圖2 系統(tǒng)Ⅱ的混沌吸引子相圖
高級加密標準(Advanced Encryption Standard,AES),又稱為Rijndael加密算法,是對稱密鑰加密中最流行的算法之一,具有安全性好、效率高、易實現(xiàn)性和靈活性等優(yōu)點[14-15]。AES算法在加解密過程中需要把數(shù)據(jù)進行分組,每組數(shù)據(jù)長度固定為128 bit。AES通過多次迭代操作實現(xiàn)數(shù)據(jù)的變換,按照迭代次數(shù)的不同,可分為3種不同的加密模式:第一種加密模式經(jīng)過10次迭代變換得到密文,其密鑰長度為128 bit,記為AES-128;第二種加密模式經(jīng)過12次迭代變換得到密文,其密鑰長度為192 bit,記為AES-192;第三種加密模式經(jīng)過14次迭代變換得到密文,其密鑰長度為256 bit,記為AES-256。其中AES-128的加密流程及解密流程如圖3所示。
圖3 AES-128加密和解密流程
利用系統(tǒng)Ⅰ、系統(tǒng)Ⅱ具有的復雜動力學特性,提出一種密鑰空間大、密鑰敏感性好的超混沌-AES加密算法。首先對系統(tǒng)Ⅰ、系統(tǒng)Ⅱ進行離散化處理,得到8個超混沌序列;然后對這8個混沌序列交叉進行異或混淆處理,打亂同一個系統(tǒng)中不同序列之間的關(guān)聯(lián)性,得到4個混沌序列;接著把這4個混沌序列兩兩間進行異或混淆處理,得到2個混沌序列S1、S2,進一步提高密鑰安全性;最后把混沌序列S1作為超混沌加密的密鑰,混沌序列S2作為產(chǎn)生AES加密密鑰的參數(shù)之一?;旌霞用芊桨溉鐖D4所示,具體步驟如下:
1)產(chǎn)生混沌序列。 令 a1=10、b1=4、c1=1、d1=0.5、a2=6、b2=4、c2=8、d2=2,保證系統(tǒng)Ⅰ、系統(tǒng)Ⅱ的運動狀態(tài)為超混沌。以2個系統(tǒng)8個狀態(tài)變量的初始值為 密 鑰 參 數(shù) , 保 證 算 法 的密鑰空間足夠大。采用四階龍格-庫塔法分別對2個超混沌系統(tǒng)進行離散化處理,將迭代步長均設(shè)置為 0.001,得到 8 個超混沌序列 x1、y1、z1、w1、x2、y2、z2、w2。
2)處理混沌序列。分別在序列 x1、y1、z1、w1、x2、y2、z2、w2中截取一段長度為 32 byte 的數(shù)據(jù),截取位置可自定,得到8個長度為32 byte的序列。為了使序列適合用于數(shù)據(jù)加密,需要進行如下處理:
式(3)中,k=1、2,分別表示系統(tǒng)Ⅰ、系統(tǒng)Ⅱ;i表示序列中第i個值。利用floor函數(shù)獲得一個不大于原值的最大整數(shù),利用mod函數(shù)對256取模求余,最后利用round函數(shù)進行四舍五入取整操作?;煦缧蛄斜惶幚砗?,其值均為0~255之間的整數(shù)。
圖4 超混沌與AES混合加密算法
3)加密密鑰的產(chǎn)生。為了打亂同一個系統(tǒng)4個狀態(tài)變量之間的關(guān)聯(lián)性,首先將8個超混沌序列分別進行異或混淆處理,處理方法見式(4)。
混淆后得到 4 個序列 x12、y12、z12、w12,為進一步提高密鑰安全性,再次把 x12、y12、z12、w12進行異或運算,得到序列 S1、S2,處理方法見式(5)。
在式(4)、式(5)中,“⊕”表示按位異或運算,序列S1作為超混沌加密的密鑰,序列S2與用戶輸入的密鑰(Input_key)進行異或運算后,得到用于AES加密的密鑰AES_key。
4)數(shù)據(jù)混合加密。先把明文數(shù)據(jù)分組,分組長度為16 bit,分組后的數(shù)據(jù)依次進行超混沌加密、AES加密。其中超混沌加密是混合加密中的第一次加密,通過把明文數(shù)據(jù)與S1進行異或運算實現(xiàn),AES加密是混合加密中的第二次加密,最終輸出密文。
5)解密過程。本算法是一種對稱加密算法,解密是加密的逆過程。解密時,當8個密鑰參數(shù)以及 Input_key 與 加 密時完全一致時,密文先經(jīng)過AES解密、再經(jīng)過超混沌解密(與序列S1進行異或運算),可解密出明文。
按照算法思想,在MATLAB平臺上開發(fā)了“基于超混沌與AES的混合加密系統(tǒng)”,如圖5所示。用戶輸入2個系統(tǒng)的初始值,選擇一種AES模式(AES-128、AES-192 或 AES-256),輸入用戶密鑰,直接輸入待加密的數(shù)據(jù)或通過文件導入數(shù)據(jù)。點擊“Encrypt”按鈕,對明文進行加密,點擊“Decrypt”按鈕對密文進行解密,點擊“保存密文”按鈕把密文保存為文件輸出。另外系統(tǒng)界面能直觀顯示加密和解密的結(jié)果。
從表1可以看出,與其他幾種算法相比,本算法的密鑰長度更長、密鑰空間更大、安全性更好。系統(tǒng)Ⅰ、系統(tǒng)Ⅱ中的 8 個控制參數(shù) a1、b1、c1、d1、a2、b2、c2、d2用于控制系統(tǒng)處于超混沌狀態(tài),在本例中令a1=10、b1=4、c1=1、d1=0.5、a2=6、b2=4、c2=8、d2=2,但它們的取值可以是不固定的,若把8個控制參數(shù)作為可變參數(shù),本算法的密鑰空間可進一步擴大??梢姡舅惴ň哂凶銐虼蟮拿荑€空間,能抵抗暴力破解攻擊。
圖5 超混沌與AES混合加密系統(tǒng)
表1 幾種加密算法密鑰空間對比
以本文的中英文題目、作者信息、摘要、關(guān)鍵詞共1734字節(jié)的明文數(shù)據(jù)為例,分別畫出加密前明文數(shù)據(jù)分布頻數(shù)、加密后密文數(shù)據(jù)分布頻數(shù)直方圖,如圖6所示。
從圖6可以看出,明文數(shù)據(jù)分布頻數(shù)差異較大,其統(tǒng)計特性具有一定的規(guī)律,而密文數(shù)據(jù)分布比較均勻,其統(tǒng)計特性隨機性很大,沒有規(guī)律可循,可見本算法具有良好的密文統(tǒng)計特性。
算法的密鑰敏感性是衡量算法安全性的重要指標之一。首先以上述1734 bit的明文數(shù)據(jù)為例,把8個密鑰參數(shù)都設(shè)置為 1,AES模式選擇為AES-256,Input_key 設(shè)置為“123456”,執(zhí)行加密操作得到密文;保持Input_key不變,分別把8個密鑰參數(shù)增加 10-15,例如把x10=1變?yōu)?x10=1.000000000000001,然后執(zhí)行解密操作,把解密得到的明文與原始明文對比,統(tǒng)計出解密錯誤字節(jié)數(shù),計算出解密錯誤率(解密錯誤率=解密錯誤字節(jié)數(shù)/原始明文字節(jié)數(shù)×100%),如圖7所示。
圖6 明文及密文數(shù)據(jù)統(tǒng)計直方圖
圖7 密鑰參數(shù)改變10-15時解密錯誤率
從圖7可以看出,當任何一個密鑰參數(shù)改變超過10-15時,生成的解密密鑰都無法正確解密出原始明文,解密錯誤率最高達99.83%、最低為93.14%,可見本文算法具有良好的密鑰敏感性。
為進一步說明本算法具有良好的密鑰敏感性,再以256×256的Lena圖為例進行測試。首先把8個密鑰參數(shù)都設(shè)置為 1,AES模式選擇為 AES-256,Input_key設(shè)置為“123456”,執(zhí)行加密操作得到加密圖像;然后保持密鑰參數(shù)和Input_key不變,執(zhí)行解密操作得到正確解密圖像;最后把密鑰參數(shù)x10=1變?yōu)?1.000000000000001,并保持Input_key不變,執(zhí)行解密操作,得到錯誤解密圖像,如圖8所示。
圖8 密鑰參數(shù)改變10-15時解密錯誤
從圖8可以看出,當密鑰參數(shù)改變超過10-15時,無法正確解密出明文圖像,說明本算法具有良好的密鑰敏感性。
把本算法的3種加密模式分別記為CHAOSAES-128、CHAOS-AES-192、CHAOS-AES-256,以100 kB明文數(shù)據(jù)為例,將本算法與典型AES算法的加密效率進行對比。為保證實驗數(shù)據(jù)的公平性,在同一臺計算機(處理器為雙核 Intel(R)Core(TM)2 Duo CPU T6670@2.20GHz, 內(nèi)存為 4 GB,64 位Windows 7旗艦版SP1操作系統(tǒng))、相同平臺上用相同語言(Matlab語言)分別實現(xiàn)AES算法和本算法,利用2種算法對同一份樣本數(shù)據(jù)進行加密操作,并記錄所需的加密時間,對比結(jié)果如圖9所示。
圖9 算法效率對比
由于本文算法采用超混沌與AES混合加密,需要經(jīng)過一次超混沌加密、一次AES加密,故本文算法的加密效率略低于典型AES算法的加密效率。與AES算法一樣,本文算法屬于分組加密算法,分組長度均為16 bit,加密后密文輸出長度與明文輸入長度一致,不會增大通信開銷。
本文利用超混沌系統(tǒng)的復雜動力學特性,提出一種用于保障數(shù)據(jù)安全的超混沌-AES混合加密算法,并開發(fā)了“基于超混沌與AES的混合加密系統(tǒng)”。系統(tǒng)運行結(jié)果表明,該算法的密鑰長度最大可達654 bit,且密鑰空間還有進一步擴大的可能,具有良好的密文統(tǒng)計特性,具有良好的密鑰敏感性,任何一個密鑰參數(shù)發(fā)生超過10-15的變化后都無法正確解密出原始明文,能充分保障數(shù)據(jù)的機密性,適合用于安全性能要求高的數(shù)據(jù)加密。