像素值雙重置換與像素位置的混沌加密算法

目前加密技術(shù)絕大部分只是對數(shù)字圖像的像素位置進(jìn)行混沌加密,即只是對數(shù)字圖像的像素位置進(jìn)行置換,而像素值卻保持不變,這些導(dǎo)致這些加密技術(shù)存在一些安全隱患,如圖像的直方圖在置換前后仍然一致。為克服這些缺陷,我們使用改變圖像像素位置和像素值的思想對數(shù)字圖像的混沌加密技術(shù)進(jìn)行研究,提出一種基于像素值雙重置換與像素位置的混沌加密算法。

一、數(shù)字圖像像素位置與像素值雙重置換的混沌加密

1、混沌圖像加密技術(shù)

混沌圖像加密技術(shù)是近年來應(yīng)用非常普遍的一種數(shù)字圖像加密技術(shù),混沌現(xiàn)象是指在非線性動態(tài)系統(tǒng)中出現(xiàn)的確定性和類似隨機(jī)的過程,混沌動力學(xué)在此基礎(chǔ)上得到迅猛發(fā)展,這使得混沌可以用來作為一種新的密碼體系,可以加密文本、聲音及圖像數(shù)據(jù)。1997年Fridrich首次將混沌加密方法應(yīng)用到圖像加密中,隨后,混沌圖像加密技術(shù)成為數(shù)字圖像加密技術(shù)研究的熱點(diǎn)。

混沌加密的原理:將原始信息與混沌發(fā)生器產(chǎn)生的混沌序列進(jìn)行特定的運(yùn)算,使原始信息轉(zhuǎn)換為具有類似隨機(jī)噪聲的性態(tài),從而對數(shù)字圖像文件加密。解密就是將加密信息與混沌發(fā)生器產(chǎn)生的混沌序列進(jìn)行反運(yùn)算,去除混沌信號,使原始信息恢復(fù)。混沌加密與解密原理如圖1所示。

像素值雙重置換與像素位置的混沌加密算法

混沌加密技術(shù)效率高、操作速度快、實施簡易、計算費(fèi)用低廉,使得基于混沌的圖像加密[17]可行性好,在軍事、工業(yè)以及商業(yè)應(yīng)用的圖像和視頻通信方面具有廣闊前景。然而傳統(tǒng)的混沌加密技術(shù)只是利用混沌序列與原始信息進(jìn)行某種運(yùn)算,使得原始信息變?yōu)榫哂蓄愃齐S機(jī)噪聲的性態(tài),從而達(dá)到加密目的。目前絕大多數(shù)混沌加密算法實質(zhì)上是單一的圖像像素值置亂或圖像像素位置置亂,而單一的使用其中任一種都無法保證圖像具有較高的安全性,存在一定的安全隱患。

2、數(shù)字圖像像素位置與像素值雙重置換的混沌加密

數(shù)字圖像通常用二維數(shù)組Am×n保存,每個數(shù)組元素ai,j的值表示數(shù)字圖像對應(yīng)像素的RGB灰度值以及Alpha值,混沌加密技術(shù)主要是通過數(shù)學(xué)變換,即二維矩陣的數(shù)學(xué)變換,將原數(shù)字圖像矩陣Am×n置換為二維矩陣Bm×n,使數(shù)字圖像像素點(diǎn)位置發(fā)生變換,從而破壞原數(shù)字圖像的有序性,達(dá)到置亂的目的,從而實現(xiàn)對數(shù)字圖像加密。但存在一個缺陷,就是無論經(jīng)過多么復(fù)雜的變換,只改變了數(shù)字圖像像素位置,而數(shù)字圖像矩陣中的元素即圖像像素的灰度值和Alpha值沒有改變,因此圖像的灰度直方圖不會發(fā)生變化。攻擊者可能通過像素比較的方法加以破解,因而像素位置置亂與像素值置亂相結(jié)合成為發(fā)展的必然。本文提出的基于數(shù)字圖像像素位置與像素值雙重置換的混沌加密思想就是為此而提出的,其加密思想是:不但對數(shù)字圖像的像素位置進(jìn)行置換,而且對其像素值也進(jìn)行變換,從而改變數(shù)字圖像的直方圖,使安全性進(jìn)一步提高。具體的加密和解密過程如圖2所示:

像素值雙重置換與像素位置的混沌加密算法

其加密過程具有兩個步驟:第一步對數(shù)字圖像進(jìn)行像素位置置換,即對像素位置加密;第二步對經(jīng)過像素位置加密得到的密圖再進(jìn)行像素值的變換,即通過設(shè)置加密算法,對密圖的每個像素的像素值進(jìn)行加密,改變密圖的R、G、B值,甚至改變Alpha值(透明度),即改變各像素的灰度值。表示數(shù)字圖像的二維矩陣中對應(yīng)的每個元素值就表示數(shù)字圖像對應(yīng)位置的像素值,一般情況是32位4個字節(jié),具體的存儲結(jié)構(gòu)如圖3所示:

像素值雙重置換與像素位置的混沌加密算法

