彩色圖像文件認(rèn)證加密算法

為了實(shí)現(xiàn)對(duì)彩色圖像的有效保護(hù),我們提出了一種基于多混沌系統(tǒng)和圖像認(rèn)證功能的彩色圖像加密算法。該加密算法通過(guò)對(duì)彩色圖像RGB分量的運(yùn)算生成128位Hash值,并把該Hash值作為部分圖像加密的密鑰。然后通過(guò)Logistic混沌系統(tǒng)、統(tǒng)一混沌系統(tǒng)和Hash值對(duì)彩色圖像進(jìn)行像素置亂和替代操作以實(shí)現(xiàn)圖像文件加密。

一、混沌系統(tǒng)

混沌現(xiàn)象是非線性動(dòng)力系統(tǒng)中出現(xiàn)的確定性的、類似隨機(jī)的過(guò)程,這種過(guò)程既非周期,又不收斂,并且對(duì)初始值有及其敏感的依賴性,本論文中用到的兩種混沌動(dòng)力學(xué)模型如下:

1、Logistic系統(tǒng)

Logistic系統(tǒng)是一個(gè)源于人口統(tǒng)計(jì)的動(dòng)力學(xué)系統(tǒng),也是目前廣泛研究的混沌系統(tǒng)。

式(1)中,μ∈(O,4),xk∈(O,1)。當(dāng)3.5699456<μ≤4時(shí),Logistic系統(tǒng)工作于混沌狀態(tài)。也就是說(shuō),由初始條件x0在Logistic系統(tǒng)的作用下所產(chǎn)生的序列{Xk;k=1,2,3,…}是非周期、不收斂的,并對(duì)初始值非常敏感。在本方案中,Logistic系統(tǒng)用于在行和列全局位置置亂中確定各行或各列的交換次序。

2、統(tǒng)一混沌系統(tǒng)

統(tǒng)一混沌系統(tǒng)于2002年提出,該系統(tǒng)將Lorenz系統(tǒng)和Chen系統(tǒng)連接起來(lái),而Liu系統(tǒng)僅為其一個(gè)特例。

式(2)中:系統(tǒng)參數(shù)α∈[O,1],在此范圍內(nèi)系統(tǒng)具有全域性混沌特性。當(dāng)α∈[O,0.8]時(shí),系統(tǒng)屬于廣義Lorenz系統(tǒng);當(dāng)α=0.8時(shí),系統(tǒng)屬于廣義Liu系統(tǒng);當(dāng)α∈[0.8,1]時(shí),系統(tǒng)屬于廣義Chen's系統(tǒng)。在本方案中,使用統(tǒng)一混沌系統(tǒng)的x、y和z序列分別對(duì)三基色圖像像素進(jìn)行逐點(diǎn)替代加密。主要利用混沌序列產(chǎn)生的實(shí)值混沌序列值的小數(shù)點(diǎn)后7,8和9這3位數(shù)字組成正整數(shù)與256取模運(yùn)算后將得到的整數(shù),然后將整數(shù)作為該像素點(diǎn)的加密密鑰與像素值進(jìn)行與運(yùn)算。

二、圖像文件加密方案

1、Hash序列生成階段

由混沌系統(tǒng)生成的Hash序列主要作為部分密鑰參數(shù),并可以根據(jù)這些參數(shù)對(duì)圖像進(jìn)行身份驗(yàn)證。Hash序列生成過(guò)程為:首先,對(duì)需要加密的彩色圖像的R,G,B分量值利用公式(3)進(jìn)行預(yù)處理,生成與圖像大小相同的二維矩陣。然后,隨機(jī)選擇四個(gè)在O和1之間的初始值x0,x1,x2和X3。最后,生成一個(gè)128位的Hash值。

式(3)中:C為處理后的矩陣,用于Hash序列的生成。R(i,j),G(i,j),B(i,j)分別為彩色圖像的R,G,B分量在(i,j)的像素值。

2、像素置亂和像素值替代算法

在加密方案中,主要的加密過(guò)程是行之間的像素置亂和每行像素的替代過(guò)程及列之間的像素置亂和每列像素的替代過(guò)程。那么,行之間的像素置亂和每行像素的替代過(guò)程為[假設(shè)對(duì)一個(gè)大小為M×N的彩色圖像(A)進(jìn)行加密]:首先,根據(jù)給定的Logistic系統(tǒng)產(chǎn)生與圖像行大小相同的數(shù)組,并根據(jù)數(shù)值大小生成從1開始的正整數(shù)的序列M1并與圖像行號(hào)組成的有序數(shù)列M一一對(duì)應(yīng);然后,將所產(chǎn)生的混沌序列M1的M個(gè)值由小到大按次序排列為正整數(shù)的有序序列M',由于M'與M中的元素一一對(duì)應(yīng),則M被置換成M'。最后,依次取圖像的M1'(i)(i=1,2,…,M)行的像素值再經(jīng)過(guò)像素替代后放入與之對(duì)應(yīng)竹元素所在的行中(該行為另一個(gè)與圖像同樣大小的圖像矩陣B)。

所選取行的像素替代過(guò)程為:首先,根據(jù)前文 所講方法,利用統(tǒng)一混沌系統(tǒng)生成的3個(gè)為N大小的自然數(shù)數(shù)組X1,Y1,Z1分別與所選取行AM1'×N的R,G,B像素值進(jìn)行與運(yùn)算生成新數(shù)組Z1,Y1,Z1;然后,將所生成的Hash序列值與RGB值交換生成新的A1M1'×N(A1M1'×N即為行AM1'×N經(jīng)過(guò)像素替代的新像素值)。Hash序列值與RGB值交換關(guān)系如表1。如4(i,j)的序列為{H(i+j-1)mod 128]到H(i+j+2)mod 128]的值為010},根據(jù)表1可得A(i ,j)新RGB值把分量R和G的值互相交換,而分量B中的像素值不改變。

