王夢生,孫先赫,馬宏斌
(黑龍江大學 電子工程學院,哈爾濱 150080)
近年來,基于DNA 的圖像加密由于具有大量并行性、海量存儲等優點,引起了人們的關注[1]。由于僅使用基于DNA 的圖像加密并不安全,因此將DNA 計算和混沌系統結合起來,以實現更安全的圖像加密方法。但是,基于DNA 計算和混沌系統的圖像加密存在低維混沌中安全風險大、DNA 運算復雜程度低和加密速度慢等缺點[2]。本文提出了一種以DNA 計算為基礎,利用混沌系統和散列函數的混合模型作為新的圖像加密方案。
一維混沌系統有敏感性強的特性,被廣泛運用在圖像加密中。Logistic map 就是一維混沌系統的一種[3],如式(1):
其中,xi表示當迭代時間為i時,x的值。
當a∈(3.89,4]時,xi始終位于[0,1]內。此時,logistic map 適合選擇DNA 操作和DNA 規則,并在更短的時間內執行置換過程。
超混沌系統與普通混沌系統不同,有兩個或多個正Lyapunov 指數[4]。此外,超混沌系統具有很強的機密性、較大的密鑰空間和更復雜且不可預測的非線性行為,可幫助構建關鍵圖像。本文使用公式(2)定義的超混沌系統:
其中,yi,zi,wi,ui,vi,表示的是當迭代時間為i時,y,z,w,u,v的值。
當系統參數Ci =[30,10,15.7,5,2.5,4.45,38.5]時,系統呈現超混沌行為[5]。
在生物學中,脫氧核糖核酸(DNA)是大部分生物的遺傳物質[6]。在密碼學中,也有著不可或缺的作用。DNA 主要由4 種核酸組成,具體表示為腺嘌呤(A)、胞嘧啶(C)、鳥嘌呤(G)和胸腺嘧啶(T),其中A和T互補,C和G互補[7]。在計算機中,信息都是通過二進制存儲,0 和1 互補。因此,可以推斷出00 和11 也有類似性質,10 和01 也是如此。假如使用DNA 中4 個堿基對00、01、10 和11 進行編碼,總共有8 種規則可以相互配對,編碼表見表1[8]。在計算機中,四進制是以4 為基數的數字系統。將四位數字0、1、2、3 與A、C、G、T之間一對一映射。

表1 DNA 編碼表Tab.1 DNA code table
加密圖像像素的灰度值可以用一個4 位數的四進制數表示,使用表1 的規則將其編碼為長度為4 的DNA 序列。例如,十進制的180 灰度值可以用四進制數“2310”來表示,由于數字0、1、2、3 與A、C、G和T一一映射,最終轉換成GTCA。
整個密碼系統是由一個五維組(P,C,K,Enc,Dec)組成,其中明文空間用P表示,密文空間用C表示,K是密鑰空間,Enc代表加密函數,Dec則代表解密函數。加密函數將明文轉換為密文,解密函數則相反。當C =0,T =1,A =2,G =3 時,各種不同的運算法則見表2。