通過加密算法對每個像素的32bit進(jìn)行置換,即可以改變圖像的像素值。這種加密方法彌補(bǔ)了常用的加密技術(shù)只置換像素位置的不足,將提高加密算法的抗攻擊能力。

二、像素值雙重置換與像素位置的混沌加密算法加密算法與解密算法

基于混沌的數(shù)字圖像像素位置與像素值雙重置換的加密過程如圖2所示,分兩個步驟進(jìn)行,第一步就是對圖像像素位置進(jìn)行置換,第二步再進(jìn)行像素值的置換,從而得到密圖。在混沌系統(tǒng)中Logistic混沌系統(tǒng)應(yīng)用非常廣泛,而且具有代表性,因此在加密和解密過程中采用的混沌函數(shù)是Logistic混沌函數(shù)。此系統(tǒng)具有極其復(fù)雜的動力學(xué)行為,在加密領(lǐng)域的應(yīng)用十分廣泛,其定義如下:

像素值雙重置換與像素位置的混沌加密算法

其中u_(0,4]被稱為Logistic參數(shù)。研究表明,當(dāng)X_(0,1)時,Logistic映射處于混沌狀態(tài),由初始條件X0在Logistic映射作用下產(chǎn)生的序列是非周期的、不收斂的,而在此范圍之外,生成的序列必將收斂于某一個特定的值。

第一步對數(shù)字圖像像素位置進(jìn)行置換的算法如下:

(1)將數(shù)字圖像矩陣Am′n按行掃描形成長度為m′n的一維序列P{P1,P2,......,Pm′n}。

(2)用Logistic混沌函數(shù)產(chǎn)生一個長度為m′n的混沌序列L{L1,L2,......,Lm′n},并且將L{L1,L2,......,Lm′n}與P{P1,P2,......,Pm′n}中的元素一一對應(yīng)。

(3)將所產(chǎn)生的混沌序列L{L1,L2,......,Lm′n}的m′n個值由小到大排序,形成有序序列L'{L'1,L'2,......,L'm′n},由于L{L1,L2,......,Lm′n}與P{P1,P2,.....,Pm′n}中的元素一一對應(yīng),P{P1,P2,......,Pm′n}也由同樣的置換規(guī)則置換成P'{P'1,P'2,......,P'm′n}。

(4)將一維序列P'{P'1,P'2,......,P'm′n}按順序每m個元素構(gòu)成一行,從而得到二維矩陣Bm′n,Bm′n就是加密后的圖像矩陣。

具體的置換過程如圖4所示。

像素值雙重置換與像素位置的混沌加密算法

第二步對數(shù)字圖像像素值進(jìn)行置換的算法如下:

(1)構(gòu)造一個長度為256的一維序列C{C0,C1,......,C255},令C0=0,C1=1,…,C255=255。

(2)用Logistic混沌函數(shù)產(chǎn)生一個長度為256的混沌序列L{L0,L1,......,L255},并且將序列L{L0,L1,......,L255}與序列C{C0,C1,......,C255}中的元素一一對應(yīng)。

(3)將所產(chǎn)生的混沌序列L{L0,L1,......,L255}的256個值由小到大排序,形成有序序列L'{L'0,L'1,......,'255},由于L{L0,L1,.....,L255}與序列C{C0,C1,......,C255}中的元素一一對
應(yīng),C{C0,C1,......,C255}也由同樣的置換規(guī)則置換成C'{C'0,C'1,......,C'255}。

(4)將Bm′n中的元素bi,j(表示經(jīng)過像素位置置換所得加密圖像的像素值)的R、G、B、Alpha分量分別進(jìn)行像素值置換,具體置換規(guī)則:

C{C0,C1,......,C255}與C'{C'0,C'1,......,C'255}中的元素是一一對應(yīng)的,將Bm′n中的元素bi,j進(jìn)行置換,Bm′n是表示彩色數(shù)字圖像的矩陣,因此bi,j的R、G、B、Alpha分量的值不同,要對彩色數(shù)字圖像進(jìn)行加密,則必須分別對bi,j的R、G、B、Alpha幾個分量進(jìn)行像素值混沌加密。以bi,j的R分量為例,若bi,j的R分量原來為Cr,則將bi,j的R分量轉(zhuǎn)換為C'r,即用C'r置換bi,j的R分量,從而對bi,j的R分量進(jìn)行了像素值的置換。

(5)重復(fù)(4),采用類似的算法對bi,j的G、B、Alpha分量進(jìn)行像素值的混沌加密,從而對bi,j的R、G、B、Alpha分量分別了進(jìn)行像素值混沌加密,由此得到數(shù)字圖像矩陣Cm′n即是經(jīng)過像素位置與像素值雙重混沌加密后的密圖。

解密過程也分為兩個步驟,與加密過程正好互逆,先將密圖Cm′n經(jīng)過像素值的混沌解密得到經(jīng)過像素位置混沌加密的密圖Bm′n,最后將Bm′n經(jīng)過像素位置的混沌解密,得到原數(shù)字圖像Am′n,完成解密。根據(jù)加密的算法設(shè)計,易得具體的解密算法。

三、加密效果比較

