沈子懿,王衛(wèi)亞,榮憲偉,蔣東華,+
(1.長安大學 信息工程學院,陜西 西安 710064; 2.哈爾濱師范大學 物理與電子工程學院,黑龍江 哈爾濱 150025)
隨著多媒體信息尤其是圖像信息在公用網(wǎng)絡的傳輸量急劇增加,這就使得我們在設計圖像加密算法時不但要考慮多媒體信息的安全問題,還要考慮如何對圖像進行有效的壓縮。由于純文本信息與數(shù)字圖像存在本質上的區(qū)別[1],所以傳統(tǒng)的針對純文本信息所設計的加密算法已經(jīng)不能滿足數(shù)字圖像加密的要求,且針對純文本信息的加密算法具有非常高的計算復雜度[2]。后來,隨著對混沌理論不斷深入研究,科研人員發(fā)現(xiàn)具有偽隨機性和初始敏感性的混沌系統(tǒng)非常適合應用于安全通信領域?;煦缋碚摰某霈F(xiàn)為數(shù)字圖像加密領域的研究提供新方法。
截至到目前,密碼系統(tǒng)設計者們基于混沌理論提出很多圖像加密算法[3-12]。例如:在文獻[3]中,Li等提出采用貓映射對灰度圖像的灰度值進行加密的加密算法。另外,再通過雙向擴散提高密文圖像的安全性。在文獻[4]中,Zhou等提出使用混沌映射和線性映射對數(shù)字圖像進行加密的方法。首先將十進制灰度圖像矩陣O轉為二進制數(shù)矩陣OB,然后使用線性映射對矩陣OB進行置亂,接著通過Skew-Tent混沌系統(tǒng)產(chǎn)生偽隨機序列對置亂以后的矩陣進行按位異或操作,最終實現(xiàn)對灰度圖像的加密。在文獻[5]中,Li等提出通過明文圖像的哈希值來控制混沌系統(tǒng)產(chǎn)生偽隨機數(shù),再由這些偽隨機數(shù)完成對明文圖像的置亂和擴散。而文獻[6]中,一種基于置亂-調制-擴散結構的圖像加密算法由Ye等提出。在該加密過程中,Ye等通過明文圖像的信息熵來控制混沌系統(tǒng)產(chǎn)生偽隨機序列,最終通過這些偽隨機數(shù)完成對明文圖像的加密。上述所提到的基于混沌系統(tǒng)的加密算法不但被指出存在安全隱患[13],而且這些加密算法并沒有考慮到圖像數(shù)據(jù)的可壓縮性。
為了降低圖像的數(shù)據(jù)量和增強抵抗明文攻擊,我們基于整數(shù)小波變換和二維混沌系統(tǒng)提出了一種多圖像加密算法。該加密算法具有兩個階段:數(shù)據(jù)壓縮、同時置亂和擴散操作,最終可以產(chǎn)生多幅密文圖像。因此我們提出的加密算法具有以下3個優(yōu)點:①通過整數(shù)小波變換理論對數(shù)字圖像進行壓縮,不但可以減輕信道傳輸負擔,還可以減少圖像數(shù)據(jù)的冗余度;②通過本文提出的同時置亂和擴散操作對圖像進行加密,可以有效抵抗獨立攻擊;③將加密得到的圖像動態(tài)分割成多個子圖像分別在公用網(wǎng)絡中進行傳輸和存儲,可以有效抵抗選擇明文攻擊。
文獻[14]中指出,數(shù)字圖像加密算法的密鑰空間至少要達到1030≈2100,所以我們應盡量避免使用一維混沌系統(tǒng)對數(shù)字圖像加密。因為一維混沌系統(tǒng)的密鑰空間小,而且相比于多維混沌系統(tǒng)來說,一維混沌系統(tǒng)的結構簡單,并且混沌特性也沒那么復雜。本文中,我們采用二維超混沌系統(tǒng)[15]進行密碼流的設計。該二維超混沌系統(tǒng)具體的表述如下
(1)
在這里,θ為該二維混沌系統(tǒng)的控制參數(shù),并且θ屬于[0,1]。x和y分別是該二維混沌系統(tǒng)所生成的偽隨機序列,并且x和y屬于[0,1]。圖1為該二維混沌系統(tǒng)輸出序列x的分岔圖。從圖中可以看出,該二維混沌系統(tǒng)具有非常復雜的混沌特性,非常適合用在圖像加密方面。
圖1 混沌序列x的分岔圖
整數(shù)小波變換是由Calderbank在1998年提出來的一種完全可逆的變換[16]。如圖2所示,圖2(a)表示該變換將任意一張圖像分解成4個子圖 (LL,HL,LH,HH) 的示意圖,圖2(b)表示對Lena圖像進行整數(shù)小波變換得到的分解圖。從圖2中可以看出子圖LL包含了Lena圖像的絕大部分能量,因此將子圖LL提取出來再對其進行加密就可以達到加密原來圖像的效果,并且還可以完成對圖像的壓縮。整數(shù)小波變換的數(shù)學表達式如下所示
(2)
在這里,e(n)表示一維信號e得第n個元素。另外,d(n)和c(n)分別表示信號的高頻分量和低頻分量。逆整數(shù)小波變化如式(3)所示
(3)
圖2 圖像一層整數(shù)小波變換分解
本部分,我們將詳細介紹該加密算法。首先對4張明文圖像通過整數(shù)小波變換進行數(shù)據(jù)壓縮,接著將這4幅壓縮以后的圖像進行交叉組合。然后通過二維混沌系統(tǒng)產(chǎn)生兩組偽隨機序列,利用這兩組偽隨機序列對交叉組合得到的圖像同時進行置亂和擴散操作。最終經(jīng)過動態(tài)分割即可生成4幅含有不同明文信息的密文圖像。為了不失一般性,我們假設4幅明文圖像為P1,P2,P3和P4,并且它們的大小都為2M×2N,像素值的范圍為[0,255]。最終生成4幅大小為M×N的密文圖像C1,C2,C3和C4。整個加密過程如圖3所示。
圖3 加密算法的流程框架
(4)
floor(·)表示對括號中的元素,·按負無窮方向取整。
(2)再根據(jù)式(2)對4幅明文圖像P1,P2,P3和P4進行整數(shù)小波變換,然后提取相應的低頻子圖就可以得到壓縮以后的圖像LLP1,LLP2,LLP3和LLP4。
(3)然后通過式(5)對4幅壓縮得到的圖像LLP1,LLP2,LLP3和LLP4進行交叉組合,并將組合得到的圖像命名為LLPC
(5)
在這里,i=1,2,…,4MN;j=1,2,…,MN。 mod(·)表示對括號中的元素·進行求余運算。
(4)輸入密鑰x0,y0,r0,u0,v0,r1,C0和D0。根據(jù)密鑰x0,y0,r0和u0,v0,r1分別迭代二維混沌系統(tǒng)(式(1))t0+MN次,就得到了偽隨機序列x,y,u和v,然后丟棄4組偽隨機序列的前t0項,以消除混沌系統(tǒng)的瞬時效應。最終通過式(6)和式(7)得到置亂序列ZL和擴散序列KS
ZL=sort(mod(x+u,1))
(6)
KS=mod(floor(mod(y+v+C0,1)×1014),256)
(7)
這里,sort(·)表示對括號中的元素·按升序進行排列,最后返回升序元素在原元素中的索引值。
(5)接著通過如下公式對交叉組合得到的圖像LLPC進行同時置亂和擴散操作
(8)
這里,⊕表示按位異或操作,i=1,2,…,4MN。
(6)根據(jù)密鑰x0’(x0’=ev+x0),y0,r0迭代二維混沌系統(tǒng)(式(1))4MN次得到混沌序列xc。再根據(jù)如下公式對混沌序列進行處理
cm=mod(floor(xc×1014),4)
(9)
(7)通過式(10)根據(jù)cm對加密得到的序列C進行動態(tài)分割,最終就可以得到4幅密文圖像C1,C2,C3和C4
(10)
式中:i=1,2,…,4MN。
由于本文所提出的算法屬于對稱加密算法,所以該解密算法即是加密算法的逆過程。首先根據(jù)4幅明文圖像的特征值ev計算出混沌序列cm,進而將4幅密文圖像進行組合。再對組合得到的圖像進行逆同時置亂和擴散操作,逆操作公式如式(11)所示。最后將解密圖像進行逆交叉分解即可得到4幅明文圖像
(11)
為了檢驗該加密算法的安全性和可行性,我們使用8張大小為512×512的明文圖像進行模擬仿真。各項安全測試均運行在臺式機(i7-9700F CPU,16G Memory,Win-dows 10 Enterprise)上的Matlab 2019a中。在模擬仿真中,我們使用到的加密密鑰x0=0.9366,y0=0.9945,r0=0.2379,u0=0.8961,v0=0.3784,r1=0.3721,C0=0.134和D0=12。該加密算法的實驗仿真結果如圖4所示,圖4(a)和圖4(d)為明文圖像。圖4(b)和圖4(e)分別為最終加密得到的4幅子密文圖像。圖4(c)和圖4(f)為解密圖像。從圖4中可以看出,該加密算法對明文圖像進行加密的同時還進行壓縮(壓縮得到的圖像并不影響其內容的完整性),減輕網(wǎng)絡傳輸?shù)呢摀?,并且我們完全無法識別出其包含的明文信息,這樣可以有效防止明文圖像信息的泄露。
選擇明文攻擊是最常見的一種攻擊方式,而一個實用的圖像加密算法必須要能抵抗選擇明文攻擊。傳統(tǒng)抵抗選擇明文攻擊的方法是將明文圖像的特征值與加密算法的密鑰相關聯(lián)。雖然這種方式可以使加密算法具備一定的抵抗選擇明文攻擊的能力,但加密算法都是與明文圖像的整體特征相關聯(lián)的,而在實際中,明文圖像的關鍵信息往往集中在少數(shù)幾個關鍵區(qū)域而非整幅明文圖像。為了增加加密算法抵抗選擇明文攻擊的能力,我們提出了一種抵抗選擇明文攻擊的方法。在本文中,我們將經(jīng)過同時置亂和擴散操作得到的加密序列C進行動態(tài)的分割,即產(chǎn)生4幅密文圖像。因此,攻擊者想要通過選擇明文攻擊的方式來獲取本文所提方案產(chǎn)生的密文圖像幾乎不可能。
圖4 實驗仿真結果
隨著超級計算機的發(fā)展(如美國的Summit超級計算機,峰值計算速度為200795 TFlop/s;中國的神威太湖之光超級計算機,峰值計算速度為125436 TFlop/s),使得計算機的計算速度和性能都有了質的飛躍,這也使得通過計算機對數(shù)字圖像加密算法進行暴力攻擊成為了可能。本文中我們提出的加密算法中使用了兩組密鑰值,分別用于產(chǎn)生置亂和擴散序列。假設計算機的計算精度為10-15,則該加密算法的密鑰空間為 (1015)6×1015×28≈2356。 從表1中可以看出,我們提出的加密算法的密鑰空間比其它加密算法[15,17,18]的密鑰空間要大的多,因此抵抗窮舉攻擊的效果更好。
表1 不同加密算法的密鑰空間分析
密鑰敏感性是用來評估加密算法擴散特性的好壞程度,一個優(yōu)秀的加密算法應該對密鑰具有極高的敏感性,因為加密系統(tǒng)對密鑰越敏感,選擇明文攻擊就越困難。本部分,我們將通過均方差來評估測試該加密算法的密鑰敏感性。均方差(MSE)是衡量加密算法對密鑰敏感性的一個重要指標。均方差計算公式如式(12)
(12)
在這里,M,N表示圖像的大小,(i,j)表示明文圖像P和解密得到的圖像D中的坐標點。MSE越大,表示加密算法對密鑰的靈敏程度越大。圖5顯示的是密鑰x0,y0,r0的均方差曲線。圖6顯示的是使用錯誤的密鑰解密得到的圖像。通過圖5和圖6我們可以知道,當正確的密鑰發(fā)生非常細微的變化時,所解密得到的圖像與明文圖像具有非常大的均方差,并且從視覺上看,解密得到的圖像沒有顯示出任何明文圖像的信息。說明我們提出的加密算法具有非常好的密鑰敏感性。
圖5 均方差分析結果
隨機數(shù)在圖像安全領域有著至關重要的作用。而SP800-22是由美國國家標準技術局(NIST)發(fā)布的一套用于對數(shù)據(jù)流進行隨機性測試的軟件包,其中包括16種隨機性測試[19]。這些測試往往是通過概率統(tǒng)計的方式去考察該數(shù)據(jù)流是否滿足隨機性的特征,如周期性、相關性以及分布特性。在本部分,我們將通過SP800-22隨機性測試來判斷該加密算法所產(chǎn)生的密文圖像隨機性,實驗結果見表2。通過分析表中的數(shù)據(jù),我們可以看出,本文所產(chǎn)生的密文圖像成功通過了SP800-22的隨機性測試。因此,我們認為該加密算法所產(chǎn)生的密文圖像具有非常好的隨機性。
表2 密文圖像的隨機性測試結果
當密文圖像通過公用網(wǎng)絡進行傳輸時不可避免的會受到噪聲的影響,從而導致密文圖像中某些像素值丟失。在本部分,我們對密文圖像人為地加入一些干擾,以此來測試該加密算法的健壯性。圖7顯示的是對同一幅Zelda密文圖像進行不同強度噪聲攻擊的實驗結果(圖7(a)是加入椒鹽噪聲強度為0.001%的解密圖像;圖7(b)為加入椒鹽噪聲強度為0.005%的解密圖像;圖7(c)為加入椒鹽噪聲強度為0.1%的解密圖像;圖7(d)為加入椒鹽噪聲強度為0.15%的解密圖像)。圖8顯示的是對同一幅Zelda密文圖像進行不同強度剪切攻擊的實驗結果(圖8(a)是加入剪切強度為1/16的解密圖像;圖8(b)為加入剪切強度為1/8的解密圖像;圖8(c)為加入剪切強度為1/4的解密圖像;圖8(d)為加入剪切強度為1/2的解密圖像)。從圖中我們可以看出,該加密算法具有非常好的健壯性,可以抵抗高強度的噪聲和剪切攻擊,非常適用于安全圖像傳輸領域。
香農信息熵反映了一張圖像的整體隨機性。圖像的香農信息熵越大,說明該圖像整體的隨機性越強。為了精準測試由該加密算法所產(chǎn)生的密文圖像的隨機性,我們采用局部香農信息熵[20]的方式來進行定量測量。局部香農信息熵的定義如下
(13)
圖7 噪聲攻擊實驗結果
圖8 剪切攻擊實驗結果
在這里,i=1,2,3,…,TB。 圖像的灰度級范圍在[0,255]。S1,S2,S3,…,Sk為隨機抽取密文圖像中k個含有TB個像素點的不重疊塊。H(Si) 表示第Si個不重疊塊的香農信息熵。在本次實驗中,我們假設k=30,TB=1936,這就意味著我們將隨機抽取密文圖像中30個含有1936個像素的不重疊塊。根據(jù)文獻[21],我們可以算出(30,1936)-局部香農熵的值應該在[7.901 901 305,7.903 037 329]之間,并且置信度α為0.05。表3顯示的是一些標準測試圖像的局部香農信息熵,從表中可以看出,在生成的密文圖像中像素的分布是非常隨機的。
表3 局部香農信息熵實驗結果
最后一個部分,我們分析該加密算法的時間復雜度。時間復雜度用來衡量一個算法執(zhí)行的時間長短,是衡量加密算法的一個非常重要的性能指標。我們先假設每張明文圖像的大小為N×N,則該加密算法的時間復雜度主要取決于對4幅圖像的置亂操作和擴散操作。最后經(jīng)計算,可以得到該加密算法的時間復雜度為θ(N2)。表4顯示的是不同的加密算法對同一幅Lena圖像加密所耗費的時間。我們不難發(fā)現(xiàn)該加密算法運行所需要的時間比其它加密算法[15,17,18]所花費的時間要短,加密效率更高。
表4 不同算法的加密時間分析/s
本文提出了一種基于整數(shù)小波變換和二維混沌系統(tǒng)的多圖像加密算法。該加密算法主要由以下3部分組成:圖像數(shù)據(jù)的壓縮、同時置亂和擴散操作和動態(tài)分割。首先通過整數(shù)小波變換對數(shù)字圖像進行壓縮,這樣做可以減輕公用信道的傳輸壓力。然后再經(jīng)過同時置亂和擴散操作和動態(tài)分割,最終產(chǎn)生多幅密文圖像。
由于該加密算法將置亂過程和擴散過程結合到同一過程中,并且將多幅明文圖像的信息加密到多幅密文圖像中去,所以該加密算法能抵抗選擇明文攻擊和獨立攻擊,并且提升了網(wǎng)絡傳輸效率。下一步將考慮通過伯恩斯坦多項式把加密得到的類噪聲密文圖像隱藏在某一幅具有實際意義的載體圖像中,以此增加明文圖像信息的安全。