表2 DNA 運算表Tab.2 DNA operation table
在數學中,右循環移位是將一組數據重新排列,具體操作為將最后的數字移動到第一個位置,同時將所有其他條目移動到正確的位置。Rcs(t,<c0,c1,…,cn-1>)表示t次右循環移位,式(3):
類似地,左循環移位是將第一個數據移動到最后一個數據的位置,同時將所有其他條目移到左側位置。Lcs(t,<c0,c1,…,cn-1>)表示t次左循環移位,式(4):
根據表2 中DNA 右移與左移運算法則,重新定義了兩個基于DNA 序列的新代數算子,稱作DNA左移位和DNA 右移位。根據表1DNA 編碼規則,定義8 種DNA 左右移位。如果考慮規則1,則〈c0,c1,c2,c3〉=〈A,C,G,T〉。
此外,假設t等于二進制代碼A、C、G和T的十進制值。
DNA 右循環移位f→定義如式(5):
在編碼過程中,如果在加密過程中使用DNA右循環移位,那么在解密過程則相反。
加密方案的總體步驟如下:
步驟1通過原圖像的哈希值和外部密鑰K計算得出密鑰K'與異或值kxor;
步驟2將明文圖像P1 編碼成四進制圖像P2;
步驟3將四進制圖像P2 編碼為DNA 圖像P3;
步驟4對DNA 圖像P3 進行DNA 水平置換,得到置換后的DNA 圖像P4;
步驟5計算密鑰DNA 圖像KDNA;
步驟6在置換DNA 圖像P4 和關鍵DNA 圖像KDNA 之間進行DNA 水平擴散,得到擴散后DNA 圖像P5;
步驟7將擴散后DNA 圖像P5 解碼為密碼DNA 圖像P6;
步驟8將密碼DNA 圖像P6 解碼為密碼四進制圖像P7;
步驟9將密碼四進制圖像P7 解碼為整數范圍[0,255]的密碼圖像P8。
密碼散列函數在圖像加密系統領域發揮著基礎性作用。安全散列算法(SHA-256)和消息摘要算法(MD5)是常見加密散列算法,256 位和128 位散列值分別由上述算法產生。本文使用SHA-256 和MD5組合成哈希函數來提高所提出加密方案的安全性。
在所提出的密碼系統中,利用256 位外部密鑰和輸入圖像的哈希值來求出本文混沌系統的控制參數和初始值。將256 位外部密鑰K劃分為十進制格式的8 位塊,如式(7):
假設視圖像大小為m × n的2 維矩陣P,其中P(i,j)表示位置(i,j)處的像素值。計算3 個大小為m的向量S1、大小為n的S2和大小為m +n -1 的S3,S1(i)是P的第i行的所有像素值的總和,S2(i)是P的第i列所有像素值的總和,S3(i)表示的是P的第i對角線上的所有像素值的總和;將上述3 個向量和外部密鑰K哈希組合,生成256 位哈希值H,以十進制格式劃分為8 位塊,如式(8):
之后,使用異或(XOR)操作將外部密鑰K和哈希值H結合起來,生成新的密鑰值K'和值kxor,本文Kxor的值用kxor來表示,如式(9)、式(10):
如果僅更改了普通圖像或外部密鑰的一位,則哈希值將完全不同。此外,圖像結合密鑰K和SHA-256哈希值H后,暴力攻擊需要2256次才能破解。從5 維超混沌系統中生成大小為1 × 4 mn 的密鑰DNA 圖像KDNA,隨后將其進行擴散處理。生成KDNA 的步驟如下:
步驟1考慮Ci =[30,10,15.7,5,2.5,4.45,38.5]作為5 維超混沌系統的控制參數;
步驟2依靠kxor和密鑰K',計算5維超混沌系統的初始值x(0),y(0),z(0),u(0),w(0),如式(11);
步驟3預迭代次5 維超混沌系統,以消除瞬態效應并增加安全性;
步驟4預迭代后,對5 維超混沌系統迭代4×(m × n/5)次,選取4mn個首元素,得到大小為1×4mn的偽隨機向量PV;
步驟5通過式(12)將偽隨機矩陣PV直接轉換為大小為1×4 mn 的密鑰DNA 圖像KDNA。
設原始圖像P1 是一個2 維的大小為m × n矩陣。首先將普通圖像P1 轉換為大小為1 × 4 mn的四維矩陣P2;其次,四維矩陣P2 編碼大小為1×4 mn 的DNA 圖像P3。編碼步驟為:
步驟1輸入大小為m × n的普通圖像P1;
步驟2將大小為m ×n的平面圖像P1 重塑為大小為1× mn的向量P1;
步驟3通過將P1 每個像素值編碼為4 位四進制數,將向量P1 轉換為大小為1×4 mn 的四進制矩陣P2;
步驟4根據kxor值和密鑰K'計算logistic map的控制參數u和初始值x(0),式(13):
步驟5預迭代乘以邏輯映射以消除瞬態效應并增加安全性;
步驟6迭代次后,將logistic map 迭代4 mn 次,得到大小為1×4 mn 的偽隨機向量PV;
步驟7通過式(14)計算大小為1 × 4mn 的規則向量RDNA(i);
其中,i =1,2,3,…,4 mn。
步驟8將圖像P2 的每個元素編碼為四進制,對應4 種核酸A、C、G 和T,得到大小為1×4 mn 的DNA 圖像P3。
置換操作交換了普通圖像中像素的位置、干擾,降低相鄰像素值的高相關性。DNA 水平像素置換的基本步驟:
步驟1輸入大小為1×4 mn 的DNA 圖像P3;
步驟2根據kxor值和密鑰K'計算logistic map的控制參數u和初始值x(0),式(15):
步驟4迭代
步驟3次后,將logistic 系統迭代4 mn 次,得到大小為1×4 mn 的偽隨機向量PV;
步驟5對PV元素進行升序排序,fPV是PV序列的新序列,lPV是fPV的索引值;
步驟6通過公式(16)對向量P3 的位置進行打亂。
其中,i =1,2,3,…,4 mn。
在圖像加密中,對像素數據的擴散是提高安全性的最重要步驟。DNA 水平擴散步驟:
步驟1輸入大小為1×4 mn 的置換DNA 圖像P4 和大小為1×4 mn 的關鍵DNA 圖像KDNA;
步驟2根據kxor值和密鑰K'計算logistic map的控制參數u和初始值x(0),公式(17):
步驟5通過式(18)計算大小為1×4mn 的向量OP:
其中,i =1,2,3,…,4 mn。
步驟6通過公式(19)對置換后的DNA 圖像P4 和密鑰DNA 圖像KDNA 進行DNA 操作。
其中i =1,2,3,4,5,6,…,4 mn。
在DNA 解碼步驟中,擴散DNA 圖像P6 轉換為大小為m × n的灰度密碼圖像。DNA 解碼步驟如下:
步驟1輸入大小為1×4 mn 的擴散DNA 圖像P5;
步驟2根據kxor值和密鑰K',計算logistic map的控制參數u和初始值x(0)。如式(20):
步驟5通過公式(21)計算大小為1×4mn的規則向量RDNA;
其中i =1,2,3,4,5,6,…,4mn。
步驟6根據式(21),將擴散后的DNA 圖像P5 解碼為解碼后的DNA 圖像P6;
步驟7將解碼后的DNA 圖像P6 的每一個核酸A、C、G 和T 解碼成四進制數字,得到大小為1×4 mn 的加密四進制圖像P7;
步驟8將加密的四元圖像P7 像素值每4 位編碼為0~255 的整數值,然后轉換為大小為1×mn的灰度密碼圖像P8;
步驟9將大小為1×mn 的灰度密碼圖像P8 重塑為大小為m × n的灰度密碼圖像。
圖像解密過程類似于圖像加密過程,是使用密鑰的圖像解密過程的逆向版本。解密算法的總體步驟:
步驟1計算密鑰K',通過外部密鑰K和哈希值H得到kxor值;
步驟2將密碼圖像P8 編碼為四進制圖像P7;
步驟3將四元圖像P7 編碼為DNA 圖像P6;
步驟4計算key DNA 圖像KDNA;
步驟5通過在DNA 圖像P6 和密鑰DNA 圖片KDNA 之間執行DNA 擴散的逆運算來消除擴散的影響,并獲得非擴散的DNA 圖像P5;
步驟6通過對未擴散的DNA 圖像P5 進行DNA 排列的逆運算,消除排列的影響,得到未排列的DNA 圖像P4;
步驟7將非置換DNA 圖像P4 解碼為普通DNA 圖像P3;
步驟8將純DNA 圖像P3 解碼為純四元圖像P2;
步驟9將普通四元圖像P2 解碼為普通圖像P1。
本文的實驗環境軟件為 Matlab R2018a 與Windows 10 操作系統,硬件為16.0 GB RAM AMD Ryzen 7 5800H with Radeon Graphics 3.20 GHz。選取尺寸為512×512 的灰度圖像“Lena”、“狒狒”作為普通圖像。在實驗中,將所提出的圖像加密方案與其他幾種圖像加密方案進行了比較。
當外部密鑰 key = 6b679b3c77826d30a79e 612114a8c18df984c176f4e529f684748ad052241b17時,本文提出的圖像加密方案的仿真結果如圖1 所示,可以看到密碼圖像與類噪聲圖像相似,任何關于普通圖像的有用信息都不能從他們身上找到。

