基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

隨著信息技術(shù)的發(fā)展,圖像保密技術(shù)將在越來越多的應(yīng)用場(chǎng)合受到重視。由于圖像文件加密具有數(shù)據(jù)量大、相鄰像素間相關(guān)性強(qiáng)等特點(diǎn), 一些傳統(tǒng)的加密算法并不適合于加密圖像文件。 而廣義的貓映射和單向耦合映射格子, 兩種方法分別具備了圖像加密所需的部分要素。 但是采用單一映射加密在密鑰長(zhǎng)度和抵抗窮舉攻擊等方面都有一定缺陷。 為此,我們將分組密碼學(xué)中的交替結(jié)構(gòu)首先運(yùn)用到基于混沌映射的圖像加密系統(tǒng)中, 交替使用兩種混沌映射進(jìn)行多輪次的置換、擴(kuò)散和替代,經(jīng)實(shí)驗(yàn)證明該加密算法能夠有效地抵抗統(tǒng)計(jì)分析和選擇性明文攻擊。

一、廣義貓映射與單向耦合映射格子?

算法中選用了兩種混沌映射,它們各具特色,?這里首先進(jìn)行簡(jiǎn)單的介紹。

1、廣義貓映射?

貓映射是人們所熟知的一種混沌映射,其數(shù)學(xué)表達(dá)式為:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

其中伴隨陣滿足|C|=1, 由于采用了mod1運(yùn)算, 貓映射的相空間限制在(0,1)內(nèi)。 為了能夠運(yùn)用于圖像加密, 需要將貓映射擴(kuò)展到N × N的矩陣內(nèi)并離散化, 有:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

這樣, 相空間推廣到{0,1,2,...,N?1}", 即伴隨陣中參數(shù)和各狀態(tài)變量都取0到1N?的正整數(shù), 并仍需滿足|C|=ad-bc=1。 (2)式稱為廣義貓映射, 其逆映射為 :

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

在對(duì)N×N的圖像塊進(jìn)行像素位置置換時(shí), 首先建立一個(gè)等大的輸出空間, 然后將此空間中的每個(gè)像素坐標(biāo)(i,j)作為初始值(x0,y0)代入(2)式中, 通過一次迭代產(chǎn)生新的坐標(biāo)(x1,y1), 并將輸入空間中的第(x1,y1),個(gè)像素放置到輸出空間的(x0,y0)位置中。為了表述方便, 可定義一個(gè)坐標(biāo)矩陣變換Catmap(?)來完成對(duì)所有像素的位置置換。 例如, 一個(gè)3×3像素塊的初始坐標(biāo)空間為:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

設(shè)基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法,?則進(jìn)行一次迭代得到的輸出坐標(biāo)空間I1為 :

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法由(4)式可見,?廣義貓映射能夠在N×N的二維空間內(nèi)進(jìn)行保面積置換,?且置換中各系數(shù)都為整數(shù),?運(yùn)算不引入誤差。建議采用2?bits密鑰從4個(gè)矩陣

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法中選取一種形式作為伴隨陣C。需要說明的是,?為了能夠在二維空間中充分地置換,?往往需要適當(dāng)?shù)牡螖?shù),?但這并不增強(qiáng)保密性,?因?yàn)椋?/p>

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法從而可直接對(duì)伴隨陣B進(jìn)行等效密鑰分析。

?2、單向耦合映射格子?

作為一種二維時(shí)空混沌模型,?OCML在混沌保密研究特別是圖像加密技術(shù)中備受青睞。?OCML模型由下式給出[6,9]:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

式中t和i分別為時(shí)間坐標(biāo)和空間坐標(biāo);?耦合系數(shù)ε滿足0<ε<1;?局部更新函數(shù)f通常選取Logistic映射,?即f(x)=μx(1-x)。當(dāng)μ=4并給定行、列的初始條件時(shí),?二維時(shí)空陣列中的所有格子在(0,1)內(nèi)處于混沌狀態(tài)。

