代高樂,葛 斌
(安徽理工大學 計算機科學與工程學院,安徽 淮南 232001)
近年來,通信技術的飛速發(fā)展,給人們生活帶來了極大的便利,但同時也伴隨著個人隱私泄露的可能,信息網(wǎng)絡安全也成為當下熱門的話題。數(shù)字圖像作為一種常用的信息傳輸媒介,是隱私安全主要保護對象,而保護圖像數(shù)據(jù)的安全最直接有效的方法就是圖像加密。DES、RSA和IDEA[1,2]等都是具有極為優(yōu)秀的加密算法,但這些算法在一般情況下用于文本加密,針對數(shù)字圖像這種數(shù)據(jù)量大、冗余度高和相關性高的特點,需要有專門的加密算法進行加密。
目前,許多加密算法被陸續(xù)提出,大多是基于混沌映射和置亂擴散相結合的圖像加密算法。Ban[3]等人提出SPM映射,用sine映射與模運算結合調(diào)制PWLCM映射,擴大了混沌映射的混沌區(qū)間,但混沌映射的隨機性較差。Gao[4]提出一種改進的Henon映射,將Henon映射與傳統(tǒng)的無限迭代映射相乘,增加了混沌系統(tǒng)的控制參數(shù)從而擴大了加密算法的密鑰空間,但仍存在較小的混沌區(qū)間和不平均的輸出值等問題。Wang[5]等人提出利用多重混沌映射結合動態(tài)L型置亂的方法對圖像進行加密,但處理較大圖像的效率較低。基于以上幾點問題,本文通過增加動態(tài)控制參數(shù)增大混沌區(qū)間,且高效利用混沌序列,采用分塊的方法塊間置亂、塊內(nèi)置亂提高加密效率。
混沌因其具有不可預測性、內(nèi)在隨機性、長期不可預測性和對初始值的敏感性等優(yōu)點,被廣泛應用于圖像加密中。本文介紹了設計的DHIM映射,并通過分岔圖、李雅普諾夫指數(shù)和樣本熵驗證了DHIM的混沌性。
由于傳統(tǒng)Henon映射混沌區(qū)間小混沌、混沌行為簡單,文獻[4]將iterative映射與Henon映射復合,提出改進的Henon混沌映射,增強了一定區(qū)間的混沌行為,但混沌映射區(qū)間較小密鑰空間不足。針對此問題,本文提出DHIM映射,用Logistic映射代替控制參數(shù)r∈[0,1],動態(tài)控制混沌映射參數(shù),增強了混沌行為的復雜性、增大混沌區(qū)間。DHIM映射被定義為:
其中,控制參數(shù) a∈[-0.25,1.5],b∈[0,0.3],u∈[3.57,4],令 b=0.3,u=3.99,由圖 DHIM 映射在[-1,1]間處于滿映射狀態(tài)。
分岔圖的軌跡反應非線性系統(tǒng)的行為,描繪了系統(tǒng)從周期到混沌的運動軌跡?;煦缬成湓诜植韴D中映射范圍越廣,說明混沌映射的混沌性能越好。DHIM映射的分岔圖如圖1所示。
圖1 DHIM分岔圖
從圖1中可以看出DHIM映射在a∈[-0.25,1.5]時處于混沌狀態(tài)。
李雅普諾夫指數(shù)(LE)描述了相空間中兩條相鄰軌跡之間的平均指數(shù)收斂或發(fā)散速率。二維混沌映射有兩個LE,只要一個LE為正,說明此時混沌系統(tǒng)處于混沌狀態(tài),并且隨著LE的增加,映射的混沌行為變得更加明顯。圖2展示了DHIM的李雅普諾夫指數(shù)圖。
圖2 樣本熵
從圖2中可以看出,由于在原有映射中添加了動態(tài)控制參數(shù)使得DHIM映射具有更復雜的混沌行為,李雅普諾夫指數(shù)更大,且具有兩條LE皆為正數(shù),效率更高。
樣本熵(Sample Entropy,SE)是通過度量信號產(chǎn)生新模式的概率大小來衡量時間序列復雜性,新模式產(chǎn)生的概率越大,序列的復雜性就越大。樣本熵的大小在用來評估混沌映射產(chǎn)生混沌序列的復雜性具有較好的說服力。DHIM的樣本熵如圖3所示。
圖3 DHIM樣本熵
本章節(jié)提出了基于DHIM分塊置亂且適用于任何大小的彩色圖像加密算法。該算法利用SHA-512產(chǎn)生與明文相關的混沌初始值與控制參數(shù)以達到一次一密的效果;對明文圖像進行補零操作得到大小為(M×N)的圖像以確??梢圆鸱譃門個大小為(L×L)像素塊,采用“塊間-塊內(nèi)-塊間”置亂的方式充分對像素位置進行打亂,正反兩輪擴散以充分改變像素值,提高算法的安全性,如圖4所示。
圖4 加密算法流程圖
Step 1:對明文圖像進行SHA-512操作,得到長度為128位的密鑰key,密鑰為16進制字符串。
Step 2:將密鑰轉換為512位的二進制字符串,每 64 位為一組分為 8 組密鑰值 k1、k2、k3、k4、k5、k6、k7、k8。
Step 3:令8組密鑰值按照公式(3)和公式(4)所示確定本文算法中的初始值和控制參數(shù){a0,b0,a1,b1,x0,y0,x1,y1}。
將上述操作得到的初始值和系統(tǒng)參數(shù),代入DHIM映射中迭代數(shù)次,可得到本文算法中所需要的混沌序列:
Step 1: 將初始值 x0、y0、a0和 b0代入 DHIM 映射中迭代(500+max(T,L×L))次,L為每塊的邊長,T為分塊的個數(shù)。舍棄前500次迭代結果以達到充分的混沌狀態(tài),得到兩組混沌序列A0、B0。
Step 2:保留序列A0的前T個數(shù),利用公式(4)對A0進行處理得到偽隨機序列A1,用于塊間置亂。
其中,mod()為模運算,round()為四舍五入。
Step 3:運用公式(5)對 B0進行處理得到 B1,并將B1重新組合成大小為(L×L)的矩陣P,用于塊內(nèi)置亂。
其中T為分塊的個數(shù)。
Step 4: 將初始值 x1、y1、a1和 b1代入 DHIM 映射中迭代(500+M×N×3)次,舍棄前 500個數(shù)得到C0、D0,再利用公式(6)進一步處理得到新的混沌序列 C1、D1,用于兩輪擴散。
其中abs()為取絕對值。
Step 1:輸入大小為的彩色圖像I和塊的邊長L,并對明文圖像進行補零操作得到大小為(M×N)的明文圖像I′,確保分塊大小均為(L×L),設定L的大小為64。
Step 2: 將圖像 I′拆分為 Ir、Ig、Ib 三個平面并組合成大小為(M×N×3)的矩陣S,并進行矩陣分塊,每一塊的大小為(L×L)。
Step 3:塊間置亂。利用混沌序列A0索引排序對矩陣S進行塊間排序,并根據(jù)序列A1的數(shù)值對分塊矩陣進行旋轉翻轉,如表1所示。
表1 分塊旋轉翻轉規(guī)則
Step 4:塊內(nèi)置亂。運用混沌序列B0排序后的索引,對每一塊內(nèi)的像素進行塊內(nèi)混沌置亂。
Step 5:塊間置亂。將混沌序列B1組合成矩陣P,使每一分塊的像素點與P中的元素一一對應,并根據(jù)P中的矩陣元素數(shù)值在每一塊中循環(huán)移位,使像素在整個矩陣內(nèi)充分置亂最終得到置亂后的矩陣Q。
Step 6:利用混沌序列C1構造矩陣W,根據(jù)公式(7)對矩陣Q進行第一輪正向非序列擴散得到矩陣G。其中W(i,j)為偽隨機矩陣的像素值;Q(i,j)為置亂后矩陣的像素值;G(i,j)為正向擴散后矩陣的像素值。
Step 7:利用混沌序列D1構造矩陣S,根據(jù)公式(8)對矩陣G進行第二輪反向非序列擴散得到矩陣E。其中S(i,j)為偽隨機矩陣的像素值;E(i,j)為反向擴散后矩陣的像素值。
Step 8:依據(jù)公式(9)對矩陣E進行重塑,得到加密后的圖像J。
解密過程為加密過程的逆過程。
Step 1:使用SHA-512獲取的哈希密鑰代入DHIM映射中,得到解密所需的混沌序列。
Step 2:密文圖像三通道分解并利用混沌序列進行正反兩輪逆向非序列擴散。
Step 3:矩陣分塊,并依據(jù)另一組混沌序列進行塊間逆向循環(huán)移位、塊間逆置亂、塊內(nèi)逆置亂、反向旋轉翻轉和索引排序。最終獲得明文圖像。
本章節(jié)主要驗證本文所設計的基于DHIM映射和分塊置亂的彩色圖像加密算法的有效性和安全性,實驗在MATLABR2017a的仿真環(huán)境中,采用圖像處理常用的標準測試圖像,選取多組不同的彩色圖像進行測試。按照第三章設計的加密算法,對測試圖像 Lena(512×512)、baboon(512×512)、girl(768×512)進行加密、解密操作,加解密結果如圖5所示。
圖5 圖像加解密結果
密鑰空間大于100位才能保證加密算法的安全性[3]。本文提出的算法中的密鑰是由512位二進制轉換而成,其密鑰空間大小為2512,遠大于要求的2100。因此,該算法的密鑰空間足夠大,可以有效地抵抗暴力攻擊,提高了加密的安全性。
高度敏感的密鑰是一個加密算法的必要條件,密鑰值細微改變而使得加密圖像有明顯變化,說明密鑰敏感性強。
為了驗證本文算法的密鑰敏感性,實驗選取fruits(512×512)作為測試圖像。隨機改變一個密鑰值K0的小數(shù)點后第8位的數(shù)值,得到兩個密鑰值K1(K0+0.00000001)、K2(K0-0.00000001), 分 別 用K1對明文加密,用K2對K0加密后的圖像進行解密操作。加解密結果如圖6所示:
圖6 不同密鑰值的加密、解密
從圖6中(b)和(c)的加密效果可以看出采用不同的密鑰值進行加密,得到的加密圖像有明顯區(qū)別;從(d)和(e)中可以看出用錯誤的密鑰值解密無法得到明文圖像。由此說明本文算法的密鑰敏感性較強。
直方圖反映了圖像像素的分布,是衡量加密算法性能的重要指標。本文算法采用非序列擴散方法,將目標像素點周圍的像素值與混沌序列值進行模運算,改變置亂后矩陣的像素值,使密文圖像直方圖的像素分布均勻,具有較強的抗統(tǒng)計攻擊能力。
選取peppers(512×512)作為實驗對象,圖 7展示了加密前后三個通道的直方圖對比。從圖中可以看出加密后的直方圖與明文圖像相比,像素值分布更為均勻,可有效抵抗統(tǒng)計攻擊。
圖7 加密前后peppers的三通道直方圖
明文圖像的相鄰像素間具有較強的相關性,加密算法若不能有效降低其水平、垂直和對角線方向的相關性則會更易受到統(tǒng)計攻擊。本文采用跨平面塊間置亂和塊內(nèi)置亂的方法,有效降低了像素間的相關性。
為了驗證本文算法的安全性,以Lena(512×512)為例隨機選擇3000對像素點及其加密后圖像的水平方向、垂直方向和對角線方向上相鄰像素對進行相關性分析并對比了其他算法的相關性。如表2所示,加密后的像素點相關性趨近于0,表明本文提出的加密算法可以有效去除相鄰像素間的相關性。
表2 不同算法的Lena相鄰像素相關性
差分攻擊是另一種安全攻擊方式,通過兩個差異較小的明文進行二次加密得到密文,從兩次加密后的密文關系建立起明文與密文之間的關系從而破解密文。
差分攻擊是另一種測試加密算法質(zhì)量的常用的攻擊手段。主要是通過改變明文圖像的像素值,并對其進行加密,然后通過與原始圖像加密后密文進行比較,從而攻擊加密算法。為了驗證加密算法的抗差分攻擊能力,選擇Lena(512×512)、house(512×512)、airplane(512×512)作為實驗對象,并用像素數(shù)變化率(NPCR)和統(tǒng)一平均變化強度(UACI)作為評價指標。理論上NPCR的值應大于99.6094%,且數(shù)值越大越好;UACI的理論值為33.4635%,數(shù)值越接近加密效果越好[5]。其計算方法見公式(9)和公式(10):
其中,M×N表示一個平面的大小,R1和R2表示僅改變一個像素點兩次加密的圖像,V(i,j)表示兩次加密的密文圖像像素不同的個數(shù),Z表示最大允許的像素值。
表3 NPCR和UACI的統(tǒng)計值
信息熵是分析圖像信息的隨機性指標,加密后的圖像信息熵越高,表示像素隨機性越好。密文圖像的信息熵越接近于8,說明加密算法對明文圖像的加密效果越好[4],信息熵的計算方法如公式(11)所示。
其中,a表示灰度值隨機變量,N代表圖像的灰度,P(ai)表示灰度值出現(xiàn)的概率。以Lena(512×512)作為實驗對象,將本文加密算法于其他三種算法的信息熵進行比較,如表4所示。
表4 不同算法Lena的信息熵
通過研究現(xiàn)有的混沌映射和彩色圖像加密算法的優(yōu)缺點,本文提出了一種基于動態(tài)二維映射和分塊置亂的彩色圖像加密算法。該算法主要利用設計的動態(tài)Henon-Iterative映射生成的混沌序列,結合塊間-塊內(nèi)-塊間置亂和兩輪非序列擴散對彩色圖像進行加密。通過仿真實驗和安全性分析,證明本文提出的圖像加密算法具有較好的安全性和魯棒性。
在實際應用中,并不是明文圖像中所有內(nèi)容都是需要加密的。為了節(jié)省資源,提高算法的加密效率,在接下來的研究中,將繼續(xù)利用分塊的方法,結合目標檢測的技術提高算法的運行效率,節(jié)省資源開銷。