謝國波,鄧華軍
廣東工業(yè)大學 計算機學院,廣州 510006
在互聯(lián)網(wǎng)飛速發(fā)展的時代,數(shù)字圖像由于直觀性強、信息量豐富,得到了各種領域的廣泛應用和研究,圖像信息現(xiàn)在已成為人類進行信息交流的重要方式之一。同時其安全性引起了人類的廣泛關注,從而加密技術成為了廣大學者專研的一門熱門課題[1],探索出安全性高的算法顯得尤為重要。由于混沌系統(tǒng)是一種非線性動力系統(tǒng),對初始條件和系統(tǒng)參數(shù)非常敏感,且產生的混沌信號難以分析,具有偽隨機性不可預測性等特點,在圖像加密中得到了廣泛應用和研究[2]。
英國數(shù)學家Matthews[3]在1989年首次提出混沌系統(tǒng)用于數(shù)據(jù)加密。接著人們紛紛提出基于混沌圖像加密的算法[4-11]。總體上可分為灰度值替換和像素位置置亂,以及兩者的混合結合,但圖像加密的安全性及實時性要求和效率還有待加強。
為了獲得更安全與效率高的圖像加密方案,近年來,一些新的加密算法應運而生,如一次一密,比特級置亂,利用數(shù)學模型,利用DNA編碼等加密算法逐漸進入大家的視野[12-16]。但上述方法存在一定的缺陷,如一次一密雖然是安全信息領域的一項重要課題,具有形式簡單,運算效率高的優(yōu)點,安全性高也毋庸置疑。但是有一些問題,比如一次一密的密鑰流必須是隨機產生,且密鑰流至少與被加密的信息等長,不可重復使用,在密鑰儲存和分配存在較大困難,實用性不高。比特置換加密雖然置亂效果比傳統(tǒng)方法更具優(yōu)勢,但是在加密時需將像素值全部轉換成二進制bit級進行圖像加密,效率低,耗時多。利用感知器的數(shù)學模型加密雖然在加密過程中靈敏度高,魯棒性好,但是需要考慮的因素太多,還存在密文明顯不均勻的問題,復雜度也相對較高,實用方面還有待提高。DNA序列加密方法雖然取得了一些成果,加密效果良好,但是因生物計算難題,編碼過程復雜,實驗成本高因素的影響,無法滿足實用,且加密的相關系數(shù)較高,容易遭到攻擊者破壞。
針對上述加密方法存在的一些不足,在分析這些方法的基礎上,提出了新的改進的加密算法。利用廣義cat映射第一次對像素值迭代,第二次進行置亂,然后再用廣義Henon映射產生的混沌序列與置亂后圖像進行擴散加密運算。最后又引入了模和異或相結合的變換,使得攻擊者無法輕易有效地獲取混沌序列,進一步提高了加密的安全性。理論分析和仿真實驗表明,改進算法不僅可有效地抵抗選擇明文攻擊,同時在統(tǒng)計分布性、密鑰空間、抗差分攻擊能力和偽隨機性等方面都具有更好的性能。
近年來,隨著混沌加密沌技術的不斷發(fā)展,由于低維滿足不了加密的實際需求,而Henon映射是二維中應用比較多的映射之一。方程如下:
當a=1.4,b=0.3時系統(tǒng)處于混沌狀態(tài)。當b=1時,運動中系統(tǒng)保持相平面積不變,被認為是保守系統(tǒng);當b<1時,運動中系統(tǒng)相平面積縮小,是耗散系統(tǒng)。此時,最大Lyapunov指數(shù)等于0.418。當前大量研究表明,在非線形保守系統(tǒng)中也有混沌,只是沒有混沌吸引子。在非線形耗散系統(tǒng)中有混沌并伴有混沌吸引子?;谇叭搜芯?,在2002年Richter定義了無限維的廣義Henon混沌系統(tǒng),其動力學方程表示形式如下:
式中,c表示維數(shù),當c>2時,該系統(tǒng)處于超混沌狀態(tài);i=2,3,…,c;p和q為控制參數(shù),實驗證明當 p=1.76,q=0.1時系統(tǒng)處于超混沌狀態(tài)。作為當前具有內在隨機特性的廣義Henon映射逐步成為人們在混沌圖像加密過程中經常用到的混沌映射之一。基于此,本文研究三維Henon映射的超混沌現(xiàn)象,用于圖像加密技術的應用中,其表示形式為:
稱為廣義的三維Henon映射,當1.07≤q≤1.097和p=0.3時,出現(xiàn)混沌現(xiàn)象。
Cat映射,又稱Arnold映射,是一個二維的可逆混沌映射,被廣泛用于圖像素位置置亂,其表達式一般形式為:
由于二維cat映射的密鑰空間較小和逆過程計算簡單,且基于圖像位置的加密算法并不改變圖像本身像素值,安全性能較低。為了提高圖像的加密效果,且因為cat映射自身具有初值敏感性和快速混沌等優(yōu)良特性,提出定義了一種廣義貓映射,動力學方程為:
u,v為正整數(shù),是系統(tǒng)的控制參數(shù)。xn和yn是一個N×N圖像的像素點位置,其取值擴展到0至N之間,并且以N為周期,滿足det(A)=1,保留了傳統(tǒng)二維cat映射的保面積的一一映射特性。但cat映射具有回復性,多次應用cat映射置亂迭代后,又會恢復到原來的狀態(tài)。為了解決這個問題,文中設計的算法采用映射式(5)進行迭代和置亂時,置亂若干次后,當圖像的像素點位置發(fā)生顯著改變的情況下,將其與廣義Henon映射結合擴散加密,使其像素值也發(fā)生了變化,避免了因為出現(xiàn)重復圖像而帶來的安全隱患。同時迭代和置亂時都使用不同的矩陣,意味著迭代和置亂的參數(shù)u,v的值不同,而且采用貓映射置亂和迭代的次數(shù)不同,使得Amold置亂的矩陣也會不同,通過使用不同的置亂控制參數(shù)u,v,有效避免了因Amold映射的周期性而導致的像素點置亂失效問題。同時增加了復雜度,并且增大了密鑰的空間,從而一定程度上提高了算法的安全性。
本文針對傳統(tǒng)的Henon映射和cat映射產生的序列加密算法安全性不夠高,提出基于廣義cat映射和三維廣義Henon映射產生的混沌序列,通過調節(jié)混沌系統(tǒng)控制器參數(shù),可以產生更加復雜的混沌序列來提高加密的抗攻擊性和安全性。下面對圖像加密主要分三個步驟:迭代、置亂和擴散。迭代時,使用廣義cat映射對像素位置進行多次迭代,來增加像素位置變化的范圍。并且迭代次數(shù)與原始圖像密切相關,通過公式計算得到。置亂過程時,再次利用廣義cat映射(與迭代時的混沌系統(tǒng)控制參數(shù)不同)將迭代后的圖像按照從上到下,從左到右進行多輪置亂,輪數(shù)也是由原始圖像通過不同計算公式得到。然后采用廣義Henon映射方程進行迭代來產生混沌序列,取值從1 001次開始取,有利于增加復雜度,加大破譯難度,接著經過公式變換和預處理,得到最終混沌序列。其間運用模和異或相結合的算法,使得攻擊者無法有效地獲取混沌序列,進一步提高了加密的安全性。最后將置亂后的圖像與廣義貓映射產生的最終混沌序列經過像素擴散得到加密圖像,完成加密過程。
步驟1輸入要加密的原始圖像,用矩陣表示為M×N的圖像P,進行邊界填充0(黑色),使圖像長和寬相等(前提是M=N,如果M<N,則通過補圖的方式將圖像補成大小為N×N新圖像,如果M>N,則補成大小為M×M的新圖像)。假設處理后的大小為M×M ,記為B。
步驟2把圖像B讀取成一維數(shù)組C,計算像素點總和sum,混沌系統(tǒng)的置亂次數(shù)為k1=mod( )sum,256+M,迭代的次數(shù)k2=1 000+mod(sum,1 000),將k1,k2作為內部密鑰。
步驟4將D按照從左往右,從上到下規(guī)則依次利用廣義cat映射式(5)對其像數(shù)值進行置亂,置亂k1次后,得到加密圖像為F。
步驟5由外部密鑰x1,y1,z1和a,b作為廣義Henon映射的初始值進行迭代,按照式(3)迭代1 000次后開始取值,產生三個M×M混沌序列分別是{Xk|k=0,1,…,M×M},{Yk|k=0,1,…,M×M},{Zk|k=0,1,…,M×M},然后將這三個序列經過式(6)變換得到RX,RY,RZ。
步驟6接著對RX,RY,RZ混沌序列進行一定的處理,取每個元素的小數(shù)點后第4,5,6位組成一個新的整數(shù)序列,然后將它們對256取余得到QX,QY,QZ,并將其轉化成二進制,使得結果和圖像的灰度值一樣在(0~255)之間,再將廣義cat映射迭代后圖像D像素點的值也轉化成二進制。
步驟7將QX異或QY異或QZ異或D,得到序列S,接著對圖像序列F進行式(7)擴散變換即可得到最終加密序列G。其中F(i)和F(i-1)分別是圖像內部垂直或水平相鄰像素點的值。
步驟8將最終加密序列轉化成十進制還原成圖像,得到加密圖。解密過程為上述過程的逆過程,此處不再贅述。加密流程如圖1。
圖1 圖像加密流程圖
文中的圖像加解密算法是在matlab2016a環(huán)境下進行,選取256×256的8位lena灰度圖像作為實驗仿真測試圖像,混沌系統(tǒng)的控制參數(shù)設置為a=1.08,b=0.3,u=75,v=125,u1=50,v1=100,外部密鑰為x1=0.315 623 56,y1=0.456 336 18,z1=0.635 897 16,x0=0.326 953 62,y0=0.416 383 61。迭代次數(shù)k2和置亂次數(shù)k1作為內部密鑰,由圖像本身的像素值特性決定。加密結果如圖2,(a)為原始圖像,(b)為原始圖像經過迭代后的效果圖,(c)為(b)經過置亂后的效果圖,(d)為經過擴散后的最終加密圖像,(e)為正確解密圖像,(f)為當對密鑰x1增加10-8微小量0.000 000 01后的解密圖。經驗證,任意改變其中一個密鑰的10-8微小增量,得到的解密圖與原始圖像差距巨大。由此得出文中加密方法對密鑰具有很強的敏感性,加密效果好,可以抵抗敏感性攻擊。
圖3為加密過程灰度直方度,通過觀察分析,明文圖像和加密后圖像的灰度統(tǒng)計值有著顯著的差異,明文圖像灰度直方圖分布不均勻,具有強相關性,加密后各直方圖分布很均勻,較好地隱藏了明文圖像的分布規(guī)律,攻擊者很難從直方圖中讀取任何有意義的信息。從而有效地抵御統(tǒng)計分析攻擊。
圖2 加密解密圖
圖3 灰度直方圖
通常用直方圖的方差來衡量加密圖像的均勻性,灰度直方圖中有橫縱坐標,用橫坐標表示灰度級,縱坐標表示每個灰度級出現(xiàn)的像素個數(shù)。均勻性計算公式如式(8)所示,其中Z是直方圖中的不同灰度級像素個數(shù)分布統(tǒng)計值,zi和zj分別是灰度值等于i和 j的像素個數(shù)分布統(tǒng)計值。密文直方圖方差值越小,表示其加密圖像的均勻性越高,當在相同明文圖像中用不同密鑰加密的密文圖像的兩個方差值越接近,表示當密鑰變化時密文圖像的均勻性越好。文中取外部密鑰(x1,y1,z1,x0,y0)作為key1和只改變相關參數(shù)x1,y1,z1,x0,y0分別加密過后的密文迭代圖,置亂后圖,擴散后圖的直方圖進行數(shù)學均勻性計算,其中方差值在5 000左右浮動,每個灰度值中像素數(shù)的平均波動約為70左右,相比于明文直方圖的方差值675 536.562 8,相比于文獻[11]的方差值,本文算法密文均勻性更好,表明文中算法的加密算法有效性高。
本文均勻算法中,密文均勻性方差數(shù)值如表1所示。
為了分析說明原始圖像和經迭代、置亂和擴散的程度,分別從水平、垂直、對角方向隨機抽取原始圖像和加密圖像100對相鄰點像素,然后分別作出三個方向的像素散點圖。圖4(a)表示原始圖像水平方向相鄰像素散點圖,圖4(b)表示加密圖像在水平方向的相鄰相素散點圖。圖4(c)~(f)依次表示垂直方向,對角方向的原始圖像和加密圖像的相鄰相素散點圖。對比觀察分析散點圖可得,原始圖像三個方向各像素間存在較強的線性對應關系,而加密圖像三個方向的像素間散點分布比較均勻,呈現(xiàn)出隨機性。
為了定量論述原始圖像和加密過程后的各圖像像素之間的相關性,分別從圖像的水平、垂直、對角方向選取所有點進行測試。通過式(9)~(12)計算出相鄰像素的相關系數(shù),計算結果如表2。
式中I,I′表示第i對像素點灰度值,Ii和I'i分別表示圖像中同方向相鄰像素點的像素值,γII′表示相鄰像素的相關系數(shù)。相關系數(shù)越接近1表示高度相關,相關系數(shù)越接近0,表示越不相關。由表2計算結果可知,原始圖像的相關系數(shù)接近1,高度相關,加密的圖像相關系數(shù)都接近0,相關性極低。由此得知,文中加密算法具有良好的效果,安全性高。
密鑰空間是衡量加密算法安全性高低的重要一方面,因此,一個好的加密算法應保證有盡可能大的密鑰空間。文中采用混沌系統(tǒng)的x0,y0,x1,y1,z1這5個狀態(tài)變量的初始值作為外部密鑰和迭代置亂次數(shù)k1,k2作為內部密鑰,假設外部初始值的密鑰都是雙精度數(shù)據(jù),至少可以保留15位有效數(shù)字,由此得出加密外部密鑰空間為1075,又因為k1,k2取值范圍一般為(10,100),因此,文中密鑰空間為:k1×k2×1075≥1077,高于文中提到的大多數(shù)文獻加密算法,再加上廣義Henon映射的P參數(shù),密鑰空間將會更大,可以有效地抵御窮舉攻擊。加密算法的時間復雜度是加密效率的重要指標,實驗在硬件環(huán)境為Intel雙核2.60 GHz CPU,4 GB的RAM,500 GB硬盤,Windows 7操作系統(tǒng)個人計算機上,采用matlab2016a編譯器平臺進行實驗,最終加密密鑰和像素值均用15位整數(shù)表示。在上述計算機系統(tǒng)環(huán)境下對256×256的8位Lena圖像經三輪像素迭代加密,平均耗時約0.039 6 s,將文獻[5]的算法在同樣的環(huán)境下,采用相同數(shù)據(jù)類型和圖像進行實驗,耗時0.089 6 s,可見文中算法時間上少了1倍多,文獻[5]的時間復雜度高的主要原因是在實現(xiàn)圖像置亂時比較耗時,所以整個時間復雜度增加。而文中算法主要分三個步驟:迭代、置亂、擴散。其時間復雜度分別為 O(MN)、O(MN)、O(MN),當M、N不是很大的時候,整體復雜度約為O(MN),文中算法最耗時的部分是擴散階段中的浮點數(shù)轉整數(shù)運算,整體上看,文中算法要比文獻[5]中的算法運行得更快。同時文中算法迭代次數(shù)為MN/6,低于文獻[6]的MN/4,可見,文中算法一定程度上提高了加密的運行效率。
表1 密文圖像方差計算統(tǒng)計結果表
圖4 相鄰像素相關性散點圖
表2 相鄰像素點相關性計算結果表
基于香農提出的信息熵概念,近年來被廣泛應用于與信息相關的各種領域。文中信息熵反映的是圖像中灰度分布情況,灰度分布越均勻,意味著不確定性信息就越多,信息熵就越大。經過計算,文中原始圖像的信息熵為6.728 3,迭代后圖像,置亂后的圖像,擴散加密后的圖像信息熵分別為7.966 3、7.981 2、7.989 6。由此得出,加密碼后的信息熵明顯大于原始圖像,并且加密后的圖像信息均已接近灰度級為256的圖像的最大信息熵8,表現(xiàn)出良好偽隨機性,加密安全性高。
一個安全性高的加密算法,應該具有對明文強烈的敏感性。敏感性越強,抵御差分攻擊能力越好,即給明文任一微小的增量或者減量,密文圖像將會產生顯著的改變。由于一些攻擊者針對明文的一些特性,通過觀察密文的變化規(guī)率,進而反推導加密過程,使加密存在安全的威脅?;诖?,文中的迭代和置亂過程都是與明文的像素值相關。從而使加密過程與明文自身特性密切相關。文中使用NPCR(像素值改變率)和UACI(歸一化平均改變強度)兩個衡量指標來描述加密過程與明文之間的關系。假設用C1表示明文圖像加密后的密文,C2表示明文中像素值增加和減小任一微小量的加密后的密文。設在位置(i,j)的像素值分別為C1(i,j)和C2(i,j)。定義一個二維矩陣P與C1大小等同。當C1(i,j)=C2(i,j),定義P(i,j)=0,否則P(i,j)=1;NPCR和UACI的計算公式可定義如下:
從明文圖像任取一點坐標,使像素值作微量改變,如位置為(6,102)的像素點,將其像素值由106改為107,根據(jù)式(13)~(14)計算出 NPCR=99.79%,UACI=33.96%,由此得出,文中算法對明文具有強烈的敏感性,抗差分攻擊能力好。
表3 圖像的NPCR和UACI計算結果表
加密算法的攻擊分析,通常是指在未知加密算法流程和未知密鑰的條件下,通過密文破譯出密鑰或者明文的技術手段。假設攻擊者了解加密系統(tǒng)中的加密算法,根據(jù)Kerckhoff原則,密碼分析攻擊方法又可以分為下面四種:
(1)唯密文攻擊。攻擊者擁有一定的密文消息,而對明文一無所知。
(2)已知明文攻擊。攻擊者已經通過某種方式獲得一些明文,并且還知道相應的密文。
(3)選擇明文攻擊。攻擊者知道加密算法,選擇相應的明文,根據(jù)加密算法得到相應明文對應的密文。
(4)選擇密文攻擊。攻擊者知道解密算法,選擇相應的密文,讓解密算法解密,來獲得解密后的明文。顯然選擇明文攻擊是最具有威脅的攻擊,如果一個加密算法能夠抵御這種攻擊,則可以抵御其他類型的攻擊。文中算法的迭代和置亂過程都是與明文的像素值相關,從而使加密過程與明文自身特性密切相關。這樣對于不同的明文圖像就會產生完全不同的混沌序列,進而產生不同的密鑰序列,攻擊者無法通過選擇明文攻擊破解加密系統(tǒng)。因此,文中的算法能夠有效地抵御這四種類型的攻擊。
本文基于傳統(tǒng)的二維cat映射和Henon映射的改進,并融合了現(xiàn)有像素位置置亂和像素值擴散的算法的優(yōu)點,還有效解決了目前算法易受選擇明文(密文)的攻擊,提出了基于廣義cat映射二次混合加密算法,大大增加了算法的復雜度。加密過程主要分為迭代、置亂、擴散,最后又引入了模和異或相結合的變換,使得攻擊者無法輕易有效地獲取混沌序列,進一步提高了加密的安全性。理論分析加實驗仿真結果驗證了文中算法的有效性。文中算法具有對明文和密鑰極強的敏感性,抗統(tǒng)計分析能力強,密鑰空間大,有效抵抗熵攻擊,抗差分攻擊能力強等特性,算法安全性高,加密效果好,具有廣闊的應用前景。