陳 飛,徐嘉俊,王嘉欣
(中國(guó)船舶集團(tuán)有限公司第七二三研究所,江蘇 揚(yáng)州 225101)
數(shù)字圖像由于具有信息量大、信息可以被人眼直觀獲取等特點(diǎn),近年來被大量應(yīng)用于軍事、醫(yī)療、航天等領(lǐng)域。這些數(shù)字圖像中包含的信息可能涉及個(gè)人隱私、商業(yè)機(jī)密甚至是國(guó)家秘密等,因此數(shù)字圖像安全也倍受人們關(guān)注。為提高數(shù)字圖像的安全性,越來越多的圖像加密方案被提出[1-5]。
由于混沌映射具有對(duì)初值敏感性極高、隨機(jī)性及不可預(yù)測(cè)性極強(qiáng)等特點(diǎn),于1989年被大量應(yīng)用于圖像加密領(lǐng)域[6]。近年來,基于混沌映射的加密方案已經(jīng)成為密碼學(xué)及圖像安全領(lǐng)域的主流研究方向之一。帳篷映射作為混沌映射中最為經(jīng)典的映射之一,由于其迭代簡(jiǎn)單,被廣泛應(yīng)用于圖像加密領(lǐng)域。
由于生物學(xué)中DNA的編碼規(guī)則具備極強(qiáng)的密碼學(xué)特性,越來越多的研究人員將DNA編碼應(yīng)用到圖像加密中。近年來,許多學(xué)者將DNA編碼算法與混沌映射相結(jié)合,提出了多種圖像加密算法。文獻(xiàn)[7]提出了基于一維整數(shù)Tent映射的DNA圖像加密算法,利用一維映射對(duì)圖像像素值進(jìn)行擴(kuò)散加密,由于一維映射迭代較為簡(jiǎn)單,復(fù)雜度低,導(dǎo)致該算法的安全性得不到保證。文獻(xiàn) [8]提出了一種基于超混沌和 DNA 序列運(yùn)算圖像加密算法。文獻(xiàn)[9]提出了基于Logistic映射及DNA的圖像加密算法,該算法能夠有效地抵抗統(tǒng)計(jì)分析。但是上述算法都是基于浮點(diǎn)運(yùn)算[8-10],運(yùn)算量較大。
為了解決上述問題,本文結(jié)合DNA編碼規(guī)則及二維整數(shù)耦合Tent映射,設(shè)計(jì)了一種圖像加密算法。該算法具備以下優(yōu)點(diǎn):(1)為了打破明文圖像相鄰像素的相關(guān)性,采用貓映射及Zigzag變換對(duì)圖像進(jìn)行置亂,進(jìn)一步提高了該算法的安全性。(2)采取的混沌映射為整數(shù)映射,運(yùn)算量小。(3)DNA編碼規(guī)則多元,根據(jù)像素點(diǎn)所在位置變化而變化。(4)采用了耦合映像格子,密鑰空間理論上無限大。
Tent 映射由于其構(gòu)造簡(jiǎn)單,被大量應(yīng)用于圖像加密領(lǐng)域,其表達(dá)式為:
(1)
式中:i為迭代次數(shù)。
當(dāng)a>0.43時(shí),式(1)的映射為混沌映射。
經(jīng)典的Tent映射是基于實(shí)數(shù)域的,避免不了進(jìn)行浮點(diǎn)運(yùn)算。將公式(1)轉(zhuǎn)換為整數(shù)域運(yùn)算,并為了提高安全性,拓展為二維整數(shù)Tent映射,該映射公式為:
(2)
式(2)的定義域?yàn)椋?/p>
其中g(shù)i及hi為動(dòng)態(tài)變量,其表達(dá)式為:
(3)
由式(2)及式(3)可知,該二維映射生成的序列x及y存在著相互擾動(dòng),提高了算法復(fù)雜度。為了進(jìn)一步提高算法安全性,式(2)及(3)作為非線性耦合函數(shù),采用耦合映像格子模型,該模型為:
(4)
式中:L為格點(diǎn)長(zhǎng)度。
每個(gè)DNA序列包含A(腺嘌呤)、C(胞嘧啶)、G (鳥嘌呤)、T(胸腺嘧啶)4種堿基[9]。這4種堿基中,A和T兩兩互補(bǔ),G和C兩兩互補(bǔ)。圖像的每個(gè)灰度值均在0~255范圍內(nèi),均衡可換成8位二進(jìn)制數(shù),8位可拆分為4位二進(jìn)制數(shù),即每個(gè)灰度值都可以用00,01,10,11組合生成。且11和00兩兩互補(bǔ),10和01兩兩互補(bǔ)。因此可用DNA中A,C,G,T這4個(gè)堿基來代表二進(jìn)制序列中的00,10,01,11,編碼方案共有24種(4×3×2×1),其中滿足互補(bǔ)規(guī)則的共有8種,如表1所示。
每個(gè)彩色圖像都可以由像素點(diǎn)為0~255的RGB三原色矩陣組成,每個(gè)像素點(diǎn)都可以由上述ACGT 4個(gè)堿基組成。例如141(10001101),可根據(jù)上述不同規(guī)則進(jìn)行編碼,得到以下8種結(jié)果(CTAG,GTAC,CATG,GATC,TCGA,TGCA,ACGT,AGCT)。本文采取動(dòng)態(tài)規(guī)則選取方法:
Z=X(i)mod8+1
(5)
式中:X(i)為二維整數(shù)耦合帳篷映射生成的一條隨機(jī)序列;Z為編碼規(guī)則。
由于X(i)為偽隨機(jī)序列,由式(5)可知,DNA編碼規(guī)則完全隨機(jī),大大提高了DNA編碼的安全性。
貓映射和Zigzag變換由于構(gòu)造簡(jiǎn)單,常常應(yīng)用到圖像加密算法中。
1.3.1 貓映射
貓映射是由俄國(guó)數(shù)學(xué)家Arnold首次提出,又稱Arnold映射,該映射原始公式為:
(6)
將Arnold映射拓展到整數(shù)域,公式為:
(7)
式中:a,b,N均為正整數(shù)。
1.3.2 Zigzag變換
Zigzag變換置亂是一種掃描置亂算法,其原理為從圖像像素值矩陣第1個(gè)點(diǎn)開始以鋸齒形狀進(jìn)行掃描,最后重新排列成1個(gè)二維矩陣。下面用4×4矩陣舉例,Zigzag變換如圖1所示。
圖1 Zigzag變換示意圖
本文結(jié)合二維整數(shù)耦合Tent映射能夠快速地生成多條二維偽隨機(jī)序列,貓映射和Zigzag變換置亂效果好及 DNA編碼加密的優(yōu)點(diǎn),設(shè)計(jì)了一種新的圖像加密算法。該算法包含了3個(gè)部分,其中第1部分為利用二維整數(shù)Tent帳篷映射對(duì)明文進(jìn)行擴(kuò)散加密;第2部分為利用貓映射和Zigzag變換對(duì)中間密文圖像進(jìn)行置亂;第3部分為利用DNA編碼規(guī)則對(duì)置亂圖像進(jìn)行編碼,最終生成密文圖像。具體步驟如下:
(1) 讀取彩色圖像RGB三原色像素矩陣,記為R,G,B,讀取矩陣長(zhǎng)度,記為M,寬度記為N。
(2) 利用Arnold映射及Zigzag變換對(duì)明文圖像矩陣R,G,B進(jìn)行二次像素點(diǎn)置亂,其中Arnold映射的參數(shù)a及b為給定的密鑰,得到置亂矩陣R1,G1,B1。
(3) 給定密鑰(m,k,X1(1),X2(1),…,XL(1),Y1(1),Y2(1),…,YL(1));L為耦合映像格子格點(diǎn)長(zhǎng)度,X1(1),X2(1),…,XL(1)為耦合映像格子的初值;m,k為二維Tent映射的動(dòng)態(tài)參數(shù),利用式(2)生成L×2條偽隨機(jī)序列X1X2…XL,Y1Y2…YL。
(4) 從步驟(3)生成的序列中,抽取3條偽隨機(jī)序列,記為A1,A2,A3,對(duì)明文圖像矩陣R1,G1,B1進(jìn)行擴(kuò)散加密,得到加密矩陣R2,G2,B2,加密規(guī)則為:
(8)
(5) 從步驟(2)中任選1條偽隨機(jī)序列(本文選取X2),從中截取M×N個(gè)數(shù)值,利用式(5)得到編碼規(guī)則,對(duì)中間密文圖像矩陣R2,G2,B2進(jìn)行DNA編碼,并進(jìn)行DNA求補(bǔ)(A-C-G-T-A),得到求補(bǔ)序列R3,G3,B3。
(6) 將步驟(5)中得到的序列R3,G3,B3作為圖像的三原色矩陣,利用該三原色矩陣,最終生成密文圖像。
解密過程是加密過程的逆過程。首先,讀取密文矩陣的RGB像素值矩陣。第二步,利用給的密鑰生成多條偽隨機(jī)序列,選取X2,并利用求補(bǔ)(A-T-G-C-A)和式(5)進(jìn)行解碼。然后再利用生成的二維偽隨機(jī)作為解密序列,對(duì)解碼后的RGB像素值矩陣進(jìn)行解密,最后利用Arnold逆映射及Zigzag逆變換進(jìn)行處理,生成明文圖像。
本文所設(shè)計(jì)的算法實(shí)驗(yàn)環(huán)境如下:臺(tái)式計(jì)算機(jī),CPU為Intel(R)Core(TM)i7-7700 CPU @3.60 GHz,Windows 7操作系統(tǒng),編程軟件為Matlab R2016b。利用本文所設(shè)計(jì)的算法對(duì)Lena圖進(jìn)行分析和仿真實(shí)驗(yàn),耦合映像格子大小L=4,密鑰取(5,3,6,52),明文圖像、密文圖像及解密圖像如圖2所示。
圖2 明文圖像及加密解密圖像
本文所設(shè)計(jì)的加密算法密鑰參數(shù)個(gè)數(shù)取決于耦合映像格子L的取值,本文密鑰空間大小為28 L,理論上本文的算法密鑰空間大小為無限大,足夠抵抗窮舉分析。
密鑰敏感性指的是加密算法對(duì)密鑰變換的敏感性,圖像加密算法應(yīng)具備良好的密鑰敏感性。在解密階段,密鑰發(fā)生一個(gè)微小的改動(dòng),所得的解密圖像與原圖有巨大的差異。圖3給出了當(dāng)密鑰正確時(shí)及密鑰發(fā)生微小變化時(shí)的解密圖像。
圖3 正確與錯(cuò)誤解密圖像
信息分析指的是攻擊者通過分析密文圖像來獲取明文圖像信息?,F(xiàn)在較為常用的檢驗(yàn)加密算法抗信息分析方法有直方圖分析、信息熵等。
4.3.1 直方圖分析
直方圖分析是通過統(tǒng)計(jì)圖像像素灰度值在0~255區(qū)間內(nèi)的分布規(guī)律,來反映圖像像素灰度值與圖像像素?cái)?shù)關(guān)系。當(dāng)直方圖分布越均勻時(shí),說明圖像像素灰度值與像素?cái)?shù)之間的關(guān)系越離散,圖像也就越隨機(jī)。理論上來說,理想的密文圖像應(yīng)該滿足直方圖均勻分布的條件。
對(duì)本文加密算法的密文圖像進(jìn)行直方圖分析,結(jié)果如圖4所示。
圖4 密文圖像直方圖
由圖4可以看出,密文圖像的圖像像素值分布較為均勻,均在100左右分布。即說明攻擊者無法通過分析密文圖像像素值分布規(guī)律來獲取明文圖像的信息。
4.3.2 信息熵分析
信息熵是用來分析圖像像素值分布是否隨機(jī)的,圖像像素值在0~255區(qū)間內(nèi)分布,即圖像取值可能性有256種。因此,密文圖像的信息最大理想值為8。表2給出了Lena原圖像和密文圖像R,G,B三分量的信息熵。
表2 Lena圖明文圖像及密文圖像信息熵
由表2可以看出,明文圖像R,G,B三分量的信息熵最大值為7.19,比理想值8小0.81,說明明文圖像像素值分布不隨機(jī)。密文圖像R,G,B三分量的信息熵均為7.99,信息熵指標(biāo)優(yōu)于文獻(xiàn)[7]。用本文設(shè)計(jì)的加密算法得到的密文圖像分布更加隨機(jī)。
針對(duì)目前加密算法復(fù)雜度低、安全性差的問題,提出了一種基于二維帳篷映射及DNA運(yùn)算的圖像加密算法。首先應(yīng)用貓映射及Zigzag變換對(duì)圖像進(jìn)行置亂處理,打破了圖像相鄰像素之間的相關(guān)性;采用二維帳篷映射生成DNA編碼規(guī)則及圖像擴(kuò)散加密所需的加密序列,對(duì)圖像進(jìn)行二次加密。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的算法具備極強(qiáng)的密鑰敏感性,能夠抵抗信息分析、暴力等常見的攻擊手段。下一步計(jì)劃將如何提高加密算法的運(yùn)算效率作為研究方向。