基于高維混沌圖像加密算法的安全性和效率的改善

隨著網(wǎng)絡(luò)和計算機技術(shù)的發(fā)展,多媒體安全的研究成為了人們的熱點,特別是利用混沌的優(yōu)點來保護數(shù)字圖像被認為是圖像加密中很有希望的研究領(lǐng)域之一。有專家提出了一種基于高維混沌的圖像加密算法,其過程包括兩個階段:首先是利用Arnold貓映射對原圖像像素的位置進行置亂,其次是利用Lorenz混沌系統(tǒng)產(chǎn)生的值來加密置亂后的像素值,最后,通過以上兩個部分可以得到密文圖像。

但是這種圖像加密算法在圖像安全性上有許多優(yōu)點包括密鑰敏感性和大密鑰空間等,同時也存在著一些能夠被攻擊者利用的缺陷,那么我們今天就針對這種高維混沌圖像加密算法做一些列改進,讓它更有利于圖像文件加密。

一、基于高維混沌圖像加密算法所隱含的缺點

基于高維混沌圖像加密算法存在兩個缺陷:

1)(0,0)像素位置沒能被改變同時位置的置亂和灰度值的替換之間缺少聯(lián)系。

由于Arnold貓映射固有的缺點,所以原算法無論經(jīng)過多少輪的迭代,原圖像(0,0)像素位置始終沒有被改變,即如果(x0,y0)=(0,0),經(jīng)過n輪迭代,(xn0,yn0)=(0,0)。同時,位置的置亂和像素的替換是逐個像素單獨進行,而在兩個像素之間卻缺少關(guān)聯(lián)。因此,由于該加密算法對加密圖像缺少必要的擴散效果,這樣對于選擇明文攻擊來說是可行的,攻擊者可以利用一些特殊的圖像(例如兩幅只有一個像素不同的圖像)來進行算法的分析,從而找出該圖像加密算法中像素置亂的規(guī)則。圖1說明了當兩幅明文圖像中有一個像素點有變化時,用原算法進行加密得到的密文圖像也只有一個像素有變化。其中明文圖像為標準Girl灰度圖像,系統(tǒng)參數(shù)和初始條件如下:對于Arnold貓映射:p=25,q=5,迭代次數(shù)M=7,對于Lorenz混沌系統(tǒng):x0=1.8552,y0=1.2254,z0=1.2545。

基于高維混沌圖像加密算法的安全性和效率的改善

2)所產(chǎn)生的加密數(shù)據(jù)流僅依賴于Lorenz混沌系統(tǒng)的初始條件而與明文沒有關(guān)聯(lián)。

原算法所產(chǎn)生的加密數(shù)據(jù)流{bx,by,bz}僅依賴于Lorenz混沌系統(tǒng)的初始條件x0,y0,z0,而與圖像明文沒有任何關(guān)聯(lián)。這樣,當混沌系統(tǒng)的初始條件沒有改變,所對應(yīng)的加密數(shù)據(jù)流{bx,by,bz}也不會發(fā)生變化。這對于抵抗已知明文攻擊來說非常脆弱。例如,一個攻擊者可以利用大量已知的明文和密文對(di,ci)(注:這些明文和密文對分別來自于d={d1,d2,......,dN×N}和c={c1,c2,......,cN×N},其中d是圖像像素經(jīng)過置亂后由圖像像素值所排列成的二進制序列流,c是密文序列流)來產(chǎn)生加密所需要的數(shù)據(jù)流,從而可以解密用此密鑰加密的密文圖像。其數(shù)據(jù)流恢復(fù)的過程如下:

首先,把原加密算法中圖像像素值替換公式進行等價變換。

基于高維混沌圖像加密算法的安全性和效率的改善

可以注意到,經(jīng)過上面的變換,等式左邊的運算結(jié)果是一致的。

第二,把式(1)中的結(jié)果再進行以下等價變換,就可以得到解密用的密鑰數(shù)據(jù)流(其中i=1,2,......代表對Lorenz混沌系統(tǒng)進行第i次迭代):

基于高維混沌圖像加密算法的安全性和效率的改善

