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