趙 雨,楊 真,雍江萍,展愛云,張躍進
(1. 華東交通大學信息工程學院,江西 南昌 330013; 2. 華東交通大學網絡信息中心,江西 南昌 330013;3. 華東交通大學電氣與自動化工程學院,江西 南昌 330013)
在國家“互聯網+”網絡安全戰略布局下,對多媒體數據進行加密處理,防止攻擊者的盜取和篡改迫在眉睫[1-2]。
現代的加密技術是如今信息安全方面的主要研究方向之一, 而混沌的出現將這個方向的研究又推向一個新的領域。 例如,謝濤[1]提出了Logistic映射在密碼學中的應用研究,并總結了Logistic 映射一些常見的安全缺陷,如映射軌道的短周期性,控制參數的低效率性, 映射產生的相鄰元素之間的相關性強等問題。 為解決控制參數的低效率性,陳志剛等[3]針對Logistic 序列存在的吸引子與空白區問題, 提出一種基于初始值和分形控制參數之間關系的Logistic 映射改進方法,解決了“穩定窗”與空白區的問題。 武剴[4]提出了一種改進的Logistic映射,解決Logistic 映射存在系統參數范圍受到限制、混沌序列的分布不均勻等問題。 單梁等[5]利用Tent 映射來構成混沌序列, 以此來構造良好的尋優策略, 避免了傳統優化算法易陷入局部最優點的缺陷,使之較快速地實現全局最優。 混沌密碼學領域的研究者基于一維混沌系統的安全性差問題,試圖通過增加混沌系統的維度,借此來改進一維系統的缺點。 但增加多個控制參數的同時也大大增加其復雜度。 王文豪等[6]提出了基于二維Logistic 映射的圖像加密, 集成了一維Logistic 映射的優點,但隨著多個控制參數的增加,使之行為更加復雜。
綜上所述, 為滿足安全性與算法最優等要求, 針對一維混沌系統不能滿足要求的缺點,所以本文提出一種基于二維混沌映射的圖像加密算法[7]。利用Tent 映射和改進型Logistic 映射兩種混沌模型并結合比特重排技術來生成混沌序列,先利用Arnold 變換對圖像進行預加密,隨后利用混沌序列對其進行異或、索引矩陣排序、左循環移位的位數等操作[8]。 加密完成后,對圖像仿真結果的分析與測試,其中密文圖像直方圖統計特性均勻平滑, 與其他文獻相比也具有一定優勢,實現了圖像的安全加密效果。
Logistic 映射[9]是應用最為廣泛的一種混沌映射,其在研究時間離散的動力系統時具有較好的特性,且對于研究混沌以及分形控制等方向是一個經典模型。 其數學表達式為

式中:x∈(0,1) 為第n 個混沌位置;μ 為控制參數,當μ∈(3.569 94,4]時,系統會不斷迭代使之出現其該有的混沌特性, 由此可得到Logistic 映射的混沌序列[10]。 當式(1)中取x=0.72,μ∈[2.6,4]時,如圖1所示,可畫出該混沌映射的分岔圖。 由此可見, μ 取值范圍外的參數, 系統都會不處于混沌的狀態,只有當μ∈(3.569 94,4]時,其分岔圖才表明其處在混沌狀態。

圖1 Logistic 映射分岔圖Fig.1 Logistic mapping bifurcation diagram
由它所迭代出來的混沌序列值出現吸引子與空白區問題,據圖1 可知,當Logistic 映射進入到完全混沌狀態時,要求3.569 94<μ≤4,顯然其要產生最佳混沌效果的取值為μ=4,那么Logistic 方程就變成了xn+1=4xn(1-xn)。 但由此產生了一個矛盾性的問題,其中控制參數μ 就變成了一個常數,使得這樣的一個混沌方程不滿足參數設置要求,由此導致加密效果的安全性下降問題。 常用的Logistic 映射存在低效率性的問題, 希望能用一個函數表達式來代替參數μ,以解決以上混沌系統中為得到最佳控制參數μ 而導致的常數化問題。 得到了改進Logistic 映射最好的混沌效果,并且通過不斷迭代,雖然缺少參數μ 減小了密鑰的大小,但復雜度有所提高。 改進型Logistic 映射方程為

式中:xn是映射變量,取值范圍為:0<xn<1。證明函數為