加密時(shí)可選用32位或更高精度的定點(diǎn)運(yùn)算,?將每個(gè)格子的前24?bits分別與真彩圖像中R,?G,?B三基色的各8?bits信息進(jìn)行異或。這樣,?對(duì)所有像素實(shí)施了有效的替代和混淆,?使密文圖像的統(tǒng)計(jì)特性變得十分復(fù)雜,?難于破譯。

二、新的交替結(jié)構(gòu)圖像分組加密算法?

有資料指出:合理的交替使用具有替代和置換等功能的基本密碼,?所得結(jié)果的密碼強(qiáng)度將強(qiáng)于所有單個(gè)密碼的強(qiáng)度.?結(jié)合上一節(jié)中的兩種混沌映射,?本節(jié)將給出一種新的針對(duì)二維圖像的分組加密算法。

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

加密操作首先對(duì)圖像數(shù)據(jù)進(jìn)行規(guī)格化(分割或合并),?使每個(gè)被處理單元具有N×2N個(gè)像素(處理單元大小視應(yīng)用場(chǎng)合而定)。算法的詳細(xì)加密過程為(如圖1(a)):

1)?首先將N×2N個(gè)像素的明文圖像分成N×N的左右兩塊,?即L0和R0;

2)?以K1作為子密鑰,?產(chǎn)生N×N的OCML矩陣V1,?然后將V1與L0進(jìn)行異或運(yùn)算;

3)?采用結(jié)合灰度擴(kuò)散的廣義貓映射對(duì)步驟2的輸出像素塊進(jìn)行二維空間置換,?廣義貓映射使用18?bits子密鑰K1*;

4)?將步驟3)的輸出與R0進(jìn)行異或作為下一輪的左半部分,?而把步驟2)的結(jié)果作為右半部分;

5)?重復(fù)步驟2)—4),?進(jìn)行n輪加密。最后將左右兩部分(Ln和Rn)換位,?并分別與Vn+1和Vn+2(由子密鑰Kn+1+和Kn+2產(chǎn)生)進(jìn)行異或運(yùn)算,?左右兩塊合并后完成加密。

為了抵抗選擇性明文攻擊, 每一輪的廣義貓映射都與灰度擴(kuò)散相結(jié)合. 考慮以下方式使各像素的灰度值相互依賴: 設(shè)Cn(i,j)是置換后的像素灰度, Cn+1(i',j')是循環(huán)中上一個(gè)處理過的像素灰度, 則置換后的像素灰度Cn+1(i,j)更新為:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

式中系數(shù)A為任意整數(shù),?稍大的取值(如A=99)可使各灰度值的拉伸折疊作用放大,?從而增強(qiáng)像素間的灰度擴(kuò)散效果。圖1中將結(jié)合灰度擴(kuò)散的廣義貓映射表示為Catmap*(?)。

如圖1(b)所示,?加密過程的每一輪都需要以32?bits密鑰iKey來產(chǎn)生兩種子密鑰Ki和K*i。其中Ki用來產(chǎn)生N×N個(gè)像素的OCML時(shí)空混沌矩陣Vi;?18?bits的K*i用于廣義貓映射, K*i中2?bits用來選擇伴隨陣C的形式,?余下的兩個(gè)8?bits用來確定C中的兩個(gè)參數(shù)。由iKey產(chǎn)生Ki和K*i的詳細(xì)過程如下:

1)?將Keyi擴(kuò)展為50bits.?擴(kuò)展方法為對(duì)32-bitiKey簡(jiǎn)單置換后查表得到50bits的擴(kuò)展輸出;

2)?取18?bits作為廣義貓映射的子密鑰K*i,?同時(shí)將余下的32?bits作為Ki進(jìn)行迭代(可選用Logistic映射)產(chǎn)生OCML時(shí)空混沌矩陣的行、列邊界,?并進(jìn)一步根據(jù)(6)式得到時(shí)空混沌矩陣Vi。

