周閏昌,黃一平,張柯翔,孫健華
(廣西師范大學(xué) 電子工程學(xué)院,廣西 桂林 541004)
數(shù)字圖像具有直觀、生動的特點(diǎn),是多媒體信息的重要形式之一,隨著物聯(lián)網(wǎng)和多媒體技術(shù)的發(fā)展,數(shù)字圖像在互聯(lián)網(wǎng)上廣泛傳播。因此,對各種通信網(wǎng)絡(luò)中安全圖像和傳輸?shù)难芯吭絹碓绞苋藗兊年P(guān)注[1]。研究人員研發(fā)了不同類型的技術(shù),如數(shù)據(jù)隱藏[2]、數(shù)字水印[3]和圖像加密[4-6],而最有效、最直接的方法就是圖像加密,將可視化的圖像轉(zhuǎn)化為無法識別的噪聲類圖像。因?yàn)閳D像相鄰元素具備高度相關(guān)性,傳統(tǒng)的加密方案如數(shù)據(jù)加密標(biāo)準(zhǔn)(DES,data encryption standard)和高級加密標(biāo)準(zhǔn)(AES,advanced Encryption Standard)不適合多媒體加密[4]。混沌系統(tǒng)具有偽隨機(jī)性、不可預(yù)測性、遍歷性和對初始值和參數(shù)高度敏感性等基本特點(diǎn)[5-6],利用混沌特點(diǎn)進(jìn)行圖像加密是在密碼學(xué)和計(jì)算機(jī)研究的熱點(diǎn)。在生成密鑰方面,混沌系統(tǒng)分為低維和高維,且兩者具有不同的優(yōu)缺點(diǎn)。高維混沌系統(tǒng)具有較好的隨機(jī)性,數(shù)據(jù)分布更均勻,參數(shù)空間更大,但計(jì)算復(fù)雜度高。低維混沌系統(tǒng)具有明顯的計(jì)算開銷優(yōu)勢,但它也降低了混沌性能。
人的心臟是極其復(fù)雜的生物系統(tǒng),而心電圖是檢測心率的常用方法,心電信號(ECG,electrocardiogram)在醫(yī)學(xué)領(lǐng)域運(yùn)用較多,特別是診斷病情和預(yù)防疾病[7],受到很多研究者的歡迎。由于ECG信號很難被復(fù)制和模擬,故近年來,也有研究者將ECG信號用于數(shù)據(jù)加密和傳輸[8],文獻(xiàn)[9]設(shè)計(jì)了一種基于自阻塞和ECG信號相結(jié)合的圖像加密算法,ECG信號使用wolf算法生成混沌映射的初始條件,該算法被文獻(xiàn)[10]中使用已知明文攻擊所破譯。
研究者近年來有使用ZigZag標(biāo)準(zhǔn)變換對圖像進(jìn)行像素的置換[11-13],文獻(xiàn)[14]提出了選擇明文攻擊方法對文獻(xiàn)[12]進(jìn)行了破譯。有研究者對標(biāo)準(zhǔn)的ZigZag變換方式進(jìn)行改進(jìn),文獻(xiàn)[15]提出從矩陣的主對角線元素進(jìn)行掃描,進(jìn)而遍歷整個(gè)矩陣;文獻(xiàn)[16]提出從選擇矩陣的任意位置作為起始元素,以Z型方向遍歷整個(gè)矩陣,因只是簡單變換在文獻(xiàn)[17]被選擇密文攻擊。以上方法都存在周期短、部分矩陣元素位置始終不變、變換規(guī)則易被破解的缺點(diǎn)。
根據(jù)以上分析,提出了基于ECG信號和混合混沌系統(tǒng)相結(jié)合的數(shù)字圖像加密方案。使用安全散列算法-256(secure hash algorithm-256, SHA-256)函數(shù)以及隨機(jī)性強(qiáng)的ECG信號,加大了密鑰空間。該方案采用置亂和擴(kuò)散技術(shù),通過用3D邏輯映射產(chǎn)生的隨機(jī)序列值,進(jìn)行動態(tài)脫氧核糖核酸(DNA,deoxyribonucleic acid)編碼、改進(jìn)的ZigZag變換進(jìn)行圖像置亂以及運(yùn)算,對圖像進(jìn)行實(shí)時(shí)動態(tài)加密。本文方案經(jīng)過安全性能測試和分析,實(shí)驗(yàn)結(jié)果表明,本文算法具有良好的加密性能,并提高了抗常見的攻擊能力。
3D邏輯映射的混沌性能要比1D或者2D邏輯映射有著更好的混沌性能特性,且控制參數(shù)多。采用3D邏輯映射系統(tǒng),定義如公式(1)所示:
(1)
當(dāng)設(shè)置參數(shù)3.53<α<3.81, 0<β<0.022,0<γ<0.015。xi,yi,zi∈(0,1),3D邏輯映射可產(chǎn)生復(fù)雜的混沌行為。而分段線性混沌映射(PWLCM),定義如式(2)所示:
(2)
其中:xi∈[0,1)和控制參數(shù)pi∈(0,0.5)。PWLCM系統(tǒng)具有良好的遍歷性、混淆性以及均勻的不變性分布,可以為加密系統(tǒng)生成隨機(jī)序列。
人體內(nèi)最特殊的信號就是ECG信號,同一個(gè)人在兩個(gè)不同的時(shí)刻與不同人在同一時(shí)刻,ECG信號都有很大的差異,如圖1所示。ECG信號采用wolf算法提取特征值,記為∈[-1,1][18]。

