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