系統(tǒng)的解密過程如圖1(c)所示, 很容易從加密算法推導(dǎo)出來。N×2N的密文圖像仍分成左右兩部分(L0 和 R0), 解密時(shí)各子密鑰的使用順序與加密時(shí)相反。與傳統(tǒng)的分組加密方式不同的是, 解密算法的結(jié)構(gòu)與加密結(jié)構(gòu)是相同的, 而不是加密的逆過程; 解密時(shí)結(jié)合灰度擴(kuò)散的廣義貓映射(Catmap*(?))仍使用正向變換(同(7)式), 而不是逆運(yùn)算。解密算法可由以下偽代碼表示:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

三、實(shí)驗(yàn)及安全性分析?

本文分別對(duì)大量灰度和彩色圖像進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)中OCML時(shí)空混沌矩陣采用32位定點(diǎn)運(yùn)算,?耦合系數(shù)ε和局部更新函數(shù)的參數(shù)μ為確定值,?其中ε=0.875(0e0000000h), μ=4(做乘法運(yùn)算時(shí)左移兩位)。根據(jù)圖1(b)的子密鑰產(chǎn)生方法,?每一輪所使用的主密鑰都為32bits,?如果加密輪次設(shè)定為n=8,?此時(shí)的密鑰長(zhǎng)度為:?32*8+32+32=320?bits。隨著迭代輪數(shù)的增加,?密鑰將成為天文數(shù)字,?很難進(jìn)行窮舉攻擊。

1、密鑰敏感性和圖像統(tǒng)計(jì)特性?

設(shè)計(jì)加密算法的一個(gè)衡量標(biāo)準(zhǔn)就是雪崩效應(yīng),?根據(jù)嚴(yán)格雪崩效應(yīng)準(zhǔn)則,?若改變密鑰中的任意一位,?將導(dǎo)致密文分組中大約一半數(shù)據(jù)位的變化。實(shí)驗(yàn)將512×512像素的明文圖像分割為256×512像素的上下兩塊,?分別進(jìn)行了加解密處理。統(tǒng)計(jì)結(jié)果表明,?在8輪加密中,?僅改變某一輪密鑰iKey的任意位后,?整個(gè)圖像發(fā)生變化的平均數(shù)據(jù)位達(dá)到49%,?接近一半。密鑰敏感性的測(cè)試結(jié)果如圖2所示。

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

在子密鑰的敏感性測(cè)試中,?針對(duì)單輪加密,?選取500對(duì)具有細(xì)微差異的子密鑰,?分別對(duì)OCML矩陣替代(使用子密鑰 Ki)、結(jié)合灰度擴(kuò)散的廣義貓映射(使用子密鑰K?*i)以及二者的乘積操作(使用子密鑰K?i和K*i)做了密鑰敏感性測(cè)試,?并對(duì)其雪崩現(xiàn)象進(jìn)行了統(tǒng)計(jì),?得到子密鑰變化后的平均數(shù)據(jù)位變化率,?如表1所示.?實(shí)驗(yàn)中子密鑰iK只改變最低有效位, K*i僅改變?nèi)我庖晃弧M瑫r(shí),?密文圖像的統(tǒng)計(jì)特性發(fā)生了明顯變化,?如圖3所示。加密后的灰度分布十分均勻,?對(duì)于不同的明文圖像及密鑰都得到了類似的密文直方圖。由于加密過程將置換和替代多輪交替使用,?乘積密碼的優(yōu)點(diǎn)得以體現(xiàn),?這就使我們所提出的對(duì)于廣義貓映射的等效密鑰分析很難奏效。

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

2、明文敏感性及密文相關(guān)性?

如果明文的微小改變能夠引起密文的很大變化,?那么已知明文或選擇性明文攻擊將難以起效。?分別在多幅圖像上隨機(jī)選取一點(diǎn)改變其灰度值,?對(duì)原圖和改變后的圖像使用相同密鑰加密,?在不同的加密輪次下,?密文的平均數(shù)據(jù)位變化率如圖4所示:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法
通常圖像的相鄰像素具有一定的相關(guān)性,?而對(duì)于加密后的圖像,?相關(guān)性越小說明像素的置亂效果越好.?從備測(cè)試圖像中選取1000組相鄰的像素對(duì),?記為(xi,yi),?得到8輪加密前后這些像素對(duì)的相關(guān)分布情況,?如圖5所示。

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法 像素對(duì)間的相關(guān)系數(shù)可根據(jù)下式得到:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

