金必強
(池州學院 安徽 池州 247000)
隨著計算機和網絡傳輸的成熟,人們廣泛地使用網絡進行信息傳輸。但是信息安全事件也是層出不窮,導致信息安全這一領域也開始被人重視,信息安全也逐漸成為國際社會普遍關注的問題。在信息傳輸的過程中,圖片作為網絡傳輸過程中最為重要的信息載體,應用在軍事領域、醫學領域、教育領域等,但是由于圖片高冗余性和像素之間關聯性強等特點,使得傳統加密算法(如DES、RSA、AES 等)在加密時不能克服上述缺點,導致加密效果較差,易被攻擊者進行統計分析和差分等攻擊[1-2]。
近年來,基于CML 提出了各種圖像加密算法[3-4]。張慧麗[5]使用NCA 映射改進CML 系統,并且利用DNA對像素值進行編碼。使用NCA 映射作為驅動函數,提高了原有的CML 系統混沌特性。而且NCA 映射導致了控制參數范圍變大,使得密鑰空間更大。Guan 等[6]提出了新的混沌系統,主要是利用3 個格子的耦合映射為加密算法提供偽隨機序列,并且利用新的系統將偽隨機序列進行重新組合,提高了源CML 系統的偽隨機性。根據Wang 等[7]的研究結果,使用二進制編碼會降低加密速度效率,并且僅依賴混沌系統控制的密鑰容易被破解。Song 等[8]提出了將線性系統和非線性系統相結合的新CML 時空系統,避免了CML 周期窗口問題,并用DNA 序列進行擴散操作。孫鑫等[9]、Huang 等[10]發現了一種基于DNA 技術的加密系統可以通過利用部分已知明文或密文來重構等效密鑰,但該系統在面對差分攻擊時無法提供足夠的保護。
為了克服上述缺點,本文使用混沌系統和折疊算法提出了一種高安全性的圖像加密算法。首先在密鑰生成部分,選擇一部分明文信息作為密鑰的一部分,使用SHA-512函數生成密鑰,然后將哈希序列拆分成加密算法中的混沌系統的初始值和各個加密步驟中的控制參數。
Step 1:選擇明文信息中的部分明文信息,累加計算求和,記作sumPixel。在本文中隨機選擇了10 個像素值進行累加求和。
Step 2:利用SHA-512 將密鑰key 和sumPixel 進行Hash 處理,生成可計算密鑰。在本文中,使用初始密鑰和明文信息Hash 后得到可計算密鑰Hash,明文信息是手動在明文圖片中進行隨機選擇。因此可計算密鑰如式(1)所示。
Step 3:利用Matlab 自帶的排序函數sort(·) 對數據進行置亂處理。
Step 4:使用折疊矩陣進行像素置亂處理。本文針對大小為M×N的明文圖像P進行折疊置亂,其中M是明文圖片的行數,N是明文圖片的列數。在傳統的折疊算法中,從4 個不同的方向對明文圖像P和混沌矩陣Q進行異或操作,以達到像素值置亂的目的。具體加密操作如下。
(1)從上到下折疊
將明文圖像P分為上矩陣和下矩陣,以同樣的分割方式將置亂矩陣Q1分為上下兩個矩陣。定義上半部分矩陣為Uh,下半部分矩陣為Dh,具體操作如圖1 和式(2)所示。

圖1 從上到下折疊
(2)從左到右折疊
將密文圖像c分為左矩陣和右矩陣,以同樣的分割方式將置亂矩陣Q2分為左和右兩個矩陣。定義左半部分矩陣為Lh,右半部分矩陣為Rh,具體操作如圖2 和公式(3)所示。

圖2 從左到右折疊
(3)從右上往左下折疊
將密文圖像c分為右上矩陣和左下矩陣,以同樣的分割方式將置亂矩陣Q3分為左下矩陣和右上矩陣。定義左下半部分矩陣為Ld,右上半部分矩陣為Rup,具體操作如圖3 和式(4)所示。

