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

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

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

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

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

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

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

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

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

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

首先,把原加密算法中圖像像素值替換公式進(jìn)行等價(jià)變換。

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

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

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

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

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

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

二、對(duì)原算法的安全性和效率的改進(jìn)

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

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

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

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

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

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

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

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

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

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

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

三、改進(jìn)后的加密和解密算法

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

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

1、加密算法

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

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

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

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

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

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

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

2、解密算法

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

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

最后再進(jìn)行反向的兩個(gè)XOR運(yùn)算和置亂運(yùn)算,這樣如此多輪迭代,便可得到最終的明文圖像。

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

小知識(shí)之線性映射

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