式中:自變量x 的取值范圍為0<x<1 時,y 的值域范圍為3.569 945 973<y<4。 對式(3)進行變換,可得



圖2 改進型Logistic 分岔圖Fig.2 Improved Logistic bifurcation diagram
由圖2 中可知, 改進型Logistic 映射范圍相較于傳統的Logistic 映射而言,其映射范圍大大增加,可見用一個函數表達式替換控制參數可提升其混沌效果[11]。
Tent 映射也是常用的一種分段線性映射,它的方程形式決定了其函數圖像近似于一個帳篷。 Tent映射算法簡單,但卻是序列復雜的離散映射,多應用于產生偽隨機序列,其具有運算速度快、序列分布均勻的優勢[12]。 Tent 映射被廣泛應用于混沌加密系統當中,也在產生混沌擴頻碼和構造混沌加密系統和實現混沌優選算法等方向有廣泛使用[13]。 Tent映射的定義如下

如圖3 所示為Tent 映射分岔圖, 帳篷映射與Logistic 映射是互為拓撲共軛映射的,所以在控制參數α 的可取范圍內,該系統處于混沌狀態[14]。但是當α=0.5 的時候,系統會呈現短周期狀態,為避免使系統陷入這樣不動點,應避免取該值。

圖3 Tent 映射分岔圖Fig.3 Tent map bifurcation diagram
圖像置亂效果的預加密可通過Arnold 的變換與反變換來實現。 再通過混沌序列比特重排技術,它用于解決在混沌過渡態中軌道點差別小,序列值改變量不大的問題,從而使更新序列具有更好的敏感依賴性、偽隨機性與遍歷性等混沌特性[15]。
Arnold 變換,亦稱貓臉變換[16]。Arnold 變換因為其直觀簡易的特性被應用于矩陣的置亂,每運行一次Arnold 變換,就相當于對該圖像矩陣進行了一次置亂。 由于Arnold 變換使用的矩陣維度很小,所以只使用一次變換得到的結果依舊能看出圖像的部分紋理形狀等特征,所以使用多次迭代是不可避免的, 只有當以上特征不再能通過人眼觀察到時,才算有意義的變換。 Arnold 變換常用于圖像預加密,方程定義如下

式中:(i,j)為變換前的位置;(i′,j′)為變換后的位置坐標;N 為圖像矩陣的階數;mod N 為取模返回余數。 將式(6)進行推廣得

式中:a,b 為正整數。
運用Arnold 變換時,如圖4 所示,首先對圖像的水平方向進行割補變換,其次再對豎直方向的割補變換,最后的模運算就是將之前操作擴展的部分進行切割回填操作。

圖4 Arnold 變換示意圖Fig.4 Schematic diagram of Arnold transformation
Arnold 變換顯然是有周期的,即在對圖像進行反復Arnold 變換后,在其周期范圍內,不斷地迭代變換會使得各個被置亂的像素位置一定會被置換回到原處。 由此產生的問題在于如果利用該方法來恢復原圖,就必然出現工作量龐大的結果,而且還必須計算其與圖像有關的周期,這無疑不是合適的反置換算法。 對此Arnold 反變換發揮了作用,其公式如下

根據式(7)可以推出廣義的Arnold 變換

利用Arnold 反變換的方法可使置亂圖像恢復,不必花費時間先計算其周期, 再去進行多次的Arnold 變換。 使用Arnold 反變換后,可根據需求使其恢復到任意一次的置亂結果,并對其進行比較分析,工作效率大大提升。
當系統的初始值及其控制參數產生微小的改變時,處于混沌過渡態中,按此進行迭代產生的值顯然具有高度的相似性,衍生軌道相近且具有一致的起伏特性。 顯然利用這樣的值進行量化操作時,不可避免地出現大概率相同的值或相近的值,使序列值出現了一定的統計特性,而不具備良好的隨機性。 由此,設計出能夠針對差異小的序列使之處理差異較大的值。 下面介紹一種混沌序列比特重排技術,從而避免以上問題,使之具有更加出色的偽隨機性,更符合使用要求。 比特重排技術的過程具體步驟如下。
1) 由設置好的密鑰產生的初值帶入使用到的混沌方程中,迭代后得到一個混沌序列值a。根據自己設計要求, 將這個數a 化為L 位的二進制形式。例如,當一個序列值a=0.63,把0.63 寫成L 位的二進制形式,其中L 可以取任意的正整數,這里假設L=12,那么0.63→0.1010 0001 0100。
2) 我們將小數部分二進制化,按照規則重新排序,將奇數位比特值倒序排在前半部分,將偶數位比特值倒序排在后半部分,得到一個新的數,示意圖如圖5 所示。