圖1 心電信號
DNA全稱為脫氧核苷酸,是由核苷酸組成的,不同的DNA可組成不同的核苷酸。核苷酸包括腺嘌呤(adenine, A)、鳥嘌呤(guanine, G)、胞嘧啶(cytosine,C)和胸腺嘧啶(thymine, T)。參照Watson-Crick堿基配對規(guī)則[19],A總是與T配對,C和G也是如此。則A和T、G與C形成堿基互補(bǔ)。二進(jìn)制中0和1是互補(bǔ)的,因此00和11互補(bǔ)以及01和10互補(bǔ),而滿足沃森-克里克互補(bǔ)規(guī)則的只有8種。如表1所示。圖像的像素范圍為0~255,將像素值的十進(jìn)制轉(zhuǎn)化為二進(jìn)制,得到8位有效像素值,可以表示為一個(gè)長度為4的DNA序列。假設(shè)像素值為198,則二進(jìn)制為(11000110)2,根據(jù)表中的規(guī)則3,其編碼為ATGC。

表1 DNA編碼規(guī)則
在DNA計(jì)算中,DNA的加、減和異或都是根據(jù)二進(jìn)制編碼來的,如表2~表4所示。

表2 采用DNA編碼規(guī)則1的加法運(yùn)算

表3 采用DNA編碼規(guī)則1的減法運(yùn)算
ZigZag變換是一種像素置亂的方法,可以通過選擇矩陣任意位置作為起始元素,然后以Z形路徑遍歷矩陣來實(shí)現(xiàn)像素的置亂[16]。假設(shè)選取矩陣的(3,2)位置數(shù),經(jīng)過Z型遍歷整個(gè)矩陣,得到新的矩陣,如圖2所示。ZigZag變

表4 采用DNA編碼規(guī)則1的異或運(yùn)算
換系統(tǒng)是將經(jīng)過Z型變換生成的一維矩陣L分成4個(gè)等長的矩陣,矩陣內(nèi)部排序分為順序和逆序,共有16種方式,排序如表5所示。而矩陣間的排序?yàn)?個(gè)等長矩陣的排序組合,再轉(zhuǎn)換為二維矩陣。

表5 4個(gè)等長矩陣的排序

