雷霆,葛強,周黎鳴,馬駿
(河南大學計算機與信息工程學院,開封 475004;河南省大數(shù)據(jù)分析與處理重點實驗室,開封 475004)
近年來,隨著科技的進步,信息技術(shù)得到了迅速發(fā)展。網(wǎng)絡作為一種新型的信息載體,在提供給我們方便的同時,也存在著較大的安全隱患。信息泄露不僅會導致用戶個人隱私被竊取,也可能會對于國家和社會產(chǎn)生嚴重的負面影響。圖像作為一種重要的信息類型,其保密和安全性越來越受到人們重視。目前常見的加密算法有對稱加密算法如DES算法、AES算法和非對稱加密算法如RSA算法等[1]。此類算法將圖像作為明文進行加密,這類加密算法雖能達到加密效果,但對于圖像加密而言,由于圖像數(shù)據(jù)量大,相關性強等特點,因此此類算法對圖像加密并不完全適用。混沌系統(tǒng)作為一種非線性動力系統(tǒng),具有隨機性、遍歷性、不可預測性、確定性和對初始條件敏感等特點,因此混沌系統(tǒng)經(jīng)常被應用于密碼學和信息安全領域?;煦缦到y(tǒng)最早由美國氣象學家愛德華·諾頓·洛倫茨提出,并在1997年首次由Fridrich應用于數(shù)字圖像加密中。目前常用的混沌系統(tǒng)主要包括一維Logistics映射、Cheby?shev映射、二維Henon映射等。有研究表明,二維He?non映射相比一維Logistics映射、Chebyshev映射更為復雜,迭代不易溢出,具有更強的隨機性[2]。本文根據(jù)二維Henon映射通過密鑰生成不同的隨機加密序列,對RGB圖像三個通道分別進行移位和異或加密運算,以達到加密效果。
混沌是一種在非線性動力體系中出現(xiàn)的無規(guī)則現(xiàn)象,其表現(xiàn)為不確定,不可預測,在日常生活和科學研究中都普遍存在。其重要特點之一是對初始值極度敏感,當初始參數(shù)發(fā)生細微改變,最后生成的結(jié)果將呈現(xiàn)很大的差異,因此混沌系統(tǒng)經(jīng)常被使用于密碼學和信息安全領域。Henon映射是一種典型的在二維空間產(chǎn)生的離散混沌映射,其表達式為:
從公式可知,Henon 映射的狀態(tài)由 x0,y0,a,b 四個參數(shù)決定,因此Henon映射較一維混沌映射更為復雜。研究表明,當a=1.4,b=0.3,時,函數(shù)進入混沌狀態(tài),生成的混沌序列具有很強的隨機性。圖1表示當b=0.3時變量x隨參數(shù)a變化的分叉圖,從圖中可以看出,當a=1.4時,變量x的取值進入一種不斷變化、不可預知的狀態(tài),在此處Henon映射進入混沌狀態(tài)。Ly?apunov指數(shù)是用來衡量系統(tǒng)動力學特性的一個重要指標,其表示相空間相鄰的兩條相鄰軌道的平均指數(shù)發(fā)散率的數(shù)值特征,是常用于識別混沌系統(tǒng)的重要指數(shù)之一。在一維映射中Lyapunov指數(shù)只有一個值,在多維相空間中一般有多個值,當其中一個指數(shù)為正值時,就表明該系統(tǒng)存在混沌運動。Lyapunov指數(shù)的計算方法有QR分解法、Jacobian法、定義法等,采用Jacobian法計算二維Henon映射的Lyapunov指數(shù),當a=1.4,b=0.3時L1=0.419,L2=-1.623,這表示系統(tǒng)在此處于混沌運動狀態(tài)。圖2給出了Henon映射的混沌吸引子。首先給出初始參數(shù)a,b,x0,y0,根據(jù)Henon映射公式進行多次迭代以提高算法隨機性。給定密鑰k1,生成第一組加密序列L1,R1,加密R圖;由L1,R1確定第二個密鑰K2,再由K2生成第二組加密序列L2,R2,加密G圖;由L2,R2確定第三個密鑰K3,再由K3生成第三組加密序列L3,R3,加密B圖。在每一層加密上分別進行像素點移位和異或加密,最后將加密后的R,G,B圖像重新疊加得到最終加密圖像。這種加密算法將密鑰的生成和混沌映射相結(jié)合,每個通道的加密使用不同的密鑰,并在每一層的加密上使用像素點移位和異或加密兩輪加密操作,增加了算法的復雜性,使得加密算法更為安全可靠。圖3給出了加密流程示意圖。
圖1 Henon映射分叉圖(b=0.3)
圖3 彩色圖像加密流程
圖2 Henon映射的吸引子(a=1.4,b=0.3)
本加密算法主要包括密鑰和加密序列的生成以及各通道加密兩個過程,對于未加密的彩色RGB圖像,設其大小為M×N,分離其三基色,得到三個二維向量R,G,B,每個二維向量為一個M×N的單通道灰度圖。
本加密算法使用3個密鑰K1,K2,K3,分別對灰度圖加密,其中K1由用戶給出,K2由K1生成的加密序列決定,K3由K2生成的加密序列決定。密鑰和加密序列的生成步驟如下:
(1)給出大小為M×N的原始圖像P,初始密鑰K1,初始參數(shù)a,b,x0,y0。
(2)利用Henon映射多次迭代生成兩個混沌序列,由密鑰K1確定序列位置,取長度為M×N的兩個序列L1,R1作為第一組加密序列。
(3)由 L1,R1根據(jù)公式(2)確定密鑰 K2,由 K2確定序列位置,獲得第二組長度為M×N的加密序列L2,R2。
(4)由 L2,R2根據(jù)公式(2)確定密鑰 K3,由 K3確定序列位置,獲得第三組長度為M×N的加密序列L3,R3。
以256階彩色圖像為例,圖像可以分為RGB三個通道,每個通道為一個256階灰度圖像,灰度值取值區(qū)間為[0,255],對每一層圖像先進行移位操作,再進行異或加密,加密流程如下:
(1)根據(jù)公式(3)分離RGB圖像三個通道,得到RGB圖像的三個分量矩陣,分別記為R,G,B。
(2)將加密序列L1,L2,L3從小到大排序,得到索引序列L'1,L'2,L'3,按照L'1,L'2,L'3記錄位置將分量矩陣R,G,B中每個像素點移位,得到排序后的矩陣R',G',B',此步驟為移位加密。
(3)由于 Rn的取值區(qū)間為[0,1],將 R1,R2,R3序列中的值按照公式(4)映射到[0,255]的整數(shù),得到序列R'1,R'2,R'3。
(4)將矩陣R',G',B'中每個值與序列R'1,R'2,R'3的值進行bitxor異或運算,得到矩陣R'',G'',B'',此步驟為異或加密。
(5)將R'',G'',B''按照公式(5)合并得到最終加密圖像Q:
利用MATLAB工具對大小為512×512的標準彩色圖像PeppersRGB進行加密實驗測試,圖4給出了算法加解密結(jié)果。從加解密結(jié)果來看,在經(jīng)過一次加密之后,圖像完全混亂,已看不出任何原圖信息。利用正確密鑰可以完全解密原圖信息,當密鑰錯誤時,無法正確解密,解密后圖像與原圖看不出任何關聯(lián)。本算法充分利用Henon混沌映射的特性,將密鑰的生成與混沌系統(tǒng)相結(jié)合,并在每個通道的加密過程中進行移位和異或兩輪加密,大大地提高了加密效果。
灰度直方圖可以直觀地反映圖像灰度值分布情況,常用于檢驗圖像加密效果,對于未加密圖像,灰度值分布往往呈現(xiàn)明顯的分布特點,如果經(jīng)過加密后圖像灰度值趨于均勻,說明此加密方式能較好地抵抗統(tǒng)計分析攻擊。圖5給出了原圖加密前后RGB三個通道的灰度直方圖,從圖中可以看出,經(jīng)過一輪加密,原來特征明顯的灰度直方圖趨于均勻。
圖像的信息熵表示圖像中灰度值的分布情況,256階灰度圖像理論最大信息熵為8,圖像的信息熵越接近8說明灰度值分布越均勻。其計算公式為:
其中P(xi)表示隨機變量x為xi的概率。
表1 加密前后信息熵
通過計算得知,進行一次加密后,圖像三個通道的信息熵更加接近最大值8,可見原始圖像經(jīng)過加密后各通道灰度值分布趨于均勻,能更好地隱藏原圖特征,本算法有良好的抗統(tǒng)計分析攻擊的特性。
剪切攻擊是一種常見的圖像攻擊手段,對加密后的圖片進行剪切,并進行解密,測試算法能否正確解密出原圖信息。本次測試中將加密后的圖片上半部分進行剪切并進行解密,圖6給出了解密結(jié)果,從實驗得知,當加密圖像受到大面積破壞時,解密后的圖片仍然可以還原出大部分原圖信息,因此本算法有較強的抗攻擊性。
圖6 攻擊測試
本文給出了一種基于Henon映射的彩色圖像加密方案,將密鑰的生成與混沌映射相結(jié)合,對每個通道的加密使用不同的密鑰,每一個密鑰均由上一個密鑰通過混沌映射得出,增加了密鑰的隨機性,大大提高了加密算法的安全性。在每一層的加密上,充分利用了圖像加密的兩個原則:移位和像素值改變,利用Henon混沌映射在每一層生成不同的兩個加密序列,對圖像分別進行移位和異或加密。實驗表明,此加密方式具有良好的加密效果,能一定程度抵抗統(tǒng)計分析攻擊和裁剪攻擊,具有較強的魯棒性。由于Henon映射自身的特點,參數(shù)a,b的值相對固定,因此本算法的密鑰空間相對較小,在拓展密鑰空間方面可以做進一步研究。