圖5 比特重排示意圖Fig.5 Bit rearrangement diagram
3) 最后將得到小數部的二進制數轉化為常用的十進制數, 以此值作為新的初始值代入公式,得到一個新的帶排序的值。 如此重復步驟,即可得到重排后混沌序列。
本文提出一種基于循環移位和多混沌映射的圖像加密算法。首先根據設好的密鑰來控制Tent 映射和改進型Logistic 映射的生成, 使用比特重排技術生成新的重排混沌序列,并針對明文圖像先進行Arnold 變換的預加密。 為保證主要圖像與序列的連續性,將其進行分塊處理,并由重排Tent 映射完成對該分塊區域內的置亂操作, 由Logistic 映射完成循環移位的擴散操作。 完成后,最后對圖像仿真結果進行分析與測試。
根據上文提出的改進型Logistic 和Tent 映射,若是直接設置各初始值和控制參數值顯然不安全,采用下式生成這些值

式 中:a1,a2,t1,t2,t3均 是 算 法 的 密 鑰;x01是 改 進 型Logistic 的初始值;x02和α 是Tent 映射的初始值和控制參數。 具體密鑰如表1 所示,其中r1和r2為各自的迭代次數。

表1 密鑰參數設置Tab.1 Key parameter setting
本文的圖像加密算法如圖6 所示,由設置好的密鑰輸入各混沌系統,經重排得到混沌性能良好的序列。 先對明文圖像進行Arnold 變換的預加密,為避免序列和圖像的連續性, 擬采用分塊處理的模式。 分塊后使用重排的改進型Logistic 序列完成對該部分的循環移位,使像素值發生改變完成擴散操作,用Tent 序列完成像素位置點的置亂,以加快索引排序時間,使之更高效。 最后對分塊加密后的圖像進行組合即可得到與明文大小相等的密文圖像。加密步驟如圖6 所示。

圖6 加密流程Fig.6 The encryption process
1) 通過運用改進型Logistic 混沌系統生成混沌序列Q1(i)。 由式(10)生成Logistic 混沌映射的初值輸入到Logistic 映射方程式進行迭代, 迭代r1+MN 次。舍棄前r1項,由式(10)比特重排后得到Q2(i)。由式(13)得到的序列進行量化,轉變成與明文圖像大小一樣的矩陣。

式中:函數floor( )返回不大于K 的最大整數。
2) 由改進型Tent 混沌系統生成混沌序列U1(i)。 由式(11)、式(12)生成Tent 混沌映射的初值帶入到Tent 映射方程式(5)進行迭代,迭代r2+MN 次。舍棄前r2項,由式(11)比特重排后得到U2(i)。 同步驟1)將得到的序列進行量化,轉變成與明文圖像大小相同的矩陣。
3) 對圖像P 進行預加密。 利用式(9)將明文進行Arnold 變換,并利用式(14)與對應序列逐次進行異或。

4) 生成索引矩陣。 由式(15)將序列U2(i)轉換成M 行N 列的二維矩陣B,由式(16)對二維矩陣B進行排序,得到索引矩陣index B 5) 分塊進行置亂-擴散操作。 將P′分成A1,A2,A3,A44 塊進行處理,以A1為例。

①對A1進行像素替換。根據式(17),利用索引矩陣index B 將像素進行索引排序, 得到替換后圖像A1′,具體替換方式如下

②對圖像A1′進行循環移位。 通過式(18)求出對應位置的循環移位的位數得到A1′。 再通過方程(19)將A1′循環移位得到A1″圖像。

6) 將A1″,A2″,A3″,A4″整合,得到密文R。
由于在設計加密算法之時就必須考慮到每一步流程的可逆性問題,所以在對密文解密時僅需進行逆向推導即可。 解密算法的流程圖如圖7 所示,通過設置好的密鑰參數來得到序列。 先分塊進行逆向操作, 通過Tent 混沌映射和改進型的Logistic 混沌映射完成反移位和反置亂排序索引,再對各分塊進行組合, 最后使用Arnold 反變換和反異或的處理,即可求解得到解密圖像。
1) 由圖5 中的加密過程中的式(1),式(2)得到Logistic 映射和Tent 映射的混沌序列和。
2) 分塊。 將密文P 分成D1,D2,D3,D4于4 塊進行處理,以D1為例。
3) 由圖7 加密過程中式(4)得到索引矩陣,進行逆排序索引。