圖1 圖像加密方案的仿真結果Fig.1 Simulation results of the proposed image encryption scheme
加密圖像方案最重要的是密鑰。密鑰空間是可用于加密算法的所有可能密鑰的集合,顯然密鑰空間越大,加密圖像算法越安全。當密鑰空間大于2100≈1030時,圖像加密算法將能夠抵抗暴力攻擊。本文的圖像加密方案中,可以用密鑰解密的密碼圖像由兩部分組成,即256 位外部密鑰和256 位哈希值。密鑰空間大小為2512,遠大于2100。因此,本文的圖像加密方案具有足夠大的密鑰空間,這將導致抵抗更高的安全級別的暴力攻擊。
圖像直方圖表示每個灰度強度級別的像素數。當密碼圖像直方圖接近于均勻分布時,圖像加密方案對統計攻擊的魯棒性更強。本文提出的圖像加密方案的直方圖分析結果如圖2 所示,可見密碼圖像相鄰像素的相關性顯著降低,這使得統計攻擊更加困難。

圖2 直方圖分析Fig.2 Histogram analysis
在數字圖像中,像素與像素的聯系由相關系數來衡量。對于普通圖像來說,垂直、水平以及對角方向這3 個位置的相鄰像素之間有著很強的相關性。圖像加密就應該降低密碼圖像相鄰像素之間的相關性,以抵抗統計攻擊。相關性的理想值為0。在本文中,從普通圖像和密碼圖像中隨機選擇垂直、水平和對角線方向上的10 000 對相鄰像素,并通過公式(22)計算兩個相鄰像素的相關系數:
其中,N是像素對的數量;x和y是兩個相鄰像素的灰度值;E(x)是均值;D(x)是方差;cov(x,y)是協方差。
普通圖像Lena 和密碼圖像Lena 以及普通狒狒圖像和密碼狒狒圖像的兩個相鄰像素的相關結果如圖3 所示,Lena 密碼圖像中兩個相鄰像素的相關性顯著降低。