圖2 ZigZag變換
為了提高加密算法對明文圖像和ECG信號的依賴性,利用SHA-256函數(shù)和由3D混沌映射的一個(gè)混沌序列{Xi}來計(jì)算ZigZag置亂的起始位置、矩陣內(nèi)部排序以及矩陣間排序,改進(jìn)的ZigZag變換如圖3所示。不同明文圖像和ECG信號可得到不同的初始位置,置亂效果也不一樣,具有很高的置亂率,可提高抵抗選擇明文攻擊和已知明文攻擊的能力。

圖3 ZigZag變換系統(tǒng)
圖像加密算法流程如圖4所示。

圖4 加密算法流程圖
圖像加密算法具體過程如下。
1)假設(shè)明文圖像為I,其大小為M*N,為加強(qiáng)算法對明文圖像的敏感性以及擴(kuò)大密鑰空間。利用SHA-256哈希函數(shù)生成圖像I的256位哈希值K。并轉(zhuǎn)換為32個(gè)十進(jìn)制數(shù),記為Ki。
Ki={K0,K1,,K31}
(3)
2)3D邏輯混沌映射的初始條件的生成,為了增加初始值的復(fù)雜性,ECG信號使用wolf算法提取特征值λ,在公式(4)和(5)生成3D邏輯映射的初始參數(shù)α,β,γ和初始值x0,y0,z0。
(4)
(5)
為了加強(qiáng)初始值跟明文圖像的敏感性,利用公式(6)對初始值再進(jìn)行一次更新,得到新的初始值x’、y’和z’。
(6)
式中,|x|表示x的絕對值,floor(x)表示不大于x的整數(shù)。

(7)
(8)
4)分段線性混沌映射系統(tǒng)用初始值迭代1 000+MN次(其中1 000為隨機(jī)數(shù)),為了去掉暫態(tài)性,將前1 000次去掉,得到一維混沌序列Ri。并根據(jù)公式(9)進(jìn)行量化處理,運(yùn)算得到0~255范圍的整數(shù),得到二維矩陣H。
Ri=floor(Li×1014)mod256
(9)
式中,AmodB表示A除以B的余數(shù)。
5)根據(jù)以下式子對矩陣H進(jìn)行更新像素值,依次選擇前N/2、后N/2列以及前M/2、后M/2行與明文圖像的哈希值Ki進(jìn)行計(jì)算。
采用第一個(gè)DNA編碼規(guī)則,將其轉(zhuǎn)換為M*4N大小的矩陣P。

6)將3D邏輯映射的初始條件進(jìn)行代入,對混沌系統(tǒng)進(jìn)行迭代1 000+MN次,同樣為防止發(fā)生暫態(tài)效應(yīng),去掉前1 000次,得到3個(gè)混沌序列{Xi}、{Yi}和{Zi}。
7)假設(shè)ZigZag變換的起始元素位置為明文圖像I的(m,n)元素(其中1≤m≤M,1≤n≤N)。明文圖像的哈希值和混沌序列{Xi}動態(tài)選擇起始位置初始值,如式(10)~(11)所示。經(jīng)過ZigZag變換再按著從左到右,從上到下轉(zhuǎn)化為一維矩陣為L(i),i=1,2,3,,mn;其中mn為M*N的結(jié)果值。
(10)
(11)
8)對一維矩陣L進(jìn)行平均分組,令:

得到4個(gè)等長的一維矩陣Li(i=1,2,3,4)。
9)對4個(gè)一維矩陣Li(i=1,2,3,4)進(jìn)行單獨(dú)的矩陣內(nèi)部排序,正為保持原有的順序不變,而逆為對一維矩陣進(jìn)行逆序排序。根據(jù)混沌序列{Xi}和哈希值,動態(tài)選擇矩陣內(nèi)部的排序規(guī)則,如公式(12)所示。假設(shè)值為7,根據(jù)表所示,L1和L4保持原有的順序,而L2和L3則為逆序。
(12)