圖7 解密流程Fig.7 Decryption process
4) 反循環移位。由式(18)計算出像素循環移位的位數D(i),由式(20)對D1進行右循環移位得到。

5) 由式 (8) 對密文圖像D′進行Arnold 反變換,并進行序列異或操作求解圖像矩陣,得到解密圖像R。
本文對3 個大小為256×256 的灰度圖像進行加密,實驗環境為Windows10,MatlabR2014b。 完成導入圖像和添加密鑰后,運行本文算法,得到加密圖像和解密圖像(圖8)。

圖8 圖像加密和解密效果Fig.8 Image encryption and decryption effect
圖8 分別是各自的明文和密文以及解密結果的顯示結果。 從直觀看,人們是無法針對其中的密文得到任何信息的,因為以上的3 幅加密效果圖中都不存在任何的輪廓、紋理和形狀等特征。而解密后可看到其與原圖一致,沒有任何像素點的損失。
1) 密鑰空間。如上所述,密鑰空間必須大于2100才符合加密算法的要求,本文算法密鑰空間符合要求。由于當前a1,a2,t1,t2,t3,前期迭代次數r1,r2,可得每一個數據的最小偏差為10-15,由此可計算出算法的密鑰空間大小為(1015)7,可知其對于窮舉攻擊的破解方法具有較強的抵抗效果。
2) 直方圖分析。在圖像的指標分析中,灰度直方圖主要是針對圖像的各個像素值頻數進行統計,從而形成客觀的圖形數據。當該圖像各個像素出現次數基本相同時就是趨于一條直線時,它不會再因為統計特性而被攻擊。本次直方圖分析同樣是使用之前的3 幅圖像,進行明文和密文之間的對比效果(圖9)。

圖9 明文直方圖(左)和密文直方圖(右)Fig.9 Plaintext histogram(left), ciphertext histogram(right)
如圖9 所示, 明文的直方圖分布是由高峰和低谷的,甚至會出現一部分灰度區間完全空白,顯然這樣的直方圖具有很強的特征。 由于每一幅圖像的直方圖是唯一的, 該明文如果只進行位置的置亂操作顯然不能改變直方圖。 但經過加密后得到的密文圖像直方圖是很均勻平滑的, 其中顯示的各個區間像素值出現的概率基本上很相近, 對直方圖無法進行特征統計攻擊,表明該算法具有良好的加密效果。
3) 相鄰像素相關性分析。由于圖像蘊含一定信息,表明在其圖像的一定區間內具有連續性和相似性,需要對加密前后各個方向上的相關性進行計算分析,以此來判斷本文加密算法的性能。 前面已經對相關系數計算公式進行了說明,在測試加密圖像時, 會使用一個隨機矩陣來確保選擇的點的無序性,為使該樣本數量較多,可以利用兩個隨機矩陣來選擇對應的行與列, 該方式選擇了8 000 對符合要求的像素點。 在邊界處選擇的相鄰點需要注意規則,遇到邊界就向圖像中心方向取點,而不是舍棄或循環至另一邊。
對以上的測試圖像進行相鄰像素相關性分析,各個方向上的分布結果如圖10 所示, 圖中橫坐標為(x,y)處的像素值,縱坐標為(x+1,y)處的像素值,相關系數值如表2 所示。
由圖10 可知, 我們隨機選擇的相鄰像素點具有很大的相關性, 這些像素點大致分布在傾角為45°的直線上,這表明當我們取一個點的像素值時,其周邊都是與之大小很相近的像素值。 而反觀密文圖像時, 我們發現相鄰點卻散落分布在各個區域,可以說相鄰的像素點不存在任何聯系,無法由該點像素值推測其附近的大小范圍。 具體相關性測試數據如表2 所示。

圖10 水平,垂直及對角方向對比Fig.10 Horizontal, vertical and diagonal direction contrast

