徐子同,高 濤,于正同,時培燕
(長安大學 信息工程學院,陜西 西安 710054)
隨著網(wǎng)絡媒體的快速發(fā)展,越來越多的圖像數(shù)據(jù)通過公共網(wǎng)絡進行傳輸,保證信息傳輸?shù)陌踩灾陵P重要。一種可以保證圖像完整性的加密方式是將明文圖像轉(zhuǎn)為類噪聲圖像再傳輸,這種信息隱藏方式提高了傳輸?shù)陌踩?,目前,越來越多的圖像加密算法被提出。由于圖像的特殊性,例如數(shù)據(jù)容量大、像素間的相關性高以及數(shù)據(jù)冗余等,傳統(tǒng)的數(shù)據(jù)加密算法如DES、AES以及IDEA[1-2]等不適用于圖像加密。近些年,各種類型的加密算法被大量提出[3-14],例如,基于混沌的圖像加密[3-6]、基于壓縮感知的圖像加密[7-8]、基于遺傳算法的圖像加密等等。離散型Hopfield神經(jīng)網(wǎng)絡是一種穩(wěn)定的反饋型的神經(jīng)網(wǎng)絡,文中使用三階神經(jīng)網(wǎng)絡系統(tǒng),使得圖像加密的安全性得到了顯著提升。
圖像加密的主要思想是改變圖像像素值的大小以及改變像素值的位置,即對圖像進行擴散和置亂。在傳統(tǒng)的加密方案中,置亂過程和擴散過程是分開進行的,攻擊者可以通過分開攻擊來破解加密方案,這種加密方法很可能會被選擇明文攻擊。其次,根據(jù)密鑰是否明文相關,加密算法可以分為兩類:第一,加密過程中密鑰與明文圖像沒有關聯(lián),是非一次一密的加密方案。此方案中,由于明文圖像與密鑰相互獨立,不同的明文圖像加密用到的密鑰流是唯一確定的,因此,這種類型的加密方案容易被選擇明文攻擊。例如文獻[15]已經(jīng)被攻擊[16],攻擊者選取一幅像素值全為零的特殊圖像作為明文圖像,加密后得到密文圖像,通過對比明文圖像和密文圖像可以得到加密過程中的兩個密鑰流,再通過三次異或操作得到密鑰圖像,完成對加密方案的攻擊。第二,加密過程中密鑰與明文圖像相關聯(lián),是一次一密的加密方案。此方案中,由于密鑰與明文相關聯(lián),并且是一次一密的加密方案,因此,每一幅不同的明文圖像加密后都將產(chǎn)生與之對應的一個密鑰,并且該密鑰需要與方案中其他的固定密鑰一起傳送給解密方才能完成解密。
為了克服以上加密方案的缺點,該文提出了一種與明文相關的通道關聯(lián)的同時置亂擴散加密方案。在該加密方案中,密鑰流的產(chǎn)生與明文圖像相關,不同像素和的明文圖像將產(chǎn)生不同的密鑰流,但是加密方案中用到的初始密鑰是固定的,解密方只需要得到固定的密鑰就可以解密圖像。這種方案解決了與明文無關的加密方案容易被選擇明文攻擊的缺點,并且采用同時置亂擴散的方式提高算法的安全性,使得加密算法能夠更好地抵抗選擇明文攻擊。
Hopfield神經(jīng)網(wǎng)絡最早是由美國物理學家Hopfield于1982年提出的[17]。它主要用于模擬生物神經(jīng)網(wǎng)絡的記憶機制。Hopfield神經(jīng)網(wǎng)絡是一種全連通的神經(jīng)網(wǎng)絡。三階神經(jīng)網(wǎng)絡具體形式如下:
(1)
(2)
為了確認其偽隨機性,對Hopfield神經(jīng)網(wǎng)絡進行了NIST隨機性測試[18],當p值大于0.01時,認為它通過了測試。結果見表1。隨機性測試結果表明,基于權值矩陣的Hopfield混沌神經(jīng)網(wǎng)絡具有偽隨機性。
表1 NIST隨機性測試
該文所提出的圖像加密算法包括彩色圖像R、G、B三通道關聯(lián)的同時置亂和擴散算法以及二次擴散算法,加密過程中輸入明文圖像P,輸出密文圖像C;解密過程與之相反。假設圖像大小為M×N,加密過程具體步驟如下所述,加密流程框圖如圖1所示。
圖1 算法流程
為了更好地抵抗攻擊,該文提出了彩色圖像通道關聯(lián)的同時置亂擴散算法,并且在加密過程中用到了明文圖像的有效信息,即使明文圖像只有1 bit的差別,加密后圖像也會大不相同。具體的加密過程如下:
(1)分別計算R、G、B三通道像素值的和,分別標記為sum(R)、sum(G)、sum(B)。通過如下公式計算神經(jīng)網(wǎng)絡系統(tǒng)的初始值,其中c1、c2以及c3是外部密鑰:
(3)
其中,mod是取模運算。
(2)將神經(jīng)網(wǎng)絡系統(tǒng)迭代1 000+M×N次,為了避免瞬態(tài)效應,將前1 000次的數(shù)值舍棄,得到序列:
(4)
明文圖像中每個通道的每一個像素值都有可能置換到本通道或另外兩個通道中新的位置上,并改變此像素本身的值。通過公式(4)產(chǎn)生的序列首先得到三個決定通道置亂位置的矩陣X1_1,X2_1以及X3_1:
(5)
其中,abs為取絕對值的操作。
進而分別產(chǎn)生三個通道新的像素位置,具體過程如下:當X1_1(i,j)=1時,矩陣R中像素值R(i,j)和R(m,n)交換位置,再根據(jù)如下公式執(zhí)行擴散操作改變像素R(i,j)的值:
R(i,j)=bitxor(R(i,j),R(m,n))
(6)
當X1_1(i,j)=2時,矩陣R中像素值R(i,j)和G(m,n)交換位置,根據(jù)如下公式執(zhí)行擴散操作改變像素R(i,j)的值:
R(i,j)=bitxor(R(i,j),G(m,n))
(7)
當X1_1(i,j)=3時,矩陣R中像素值R(i,j)和B(m,n)交換位置,根據(jù)如下公式執(zhí)行擴散操作改變像素R(i,j)的值:
R(i,j)=bitxor(R(i,j),B(m,n))
(8)
其中,像素值行位置m和列位置n計算如下:
m=1+mod((abs(X1(i,j)))×1014,M)
(9)
n=1+mod((abs(X1(i,j)+
abs(X2(i,j)))×1014,N)
(10)
當R通道置亂擴散結束后得到三個新的矩陣R_1,G_1,B_1。
當X2_1(i,j)=1時,矩陣G_1中像素值G_1(i,j)和G_1(m,n)交換位置,用如下公式執(zhí)行擴散操作改變像素G_1(m,n)的值:
G_1(i,j)=bitxor(G_1(i,j),G_1(m,n))
(11)
當X2_1(i,j)=2時,矩陣G_1中像素值G_1(i,j)和R_1(m,n)交換位置,再根據(jù)如下公式執(zhí)行擴散操作改變像素G_1(i,j)的值:
G_1(i,j)=bitxor(G_1(i,j),R_1(m,n))
(12)
當X2_1(i,j)=3時,矩陣G_1中像素值G_1(i,j)和B_1(m,n)交換位置,再根據(jù)如下公式執(zhí)行擴散操作改變像素B_1(i,j)的值:
G_1(i,j)=bitxor(G_1(i,j),B_1(m,n))
(13)
其中,像素值行位置m和列位置n計算如下:
m=1+mod((abs(X2(i,j)))×1014,M)
(14)
n=1+mod((abs(X2(i,j)+
abs(X3(i,j)))×1014,N)
(15)
當G通道置亂擴散結束后得到三個新的矩陣R_2,G_2,B_2。
當X3_1(i,j)=1時,矩陣B_2中像素值B_2(i,j)和B_2(m,n)交換位置,再根據(jù)如下公式執(zhí)行擴散操作改變像素B_2(i,j)的值:
B_2(i,j)=bitxor(B_2(i,j),B_2(m,n))
(16)
當X3_1(i,j)=2時,矩陣B_2中像素值B_2(i,j)和R_2(m,n)交換位置,再根據(jù)如下公式執(zhí)行擴散操作改變像素B_2(i,j)的值:
B_2(i,j)=bitxor(B_2(i,j),R_2(m,n))
(17)
當X3_1(i,j)=3時,矩陣B_2中像素值B_2(i,j)和G_2(m,n)交換位置,再根據(jù)如下公式執(zhí)行擴散操作改變像素B_2(i,j)的值:
B_2(i,j)=bitxor(B_2(i,j),G_2(m,n))
(18)
m=1+mod((abs(X1(i,j)+
abs(X3(i,j)))×1014,N)
(19)
n=1+mod((abs(X1(i,j)+abs(X2(i,j))+
abs(X3(i,j)))×1014,N)
(20)
當B通道置亂擴散結束后得到三個新的矩陣R_3,G_3,B_3。
為了提高加密算法的安全級別,對矩陣R_3,G_3,B_3進行二次擴散,過程如下:
(1)通過序列X1,X2以及X3得到三個中間圖像矩陣X1_2,X2_2以及X3_2。
(21)
(2)執(zhí)行擴散操作。
R_4=bitxor(R_3,X1_1)
(22)
G_4=bitxor(G_3,X2_2)
(23)
B_4=bitxor(B_3,X3_3)
(24)
R_4,G_4,B_4即加密圖像C的三個通道。
提出的加密算法是對稱的,解密過程是加密過程的逆過程。
整個加密算法是基于MATLAB實現(xiàn)的,使用的測試圖像分別為Lena(256×256)。實現(xiàn)加密方案的密鑰以及仿真時的取值如表2所示。
表2 密鑰及其仿真時的取值
仿真結果如圖2所示。在圖2中,第一列的圖像為明文圖像,第二列為加密后的圖像,最后一列為解密后的圖像。由結果可以看出,這個加密方案是可行的。
圖2 仿真結果
當一個加密方案中密鑰空間大于2100時,可以認為該加密方案是安全的,可以抵抗暴力攻擊。加密算法的密鑰包括明文圖像R,G,B三個通道的像素和以及外部密鑰c1,c2,c3,如果計算機的計算精度為10-14,則提出的算法的密鑰空間為(1014)6≈2289,所以認為加密方案是安全的。
一個安全有效的加密方案應該保證在加密和解密過程中都是對密鑰敏感的,即當密鑰取值發(fā)生微小的變化時,解密結果將會完全不同。為了測量加密方案的敏感性,選擇測試圖像Lena(256×256),它的加密后的圖像以及解密后的圖像分別如圖3所示。當分別改變R通道的像素和以及外部密鑰c1的值,改變后的數(shù)值如表3所示。
表3 密鑰改變值分析
圖3 密鑰敏感性分析結果
圖像加密算法抵抗統(tǒng)計攻擊的能力可以通過加密后圖像的直方圖來直觀地體現(xiàn)出來。直方圖反映了各個不同灰度級的像素個數(shù),直方圖越均勻平坦,加密算法抵抗統(tǒng)計攻擊的能力越好。選擇的測試圖像為Lena。
通常,直方圖方差用如下公式計算:
其中,V={v0,v1,…,v255},向量中的每一個值vi(i=0,1,…,255)代表圖像中灰度值為i的數(shù)量。var(V)是向量V的方差。方差的值越小,直方圖越均勻。
由以上分析可知,提出的加密算法加密后圖像的直方圖更加平坦,能夠有效地抵抗統(tǒng)計攻擊。
通常一幅明文圖像信息量很大,每一個像素與其相鄰像素之間的相關性很高。然而,為了抵抗各種統(tǒng)計攻擊,要求加密后圖像的像素之間的相關性近似為零。明文圖像Lena及其加密后圖像的相關分布顯示,提出的圖像加密算法足夠抵抗統(tǒng)計攻擊。
通常情況下,對加密系統(tǒng)分析時有四種典型的攻擊形式:唯密文攻擊、選擇密文攻擊、已知明文攻擊和選擇明文攻擊。其中,選擇明文攻擊是對密碼系統(tǒng)最有威脅的一種,一般來說,如果一個加密方案能夠抵抗選擇明文攻擊,那么它也有足夠的能力去抵抗其他類型的攻擊。在提出的方案中,有一些步驟是為了抵抗選擇明文攻擊而設計的。
加密方案主要的兩個步驟:神經(jīng)網(wǎng)絡系統(tǒng)初始值的產(chǎn)生是與明文圖像像素和以及外部密鑰有關的,即使在外部密鑰相同的條件下,不同的明文圖像也會產(chǎn)生不同的序列。
該文使用三階神經(jīng)網(wǎng)絡對彩色圖像進行通道間的同時置亂擴散,可以有效地避免置亂和擴散分開攻擊對加密算法的影響,實驗結果表明,該算法有良好的加密性能,可以抵抗各種攻擊。