其中:

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

Ex和D(x)分別為xi的離散化均值和方差。?實(shí)驗(yàn)分別對(duì)水平、垂直和對(duì)角各1000組(即N=1000)相鄰像素對(duì)做了測(cè)試,?結(jié)果如表2所示。加密后不同方向像素對(duì)間的相關(guān)系數(shù)都大大降低,?相關(guān)性在極大程度上被破壞。

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

3、密文圖像受損測(cè)試

由于算法中加密和解密具有相同的結(jié)構(gòu),?因此解密過程事實(shí)上相當(dāng)于對(duì)密文的再次加密。所以,?加密系統(tǒng)對(duì)明文的敏感性會(huì)影響到受損密文解密后的圖像質(zhì)量。要提高抗損傷能力,?可適度降低系統(tǒng)的算法強(qiáng)度。實(shí)驗(yàn)中取消了(7)式的灰度擴(kuò)散操作,?對(duì)密文圖像分別添加了Gauss噪聲、椒鹽噪聲和幾何擦除等人為干擾,?解密后的圖像仍可在一定程度上恢復(fù)。圖6為加密四輪時(shí)受損密圖的解密結(jié)果;?表3給出了受損密圖解密后與原始明文圖像的相似程度,?這里分別以均方誤差均值(MSE)和絕對(duì)誤差均值(MAE)來表示。

基于混沌映射的一種交替結(jié)構(gòu)圖像加密算法

由表3可以看出,?Gauss噪聲對(duì)圖像質(zhì)量恢復(fù)的影響比較顯著;?而擦除和雙極性脈沖噪聲(椒鹽噪聲)的影響要小一些,?可通過濾波及增強(qiáng)等手段進(jìn)一步還原圖像.?隨著噪聲強(qiáng)度和損失面積的增大,?受損圖像的恢復(fù)能力明顯下降。需要說明的是,?如果算法中使用了灰度擴(kuò)散操?作,?那么受損圖像將難以恢復(fù)。使用時(shí)應(yīng)視不同應(yīng)用場(chǎng)合,?在算法強(qiáng)度和圖像恢復(fù)能力之間加以權(quán)衡。

本文提出了一種結(jié)合廣義貓映射和單向耦合映射格子的圖像分組加密算法,?交替地使用兩種二維混沌映射進(jìn)行多輪次的加密操作。相對(duì)于單一混沌映射的加密方法具有更高的密碼強(qiáng)度,?且解密算法與加密算法具有相同的結(jié)構(gòu),?不需另行設(shè)計(jì)。此外,?由于采用了Feistel型的分組密碼結(jié)構(gòu), 本算法可同時(shí)完成對(duì)兩塊明文圖像(即L0和R0)的加密, 這有助提高系統(tǒng)吞吐率, 符合圖像加密的特點(diǎn)。安全性分析結(jié)果表明:該加密算法具有很大的密鑰空間, 對(duì)密鑰十分敏感, 對(duì)多種攻擊手段都具有較好的免疫性。 實(shí)驗(yàn)驗(yàn)證采用32位定點(diǎn)運(yùn)算, 算法執(zhí)行速度高且代碼緊湊, 適用于軟件加密系統(tǒng), 而且很容易移植到硬件平臺(tái)上, 具有良好的應(yīng)用前景。

小知識(shí)之耦合

耦合是指兩個(gè)或兩個(gè)以上的電路元件或電網(wǎng)絡(luò)的輸入與輸出之間存在緊密配合與相互影響,并通過相互作用從一側(cè)向另一側(cè)傳輸能量的現(xiàn)象;概括的說耦合就是指兩個(gè)或兩個(gè)以上的實(shí)體相互依賴于對(duì)方的一個(gè)量度。