表2 明文和密文相鄰像素相關系數Tab.2 Correlation coefficient of adjacent pixels between plaintext and ciphertext
由表2 可知,明文圖像在這3 個方向上的相關性系數都接近于1, 尤其是Human 和Plant 圖像都是在0.92 以上,即其圖像包含的內容越多所蘊含的信息就越多,相鄰像素點的相關性就越高。 反觀加密后的圖像數據,它們的值都已經大大減小,趨近于0。由此可知,本文設計的圖像加密算法可有效降低其各個相鄰點的像素相關性,表明之前的置亂擴散等操作效果明顯。同樣使用Human 圖像和其它文獻進行對比,如表3 所示。

表3 不同算法相鄰像素相關系數對比Tab.3 Comparison of correlation coefficients between adjacent pixels of different algorithms
由表3 可知,對Human 圖像的加密效果優于文獻[18],本算法在水平方向差于文獻[17],但是垂直方向和對角方向優于文獻[17]。 與文獻[19]相比,本算法水平、 垂直方向上的相關系數差于該文獻,對角方向上優于該文獻。
4) 信息熵分析。圖像的信息熵是人們常用來評估其圖像信息各個取值及其占比的指標,其利用圖像集合內各個數據及其權重計算的結果。 當該圖像的信息熵數值越大就表明其混亂程度越大。 信息熵的理想值為8, 實驗對這3 幅圖像進行測試的結果如表4 所示。

表4 測試圖像信息熵Tab.4 Test image information entropy
由表4 可知,明文的信息熵在7 左右,而通過加密后其信息熵大致都很接近7.99,與理想值8 很接近。 表明在加密過程中的擴散等操作可使各個區間內的像素值都趨于平滑,使其分布特征不具備弱點。 如表5 所示,選擇一些數據與其他文獻中的算法結果進行了對比。

表5 不同算法的信息熵對比Tab.5 Information entropy comparison of different algorithms
由表5 的對比結果可知, 在Human 圖對比中,本文的加密算法的信息熵優于文獻[18],[19],但略低于文獻[17];在Plant 圖對比中,本文算法的信息熵比其他文獻的信息熵略差,但相差微小。 這表明本文的加密算法在針對不同圖像時各有優劣,還存在一定不足。
5) 密鑰敏感性分析。當利用密鑰參數輸入到設計的加密系統中時, 選擇一個密鑰來對其進行測試,如在該數值上進行微小變化,加上或減去10~14這樣一個很小的值,再對明文圖像進行加密,并對密鑰變化前后密文圖像分析, 通過作差處理得到作差圖像,如圖11 所示。

圖11 密鑰敏感性Fig.11 Key sensitivity
圖11(a)為不改變加密密鑰的密文圖像,圖11(b)為改變其中一個密鑰的密鑰參數,圖11(c)為圖11(a)和圖11(b)差值圖。 可以看到細微加密密鑰的不同而導致的加密效果差別很大,由此可知,經過一系列處理后得到的混沌序列具有很強的敏感性。
6) 抗差分攻擊分析。 為了得到一張與原明文圖像相差很小的圖像矩陣, 可以對Human 明文圖像進行讀取后, 將其中一個點的像素值減去1,再用該矩陣通過相同的加密算法系統, 利用式(21)和式(22)對圖像進行相關性分析,計算微小的明文改動對于整體加密效果的影響。 從文獻[16]可知,NPCR 的理想值為99.609 6%,UACI 的理想值為33.46%。 其計算結果同其它文獻中提出的算法相比如表6 所示。

表6 使用Human(256×256)測試與其它算法的對比Tab.6 Comparison between the test by Human(256×256)with other algorithms%

由表6 對比,本文算法同其他文獻相比較各有千秋,平均NPCR 雖然略微差于文獻[17],平均UACI 差于文獻[19],但是相較于其他而言有微小優勢, 這表明一個良好的加密算法能夠抵抗差分攻擊[20]。
本文提出了一種基于循環移位和改進型Logistic 映射和Tent 映射的圖像加密算法。
1) 使用Arnold 變換技術和比特重排方法, 解決在混沌過渡態中軌道點差別小、序列值改變量不大的問題。
2) 明文圖像經歷了像素的置亂和擴散處理,使其具有更好的隨機性。
3) 根據前面的性能指標分析得出:密文圖像直方圖統計特性均勻平滑,密鑰空間大,相鄰像素間的相關系數大大降低而趨于0,信息熵也接近于8,抗差分數據分析接近理想值,與其他文獻相比也具有一定優勢,實現了圖像的安全加密效果。