1、加密效果圖

為檢驗算法的加密效果,以圖5(a)為原數(shù)字圖像進(jìn)行加解密實驗。圖5(b)為只經(jīng)過像素位置置換的加密密圖,圖5(c)為只經(jīng)過像素值置換的加密密圖,圖5(d)為經(jīng)過像素位置與像素值雙重置換的加密密圖。

由圖5可以得出,只經(jīng)過像素位置混沌加密的密圖圖5(b)效果比較好,圖像像素點(diǎn)分布比較均勻。而只經(jīng)過像素值置換的加密密圖圖5(c)仍然具有一些原圖像的細(xì)節(jié)信息,加密效果不是很好。然而經(jīng)過像素位置與像素值雙重置換加密的密圖圖5(d)的圖像像素分布均勻,已經(jīng)覆蓋了原圖像的人物輪廓,無法得出原圖像的細(xì)節(jié)信息,其加密效果是最優(yōu)的。

2、直方圖分析

以下從圖像的直方圖來分析像素位置與像素值雙重置換加密的有效性,原圖像圖5(a)的直方圖如圖6(a)所示,只經(jīng)過像素位置置換的加密密圖圖5(b)的直方圖如圖6(b)所示,而只經(jīng)過像素值置換的加密密圖圖5(c)的直方圖則如圖6(c)所示,圖6(d)為經(jīng)過像素位置與像素值雙重置換的加密密圖圖5(d)的直方圖。

像素值雙重置換與像素位置的混沌加密算法

從以上實驗數(shù)據(jù)可以得出:基于混沌的數(shù)字圖像像素位置的加密技術(shù)只是置換數(shù)字圖像的像素點(diǎn)的位置,而像素值并不置換,從而數(shù)字圖像的直方圖不會改變,因而所得密圖直方圖與原數(shù)字圖像的直方圖相同;而基于混沌的數(shù)字圖像的像素值加密技術(shù)雖然將像素值進(jìn)行置換,改變了數(shù)字圖像的直方圖,但是像素位置沒有置換,因此加密效果不太理想;然而基于混沌的數(shù)字圖像像素位置與像素值雙重置換加密算法既置換像素位置,又置換像素值,從而加密密圖的直方圖與原圖像的直方圖是不同的,而且加密后的直方圖分布非常均勻,從而加密效果更優(yōu)。

3、密鑰敏感性分析

本文加密算法其本質(zhì)是利用Logistic混沌序列對像素位置和像素值進(jìn)行置換,因此在加密和解密過程中不會失真。而且由于是基于Logistic混沌序列,這使得解密對密鑰具有極強(qiáng)的敏感性。圖7(a)是原圖像,圖7(b)是使用正確密鑰解密的效果圖(其密鑰與圖5中的加密密鑰一致),圖7(c)是使用錯誤密鑰對密圖進(jìn)行像素值解密的效果圖,所使用的像素值解密密鑰為u0=3.891,x0=0.91211,圖7(d)則是使用錯誤密鑰對密圖再進(jìn)行像素位置解密的效果圖,所使用的像素位置加密密鑰為u0=3.911,x0=0.89111。以上實驗數(shù)據(jù)充分表明本文所提出的加密算法對密鑰具有極強(qiáng)的敏感性,密鑰相差極微,卻仍然不能解密,而且這種錯誤密鑰解密后的圖像不具有原圖像的任何信息,因此算法安全性是很高的。

本文加密算法的密鑰為K=(x0,u0),x0可以取(0,1)之間的任何值,其密鑰空間無窮大,而且加密過程中應(yīng)用了多個混沌序列,更極大地增加了密鑰空間。使得整個加密算法既有較好的加密效果,又有較強(qiáng)的安全性。從而,對密鑰的窮舉攻擊變得不可行。

本文加密算法中都是采用二維數(shù)組存儲數(shù)字圖像,其大小為m×n,本加密算法主要的運(yùn)算是對序列排序和對像素位置和像素值置換,而對序列排序算法的時間復(fù)雜度為0(n2),對像素位置和像素值進(jìn)行置換的運(yùn)算就是根據(jù)已經(jīng)排序好的序列的對應(yīng)關(guān)系而對二維數(shù)字圖像數(shù)組進(jìn)行取值和賦值運(yùn)算,因而其時間復(fù)雜度亦為0(n2),因此本文提出的加密算法的總時間復(fù)雜度為0(n2)。而目前的圖像加密算法都維持在這個數(shù)量級上,所以本文加密算法其運(yùn)算效率是比較理想的。

小知識之像素

“像素”(Pixel)是由Picture(圖像)和Element(元素)這兩個單詞的字母所組成的,是用來計算數(shù)碼影像的一種單位,如同攝影的相片一樣,數(shù)碼影像也具有連續(xù)性的濃淡階調(diào),我們?nèi)舭延跋穹糯髷?shù)倍,會發(fā)現(xiàn)這些連續(xù)色調(diào)其實是由許多色彩相近的小方點(diǎn)所組成,這些小方點(diǎn)就是構(gòu)成影像的最小單位“像素”(Pixel)。