圖像加密算法之Fibonacci雙置亂
大家都知道,像置亂是實(shí)現(xiàn)圖像加密的重要手段之一,其最終目的是改變圖像像素的位置關(guān)系或者灰度值信息,改變圖像的統(tǒng)計(jì)信息,從而達(dá)到圖像加密的目的。為提升圖像置亂效果和置亂性能,從均勻分塊的角度出發(fā),提出了一種改進(jìn)的Fibonacci雙置亂圖像加密算法。
一、Fibonacci加密算法
1、Fibonacci像素位置變換
Fibonacci的變換矩陣如式(1)、式(2)所示。
圖像像素的位置矩陣表示為p(x,y)H,二維Fibonacci位置變換表達(dá)式為:
對(duì)圖像做n次Fibonacci位置變換的表達(dá)式為:
x,y,x',y'∈{O,1,…,N},N為數(shù)字圖像矩陣的階數(shù);(x,y)和(x',y')分別是原圖像和置亂后圖像像素的位置。
2、Fibonacci像素值變換
無論位置置亂還是像素值置亂,其二維Flbonaccl變換矩陣相同,都如式(1)、式(2)所示。與位置置亂不同,h表示任意像素值橫縱坐標(biāo)的十六進(jìn)制,不再是像素的位置坐標(biāo)。對(duì)圖像像素值h變換一次的表示形式如下:
則對(duì)圖像像素值h變換n次的表示形式為:
式中,h=(h1,h2)H,hi,hi'∈{1,2,…,n},i=l,2,則h'(hi,hi')H是對(duì)每個(gè)像素值h置亂后對(duì)應(yīng)的像素值。
3、Fibonacci雙置亂
Fibonacdi雙置亂算法的主要思想是利用圖像矩陣左乘二維Fibonacdi變換矩陣,先改變圖像像素位置,再改變像素的灰度值,算法分兩步進(jìn)行;
(1)對(duì)圖像的像素進(jìn)行kl次位置置亂,削弱圖像的空間相關(guān)性。
(2)對(duì)圖像的像素進(jìn)行k2次灰度值置亂,削弱圖像的色彩相關(guān)性。最終得到隨機(jī)生成的密鑰序列,具體的置亂流程如圖1所示。
二、均勻分塊算法
1、圖像均勻分塊原理
圖像能夠傳達(dá)信息是因?yàn)閳D像的像素值之間具有差異性,圖像位置置亂的目的是分散。相鄰像素點(diǎn)一,從而最大程度地破壞像素之間的相關(guān)性.從信息論角度,圖像置亂的目的是降低圖像相鄰像素的相關(guān)性,使圖像像素由最大確定性變換為不確定性的過程,即增加圖像信息量的過程。首先提出圖像位置熵的定義:
式中,B為圖像分塊區(qū)域個(gè)數(shù);Hk(P)為第正個(gè)分塊區(qū)域的信息熵,即第k個(gè)分塊區(qū)域平均位置信息量,可表示如下:
式中,P(i,j)為原始圖像坐標(biāo)為(i,j)的像素在置亂后圖像第k個(gè)分塊區(qū)域出現(xiàn)的概率.剛當(dāng)P(i,j)等概率時(shí)熵函數(shù)Hk(P)最大,從而位置熵H(R)最大。
理想的置亂狀態(tài)是置亂圖像中任意分塊區(qū)域內(nèi)的點(diǎn)來自原始圖像各個(gè)位置的概率都相等,或者說原始圖像同一分塊區(qū)域內(nèi)的點(diǎn)分布到置亂圖像不同分塊區(qū)域的概率相等,則置亂后圖像信源的平均信息量最大,置亂效果最好。為達(dá)到理想的置亂效果,提出如下均勻置亂方法:若原始圖像中每塊含有nXn個(gè)點(diǎn)。如果這些點(diǎn)分別出現(xiàn)在置亂后圖像的n×n個(gè)圖像塊中,不管這些點(diǎn)在置亂后圖像各塊中出現(xiàn)的順序如何,只要保證每塊中各含有一個(gè)點(diǎn),就稱為均勻置亂。
2、圖像的塊置亂
假設(shè)圖像的尺寸為MXN,以f(i,j)(1≤i≤M,1≤j≤N)為中心的m×n(O≤m≤M,0≤n≤N)個(gè)相鄰像素組成的一個(gè)鄰域,稱為圖像塊。
(1)先將圖像做分塊處理,通常正方塊在圖像加密的研究中最有代表意義,圖像分塊需做如下約束:
①圖像行數(shù)等于列數(shù),而且是2的指數(shù);
②圖像平均分成若干塊,每塊的行數(shù)都等于列數(shù)。具體的分塊過程如下:
將原始圖像分成M1塊,每塊含有N1個(gè)點(diǎn),置亂后圖像分成M2塊,每塊含有N2個(gè)點(diǎn),那么實(shí)現(xiàn)原始圖像各塊中像素點(diǎn)間的距離由“最近”到“最遠(yuǎn)”,如圖2所示,要保證該塊中所有像素點(diǎn)被分到置亂后圖像的不同塊中,則M2≥N1;同理,實(shí)現(xiàn)原始圖像各塊中像素點(diǎn)間的距離由“最遠(yuǎn)”到“最近”,就必須保證在原始圖像所有塊中各取的一點(diǎn),都能分到置亂后圖像的同一塊中,則N2≥M1。因?yàn)镸2≥N1,N2≥M1,則M2,N2≥Ni N2≥M1, Ni,已知M2N2=M1N1;那么M2=N,M=N2。
令原圖像由16×16個(gè)像素點(diǎn)組成,每塊中有2×2個(gè)點(diǎn),共分成8×8塊,置亂后的圖像為每塊中有8×8個(gè)像素點(diǎn),共分成2×2塊,如圖2所示。
(2)分別將置亂后的每個(gè)圖像塊按式(4)做Fibonacci位置變換,圖像的加密流程如圖3所示。其中Orilmage是原始圖像,Scrlmage是加密圖像。
圖像的懈密是加密的逆過程。即利用已知密鑰,首先將加密圖像做Fibonacci反變換,對(duì)圖像的像索值置亂進(jìn)行恢復(fù),然后按照加密時(shí)塊置亂的規(guī)律采用均勻分塊算法,最后對(duì)圖像塊做Fibonacci反變換,對(duì)圖像塊的像東位置置亂進(jìn)行恢復(fù),就能將原始圖像還原。
三、實(shí)驗(yàn)效果與分析
1、相鄰像素相關(guān)性分析
圖像的本質(zhì)特征決定了圖像中栩鄰像素間具有很大的相關(guān)性,利用該性質(zhì)的統(tǒng)計(jì)攻擊方法來分析圖像的加密算法就成為可能,因此用相關(guān)系數(shù)來衡量加密算法破壞相鄰像素相關(guān)性的能力。首先,從圖像中隨機(jī)選取1000對(duì)相鄰像素點(diǎn)(水平、垂直和對(duì)角),然后利用以下公式進(jìn)行計(jì)算。
式中,x和y分別表示相鄰兩個(gè)像索的像索值,E(.)、D(.)和Cov(.)分別是期望、方差和協(xié)方差,r是相鄰兩像素的相關(guān)系數(shù),其值接近1的程度越高,相鄰像索的相關(guān)性越高。將Lenna圖像分別采用傳統(tǒng)的整體Fibonacci置亂算法與本文算法進(jìn)行相鄰像素相關(guān)性對(duì)比實(shí)驗(yàn),比較圖像在3個(gè)方向的相鄰像素相關(guān)性。通過表1的計(jì)算結(jié)果可見,原始圖像的相鄰像素是高度相關(guān)的,相關(guān)系數(shù)接近于1,密圖的像素相關(guān)性接近于O,而且利用本文算法能更大程度地降低相鄰像素的相關(guān)性,幾乎達(dá)到了O相關(guān)??梢姴捎酶倪M(jìn)的雙置亂加密算法明顯優(yōu)于傳統(tǒng)的Fibonacci置亂算法。
2、置亂效果比較
圖像置亂包括位置置亂和像素值置亂,置亂的最終目的是實(shí)現(xiàn)最大程度的混亂和擴(kuò)散,對(duì)位置置亂而言,如果原始圖像任意小的部分都能在加密之后的圖像中呈均勻分布,那么可將其看作理想狀態(tài),對(duì)像素值置亂而言,如果加密之后的像索值能住(0~255)范圍內(nèi)呈均勻分布,即將灰度直方圖的均勻分布看作理想狀態(tài)。從圖4可見,傳統(tǒng)的置亂算法多數(shù)是對(duì)圖像整體進(jìn)行位置置亂,加密多次才能達(dá)到理想效果,而且單純的位置置亂即使迭代多次,其灰度直方圖也達(dá)術(shù)到均勻分布的狀態(tài),沒有削弱圖像像素的相關(guān)性,然而采用雙置亂算法可以在較少的置亂次數(shù)下達(dá)到混亂和擴(kuò)散的理想效果,有效削弱了圖像像素的相關(guān)性。
傳統(tǒng)分塊方法分3步進(jìn)行:
①將圖像進(jìn)行分塊,假設(shè)圖像大小為256X256,分塊數(shù)為32X32,則計(jì)算每個(gè)圖像塊中像素點(diǎn)的個(gè)數(shù)為(256×256)÷(32X32)=8X8=64。
②對(duì)含有64個(gè)像素點(diǎn)的塊進(jìn)行位置置亂。
③采用幻方變換對(duì)圖像整體進(jìn)行加密。
第一行和第二行分別是采用傳統(tǒng)分塊算法和本文算法由不同分塊數(shù)目獲得的加密效果,如圖5所示。
從圖5可見,傳統(tǒng)的分塊方法具有一定的置亂效果,但隨著分塊數(shù)目的增加,原始圖像信息逐漸從加密圖像中顯現(xiàn)出來,所以傳統(tǒng)的分塊算法有一定的局限性;而改進(jìn)的分塊方法分塊數(shù)目越多,置亂效果越好,這是因?yàn)楦倪M(jìn)的方法采用均勻分塊思想能夠?qū)D像像素均勻打亂,所以改進(jìn)分塊方法在圖像加密中更具有實(shí)際的應(yīng)用價(jià)值。
3、抗算切實(shí)驗(yàn)
衡量圖像加密性能一般采用誤碼率BER、歸一化相關(guān)系數(shù)NC和信噪比SNR 3個(gè)指標(biāo),它們的定義如下:
式中,M和N分別為錯(cuò)誤比特?cái)?shù)和總比特?cái)?shù),w(i,j)和W1(i,j)分別為原始圖像和對(duì)加密圖像進(jìn)行裁剪后恢復(fù)圖像的數(shù)據(jù)量;A和A’分別是原始圖像和加密圖像的方差。表2給出圖像對(duì)隨機(jī)裁剪攻擊的魯棒性實(shí)驗(yàn)結(jié)果。
首先采用本文算法對(duì)Lena圖像進(jìn)行加密處理,然后利用Adobe photoshop軟件對(duì)加密圖像按圖6的方案裁剪,圖6(d)一(f)分別是對(duì)圖6(a)一(c)裁剪攻擊恢復(fù)的效果圖。
由裁剪攻擊實(shí)驗(yàn)得知,對(duì)裁剪后的圖像進(jìn)行恢復(fù)會(huì)存在一定程度的失真,但是要辨認(rèn)圖像所傳達(dá)的信息并不困難,通過該實(shí)驗(yàn)發(fā)現(xiàn),加密圖像恢復(fù)的效果與裁剪的位置幾乎無關(guān),主要因?yàn)楦倪M(jìn)的雙置亂算法采用了均勻分塊和圖像塊置亂的思想,使得每個(gè)圖像塊的像素都均勻分布到其他各個(gè)圖像塊,即“廣泛分布”,而非“集中分布”,從本質(zhì)上削弱了圖像內(nèi)部相鄰像素的相關(guān)性,所以該算法能有效地抵抗裁剪攻擊,一定程度的裁剪對(duì)圖像的恢復(fù)影響不大。
4、抗噪聲實(shí)驗(yàn)
圖像數(shù)據(jù)一般用于網(wǎng)絡(luò)傳輸,因此不可避免地會(huì)受到一些噪聲或信道干擾。借此,采用實(shí)驗(yàn)驗(yàn)證本文算法抵御噪聲攻擊的能力是必要的,根據(jù)式(13) -式(15)計(jì)算加密圖像在不同的Gauss噪聲攻擊下的性能,如表3所列。
在加密圖像中加入不同程度的高斯白噪聲,其中參數(shù)m和σ分別代表均值和均方差,加入均值m,均方差σ不同的高斯噪聲,圖7(d)一(f)分別是利用解密算法對(duì)圖7(a)-(c)的恢復(fù)效果圖。
通過采用不同參數(shù)對(duì)密圖進(jìn)行噪盧攻擊的實(shí)驗(yàn)可以看出,當(dāng)圖像受到一定程度的噪聲污染時(shí)基本能恢復(fù)原圖像,總體上并不會(huì)影響圖像所展現(xiàn)的內(nèi)容,證明了本文算法在一定程度上抵御噪聲的性能較強(qiáng)。
小知識(shí)之Fibonacci
斐波那契堆(Fibonacci heap)是計(jì)算機(jī)科學(xué)中最小堆有序樹的集合。它和二項(xiàng)式堆有類似的性質(zhì),可用于實(shí)現(xiàn)合并優(yōu)先隊(duì)列。