圖3 相鄰像素的相關性Fig.3 Correlation of neighboring pixels
實驗結果表明,“Lena”、“狒狒”這兩張圖像的相關系數非常高,而相關系數對應的密碼圖像的系數接近于0。將本文提出方案與混沌和DNA 序列循環運算、混沌和DNA 編碼、DNA 互補規則和混沌映射進行對比,圖像的相關性分析見表3,可以發現本文的加密方案有效。

表3 圖像的相關性分析Tab.3 Correlation analysis of images
信息熵是衡量消息隨機性的最重要標準,公式(23):
其中,l是像素值的長度,p(mi)是信息m中符號mi的概率。
對于256 級灰度的隨機灰度圖像,信息熵的理論值為8 。4 個普通圖像“Lena”、“Baboon”的信息熵以及相應的密碼圖像與混沌和DNA 序列循環運算、混沌和DNA 編碼、DNA 互補規則和混沌映射、DNA 序列操作和混沌系統進行比較見表4,可見密碼圖像的所有熵值都非常接近理論值8,并且密碼圖像具有良好的隨機分布。因此,信息泄漏的概率可以忽略不計,本文的加密方案對熵攻擊具有很強的抵抗力。

表4 圖像的信息熵分析Tab.4 Information entropy analysis of images
一個安全的圖像加密方案應該對純圖像非常敏感。如果明文圖像中一個像素的微小變化可以導致密碼圖像的顯著變化,那么加密方案將抵抗差分攻擊。像素數變化率(NPCR)和 統一平均變化強度(UACI)是差異攻擊分析的重要標準,由公式(24)定義:
其中,M和N分別是普通圖像的寬度和高度,C1(i,j)和C2(i,j)是在原始圖像的位置(i,j)處改變像素值前后的密碼圖像。
NPCR 和UACI 的預期值分別為99.609 4% 和33.463 5%。隨機改變圖像“Lena”、“狒狒”10 次,并計算NPCR和UACI的最小值、最大值和平均值,結果見表5、表6,本文的圖像加密方案NPCR和UACI結果非常接近預期值。因此,本文提出的圖像加密方案對普通圖像非常敏感,可以有效抵抗差分攻擊。

表5 普通圖像單像素變化的NPCR 和UACI 值Tab.5 NPCR and UACI values of single pixel variation of ordinary image

表6 普通圖像中兩個像素點變化的NPCR 和UACI 值Tab.6 NPCR and UACI values of two pixel changes in a normal image
密鑰敏感度分析指的是加解密過程中,初始密鑰發生微小的變化,經密鑰序列發生器或迭代函數作用后所產生的密鑰發生巨大變化而進行的分析。因此,在分析過程中用極小差別的密鑰來觀測最終所呈現的結果。
一個健壯的加密算法應該對其密鑰的變化極為敏感,這意味著只有使用正確的密鑰,才能正確解密原始圖像。為了分析關鍵靈敏度,進行了如下的測試。首先,隨機生成一個256 位的密鑰K1;其次,隨機更改其256 位中的一個,得到兩個密鑰K2 和K3。分別使用密鑰K1 和K2 對Lena 的普通圖像P進行加密,并生成兩個密碼圖像C1 和C2。兩個密碼圖像C1 和C2 完全不同。
使用不正確的密鑰K2 和K3 的解密圖像C1 是有噪聲的圖像,并且也是完全不同的。實驗結果表明,密鑰的微小變化將導致完全不同的加密結果。因此,本文的加密方案對密鑰非常敏感。
本文提出了一種基于DNA 計算、混沌系統和散列函數的混合模型的新型圖像加密方案,使用來自普通圖像和密鑰的混合SHA256/MD5 哈希,通過僅翻轉普通密鑰的一位來確保混沌系統的初始條件和控制參數發生變化;基于DNA 序列定義了兩個新的代數法則,即DNA 左位移和DNA 右位移。同時對其安全性、直方圖、相關系數、信息熵、差分攻擊進行了分析,證明方案的合理性。實驗結果表明,本文提出的圖像加密方案有比其他幾種具有代表性的圖像加密方案更好的安全效果。