(13)
變換后的一維矩陣轉(zhuǎn)化為從左到右、從上到下的大小為M*N的二維矩陣Q1。
11)將置換矩陣Q1轉(zhuǎn)換成0~255范圍的整數(shù),根據(jù)DNA編碼共有8種不同的標(biāo)準(zhǔn)規(guī)則,混沌序列{Yi}通過公式(14)計(jì)算的結(jié)果值來確定置亂圖像Q1的動態(tài)DNA編碼方式,并生成大小為M*4N的矩陣Q2。
y(i)=floor(Yi×104)mod8+1
(14)
12)經(jīng)過DNA編碼的矩陣Q2與矩陣P進(jìn)行動態(tài)DNA運(yùn)算得到矩陣Q3。而運(yùn)算方式有三種,由混沌序列{Zi}通過式(21)計(jì)算的結(jié)果來確定選擇運(yùn)算方式,式(14)如下所示:
z(i)=floor(Zi×104)mod3+1
(15)
其中:z(i)為1時(shí),DNA運(yùn)算為加法,當(dāng)為2時(shí),DNA運(yùn)算為減法,當(dāng)為3時(shí),DNA運(yùn)算為異或。
13)DNA解碼對應(yīng)有8種編碼規(guī)則,由式(16)~(21)的結(jié)果值共同決定解碼規(guī)則進(jìn)行動態(tài)解碼,如式(16)所示,并獲得密文圖像C。
w=(m+n+v1+v2+y(i)+z(i))mod8+1
(16)
解密過程是加密過程的逆運(yùn)算操作。
實(shí)驗(yàn)硬件環(huán)境為1.7 GHz的Intel處理器,內(nèi)存為4.0 G,仿真軟件為Matlab R2016a,運(yùn)行在64位的Windows 10操作系統(tǒng)。不同一個(gè)人以及不同時(shí)刻的ECG信號如圖1所示。通過wolf算法提取ECG信號的特征值和SHA-256產(chǎn)生的哈希值來控制混合混沌系統(tǒng)的初始條件。以256×256的Lena和Cameraman明文圖像和512×512的Peppers明文圖像的標(biāo)準(zhǔn)灰度圖像作為明文圖像進(jìn)行實(shí)驗(yàn)分析。圖5分別為明文圖像、對應(yīng)的密文圖像以及解密之后的圖像。
密鑰空間是用于加密的密鑰的數(shù)量,一個(gè)較大的密鑰空間超過2100可以抵抗窮舉攻擊[20]。本文算法使用了Physionet在線數(shù)據(jù)庫[21]的1 000個(gè)樣本的ECG信號和SHA-256哈希函數(shù)生成256位哈希值來生成混合混沌系統(tǒng)的初始條件和ZigZag變換的初始位置。如果心電信號中存在一個(gè)樣本移位或明文圖像改變一個(gè)像素,則無法解密出正確的明文圖像。也可選用文獻(xiàn)[8]提出的心電采集裝置進(jìn)行實(shí)時(shí)測試。因此該算法的密鑰空間足夠大,可抵抗窮舉攻擊。

圖5 加密解密效果
圖6顯示出了圖像像素強(qiáng)度值的分布。優(yōu)異的加密算法使密文圖像的直方圖是近似均勻分布的。如圖6(a)~(c)為明文圖像的直方圖,而圖6(d)~(f)為對應(yīng)的加密圖像直方圖,加密圖像在[0,255]區(qū)間內(nèi)呈現(xiàn)均勻的分布,相對于不同類型的明文圖像,該加密系統(tǒng)對圖像加密具有良好的分散功能,可抵抗統(tǒng)計(jì)攻擊。

圖6 明文和密文的直方圖
明文圖像的相鄰元素點(diǎn)的相關(guān)性比較高(接近于1),然而一個(gè)優(yōu)秀的算法,可以使相鄰像素點(diǎn)的相關(guān)性變得更小(接近于0),可以抵御任何蠻力攻擊。分別從明文圖像和密文圖像中隨機(jī)選取1 000對像素點(diǎn),根據(jù)公式(17)~(20)來計(jì)算兩相鄰像素點(diǎn)的水平、垂直和對角線上方向的相關(guān)性,并與近年的圖像加密算法文獻(xiàn)進(jìn)行對比,結(jié)果如表6所示。由表6看出,密文圖像相鄰像素的相關(guān)系數(shù)要接近于0,對比其他文獻(xiàn),本加密算法具備更好的抗攻擊能力。