如果利用選擇明文攻擊的特點來考慮這個缺陷,當兩幅圖像用相同的密鑰進行加密(其置亂規(guī)則已知),我們就可以充分利用其中一幅圖像的明文和密文對異或后產(chǎn)生的數(shù)據(jù)流by⊕bx,bz⊕by,bx⊕bz來恢復(fù)另一幅明文圖像。其原因在于當攻擊者得到數(shù)據(jù)流by⊕bx,bz⊕by,bx⊕bz之后,就等于得到了原算法的密鑰。圖2給出了利用選擇明文攻擊的例子(加密密鑰同上對第一個缺陷的分析),可以得出,當用相同的密鑰加密兩幅不同的圖像時(標準Lena和Girl灰度圖像),如果從一幅圖像中得到了數(shù)據(jù)流by⊕bx,bz⊕by,bx⊕bz,則另一幅圖像就可以完全恢復(fù)出來。

基于高維混沌圖像加密算法的安全性和效率的改善

二、對原算法的安全性和效率的改進

1、安全性改進設(shè)計

根據(jù)前面我們介紹的內(nèi)容,為了解決原算法在安全性上的缺陷,我們提出了以下4點改進方法:

1)由于Arnold貓映射在進行圖像置亂中對于(0,0)位置上的像素不起任何作用,因此,可把(0,0)位置上的像素和一個固定位置(i,j)(0<i≤N,0<j≤N)的像素在每輪迭代過程后進行交換。這樣,前一輪(0,0)位置的像素就可以在下一輪迭代中被置亂。其中(i,j)可以被看作密鑰進行控制。

2)針對原算法中像素位置置亂和像素值替換之間缺少關(guān)聯(lián)的缺點,對原算法中兩個加密步驟統(tǒng)一進行多輪迭代,即每一輪迭代都會進行位置置亂和像素值的替代。

3)由于原算法中加密數(shù)據(jù)流{bx,by,bz}的產(chǎn)生只是簡單地依賴于Lorenz混沌系統(tǒng)的初始條件,這樣很有可能被攻擊者所利用,因此,應(yīng)使數(shù)據(jù)流不但依賴于Lorenz混沌系統(tǒng),同時也與明文相關(guān)。

4)對于加密數(shù)據(jù)流{bx,by,bz},在改進設(shè)計中,它的產(chǎn)生應(yīng)該以一個鏈式結(jié)構(gòu)遞推進行,即在任意兩個像素之間都應(yīng)該有關(guān)聯(lián)。這樣,經(jīng)過多輪迭代之后,就能取得較好的置亂和擴散效果。

2、加密速度改進設(shè)計

對于原算法,如果只進行以上的改進,則安全性將得到很大程度的提高。但是,要想取得較為滿意的置亂和擴散效果,則需要進行多輪(輪數(shù)n>42)加密,這顯然不符合實際應(yīng)用中圖像加密的需要,其原因就在于此算法的置亂效果只依賴于置亂階段,而擴散效果也只依賴于擴散階段。

為了在較少的加密輪數(shù)就能取得令人滿意的加密效果,我們可以通過在算法框架結(jié)構(gòu)中添加一些簡單的運算操作(如查表操作,異或操作)來實現(xiàn)。在本加密算法的改進中,兩個簡單的異或操作(XOR)被分別引入到了置亂階段的前面和后面,而其他的操作步驟沒有發(fā)生變化。這樣,在第一個階段,像素位置的置亂和像素值的替換是同時進行的,而第二個階段的像素變換也增加了擴散的效果。這樣改進的結(jié)果是擴散效果不單是依賴于擴散階段,而且還與置亂階段有聯(lián)系。因此,在較少的加密輪數(shù)下就能取得同樣的加密效果,而加密速度卻得到了很大的提高。對于這兩個異或操作來說,第一個異或操作是把前一個被處理后的像素值和當前的明文像素值進行運算(順序是按行從上到下,從左到右進行),其中第一個像素要和一個固定的密鑰值進行異或,而最后一個處理后的像素要和(2,2)像素進行異或運算。對于第二個異或操作,運算步驟基本相同,只是像素值是按列從左到右,從上到下逐像素進行。式(3)給出了兩個異或運算的基本結(jié)構(gòu):

基于高維混沌圖像加密算法的安全性和效率的改善

其中pri,j是當前明文像素,vri,j是經(jīng)過第一次XOR處理后的像素值,vci,j是經(jīng)過置亂和第二次XOR處理后的像素值,S和S*是兩個用戶控制的密鑰固定值,Per[x]是在第二次XOR處理前的置亂操作,v*2,2是(2,2)點經(jīng)過處理后的最終像素值(其中0<i≤N,0<j≤N)。以上的簡單XOR操作能有效的改變圖像中每個像素加密后的像素值,達到很好的擴散效果。因此,這樣的結(jié)構(gòu)非常有利于實現(xiàn)圖像的加密。