圖3 從右上往左下折疊
(4)從左上往右下折疊
將密文圖像c分為左上矩陣和右下矩陣兩個矩陣,以同樣的分割方式將置亂矩陣Q4也分為左上矩陣和右下矩陣。定義左上半部分矩陣為Lup,右下半部分矩陣為Rd,具體操作如圖4 和式(5)所示。
利用基于NCA 映射的ACML 系統,生成置亂矩陣Qi,其中置亂矩陣的大小大于明文的大小,所以需要在置亂矩陣中利用pos()函數選擇矩陣。dir()是決定折疊函數的方向,對于折疊算法中的4 個方向分別定義為0,1,2,3。利用dir 決定加密的順序。
Step 5:利用已經確定的置亂矩陣Qi和位置函數pos()和方向函數dir(),并且用折疊算法進行圖像置亂操作。
Step 6:擴散操作。利用公式(7)進行擴散操作。
其中X是利用ACML 生成的混沌向量,在新的混沌向量中需要舍棄前500 次混沌序列,然后再進行異或操作。
解密算法與加密算法相類似,是加密算法的逆過程。解密算法的具體步驟描述如下:
Step 1:獲得初始密鑰。通過分解密鑰,得到各個步驟中需要的控制參數和初始值參數。
Step 2:進行逆擴散操作,通過密鑰中的參數,計算混沌向量,然后通過式(7)計算擴散的逆步驟結果。
Step 3:確認方向函數和位置函數。通過密鑰可以得到方向函數和位置函數。利用ACML 計算加密過程中的折疊矩陣,然后按照方向函數和位置函數,進行按位異或操作,得到解密結果。
Step 4:進行sort 函數重排。利用密鑰中index_Rowi和index_Colj進行重新排列得到最終的明文。
在本章節中, 給定初始密鑰為 key =[da883291jkdlafanfaj0113dsk2913kl],選擇明文信息中下標為60~70 的明文信息作為sumPixel,將key 和明文信息進行哈希散列之后得到最終密鑰。以灰度圖像Lena 舉例,哈希值:
Hash =[3ba735684defc5f577d26c84086b0f45f534fc96e 55ee723a436c773fb70b2fb5ef907d5dcb1c7a88179c8d4ab4 55de704f3afd05ceb55c6dbb437c150fac44f],仿真實驗結果如圖5 所示。

圖5 實驗結果
優秀的加密系統應該有足夠大的密鑰空間,足夠大的密鑰空間可以抵御暴力破解。在本文中提出算法所使用的密鑰包含:長度為512bit 的Hash 值;給定的格子數L和置亂序列index_Rowi和index_Colj。假如計算機的計算精度是10-14,那么在本文中,本算法的有效密鑰空間是2512×dec2bin(M×N×L)×1014。以“Lena”圖像為例,在本文中所使用的圖片大小為256× 256,格子數目L=20,因此“Lena”的有效密鑰空間大約是2532,遠遠大于設計密碼系統時所要求的2100,所以在密鑰空間方面所設計的密碼系統是可以抵御暴力攻擊的。
直方圖描述了像素值的分布情況,如果加密后的密文分布不均勻,會泄露明文圖像的特征信息,通過統計分析攻擊可能破解加密系統。在圖6 中展示了明文圖像和密文圖像的直方圖分布情況。可以觀察到在加密前,明文圖像的直方圖呈現高低分布不均勻的情況,而在密文圖像的直方圖中的像素是服從均勻分布的。證明在加密后的圖像是不會泄露明文圖像信息的。

圖6 直方圖分析
在明文圖像中,由于相鄰像素之間存在較高的相關性,使其容易受到統計攻擊[11],所以在加密完成后,需要衡量相鄰像素相關性。使用式(8)和式(9)去計算像素間相關性,本文在密文圖像中隨機選擇了10 000 對像素點,測試了水平、垂直、對角線3 個方向上的相鄰像素間的相關性。測試結果如圖7 所示。

圖7 水平、垂直、對角線3 個不同方向像素相關性對比
其中,
在表1 中給出密文圖像的相關性系數。從表1 中可以觀察到,原始的明文圖像呈現出相鄰像素之間較大的相關性;而在密文圖像中,相鄰像素之間的相關性顯著減小,甚至呈現負相關,表示本文所提出的算法完全消除了原始像素值之間的相關性。值得注意的是,與文獻[5]、文獻[6]和文獻[11]的算法相比,本算法在3 個方向上的相關性系數基本都優于對比文獻。

表1 明文圖像與密文圖像相鄰像素間的相關性
綜上所述,本文使用SHA-512 將明文信息和密鑰進行計算,將明文和密鑰信息相互結合作為加密系統的密鑰,用來抵抗選擇明文攻擊和選擇密文攻擊,并且密鑰在計算各個步驟中的控制值和參數可以達到有限次的一次一密。在像素級上利用基于NCA 的耦合映射格子和排序函數,進行多次置亂和一次擴散的加密。安全性分析表明了新加密算法的密鑰空間大,可計算密鑰敏感性強,可以抵御差分攻擊和統計分析等常見的攻擊方式。