董小雨,馮秀芳
(1.太原理工大學 信息與計算機學院,山西 晉中 030600;2.太原理工大學 軟件學院,山西 晉中 030600)
對圖像的加密算法的研究成為圖像加密[1-4]領(lǐng)域的研究熱點,彩色圖像加密[5-8]、多圖像加密、混沌圖像加密[9-12]等圖像加密方法被學者所提出。當前,圖像加密算法中普遍使用置亂、擴散兩個階段對圖像進行加密。在加密算法中,有學者提出異或、加取模、移位等循環(huán)擴散加密方法。例如,多次異或運算實現(xiàn)對圖像的擴散操作[13]。有學者提出增加對像素值的不同數(shù)學運算操作,例如,將超混沌系統(tǒng)與移位密碼結(jié)合對像素位置加密、擴散和混淆像素值[14]。也有學者提出在對圖像置亂的同時實現(xiàn)擴散的加密方法。例如,在傳統(tǒng)圖像加密算法基礎(chǔ)上,增加置亂和擴散的耦合性,實現(xiàn)多混沌結(jié)合的快速圖像加密[15]。
近年來,學者們提出的通過循環(huán)數(shù)學運算、增加新的操作或多種操作的融合提高加密算法的復雜度。但從為建立各像素值之間關(guān)聯(lián)的角度,傳統(tǒng)的擴散算法一般使用當前明文像素值、與當前明文像素相鄰的密文像素值、混沌序列之間進行相互運算,加密過程中參數(shù)不變,有限次加密得到的加密圖像之間具有較強的規(guī)律性,抗攻擊能力較差。為處理這些問題,本文提出一種基于動態(tài)密鑰的加取模擴散加密算法,進行可變控制參數(shù)的圖像加密。在置亂階段,首先使用Hilbert曲線置亂圖像,將相鄰像素進行重新組合,減少圖像中不動點數(shù)量;其次使用Arnold隨機矩陣對圖像每一像素進行選擇性置亂。在擴散階段使用基于動態(tài)密鑰的加取模擴散算法,將圖像之間的差異程度對擴散過程中混沌序列的初始參數(shù)、擴散初始值、擴散序列等參數(shù)進行調(diào)整,實現(xiàn)擴散加密過程參數(shù)的改變。通過該加密方法,加密任意兩幅圖像使用的密鑰,加密過程中的參數(shù)都不相同,可有效提高明文敏感性。
在本文的加密系統(tǒng)中,使用Hilbert曲線置亂、Arnold置亂等置亂方法,結(jié)合提出的基于動態(tài)密鑰的加取模擴散算法對圖像進行加密。本節(jié)介紹Hilbert曲線置亂、Arnold變換、基于動態(tài)密鑰的加取模擴散的基本思路。
二維Hilbert曲線可以描述為,將一個正方形以一定的規(guī)則進行遍歷,可得到一條填滿整個正方形的曲線。在本文中,按二維Hilbert曲線遍歷的順序?qū)ΧS圖像的像素點進行掃描存儲,按列排列得到Hilbert曲線置亂圖像,實現(xiàn)圖像置亂處理。加密算法中使用Hilbert曲線遍歷圖像以減少不動點的數(shù)目。Hilbert置亂加密過程如圖1所示。
圖1 Hilbert置亂加密過程
Arnold置亂是基于矩陣變換的算法。首先對像素點做x軸方向的變換,再做y軸方向的變換,最后做取模運算,將圖像內(nèi)的離散像素點進行重新排列。
Arnold變換公式如式(1)所示
(1)
Arnold變換通過使用2×2的矩陣R,對原圖像像素點的坐標位置(x0,y0)進行變換,得到變換后圖像像素點的坐標位置(x1,y1),M、N表示圖像矩陣大小。
Arnold矩陣R如式(2)所示
(2)
矩陣R中a(i,j)、b(i,j) 表示Arnold變換參數(shù)。本文中a(i,j)、b(i,j) 的取值為混沌系統(tǒng)得到的隨機序列X值。對圖像中每一像素使用Arnold矩陣R進行變換,對 (i,j) 位置的像素點進行置亂使用的參數(shù)為a矩陣中的 (i,j) 點的隨機序列值和b矩陣中的 (i,j) 點的隨機序列值。使用Arnold 變換進行置亂的矩陣a、b如圖2所示。
圖2 隨機矩陣a,b轉(zhuǎn)換
Arnold置亂加密算法見表1,Arnold置亂解密算法見表2。
表1 置亂加密算法
表2 置亂解密算法
在圖像擴散加密中,通過改變像素點的灰度值使得任一像素點的像素值信息影響盡可能多的其它像素點的像素值。設(shè)明文圖像為8 bit的圖像,基于動態(tài)密鑰的加密模擴散算法如式(3)所示
Ci=(Ci-1+Si+Pi+Ki×V)mod256
(3)
在基于動態(tài)密鑰的加取模擴散算法中,明文圖像被展開成一維向量,記為Pi,i=1,2,…,MN; 相應(yīng)的密文也為一維向量,記為Ci,i=1,2,…,MN; 初始值C0來自密鑰;Si,Ki為密碼向量,i=1,2,…,MN;V為圖像的一個特征值Fp與衡量圖像的差異值E之差,作為擴散算法的初始值和參數(shù)。
在基于動態(tài)密鑰的加取模擴散算法中,擴散階段使用混沌序列Ki與擴散階段初始值V的乘積作為擴散階段的一個參數(shù)對擴散過程進行調(diào)整,同時將圖像之間的差異值E對擴散階段中的混沌序列Ki的初始參數(shù)K={x0,y0,z0,w0} 進行調(diào)整,擴大圖像差異對擴散過程的影響,提高明文敏感性。采用式(3)所示的運算進行擴散處理,其擴散加密算法,解密算法見表3,表4。
表3 擴散加密算法
表4 擴散解密算法
本文提出的加密算法中,使用Hilbert曲線和Arnold隨機矩陣對圖像進行置亂。在擴散階段使用基于動態(tài)密鑰的加取模擴散算法進行加密。加密算法的過程如圖3所示,解密過程為加密算法的逆過程。
圖3 加密算法的過程
以彩色Lena圖像為例,擴散加密流程如下列步驟所示:
(1)將彩色圖像分解為紅,綠,藍這3個通道的圖像,分別為P-R,P-G,P-B。
(2)將紅,綠,藍這3個通道的圖像P-R,P-G,P-B進行Hilbert置亂,使用二維Hilbert曲線遍歷圖像得到P-R1,P-G1,P-B1。
(3)使用超混沌Lorenz系統(tǒng)的初始值作為密鑰,通過超混沌Lorenz系統(tǒng)得到隨機序列X,將隨機序列X轉(zhuǎn)換為兩個M×N大小矩陣P1、Q1作為Arnold置亂的初始矩陣參數(shù)a、b矩陣,Arnold置亂矩陣R中的a(i,j) 和b(i,j) 分別為P1(i,j)、Q1(i,j), 使用式(1)對Hilbert置亂3個通道的圖像P-R1,P-G1,P-B1進行Arnold置亂得到P-R2,P-G2,P-B2。
(4)使用式(4)計算,將彩色圖像每一通道的圖像的像素值P(i,j) 累加和對256取余得到的值Fp分別作為圖像三通道的特征值R-Fp,G-Fp,B-Fp,使用式(5)以該特征值與常數(shù)T(密鑰)之間的差作為不同圖像之間的差異程度R-E,G-E,B-E,使用式(6)將特征值Fp與差異程度E的差值作為擴散階段的初始值R-V,G-V,B-V
(4)
E=T-Fp
(5)
V=Fp-E
(6)
(5)超混沌Lorenz系統(tǒng)的初始值S={x0,y0,z0,w0} 作為密鑰,通過超混沌Lorenz系統(tǒng)得到隨機序列Si,i=1,2,…,MN。 將圖像之間的差異值E對擴散階段中的混沌序列的初始參數(shù)K={x0,y0,z0,w0} 以式(7)進行調(diào)整,通過超混沌Lorenz系統(tǒng)得到隨機序列Ki,i=1,2,…,MN。 實現(xiàn)對擴散階段密鑰的調(diào)整
x0=x0+E×10-10
y0=y0+E×10-10
z0=z0+E×10-10
w0=w0+E×10-10
(7)
(6)對Arnold置亂3個通道的圖像P-R2,P-G2,P-B2 分別展開成一維向量,記為Pi,i=1,2,…,MN。 使用本文提出的擴散算法進行加取模正向、逆向擴散操作得到圖像P-R3,P-G3,P-B3。實現(xiàn)對擴散過程參數(shù)的調(diào)整。
(7)將置亂、擴散加密處理的3個通道的圖像P-R3,P-G3,P-B3混合為彩色圖像得到加密彩色圖像。
以彩色Lena圖像的紅色通道圖像Lena-R為例,基于動態(tài)密鑰的加取模擴散加密算法流程如圖4所示。
圖4 基于動態(tài)密鑰的加取模擴散加密算法流程
解密算法與加密算法的過程相反,對彩色圖像的每個通道的圖像先進行加取模擴散的還原,再進行Arnold置亂和Hilbert置亂的還原。在接收方接收到密文和密鑰進行圖像解密時,加取模擴散、Arnold置亂和Hilbert置亂解密的過程如下:
(1)使用式(5)以密鑰中衡量圖像變化程度的常數(shù)T與彩色圖像三通道的特征值R-Fp,G-Fp,B-Fp分別進行差值計算得到3個通道圖像之間的差異程度R-E,G-E,B-E,使用式(6)將彩色圖像三通道的特征值R-Fp,G-Fp,B-Fp與差異程度R-E,G-E,B-E的差值作為逆向加取模擴散的初始值R-V,G-V,B-V。
(2)使用密鑰中超混沌Lorenz系統(tǒng)的初始值S=
{x0,y0,z0,w0}, 通過超混沌Lorenz系統(tǒng)得到隨機序列Si,i=1,2,…,MN。 將圖像之間的差異值E對擴散階段中的混沌序列的初始參數(shù)K={x0,y0,z0,w0} 以式(7)進行調(diào)整,通過超混沌Lorenz系統(tǒng)得到隨機序列Ki,i=1,2,…,MN。 實現(xiàn)對逆向擴散階段密鑰的調(diào)整。
(3)分別取加密圖像3個通道的圖像P-R3,P-G3,P-B3,將其展開成一維向量,記為Pi,i=1,2,…,MN。 使用本文提出的擴散算法進行加取模正向、逆向的反向擴散操作得到圖像P-R4,P-G4,P-B4。實現(xiàn)對擴散逆過程參數(shù)的調(diào)整。
(4)使用超混沌Lorenz系統(tǒng)的初始值作為密鑰,通過超混沌Lorenz系統(tǒng)得到隨機序列X,將隨機序列X轉(zhuǎn)換為兩個M×N大小矩陣P1、Q1作為Arnold置亂的初始矩陣參數(shù)a和b矩陣,Arnold矩陣A中的a(i,j) 和b(i,j) 分別為P1(i,j)、Q1(i,j), 使用式(1)對逆向擴散解密3個通道的圖像P-R4,P-G4,P-B4進行Arnold置亂還原得到P-R5,P-G5,P-B5。
(5)將Arnold置亂還原得到的紅,綠,藍這3個通道的圖像P-R5,P-G5,P-B5進行Hilbert置亂還原,使用二維Hilbert曲線逆向遍歷圖像得到P-R6,P-G6,P-B6。
(6)將二維Hilbert曲線逆向遍歷圖像得到P-R6,P-G6,P-B6圖像作為紅,綠,藍這3個通道的圖像,將三通道圖像融合得到彩色圖像。以彩色Lena圖像的紅色通道圖像Lena-R為例,基于動態(tài)密鑰的加取模擴散解密算法流程如圖5所示。
圖5 基于動態(tài)密鑰的加取模擴散解密算法流程
在傳統(tǒng)的圖像加密算法中,通過像素改變率(number of pixels change rate,NPCR)和歸一化像素值平均改變強度(unified average changing intensity,UACI)的值來衡量明文圖像像素值的微小改變對加密圖像的影響。本文提出的擴散加密算法與傳統(tǒng)的擴散加密算法相比,加密任意兩幅圖像,即使相差一個比特值的兩幅圖像,使用的加密密鑰,加密過程中的參數(shù)都不相同。實驗結(jié)果表明對原始圖像進行微小的改變,通過一次加密,加密圖像會在大范圍內(nèi)改變,UACI、NPCR即可達到理論值,可有效抵抗選擇明文攻擊,使加密系統(tǒng)具有較強的明文敏感性,提高了加密的安全性。
本節(jié)對加密算法的性能進行分析,在實驗中采用圖像直方圖分析、相關(guān)性分析、明文敏感性、密鑰敏感性、信息熵和魯棒性分析對Lena的紅、綠、藍這3個通道圖像加密效果進行分析,采用NPCR、UACI等對圖像加密效果進行定量分析。
圖6(a)、圖6(b)、圖6(c)顯示了Lena彩色圖像、加密、解密結(jié)果。直觀上可以看到密文圖像變得模糊不清,在解密后可以無損還原圖像。
圖6 加密,解密圖像
圖7顯示了本文加密系統(tǒng)的密鑰,密鑰為彩色圖像三通道的特征值R-Fp,G-Fp,B-Fp,一個衡量圖像變化程度的常數(shù)T,超混沌Lorenz系統(tǒng)的初始值S={x0,y0,z0,w0},K={x0,y0,z0,w0}, 其中x0∈(-40,40),y0∈(-40,40),z0∈(1,81),w0∈(-250,250),x0,y0,z0的步長為10-13,w0的步長為10-12。所以本文加密算法的密鑰空間足夠大,可有效抵抗暴力攻擊。
圖7 加密系統(tǒng)密鑰
圖8(a)、圖8(b)、圖8(c)分別為Lena紅色通道圖像、Lena紅色通道圖像直方圖、加密圖像直方圖分析結(jié)果。直觀上密文圖像具有平坦的直方圖,明文圖像的直方圖跌宕起伏。
圖8 加密,解密圖像直方圖
對明文圖像與密文圖像進行相關(guān)性比較。設(shè)從需要考察的圖像中任取N對像素點,記它們的灰度值為 (ui,vi),i=1…N, 向量u={ui} 和v={vi} 間的相關(guān)系數(shù)計算公式如下
(8)
圖9(a)~圖9(f)分別為Lena紅色通道圖像Lena-R和密文圖像在水平、垂直、正對角方向上隨機選取10 000對相鄰像素點的相關(guān)性分析結(jié)果。直觀上明文圖像在水平、垂直、正對角方向上具有較強的相關(guān)性,密文圖像相關(guān)性較差。
圖9 Lena-R加密,解密圖像相關(guān)性分析
從Lena的紅、綠、藍這3個通道的明文圖像和密文圖像中隨機選取10 000對相鄰像素點,計算水平、垂直、對角方向上的相關(guān)系數(shù)。如表5所示,明文圖像的相關(guān)系數(shù)接近于1,密文圖像的相關(guān)系數(shù)接近于0。
表5 Lena-R、Lena-G、Lena-B加密,解密圖像相關(guān)系數(shù)
本文采用NPCR和UACI來衡量同一密鑰對差別微小的兩個明文圖像加密得到的密文圖像之間的差別,進行明文敏感性分析。定義為式(9)和式(10)
(9)
(10)
實驗中對Lena圖像的紅,綠,藍這3個通道分別選取像素值微小差異的圖像進行明文敏感性分析,計算任意一個像素點相差為1到20像素值的兩幅圖像通過本文加密算法得到的加密圖像之間的NPCR和UACI值。
圖10顯示了計算Lena圖像的3個通道圖像在隨機改變1個像素的加密圖像與初始加密圖像之間的NPCR、UACI值,計算結(jié)果接近于NPCR、UACI的理論值99.6094%和33.4635%。實驗結(jié)果表明,兩個差別微小的明文圖像加密后得到相應(yīng)的密文圖像相差迥異,它們的NPCR、UACI計算結(jié)果與其理論值相近。
圖10 NPCR和UACI值
以明文圖像Lena的紅、綠、藍這3個通道圖像為例,采用圖像加密系統(tǒng)分析當密鑰發(fā)生微小變化時,加密同一明文圖像得到的兩個密文圖像的差別,分析密鑰敏感性。密鑰為超混沌Lorenz系統(tǒng)的初始值即S={x0,y0,z0,w0},K={x0,y0,z0,w0},x0∈(-40,40),y0∈(-40,40),z0∈(1,81),w0∈(-250,250), 其中x0,y0,z0的步長為10-13,w0的步長為10-12。對于密鑰S、K,隨機從其密鑰空間中選取10個值,進行如下實驗:對于每一組密鑰,保持y0,z0,w0不變,改變x0的值,改變的量為10-13,使用改變x0前后的密鑰加密同一明文圖像,計算兩個密文圖像之間的NPCR、UACI值。計算10次實驗得到NPCR、UACI的平均值。對于密鑰y0,z0和w0進行同樣實驗計算平均值,其中y0,z0改變的量為10-13,w0改變的量為10-12。
表6顯示了改變密鑰x0,y0,z0,w0,計算Lena紅、綠、藍這3個通道圖像的加密圖像的NPCR、UACI值,與NPCR、UACI的理論值非常接近,反映了兩個密文圖像差異顯著,即密碼系統(tǒng)具有較強的密鑰敏感性。
表6 改變密鑰的Lena-R、Lena-G、Lena-B的NPCR、UACI值比較
信息熵反映了圖像信息的不確定性,一般認為,熵越大,不確定性越大。計算公式如式(11)所示
(11)
L為圖像的灰度等級,p(i) 為灰度值i出現(xiàn)的概率。對于L=256的灰度圖像,H的理論值為8。從表7中可以看出Lena紅、綠、藍這3個通道加密圖像的信息熵非常接近于8。
表7 Lena-R、Lena-G、Lena-B的加密、解密圖像信息熵
衡量一個加密系統(tǒng)的抵抗干擾能力最重要的標準是魯棒性分析,本文以Lena圖像進行實驗,分別通過噪聲攻擊和剪切攻擊測試算法的魯棒性。圖11(a)、圖11(b)顯示了對添加10倍高斯白噪聲攻擊的加密圖像以及解密結(jié)果,圖11(c)、圖11(d)顯示了剪切攻擊加密圖像以及解密結(jié)果。實驗結(jié)果顯示了本文算法可以在一定程度上抵抗噪聲攻擊和剪切攻擊。若密文傳輸中出現(xiàn)傳輸錯誤,解密系統(tǒng)可以應(yīng)對。
圖11 魯棒性分析
針對同一加密系統(tǒng),不同圖像加密時加密密鑰不變,加密過程控制參數(shù)不變等規(guī)律性的問題,提出一種基于動態(tài)密鑰的彩色圖像擴散加密算法。算法新穎之處在于通過Arnold隨機矩陣對圖像中每一像素點位置進行隨機置亂,同時使用不同圖像之間的差異程度對擴散過程中混沌系統(tǒng)的初始參數(shù)進行調(diào)整,實現(xiàn)加密密鑰的改變,調(diào)整擴散過程的初始值,擴散序列等參數(shù)。通過加入待加密圖像特征值對圖像擴散過程進行擾動,使得圖像加密過程與動態(tài)密鑰相關(guān)聯(lián),進行可變控制參數(shù)的數(shù)字圖像加密。實驗結(jié)果表明,本文提出的加密算法可有效提高明文敏感性,加密算法具有較高的安全性。