三、改進后的加密和解密算法

根據(jù)前面對原算法在安全性和速度上進行的有效改進設(shè)計,本節(jié)列出了改進算法中每一輪的加解密具體步驟,其中密鑰包括Arnold貓映射的系統(tǒng)參數(shù)p,q,兩次異或操作的初始值S,S*,Lorenz混沌系統(tǒng)的系統(tǒng)初始值x0,y0,z0,(0,0)像素交換位置(i,j)以及迭代輪數(shù)M。關(guān)于改進加密算法,其基本的加密結(jié)構(gòu)如圖3。

基于高維混沌圖像加密算法的安全性和效率的改善

1、加密算法

步驟1、輸入原始明文圖像K(大小N×N)和密鑰,并進行第一個XOR運算,得到變換后的圖像。接著把變換圖像運用Arnold貓映射進行一次置亂,并交換(0,0)位置和(i,j)位置的像素。然后完成第二個XOR運算,得到圖像D。

步驟2、把圖像D排列成一維向量Z={Z1,Z2,Z3,......,ZN×N},其中每個元素是十進制的像素值。

步驟3、連續(xù)迭代Lorenz混沌系統(tǒng)(首先進行初始迭代,迭代次數(shù)大于某個正整數(shù)),得到三個運算值xi,yi,zi,i=1,2,......,然后把其運用于式(4),并結(jié)合向量Z來求得加密數(shù)據(jù)流{bx,by,bz},則所得加密數(shù)據(jù)流不僅依賴于Lorenz混沌系統(tǒng),而且還與圖像D有關(guān)聯(lián),其中前兩個值Z-1和Z0可設(shè)置為Z-1=127,Z0=255,n=4,abs(*)代表取絕對值,round(*)代表四舍五入進行取整,mod(*)為取模運算。

基于高維混沌圖像加密算法的安全性和效率的改善

步驟4、圖像D與加密數(shù)據(jù)流{bx,by,bz}按式(5)進行異或運算,其中i=1,2,......代表對Lorenz混沌系統(tǒng)進行第i次迭代,bitxor(*)返回兩數(shù)異或后得到的結(jié)果。Lorenz混沌系統(tǒng)對向量Z中每個元素都產(chǎn)生對應(yīng)的運算值xi,yi,zi,i=1,2,......。經(jīng)過以上操作從而可以得到對應(yīng)的密文向量c={c1,c2,c3,......,cN×N}。

基于高維混沌圖像加密算法的安全性和效率的改善

步驟5、重復(fù)以上步驟,直到加密迭代輪數(shù)到M為止,此時所輸出的圖像就是密文圖像。

2、解密算法

本圖像改進加密算法的解密過程即為加密過程的逆過程,其中首先需要將密文圖像轉(zhuǎn)變?yōu)橐痪S向量,然后利用連續(xù)迭代Lorenz混沌系統(tǒng)所產(chǎn)生的值來恢復(fù)向量Z={Z1,Z2,Z3,......,ZN×N}。其過程可以用式(6)表示:

基于高維混沌圖像加密算法的安全性和效率的改善

最后再進行反向的兩個XOR運算和置亂運算,這樣如此多輪迭代,便可得到最終的明文圖像。

本文提出了不同情形下的基于雙線性映射的身份認證方案,實現(xiàn)用戶與用戶之間的身份認證,在用戶認證過程中并不需要KGC的介入,而且第二種情形可以用于在不同KGC注冊的用戶之間進行身份認證識別,使得該方案非常適合于現(xiàn)代戰(zhàn)機敵我識別等需要在個體間進行認證的應(yīng)用領(lǐng)域。與已有方案相比,本文的方案需要更少計算量和通信次數(shù),具有更好的效率。所提出的認證方案在橢圓曲線離散對數(shù)問題不可解的假設(shè)下,能有效抵抗假冒用戶攻擊,冒充攻擊和重放攻擊,具有很好的安全性能。

小知識之線性映射

在數(shù)學中,線性映射(也叫做線性變換或線性算子)是在兩個向量空間之間的函數(shù),它保持向量加法和標量乘法的運算。術(shù)語“線性變換”特別常用,尤其是對從向量空間到自身的線性映射(自同態(tài))。