表6 相鄰像素點(diǎn)比較
(17)
(18)
(19)
(20)
式中,E(x)和D(x)分別是變量x的期望和方差,x和y為明文和密文中同一位置兩個(gè)像素的灰度值,cov(x,y)為像素x和y處的協(xié)方差,rxy為相關(guān)系數(shù)。
信息熵是反映出圖像灰度值的分配和隨機(jī)性,像素值分布越均勻,圖像的信息熵就越大。信息熵的公式為:
(21)
式(21)中,P(xi)是像素值為xi出現(xiàn)的概率,n是圖像像素的個(gè)數(shù)。密文圖像信息熵的理想值為8。本文提出算法得到密文圖像的信息熵如表7所示,并與同近年的圖像加密方案文獻(xiàn)進(jìn)行對比。結(jié)果表明,本加密算法的信息熵?cái)?shù)值接近理想值8,能夠有效抵抗信息熵的攻擊。

表7 信息熵比較
攻擊者經(jīng)常使用加密算法對變換前后的明文圖像進(jìn)行加密,通過對兩幅密文圖像的比較,找出明文圖像與密文圖像之間的聯(lián)系。這種類型的攻擊稱為差異攻擊[25]。通常用像素變化率(NPCR)和歸一化平均變化強(qiáng)度(UACI)這兩個(gè)指標(biāo)來衡量抗差分攻擊的能力,其表達(dá)式如下:
(28)
(29)

(30)
C1(i,j)和C2(i,j)為兩幅密文圖像在(i,j)坐標(biāo)的灰度值,且對應(yīng)的兩幅大小為M*N的明文圖像只有一個(gè)像素值的不同。
為了測試明文圖像的敏感性,從明文圖像中隨機(jī)選取一個(gè)像素值,并在同一位置的像素值進(jìn)行更改,得到修改的明文圖像。使用同一密鑰對明文圖像和修改的明文圖像進(jìn)行加密處理,生成2個(gè)密文圖像。測試中采用3張不同的明文圖像,比較不同方案的NPCR和UACI數(shù)據(jù),如表8和表9所示。從表中可以看出,本文算法的NPCR和UACI測試數(shù)據(jù)接近理論理想值(NPCR≈99.609 4%,UACI≈33.463 5%),優(yōu)于其他方案,因此具有較強(qiáng)的抗差分攻擊能力。

表8 NPCR(%)的比較

表9 UACI(%)的比較
基于混合混沌系統(tǒng)和ECG信號,提出了一種新的圖像加密算法。首先利用3D邏輯混沌系統(tǒng)產(chǎn)生的混沌序列對明文圖像進(jìn)行像素隨機(jī)置亂和動態(tài)DNA編碼,像素隨機(jī)置亂是基于改進(jìn)的ZigZag變換,具有很高的置亂率;PWLCM混沌映射生成的偽隨機(jī)矩陣與置亂圖像進(jìn)行動態(tài)DNA運(yùn)算達(dá)到像素的散亂,可得到密文圖像。混合混沌系統(tǒng)的初始值和初始參數(shù)不僅跟明文圖像的哈希值有關(guān),還跟ECG信號的特征值有關(guān),兩者都具有很強(qiáng)的隨機(jī)性;且對ZigZag變換的起始位置以及序列的置亂起了決定性作用,不僅大大增強(qiáng)了密鑰的敏感性,也提升了密鑰空間,加強(qiáng)了算法的可靠性。與其他方案的數(shù)據(jù)進(jìn)行對比分析,該方案具有良好的加密性能,提高了抵抗選擇明文攻擊、已知明文攻擊、窮舉攻擊和差分攻擊的能力。