本發(fā)明屬于圖像處理領(lǐng)域,涉及一種基于拼圖策略和混沌系統(tǒng)的彩色圖像加密算法。
背景技術(shù):
隨著大數(shù)據(jù)時(shí)代的到來(lái)和信息通訊的便利,人們?cè)桨l(fā)關(guān)注其隱私保護(hù),因此數(shù)據(jù)加密也變得尤為重要,又因?yàn)閳D像能夠攜帶大量的信息,更能生動(dòng)形象的表達(dá)人們的意愿,所以對(duì)圖像數(shù)據(jù)的保護(hù)在很多應(yīng)用中更加受到關(guān)注。
而圖像由于其某些先天特征,像素間的高度相關(guān)、大量的數(shù)據(jù)冗余和特殊編碼等使得對(duì)其進(jìn)行加密不同于傳統(tǒng)的數(shù)據(jù)加密,像AES,3DES等經(jīng)典方法已不能滿足圖像加密的需求,這也就是為什么替換為更為加密模式的原因。研究者探索并使用新興的、更為復(fù)雜的系統(tǒng)來(lái)獲取安全的密鑰或密鑰流,混沌系統(tǒng)就是其中之一。該系統(tǒng)所產(chǎn)生的序列由于其初值敏感性、偽隨機(jī)性、遍歷性、長(zhǎng)期不可預(yù)測(cè)性等性質(zhì),十分契合密碼算法對(duì)偽隨機(jī)序列的特殊需求,因而被用于圖像加密中。
R Guesmi等提出了一種基于混沌和交叉算子的彩色圖像加密算法(R Guesmi,MAB Farah,A Kachouri,M Samet.Hash key-based image encryption using crossover operator and chaos.Multimedia Tools and Applications,2016,75(8):1-17),對(duì)其安全性分析可以發(fā)現(xiàn)其像素間的相關(guān)性抺滅的不夠強(qiáng)烈,信息熵也顯示出其混沌程度不夠,所以抗攻擊性不強(qiáng)。Wei等提出了一種基于DNA序列操作和超混沌系統(tǒng)的彩色圖像加密算法(X Wei,L Guo,Q Zhang et al.A novel color image encryption algorithm based on DNA sequence operation and hyper-chaotic system.Journal of Systems and Software,2012,85(2):290-299),同樣從安全性分析可以看出其抗攻擊力度不夠。
本發(fā)明借鑒八數(shù)碼游戲思想,如圖1中的例子所示,它包括一個(gè)3×3的棋盤,棋盤上擺放著8個(gè)寫有數(shù)字的棋子,留下一個(gè)空位。與空位相鄰的棋子可以滑動(dòng)到空位中,游戲的目的是要達(dá)到一個(gè)特定的目標(biāo)狀態(tài),如圖1右側(cè)所示。其詳細(xì)介紹如下:
狀態(tài):描述指定了8個(gè)棋子中的每一個(gè)以及空位在棋盤的9個(gè)方格的分布。
初始狀態(tài):任何狀態(tài)都可以被指定為初始態(tài),例如圖1(a)。
后續(xù)函數(shù):用來(lái)產(chǎn)生通過(guò)四個(gè)行動(dòng)(把空位向左,右,上或下移動(dòng))能夠達(dá)到的合法狀態(tài)。
目標(biāo)測(cè)試:用來(lái)檢測(cè)狀態(tài)是否能夠匹配圖1(b)中所示的目標(biāo)布局(其它目標(biāo)布局也是可能的)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于解決現(xiàn)有技術(shù)中算法加密后的圖像抗攻擊能力不足的問(wèn)題,提出了一種基于拼圖策略和混沌系統(tǒng)的圖像加密算法。首先,使用混沌系統(tǒng)產(chǎn)生算法中所用的密鑰序列,其初值是根據(jù)散列算法獲取的;其次,根據(jù)所設(shè)置的拼圖模式使用密鑰序列打亂圖像像素的位置,由此獲得置亂圖像;最后,對(duì)置亂圖像進(jìn)行擴(kuò)散,最終得到密文圖像。
本發(fā)明的具體技術(shù)方案為:
一種基于拼圖策略和混沌系統(tǒng)的圖像加密算法,包括以下步驟:
第一步,根據(jù)拼圖策略,設(shè)計(jì)游戲模式;所述拼圖策略為八數(shù)碼游戲;所述游戲模式的游戲規(guī)則具體為:空位可向右上,上,左上,左下,下或右下處移動(dòng);設(shè)空位的坐標(biāo)為(ci,cj),其移動(dòng)規(guī)則函數(shù)如表1所示:
表1空位的移動(dòng)規(guī)則函數(shù)
第二步,通過(guò)混沌系統(tǒng)或非線性方程產(chǎn)生密鑰序列,其中,由散列算法決定混沌系統(tǒng)的初值;
第三步,從第二步產(chǎn)生的密鑰序列中,抽取出新游戲的三列數(shù)據(jù)、空位位置數(shù)據(jù)和移動(dòng)規(guī)則序列數(shù)據(jù),將得到的數(shù)據(jù)與圖像相對(duì)應(yīng),對(duì)圖像進(jìn)行置亂工作,進(jìn)而得到置亂圖像;
第四步,對(duì)置亂圖像進(jìn)行擴(kuò)散,對(duì)密鑰序列提取出的三組數(shù)據(jù)與圖像像素值進(jìn)行異或操作進(jìn)而改變圖像像素值,最終得到密文圖像。
上述所述圖像為彩色圖像或者灰度圖像。
上述第二步中使用的混沌系統(tǒng)是時(shí)空混沌系統(tǒng)。
上述的時(shí)空混沌系統(tǒng)為耦合映射格子。
耦合映射格子是一個(gè)離散時(shí)間、離散空間的動(dòng)力學(xué)系統(tǒng),由稱為局部映射的混沌映射構(gòu)成,這些局部映射通過(guò)耦合因子耦合在一起。耦合映射格子局部映射內(nèi)在的非線性動(dòng)力特征以及由于它們之間耦合造成的擴(kuò)散性,使得耦合映射格子表現(xiàn)出了時(shí)空混沌特的特性。耦合映射模型是由kaneko提出的,其動(dòng)力學(xué)公式為:
其中,n為時(shí)間方向變量,j為空間方向變量,ε∈(0,1)是耦合系數(shù),L是耦合格子的數(shù)量,即系統(tǒng)尺寸。對(duì)于任意滿足條件的j,xn(j)=xn(L-j)成立,這是模型的周期條件。τ(x)是耦合映射格子的局部映射,在本系統(tǒng)中為L(zhǎng)ogistic映射:
τ(x)=μx(1-x),x∈(0,1),μ∈[3.57,4] (2)
當(dāng)μ>3.57時(shí),該映射處于混沌狀態(tài),即混沌系統(tǒng)。其中x0和u0為L(zhǎng)ogistic映射中的原始參數(shù),而x0是由散列算法所生成的。
上述的散列算法為消息摘要算法第五版Message Digest Algorithm(MD5),該算法為計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用以提供消息的完整性保護(hù),其作用為把一個(gè)任意長(zhǎng)度的字節(jié)串變換成128位散列值,呈現(xiàn)出來(lái)的是一32位的十六進(jìn)制數(shù)字串。算法具有良好的安全性,即使一個(gè)位改變也會(huì)引起兩個(gè)結(jié)果之間的顯著差異,故利用如下公式得到哈希值hash_value并借此再得到混沌系統(tǒng)的初值。
hash_value=MD 5(sum) (3)
其中,sum表示圖像像素值的和,d1和d2均是從hash_value中提取出來(lái)的且應(yīng)用式(4)時(shí)需要先將其從2進(jìn)制轉(zhuǎn)換為10進(jìn)制。
第四步中使用如下公式來(lái)對(duì)置亂后的彩色圖像進(jìn)行擴(kuò)散,最終來(lái)得到加密后的彩色圖像。其中,p′i是置亂后的彩色圖像的各層分量的第i個(gè)像素值,ti代表的是經(jīng)處理后的第i個(gè)混沌參數(shù)值,ci是加密后的彩色圖像的各層分量的第i個(gè)像素值。
本發(fā)明利用傳統(tǒng)的八數(shù)碼難題模式及圖像的特性,設(shè)計(jì)出新的拼圖游戲策略,所有的參數(shù)均是由耦合映射格子所產(chǎn)生的,而其初始值部分是由信息摘要算法第5版提供的,并且為了達(dá)到更高的安全性和復(fù)雜性,發(fā)明中啟用了原始圖像的像素值的和,實(shí)驗(yàn)結(jié)果表明本算法能夠抵抗常見(jiàn)的攻擊并具有良好的安全性。
附圖說(shuō)明
圖1八數(shù)碼游戲的一個(gè)典型案例。
圖1中,(a)表示初始狀態(tài);(b)表示目標(biāo)布局。
圖2空位可移動(dòng)的六個(gè)規(guī)則。
圖3空位移動(dòng)規(guī)則的演示。
圖4是本發(fā)明的加密框圖。
圖5是本發(fā)明的解密框圖。
圖6是本發(fā)明的實(shí)驗(yàn)效果圖。
圖6中,(a)表示原始彩色圖像;(b)表示置亂后的彩色圖像;
(c)表示加密后的彩色圖像;(d)表示加密后的彩色圖像的R分量;
(e)表示加密后的彩色圖像的G分量;(f)表示加密后的彩色圖像的B分量。
圖7是密鑰敏感性測(cè)試效果圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做更詳細(xì)的描述。
實(shí)施例1
加密算法的流程如下:
1)將彩色圖像轉(zhuǎn)換為其R、G、B分量矩陣,長(zhǎng)度為M*N且值的范圍為(0,255).
2)將三個(gè)分量矩陣組成一個(gè)3行M*N列的二維矩陣rgb如表2,矩陣rgb的第一行是由R的像素組成的;第二行是由G的像素組成的;第三行由B的像素所組成的。
表2二維數(shù)組rgb的像素分量分布
3)根據(jù)式(6)計(jì)算出圖像像素和sum,同樣也分別計(jì)算出三個(gè)分量矩陣的像素值的和rsum,gsum,bsum。
4)迭代式(1)獲取算法所需的全部參數(shù),其初始值是由式(4)所產(chǎn)生的,但應(yīng)該事先使用像素值的和與公式(3)來(lái)得到哈希值,借用兩個(gè)Logistic映射作為輔助函數(shù)。
5)根據(jù)以下公式,并使用迭代值xi(1),xi(2),xi(3))計(jì)算出用作拼圖的三列coli(1),coli(2),coli(3).
coli(1)=(xi(1)×1015)mod(M×N) (7)
coli(2)=(xi(2)×1015)mod(M×N) (8)
coli(3)=(xi(3)×1015)mod(M×N) (9)
每次用于拼圖的三列數(shù)據(jù)應(yīng)該是互不相同的三列數(shù)據(jù),使用式(10)來(lái)更新列值,當(dāng)遇到情況:coli(o)=coli(j),(o≠j,1≤o<j≤3,1≤i≤MN)時(shí)。
coli(j)=coli(j)+1 (10)
6)利用迭代值獲得用于拼圖操作的移動(dòng)規(guī)則序列數(shù)據(jù)和空位位置數(shù)據(jù),此處使用5步來(lái)置亂彩色圖像。由公式(11)得到用于置亂的5個(gè)移動(dòng)規(guī)則,且使用式(12)得到空位位置數(shù)據(jù)。
ri(j-3)=xi(j)×1015mod 6+1j=4,5,6,7,8 (11)
selecti=xi(12)×1015mod 9 (12)
7)根據(jù)步驟5)得到的結(jié)果從rgb矩陣中抽取三列,可得到一個(gè)新的3*3的矩陣p,使用式(13)可得到空位的坐標(biāo)(ci,cj),i的范圍處于1與M*N之間。
si(ci,cj)=(selecti/3,selecti%3) (13)
8)通過(guò)拼圖游戲并根據(jù)以上參數(shù)將i從1到MN進(jìn)行一次置亂,在本算法中進(jìn)行了k輪。為了達(dá)到更好的置亂效果,每次置亂后改變空位位置和移動(dòng)規(guī)則序列根據(jù)下面的公式進(jìn)行:
selecti=(selecti+1)mod 9 (14)
ri(l)=(ri(l)+1)mod 6+1 (15)
其中,1≤i≤MN,1≤l≤5。重復(fù)進(jìn)行k輪后得到的置亂rgb矩陣命名為rgb’,每行分別稱作cr,cg,cb。
9)用密鑰序列及置亂后的圖像矩陣,經(jīng)下列公式后可得以最終的密文數(shù)組。
di(1)=(xi(9)×1015)mod 256 (16)
di(2)=(xi(10)×1015)mod 256 (17)
di(3)=(xi(11)×1015)mod 256 (18)
其中,i∈[1,MN]且關(guān)鍵初值dr0,dg0,db0描述如下:
dr0=cr(M×N)/2 (22)
dg0=cg(M×N)/2 (23)
db0=cb(M×N)/2 (24)
10)復(fù)原為彩色圖像,即為加密的彩色圖像。
實(shí)施例2
結(jié)合附圖5對(duì)本發(fā)明解密做出說(shuō)明如下:
本發(fā)明加密算法具有逆性,即圖像解密是圖像加密的逆過(guò)程。
1)用戶拿到密鑰,使用上述說(shuō)明的公式(1)-(5)生成所有的密鑰序列xi(j),i∈[1,MN],j∈[1,12]。
2)將密文圖像轉(zhuǎn)換為二維整數(shù)數(shù)組,每一行分別是其R、G、B分量矩陣稱作Re,Ge,Be。
3)根據(jù)di可解碼密文圖像的三個(gè)分量并得到置亂后的圖像。使用下列公式可將Re,Ge,Be分量轉(zhuǎn)換為Rc,Gc和Bc分量。
其中,i的值從MN減至1,上述操作的最后我們必須根據(jù)以下式子得到正確的關(guān)鍵值。
Re0=Rc(M×N)/2 (28)
Ge0=Gc(M×N)/2 (29)
Be0=Bc(M×N)/2 (30)
4)已知置亂過(guò)程中進(jìn)行了k輪,因此解密需要知道空位最終的位置才能正確地完成解密工作。鑒于此,在解密過(guò)程中需先根據(jù)參數(shù)運(yùn)行置亂過(guò)程記錄下空位的最終位置,記錄為selecti。
5)根據(jù)下面的式子進(jìn)行k輪且每輪運(yùn)行MN次,每次須倒置拼圖規(guī)則的5步,最終可以得到原始圖像的每層像素值Ro,Go,Bo.
selecti=(selecti-1+9)mod 9 (31)
ri(l)=(ri(l)-1+6)mod 6+1 (32)
其中,i從MN一直減為1,l從6到1。
6)復(fù)原為彩色圖像,即拿到正確的原文圖像。
實(shí)施例3
結(jié)合圖6及列表數(shù)據(jù)對(duì)算法進(jìn)行分析如下:
在圖6中,(a)表示原始彩色圖像,(b)表示置亂后的彩色圖像,(c)表示加密后的彩色圖像,(d)表示加密后的彩色圖像的R分量,(e)表示加密后的彩色圖像的G分量,(f)表示加密后的彩色圖像的B分量。
表3信息熵
表4相鄰像素的相關(guān)性
表5明文圖像改變一比特時(shí)密文圖像的NPCR和UACI值及比較
表6與近期的加密算法的比較
一個(gè)系統(tǒng)越規(guī)律它的信息熵就越小,反之越混亂越大。從表3中的信息熵均接近于8說(shuō)明加密后的圖像很混亂,表4顯示出原文和密文在三個(gè)方向上相鄰像素的相關(guān)性系數(shù),可以看出本發(fā)明有效的削弱了像素間的強(qiáng)相關(guān)性,增強(qiáng)了安全性;表5中給出了像素個(gè)數(shù)改變率(Number of Pixels Change Rate,NPCR)和統(tǒng)一平均變化強(qiáng)度(Unified Average Changing Intensity,UACI),很清晰表明了本發(fā)明對(duì)明文敏感;同時(shí)由表6可知本發(fā)明的密鑰空間足夠大且圖7是對(duì)密鑰敏感性進(jìn)行測(cè)試的結(jié)果,密鑰在有效精度內(nèi)作微小的改變就不能得到正確的明文圖像,故說(shuō)明本發(fā)明能夠有效應(yīng)對(duì)暴力破解攻擊,從圖7直方圖中可以看出解密結(jié)果與明文近乎完全不同且分布均勻,表明了算法的強(qiáng)密鑰敏感度;最后也給出與近年來(lái)的算法進(jìn)行比較結(jié)果如表6所示,可以看出本發(fā)明密鑰空間大,密鑰敏感性強(qiáng),能夠有效應(yīng)對(duì)各種暴力破解攻擊、已知明文攻擊和選擇明文攻擊,其安全性得到了加強(qiáng)。