胡春杰 嵇海祥 牛智星 阮 聰 陳 翠
(1.江蘇南水科技有限公司 南京 210012)(2.水利部南京水利水文自動(dòng)化研究所 南京 210012)(3.水利部水文水資源監(jiān)控工程技術(shù)研究中心 南京 210012)
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展及普及,信息安全與存儲(chǔ)問題越來越突出。數(shù)字圖像因其形象、直觀與生動(dòng)等特點(diǎn),成為人們多媒體交流的重要傳輸介質(zhì)之一。為了確保圖像在傳輸過程中的安全,最有效的方法就是對(duì)數(shù)字圖像進(jìn)行加密,圖像加密成為信息安全領(lǐng)域中一個(gè)重要的研究熱點(diǎn)。數(shù)字圖像可以看成二維的序列,其數(shù)據(jù)量比文本大的多。傳統(tǒng)的分塊加密方法,加密效率比較低,不再適用于圖像加密[1~2]。而混沌系統(tǒng)對(duì)初值敏感性、偽隨機(jī)性等特征,可以產(chǎn)生多變復(fù)雜的偽隨機(jī)序列,使得其應(yīng)用到圖像加密中非常契合。近年來,眾多學(xué)者將混沌加密思想引入到圖像加密中,越來越受到歡迎[3~8]。
文獻(xiàn)[9]提出了經(jīng)典的基于“置亂—擴(kuò)散”的圖像加密結(jié)構(gòu),取得了不錯(cuò)的加密效果。文獻(xiàn)[10]先利用三維的貓映射對(duì)圖像的置亂進(jìn)行置亂,再通過Logistic 映射對(duì)圖像的像素值進(jìn)行替代加密,算法實(shí)現(xiàn)簡(jiǎn)單、執(zhí)行時(shí)間短等優(yōu)點(diǎn),但不能抵抗選擇明文攻擊。文獻(xiàn)[11]利用一維Logistic混沌映射對(duì)圖像像素位置進(jìn)行置換,再用Logistic 混沌映射進(jìn)行像素值置亂,達(dá)到圖像雙重加密的效果,但由于單一的混沌映射加密,其算法密鑰空間小,不能有效抵御窮舉攻擊。文獻(xiàn)[12]提出了一種高效率的分塊圖像置亂算法,提高了加密的效率,但是沒有解決Arnold變換周期問題,當(dāng)攻擊者破譯擴(kuò)散加密過程后,對(duì)置亂加密的破譯就簡(jiǎn)單多了。
綜合上述,本文提出一種基于改進(jìn)Arnold映射二次置亂的圖像加密算法。首先結(jié)合Logistic映射和改進(jìn)的Arnold 映射先進(jìn)行圖像全局置亂再進(jìn)行圖像分塊置亂,達(dá)到了圖像二次置亂的效果,再將置亂圖像中各個(gè)像素和前面相鄰的像素進(jìn)行位異或運(yùn)算、交叉換位等操作,最終得到加密圖像。實(shí)驗(yàn)數(shù)據(jù)表明,該算法解決了Arnold變換置亂效果差和周期性的問題,并且可以有效地抵御各種統(tǒng)計(jì)攻擊。
Arnold 映射[13]是在遍歷理論的研究中提出的一種非線性映射,其方程公式定義如下:
其中(x,y)為明文圖像的像素點(diǎn),(x?,y?)為置亂后圖像的像素點(diǎn)。參數(shù)a,b 均為正整數(shù),N 是圖像矩陣的階數(shù)。將式(1)寫成方程組的表達(dá)式為
為了加強(qiáng)圖像置亂的效果,對(duì)方程進(jìn)行非線性化處理,改進(jìn)的方程表達(dá)式為
傳統(tǒng)的Arnold映射具有周期性,在圖像位置置亂時(shí)參數(shù)沒有發(fā)生改變,經(jīng)過一定次迭代后會(huì)恢復(fù)出原始明文圖像。對(duì)于大小不同的圖像,其變換周期也是不一樣的,如表1 所示。當(dāng)攻擊者破解圖像像素值替換與改變過程后,置亂階段的破解就比較容易了,因此傳統(tǒng)的Arnold 映射安全性不高,易破譯。
表1 不同階數(shù)N下的變換周期
為了解決上述Arnold 映射置亂安全性差的問題,引入Logistic 映射生成控制參數(shù)a,b,這樣產(chǎn)生的Arnold 置亂矩陣不再具有周期性。Logistic 映射方程表達(dá)式如式(4)所示:
其中當(dāng)3.5699<μ ≤4 時(shí)系統(tǒng)處于混沌狀態(tài)。Arnold映射控制參數(shù)的具體過程如下[14]:
1)將式(4)方程迭代 300 次,減少暫態(tài)效應(yīng)帶來的不好影響。
2)生成Logistic 序列仔通過式(5)產(chǎn)生Arnold映射控制參數(shù)。
設(shè)原始明文圖像A 大小為m*n,圖像加密算法的流程圖如圖1所示。
圖1 圖像加密流程圖
3.1.1 全局置亂
1)通過產(chǎn)生控制參數(shù)生成Arnold 映射混沌置亂方程,并對(duì)原始明文圖像A 進(jìn)行一次像素置亂變換。
2)重復(fù)步驟1)操作n1輪,得到置亂圖像B。
3.1.2 圖像分塊置亂
將置亂后的圖像B分解成大小為n*n 圖像塊,每塊中有m*m 個(gè)像素點(diǎn),可以用矩陣形式表示如下:
其中Bij為n*n矩陣,i,j=1,2,…m,將每個(gè)分塊圖像看成一個(gè)整體,然后對(duì)其進(jìn)行置亂,得到相應(yīng)的混亂的圖像塊,達(dá)到了圖像二次置亂的效果,重復(fù)n2 輪直至每塊圖像的置亂完成,最終得到置亂圖像C。
首先對(duì)置亂圖像C 中每個(gè)像素和它前面相鄰的像素進(jìn)行按位異或運(yùn)算,然后對(duì)其異或運(yùn)算的結(jié)果進(jìn)行像素值的交叉換位,得出最終加密圖像。其主要步驟如下:
1)設(shè)置亂圖像C的第一個(gè)像素的灰度值為C(1)與255 進(jìn)行異或,得到 C?(1),再對(duì) C?(1)進(jìn)行交叉換位,得到Q(1)。具體的換位操作如圖2所示。
圖2 交叉換位示意圖
圖 2中的 bit1,bit2,…,bit8 分別表示像素點(diǎn)灰度值的第 1,2,…,8 位。
2)置亂圖像C 的第二個(gè)像素的灰度值C(2)與Q(1)進(jìn)行異或操作,得到 C?(2),再對(duì) C?(1)進(jìn)行交叉換位,得到Q(2)。
3)依次將圖像的每個(gè)灰度值 C(i)與 Q(i-1)進(jìn)行異或,得到 C?(i);依據(jù)交叉換位規(guī)則得到Q(i)。最后將一維Q(i)換成圖像D,即得到最終加密圖像D。
解密過程為加密過程的相反過程,只要得到正確的密鑰條件下,按照加密過程的相反操作處理就可以恢復(fù)得到原始明文圖像。
本文算法采用在Matlab7.0 平臺(tái)下進(jìn)行仿真實(shí)驗(yàn),硬件壞境為系統(tǒng)Win7,處理器為i5,內(nèi)存4G 的PC 機(jī)。設(shè)置Logistic 映射初始值 x0=0.35,μ =3.7;全局置亂次數(shù)n1=200,分塊置亂次數(shù)n2=200,運(yùn)行得到加密圖像,圖3(b)為全局置亂置亂圖,圖3(c)為先全局置亂再分塊置亂后得到的置亂圖像。
圖3 圖像加密與解密
圖4(a)為明文圖像的灰度直方圖,圖4(b)為密文圖像的灰度直方圖。從圖4 可以看出,原始明文圖像的像素點(diǎn)分布相當(dāng)不均勻,而密文圖像的像素點(diǎn)分布均勻平坦,有效地掩蓋了明文圖像的直方灰度信息,可以抵御圖像像素值的統(tǒng)計(jì)破譯。
圖4 加密前后的灰度直方圖
在本文算法中,密鑰 key=(x0,μ,n1,n2),若仿真實(shí)驗(yàn)時(shí)計(jì)算機(jī)的壞境可以達(dá)到每個(gè)參數(shù)精度都有10-16,那么密鑰空間可達(dá)1064,以及加上置亂過程有兩個(gè)外層循環(huán),因此想用使用窮舉攻擊破譯密文圖像,成功的概率是非常渺小的。
信息熵可以衡量數(shù)字圖像中所包含信息的不確定性,圖像越是混亂,灰度值分布越均勻,其計(jì)算公式為
其中P(mi)是信源取第i 個(gè)符號(hào)mi的概率,由文獻(xiàn)[14]可知,一個(gè)理想的隨機(jī)圖像信息熵最大值為8。通過式(6)計(jì)算得到本文加密后圖像的信息熵為7.9900,與理論值8 非常接近,可以得出密文圖像灰度分布是均勻的,能夠有效地抵御熵攻擊。
一般情況下,一幅有實(shí)際意義的明文圖像包含了大量的冗余信息,其相鄰像素間相關(guān)性比較高。為了分析明文圖像和加密圖像的相關(guān)性,使用式(7)計(jì)算相關(guān)性:
式中n是像素點(diǎn)的個(gè)數(shù);E(x)、E(y)分別是x、y的期望,cov(x,y)是 x,y 的協(xié)方差,r 是相鄰像素相關(guān)系數(shù),現(xiàn)分別從在明文圖像和密文圖像中垂直、水平、對(duì)角線方向上隨便選取2000 對(duì)相鄰的像素點(diǎn),圖5~圖7 分別是明文原始圖像和密文圖像在三個(gè)方向上的像素的分布情況。
圖5 垂直方向的相關(guān)性
由表2 可知,密文圖像的相鄰像素點(diǎn)相關(guān)性非常小,相關(guān)系數(shù)十分趨近于0。說明本算法具有良好的擴(kuò)散性能。與其他加密算法相比較[5~6,8],本文加密算法的密文圖像的r 系數(shù)較小,破壞相關(guān)性更好。
圖6 水平方向的相關(guān)性
圖7 對(duì)角方向的相關(guān)性
表2 相鄰像素點(diǎn)的相關(guān)系數(shù)
為了測(cè)試一個(gè)像素值的變化對(duì)算法整體加密結(jié)果的影響,采用兩種常見的措施[16]:像素變化率(NPCR)和統(tǒng)一平均變化程度(UACI)。NPCR 表示原始圖像一個(gè)像素發(fā)生改變時(shí),該密文圖像的變化率。UACI用來測(cè)量原始圖像和密文圖像之間的平均變化程度。
本文提出的是一種基于改進(jìn)Arnold 映射二次置亂的圖像加密算法,在置亂階段利用改進(jìn)Arnold映射進(jìn)行圖像置亂,不僅提高了圖像置亂效果,而且引入了Logistic 映射產(chǎn)生控制參數(shù),很好地解決了Arnold 映射具有周期性帶來的安全性差的問題。全局置亂后再進(jìn)行分塊置亂,從而實(shí)現(xiàn)了對(duì)圖像二次置亂,充分地削弱了圖像的相關(guān)性,進(jìn)一步提高圖像的置亂度和置亂性能;最后再進(jìn)行相鄰像素間按位異或、交叉換位操作最終得到加密圖像。通過仿真表明,該算法置亂效果好,安全性較好,非常適合圖像的加密傳輸,具有良好的實(shí)用價(jià)值。