以上即為行之間的像素置亂和每行像素的替代過(guò)程,列之間的像素置亂和每列像素的替代過(guò)程同理可得。采用這種像素置亂和像素值替代結(jié)合的方法,不僅可以把像素置亂和像素值替代同時(shí)完成,還能提高加密圖像的速度和安全性。

三、圖像文件的加密和解密過(guò)程

1、圖像文件加密過(guò)程

加密步驟描述如下:

Step 1:輸入彩色圖像A;

Step 2:輸入密鑰x0,X1,X2和X3后產(chǎn)生128位Hash值;

Step 3:根據(jù)步驟2所生成的Hash值生成sw(sw←Bin2Dec{mod[(h1+h128),1]}決定行、列交換次序。如果sw為1,則先進(jìn)行列交換,執(zhí)行步驟4。否則先進(jìn)行行交換,執(zhí)行步驟5;

Step 4:對(duì)圖像像素進(jìn)行列交換和像素值的修改。然后,判斷是否已經(jīng)完成二次像素置亂和像素值替代,若已完成,執(zhí)行6,否則執(zhí)行5;

Step 5:對(duì)圖像像素進(jìn)行行交換和像素值的修改。然后,判斷是否已經(jīng)完成二次像素置亂和像素值替代,若已完成,執(zhí)行6,否則執(zhí)行4;

Step 6:輸出彩色圖像B。合成置亂后的三基色圖,即得到加密后的圖像。

2、圖像文件解密過(guò)程

用戶輸入正確的密鑰后,將加密算法逆向運(yùn)算,即可獲得解密圖像。

四、模擬實(shí)驗(yàn)及性能分析

本文的實(shí)驗(yàn)平臺(tái)為MatlabR2011b,選取512 x512的Lena彩色圖像進(jìn)行實(shí)驗(yàn)。取密鑰x0=0.4325111123;x1=0.4578324123;X2=0.1345618234和X3=0.3245653323經(jīng)過(guò)計(jì)算可得Hash值為“3 e66f5383fOOc6533ebbbbb53f668bbf"。取Logistic系統(tǒng)的在行和列的像素置亂中,密鑰μ值分別是3.95和3.98,而初值也分別為μ1←0.(blb2…b32)和μ2←0.(b33b34---b64)。在統(tǒng)一混沌系統(tǒng)在行像素替代中,密鑰α=0.5621,x,y,z的初值分別為x1'←0.(b65 b66…b96),y1'←0.(b97 b98…b128),z1'←0.( b17b18…b48);在列像素替代中α=0.845 6,x,y,z的初值分別為x2'←o.(b15b16…b46),y2'←0.( b47b48…b78),z2'0.(b79b80…b110),經(jīng)過(guò)10次迭代,其加密、解密。

可見,密鑰的微小改變也會(huì)導(dǎo)致解密的失敗,該算法對(duì)密鑰非常敏感。

1、密鑰空間分析

加密系統(tǒng)的密鑰可以這樣描述:key=(M,N),其中M=M1M2…M128是一個(gè)128位的長(zhǎng)密鑰組。N=N1N2…Nh代表程序中各輸入密鑰,如Hash輸入初值,Logistic系統(tǒng)和統(tǒng)一混沌系統(tǒng)的參數(shù)μ,α值等。這樣該算法系統(tǒng)的密鑰空間為2128×8(N為8個(gè))。一個(gè)擁有如此巨大密鑰空間的加密系統(tǒng)可以有效防止暴力破譯。為了進(jìn)一步加強(qiáng)密鑰空間,密鑰還可以擴(kuò)展,如可輸入部分系統(tǒng)的初值等。

2、灰度直方圖

根據(jù)顯示,加密前后的直方圖區(qū)別很大,加密后直方圖分布均勻,表明該方案能夠有效抵御基于像素值統(tǒng)計(jì)的攻擊。

3、相鄰像素的相關(guān)性

可以借助概率論的相關(guān)系數(shù)來(lái)衡量相鄰像素的相關(guān)性,相關(guān)系數(shù)定義為:

為計(jì)算相關(guān)性,分別隨機(jī)地從原圖和密圖的水平,垂直和對(duì)角線分別隨機(jī)取1500個(gè)相鄰像素對(duì),圖3顯示的是原圖和加密后圖像在R分量的水平相關(guān)分布圖。同時(shí),對(duì)彩色圖像的B層和G層做了相同的測(cè)試,結(jié)果均與圖3相似。所有相關(guān)數(shù)如表2。

圖3顯示了圖像加密前后圖像R分量在水平方向的相關(guān)性顯示結(jié)果,可看出明文相鄰像素的相關(guān)性很強(qiáng),密文有效地掩蓋了圖像的突擊特征。同時(shí),表2還顯示了加密前后各分量在垂直、水平和對(duì)角線方向的相關(guān)性計(jì)算結(jié)果,表明了加密后的圖像像素之間的相關(guān)性大大降低了。

小知識(shí)之Hash值

Hash算法將任意長(zhǎng)度的二進(jìn)制值映射為固定長(zhǎng)度的較小二進(jìn)制值,這個(gè)小的二進(jìn)制值稱為Hash值。Hash值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。如果散列一段明文而且哪怕只更改該段落的一個(gè)字母,隨后的Hash都將產(chǎn)生不同的值。要找到散列為同一個(gè)值的兩個(gè)不同的輸入,在計(jì)算上來(lái)說(shuō)基本上是不可能的。