本發(fā)明屬于圖像處理領域,涉及一種使用新的圖像加密方法,具體應用于圖像加密過程中。
背景技術:
隨著計算機網(wǎng)絡通信技術和多媒體技術的發(fā)展,人類社會進入了數(shù)字時代。多媒體由于數(shù)據(jù)的直觀性強、信息量大等特點使得它成為人類社會在信息利用方面的重要手段。尤其是數(shù)字圖像,它比聲音、文字等包含更多的信息量,因而在多媒體信息中占有舉足輕重的地位,所以人們對通過網(wǎng)絡安全的傳輸數(shù)字圖像的需求也越來越迫切?;煦缦到y(tǒng)具有良好的偽隨機性、長期的不可預測性、對初始值的高度敏感性等特性,這就決定了混沌系統(tǒng)可以應用于密碼學領域。而當前許多基于混沌的加密算法存在敏感度、抗攻擊能力、理論支持等方面的不足,故本發(fā)明提出了一種新的方法。
漢諾塔(又稱河內(nèi)塔)問題是源于印度的一個古老傳說的益智游戲,游戲中有三根柱子分別三個命名為a、b、c,在柱子a上插有n個直徑大小不相同,由小到大編號為1,2,3,...,n的圓盤,要求將a上的圓盤移至柱子c,并按同樣的順序疊排。移動必須遵守下列規(guī)則:
1、每次只能移動一個圓盤;
2、圓盤可以插在任意一個柱子上;
3、任何時刻都不能將一個較大的圓盤放在一個較小的圓盤上。
此問題的解決思路如下:
第一步,將a柱子上的n-1個圓盤按照規(guī)定移至到b柱子;
第二步,將編號為n的圓盤由a柱移至c柱;
第三步,利用a柱子,將b柱子上的n-1個圓盤按規(guī)定移至到c柱子。
當然,n=1時只需直接進行第二步即可。
wang[1]等提出了一種于logistic映射的圖像交替加密算法(xwang,kguo.anewimagealternateencryptionalgorithmbasedonchaoticmap.nonlineardynamics,2014,76(4):1943-1950),wang[2]也提出了一種于耦合映射格子和“選擇器”的圖像加密方案(xywang,xmbao.anovelblockcryptosystembasedonthecoupledchaoticmaplattice.nonlineardynamics,2013,72(4):707-715),對其進行安全性分析可以發(fā)現(xiàn)其像素間的相關性抺滅的不夠強烈,信息熵也顯示出其混沌程度不夠,故其抗攻擊性不強。
技術實現(xiàn)要素:
本發(fā)明的目的在于解決敏感性低和抗攻擊能力不足等問題,提出一種建立在成熟理論上的圖像加密方法,本發(fā)明在解決此類問題的基礎上提出了一種使用漢諾塔問題hanoi的基于混沌的圖像加密方法。
為了達到上述目的,本發(fā)明的技術方案如下:
一種新的圖像加密方法,包括以下步驟:
第一步:使用安全散列算法獲得哈希值,在此基礎上抽取部分哈希值經(jīng)過變形,得到用于混沌系統(tǒng)的初始值。
所述的安全散列算法是最新的sha-3,因其原始信息的任何更改,無論多么小,都必將導致結果之間的顯著差異這一特性,使得安全散列算法被廣泛應用于加密應用程序中。采用下列公式得到用于混沌映射的初始值;
hash_value=sha3-512(sum)(1)
其中,sum表示原始圖像像素值的和;d1,d2,d3,d4均是從哈希值hash_value上提取得到;在公式(2)使用之前需要明確知道從第幾位的哈希值開始有效,且需要進行進制轉換化為10進制后再計算結果。
第二步:使用混沌系統(tǒng)得到加密算法中所要用到的全部參數(shù),包含漢諾塔游戲中每根柱子上所擁有的編號、左右圖像分別用于加密的擴散數(shù)據(jù)以及對圖像整體進行異域操作的數(shù)據(jù)。
所述的混沌系統(tǒng)為時空混沌系統(tǒng),典型的時空混沌系統(tǒng)為耦合映射格子cml,其動力學公式為:
其中,ε是耦合參數(shù),n是時間指數(shù),j是空間指數(shù),l是格子的數(shù)量,xn(j)的值是用于加密算法中的參數(shù),且xn(j)∈(0,1)。映射函數(shù)f(x)是logistic映射如下:
f(x)=x=μx(1-x),x∈(0,1),μ∈[3.57,4](4)
第三步:第二步所得到的用于漢諾塔游戲的數(shù)據(jù)經(jīng)預處理后得到的置亂編號與圖像像素位置相對應。之后,進行漢諾塔游戲,將某一圖像像素與每次漢諾塔移動到的柱子上的置亂編號相聯(lián)的像素進行交換,從而實現(xiàn)像素置亂的目的,游戲結束后得到置亂圖像。所述的用于漢諾塔游戲的數(shù)據(jù)為漢諾塔游戲中每根柱子上所擁有的編號。
所述的預處理具體為:
c(i)=(s(i)×1015+decimal×1014)%(m×n)+1(5)
其中,decimal為原始圖像像素和的均值的小數(shù)部分,s(i)代表的是某根柱子上所捅有的編號,c(i)則表示為處理后用于游戲的置亂編號。
所述的漢諾塔游戲模式為:將三根柱子分別對應于相應編號的圖像像素,游戲中的每次移動都是將某個柱子上編號的圖像像素移到另一根柱子上,記錄移動次數(shù)num。
所述的像素交換為:將移至的那根柱子上的第num個編號所對應的圖像像素與原始圖像的第num個像素值進行交換,依次類推。可見此次交換是從第一個像素值開始依次順序交換;當然也可以從最后一個像素值開始倒序進行像素交換;也可以從中間分開,前半部分順序,后半部分倒序進行像素交換;前半部分倒序,后半部分順序進行像素交換,這些交換方式均可達到置亂效果。
第四步:對第二步中用于擴散步驟的數(shù)據(jù)進行處理,將第三步得到的置亂圖像分塊后得到左右兩圖像,分塊后的兩圖像分別與處理后的擴散數(shù)據(jù)進行異或操作,之后對左右兩圖像進行合成。在此基礎上,為了更好的破壞統(tǒng)計攻擊,對合成圖像再進行一次擴散操作,最終得到密文圖像。復雜度越高,安全性也就越好。
所述的擴散數(shù)據(jù)的處理過程為:
el(i)=(fl(i)×1014+sum×108)%256(6)
er(i)=(fr(i)×1014+mean×1012)%256(7)
ew(i)=(dw(i)×1014)%256(8)
其中,mean表示為原始圖像像素值的和sum的均值,fl(i)、fr(i)和dw(i)分別代表的是用于左右圖像和整體數(shù)據(jù)的擴散數(shù)據(jù)。式(6)是用于對置亂圖像的左邊圖像進行擴散的數(shù)據(jù)處理,式(7)則是用于右邊圖像進行擴散的數(shù)據(jù)處理,式(8)是在左右圖像已擴散前提下再對新的整體圖像進行擴散的數(shù)據(jù)處理。
所述的置亂圖像分塊方式為:將置亂圖像左右均分,若圖像列數(shù)為奇數(shù),那么左邊圖像的列數(shù)比右邊的少1;或對置亂圖像進行上下分塊;或對置亂圖像進行對角分塊。
本發(fā)明的有益效果為:密鑰空間足夠大來應對蠻力分析的攻擊,密鑰敏感性強可以能夠有效抵抗已知/選擇明文攻擊和統(tǒng)計攻擊,相關性弱及信息熵大逾期能夠更好的破壞統(tǒng)計分析的攻擊,因此本發(fā)明安全有效且適用。
附圖說明
圖1是本發(fā)明的加密流程圖;
圖2是本發(fā)明的加密效果圖;其中,(a)原文圖像lena;(b)置亂后的圖像lena;(c)加密后的圖像lena;(d)原文圖像peppers;(e)置亂后的圖像peppers;(f)加密后的圖像peppers;(g)原文圖像baboon;(h)置亂后的圖像baboon;(i)加密后的圖像baboon;
圖3是本發(fā)明的密鑰敏感性測試;其中,(a)成功解密的圖像;(b)ε=ε+10-1解密的圖像;(c)μ=μ+10-15解密的圖像;(d)j=j+8解密的圖像。
圖4是本發(fā)明的直方圖分布;其中,(a)原文圖像lena的直方圖;(b)加密后的圖像lena的直方圖;(c)原文圖像peppers的直方圖;(d)加密后的圖像peppers的直方圖;(e)原文圖像baboon的直方圖;(f)加密后的圖像baboon的直方圖;
圖5為本發(fā)明的方法流程圖。
具體實施方式
下面結合附圖對本發(fā)明加密做更詳細的描述。
一、加密算法的流程如下:
為了不失一般性,設灰度圖像p為m×n大小,其中m為行數(shù),n為列數(shù)。
1)將圖像像素值轉換為一維數(shù)組g(i),i∈[1,m×n],并計算圖像p所有像素值的和δ,和的均值w以及均值的小數(shù)部分θ。
θ=w-floor(w)(11)
其中,函數(shù)floor是對數(shù)進行向下取整,本發(fā)明中的密鑰之一即像素值的和δ。
2)使用公式(1)的哈希值,從第j位開始應用式(2)獲得混沌系統(tǒng)的初始值x0(j),j=1,2,...,l。
3)根據(jù)公式(3)以及密鑰設置值,對混沌系統(tǒng)進行若干次迭代后得到混沌序列xi(j)。
4)對混沌序列xi(j)按以下公式進行預處理,得到用于圖像置亂過程中的數(shù)據(jù)z1(i)、z2(i)、z3(i)和用于圖像擴散過程中的異或數(shù)據(jù)e1(i),e2(i)和e3(i)。
z1(i)=(xi(1)×1015+θ×1014)%(m×n)+1(12)
z2(i)=(xi(2)×1015+θ×1014)%(m×n)+1(13)
z3(i)=(xi(3)×1015+θ×1014)%(m×n)+1(14)
e1(i)=(xi(4)×1014+δ×108)%256(15)
e2(i)=(xi(5)×1014+ω×1012)%256(16)
e3(i)=(xi(6)×1014)%256(17)
5)漢諾塔游戲中的三根柱子上分別對應于相應的編號z1(i)、z2(i)、z3(i),之后按此數(shù)據(jù)進行游戲。游戲進行過程中,每次移動都是將一柱子上的某編號移到另一柱子上,可對應于圖像上第i個像素值g(i)與移動到的那個柱子k(k=1,2,3)上第i個編號zk(i)相聯(lián)系的圖像像素值g(zk(i))進行交換,依此類推,直到游戲完成,此時可得到置亂后的圖像pc,其像素矩陣為ch。
6)將上步中所獲取的圖像pc劃分為左右均等的兩份ch1和ch2,若圖像列數(shù)為奇數(shù),那么就讓左邊圖像比右邊圖像的列數(shù)少1,當然若列數(shù)為偶數(shù),那么左右圖像的列數(shù)就相等。
7)用于擴散操作的e1(i),e2(i)和e3(i)數(shù)組,將其轉換為矩陣表示分別為h1、h2和h。之后將圖像矩陣ch1和混沌矩陣h1異或得到矩陣h3如式(18),同理ch2異或于h2得到h4,二者組合成為新的圖像矩陣h。其中,xor函數(shù)表示按位異或。
h3=xor(ch1,h1)(18)
8)最后,將新矩陣h與混沌矩陣h二者進行對應的異域操作得到最新的矩陣eh,且獲取到最終的加密圖像pe。至此,算法結束。
二、對本發(fā)明解密做出說明如下:
本發(fā)明加密算法具有逆性,即圖像解密是圖像加密的逆過程。
1)用戶拿到密鑰,可使用上述說明的公式(1-4)來生成解密過程中所需要的所有參數(shù)序列,并按加密過程中的公式進行相應處理。
2)利用上述擴散過程的反操作,先對整體進行異或反操作,再對圖像左右分半再進行異域的反操作,之后可得到置亂圖像pc;
3)與加密過程中不一樣的是再進行漢諾塔游戲時需要記下移動軌跡編號,之后利用編號記錄將置亂圖像中的像素值pci進行交換,同樣這里是反操作,即從后往前進行,即i從m×n減至1;
4)此時,將每個位置上的像素值記為pi,利用pi復原為灰度圖像p,p就是解密成功后的原文圖像。
三、結合附圖及表中的數(shù)據(jù)對算法進行分析如下:
表1本發(fā)明與現(xiàn)存的算法在圖像lena的三個方向上相鄰像素間的相關性系數(shù)的比較
表2本發(fā)明的信息熵以及與現(xiàn)存的算法的比較
表3明文圖像改變一比特時密文圖像的npcr和uaci值以及與現(xiàn)存算法的比較
表1顯示出lena圖像的原文和密文在三個方向上相鄰像素的相關性系數(shù),可以看出本發(fā)明有效的削弱了像素間的強相關性,增強了安全性;而一個系統(tǒng)越規(guī)律它的信息熵就越小,反之越混亂越大,表2中的信息熵均接近于8說明加密后的圖像很混亂;因此,信息熵及相關性方面可以看出本發(fā)明能夠很好的抵抗統(tǒng)計分析攻擊。表3中給出了像素個數(shù)改變率(numberofpixelschangerate,npcr)和統(tǒng)一平均變化強度(unifiedaveragechangingintensity,uaci)并與其它的算法進行比較,很清晰表明了本發(fā)明對明文敏感;對密鑰敏感性測試在于:若密鑰在有效精度內(nèi)作微小的改變就不能得到正確的明文圖像,圖3則是本發(fā)明對密鑰敏感性進行測試的結果展示,可以看出算法具有很強的密鑰敏感度,能夠抵抗差分攻擊;且本發(fā)明的密鑰空間大于10118,可以說本發(fā)明能夠有效應對暴力破解攻擊;圖4中各圖像的明文直方圖分布均帶有規(guī)律性,而密文直方圖分布相對均勻,說明了密文圖像中各灰度像素值的出現(xiàn)的概率相等,成功隱藏了明文信息,能夠應對統(tǒng)計攻擊。
綜上所述,本發(fā)明密鑰空間大,密鑰敏感性強,能夠有效應對各種暴力破解攻擊、統(tǒng)計分析攻擊、已知明文攻擊和選擇明文攻擊等,其安全性得到了加強。