基于二維可逆非線性映射的圖像加密算法

根據(jù)一類二維可逆非線性映射具有單值確定的逆、本質(zhì)非線性以及運算簡單等適合構(gòu)造加密算法的特點,提出適用于圖像文件加密的新算法。這種加密算法將圖像分成若干塊,每塊采用二維可逆非線性映射對各像素點的灰度值進(jìn)行鏈?zhǔn)窖h(huán)迭代,二維非線性映射的參數(shù)與迭代次數(shù)由一維混沌映射產(chǎn)生,克服了序列密碼中存在的錯誤擴(kuò)散問題,解決了由計算機(jī)精度引起的解密失敗難題。

一、二維可逆非線性映射簡介

二維非線性映射又被稱為非平凡二維映像,它們必須為非線性的,至少是二次的。與一維映射不同,這類映射一般存在單值確定的逆.二維非線性映射中出現(xiàn)的折疊,可在不同的維上展開,而不壓縮在一維上,非平凡二維映射所具備的這種性質(zhì)與一維映射的特征有本質(zhì)上不同。以Henon映射最為典型,Henon映像是最簡單的非平凡二維映像,它是二次方型非線性的二維映射,它可以用于描述一般映射在指定軌道附近的動力學(xué)性質(zhì),這種映射已經(jīng)足夠復(fù)雜,分析其動力學(xué)性質(zhì)時,通常很難作解析處理,數(shù)值方法不可避免,但是它們存在單值確定的逆。

Henon映射定義為:

基于二維可逆非線性映射的圖像加密算法

其逆映射為:

基于二維可逆非線性映射的圖像加密算法

Henon映射(1)、(2)切變換的雅可比矩陣(Jacobi)為:

基于二維可逆非線性映射的圖像加密算法

Henon映射又被譯之為伊依映射,b=1時為保面積映射,b<1時為耗散映射.它是Henon從研究球狀星團(tuán)以及洛倫茲吸引子中得到啟發(fā)而于1 976年提出的。

二、二維可逆非線性映射在圖像加密中的應(yīng)用

下面以Henon映射為例討論二維可逆非線性映射用于圖像文件加密的原理與方法。

1、加密算法原理

將此類映射用于圖像文件加密時,首先對圖像分成若干塊,分別進(jìn)行塊(組)處理。這是因為分塊加密簡單、快速,易于標(biāo)準(zhǔn)化,容易實現(xiàn)同步,同時,一個密文塊(組)的傳輸錯誤不會影響到其他塊,丟失一個密文塊不會對隨后的正確解密產(chǎn)生影響,克服了序列密碼錯誤擴(kuò)散的缺點。

在塊內(nèi),采用由二維非線性映射(例如Henon映射)組成的處理單元對各像素點的灰度值進(jìn)行鏈?zhǔn)窖h(huán)迭代,由一維混沌映射產(chǎn)生的混沌序列改變二維非線性映射(例如Henon映射)的參數(shù)和迭代次數(shù),基本加密、解密思路如圖1所示:

基于二維可逆非線性映射的圖像加密算法

2、加密算法流程

加密算法應(yīng)用二維取模的Henon映射,這里參數(shù)b=1,對各像素點的灰度值進(jìn)行循環(huán)迭代,并用一維混沌映射產(chǎn)生的序列改變迭代次數(shù)d與Henon映射的參數(shù)a。

(1)加密算法步驟

記m×r圖像I像素點的灰度值為A(x,y),令m×r=n,為便于描述加密算法記A(x,y)=A(rx+y),這樣將二維位置下標(biāo)表示的灰度值(x,y)記為一維位置下標(biāo)表示的A(rx+y),即記為A1,A2,…,An。為簡單起見,將以A1,A2,…,An為一個塊來說明算法。實際應(yīng)用時,可根據(jù)需要將圖像明文分成若干固定大小的塊(組)進(jìn)行加密。

第一輪循環(huán)

基于二維可逆非線性映射的圖像加密算法
第二輪循環(huán)
基于二維可逆非線性映射的圖像加密算法

一般兩輪循環(huán)已經(jīng)足夠,應(yīng)用時可以進(jìn)行多輪循環(huán)以獲得更高的強(qiáng)度,最終的A1,A2,…,An-1,An是加密后的密文。

第一輪循環(huán)的示意圖如圖2所示。

基于二維可逆非線性映射的圖像加密算法

經(jīng)過第一輪循環(huán)后,再進(jìn)行第二輪循環(huán):先將上面得出的新An,A1值用參數(shù)a=on的Henon映射迭代dn次得到的結(jié)果更新An,A1。再對剛得出的新的A1,A2,…,An-1,An重復(fù)第一輪循環(huán)。

(2)加密算法中迭代次數(shù)d與Henon映射

參數(shù)o取值的生成方法:迭代次數(shù)d1,d2,…,dn,d1',d2',…,d'n-1,……以及每次使用的Henon映射的參數(shù)a:a1,a2,…,an,a1',a2',…,a'n-1,都取值于由一維混沌映射生
成的混沌序列.

為簡單起見,算法中將迭代次數(shù)d和Henon映射的參數(shù)口的取值都限制為[2,257]區(qū)間上的隨機(jī)整數(shù)值.注意,這里限制了迭代次數(shù)不能為1,這是因為Henon映射含有一耦合項Yn+1=xn modG,如果迭代次數(shù)取為1,則有一項輸入沒有改變,這樣會給密碼攻擊者留下信息。若需要增加復(fù)雜度,可以加大迭代次數(shù),只要將區(qū)間[2,257]替換為更大的區(qū)間即可。

具體生成步驟如下:

a、用Logistic映射

基于二維可逆非線性映射的圖像加密算法

產(chǎn)生一維混沌實數(shù)序列{Xn},這里xn∈(0,1);

b、按如下規(guī)則將混沌實數(shù)序列xn映射為[2,257]區(qū)間上的整數(shù)序列{Xn}

若(k+ 1)/256≤Xn<(k+2)/256,則Xn=k,顯然這樣得到的Xn∈(2,3,…,257)。

給定初始值x0,參數(shù)μ0,迭代到ho次后記下用上述方法映射得到的整數(shù)混沌序列,依次賦值于d1,a1,d2,a2,...,dn,an,d'1,a'1,d'2,a'2,...,d'n,a'n。

(3)二維非線性Henon映射

為了適合圖像文件加密的特點,在加密算法中使用的是如下變形的取模Henon映射,該映射存在單值確定的逆。

基于二維可逆非線性映射的圖像加密算法

其逆映射為:

基于二維可逆非線性映射的圖像加密算法

這里將Henon映射中的參數(shù)6設(shè)為1,如果6為其他數(shù),在迭代過程中將會出現(xiàn)小數(shù),這與像素點的灰度值都是長度為n個字節(jié)的整數(shù)不匹配,另外,由于圖像像素點的灰度值有其上限,為防止運算溢出和數(shù)據(jù)量膨脹,這里對Henon映射變形進(jìn)行了取模運算,其中G為像素點灰度值的最大值,例如灰度值長度為1個字節(jié),則G= 256。

(4)加密算法實現(xiàn)

a、 輸入?yún)?shù)

原始圖像文件名Inlmage,結(jié)果圖像文件名Outlmage,密鑰(x0,μo,ho)。

a2',...,d'n-1,a'n-1。

b、二維Henon映射對Lm×r,中各像素點的灰度值進(jìn)行二輪循環(huán)迭代,得到一個密圖

解密算法實現(xiàn):用戶只要正確輸入密鑰(xo,μ0,ho),將加密算法逆向運算即可獲得解密圖像。

3、 基于二維可逆非線性映射的圖像加密算法分析

(1)Henon映射適合于構(gòu)造鏈?zhǔn)窖h(huán)迭代的加密算法

在采用非線性映射的加密算法中,必須要考察它們的逆運算,通常的非線性映射(如反三角函數(shù))、混沌映射(如洛倫茲映射)等用于加密算法的一個難題就是它們的運算需要使用數(shù)值計算或變步長積分來解微分方程.這樣由于計算機(jī)的有限精度效應(yīng)與各計算機(jī)精度不同所產(chǎn)生的誤差、及其在非線性運算中的誤差傳播與擴(kuò)散與解密的正確性,實際運用受到很大限制。

Henon映射的這種可以求逆的信息處理功能特別適合于圖像加密.因此采用此類二維非線性映射的加密算法,不僅可以保證加密解密的正確性,且速度遠(yuǎn)遠(yuǎn)快于DES分組加密,具有很高的實用價值。

(2) 密鑰擴(kuò)展算法的安全性

加密算法中由密鑰控制非線性映射的參數(shù)與迭代次數(shù)的改變。迭代次數(shù)d1,d2,…,dn,d1',d2',…,d'n-1,……以及每次使用的Henon映射的參數(shù)a1,a2,…,an,a1',a2',…,a'n-1。實際上是密碼學(xué)意義所需的足夠安全長度的密鑰,在加密算法中,它們由密鑰種子又稱為短密鑰產(chǎn)生,通信雙方共享一個短密鑰(x0,μ0,h0),這里采用一維混沌映射的擴(kuò)展算法將密鑰種子擴(kuò)展成所需的足夠長的密鑰,密鑰擴(kuò)展算法實際是一個偽隨機(jī)序列發(fā)生器,該發(fā)生器的優(yōu)劣直接影響分組密碼的安全性,由于所產(chǎn)生的一維混沌整數(shù)序列X扎具有對初始條件值敏感、白噪聲的統(tǒng)計特性等很好的密碼學(xué)性質(zhì),又有容易生成,形式簡單,便于軟件實現(xiàn)等特點,所以采用混沌模型產(chǎn)生一維混沌整數(shù)序列的方法適合作為密鑰擴(kuò)展算法。

由于一維混沌整數(shù)序列具有的良好隨機(jī)性,可以抵抗密鑰相關(guān)攻擊(即針對密鑰擴(kuò)展算法的弱點對分組密碼進(jìn)行的攻擊),加密算法中密鑰(x0,μo,ho)保持適當(dāng)?shù)拈L度,使窮舉密鑰攻擊不易實施。

(3)算法的安全性分析

a、混淆性與擴(kuò)散性

本加密算法中,由于二維非線性映射的循環(huán)迭代的作用,塊(組)內(nèi)每個像素點的灰度值完全擴(kuò)散到其他的每一個像素點的灰度值中并變得面目全非,這符合香農(nóng)信息論中的混亂與擴(kuò)散兩個設(shè)計準(zhǔn)則。從加密算法可以看出,解密時從最后兩項開始一步一步進(jìn)行Henon映射的逆映射迭代,從后向前逐個將Im×r,中像素點的灰度值解出,且前面的解密正確與否影響到后面步驟地正確進(jìn)行.如對16 x16圖像,取迭代次數(shù)d1,a1,d2,a2,...,dn,an,d'1,a'1,d'2,a'2,...,d'n,a'n,為{2,3,…,257}中由混沌映射產(chǎn)生的數(shù),窮舉法的密鑰空間為256256x4-2,對一般的圖像取迭代次數(shù)為2或3就足夠了。通過加密,明文隨機(jī)混亂擴(kuò)散到整個密文中,密文中未保留任何明文信息,包括明文的統(tǒng)計概率信息,并且徹底改變了圖像的直方圖的特征。

使用二維非線性映射的鏈?zhǔn)窖h(huán)迭代所設(shè)計的密碼使得明文、密文、密鑰之間的依賴關(guān)系相當(dāng)復(fù)雜,以至于這種依賴關(guān)系,即函數(shù)關(guān)系與統(tǒng)計關(guān)系對密碼分析者來說無法利用。密鑰的每一位數(shù)字影響密文的許多位數(shù)字,以防止對密鑰進(jìn)行逐段破譯;明文的每一位數(shù)字也影響密文的許多位數(shù)字,以充分地隱蔽明文的統(tǒng)計特性,使得密碼極具粘連性。

b、非線性度

非線性度分析的基本數(shù)學(xué)原理為:如果明文與密文的關(guān)系是n維線性關(guān)系,且系數(shù)是密鑰,則n個明文密文對(而不是2n個)就可破解密鑰;如果明文與密文的關(guān)系是n維r次函數(shù)關(guān)系,則n個明文密文對就可基本上破解密鑰,這就是線性密碼分析的原理.所謂非線性度即是抵抗線性密碼分析的強(qiáng)度。在本加密算法中,由于使用了二維非線性映射循環(huán)迭代的方法,由密鑰控制非線性映射的參數(shù)與迭代次數(shù)的改變,鏈?zhǔn)街忻康鷇次就加入新的數(shù)據(jù),若塊內(nèi)有n個像素點灰度值作為明文,則明文與密文的關(guān)系大致是n維、r=2(d1,d2,…,dn,d1',d2',…,d'n-1...)次,欲破解此密鑰就需要nr個明文密文對,由于r非常大,所以足以保證其安全性.另外,由于每迭代d次就加入下一個像素點的灰度值,這就使得要找到一個非常逼近明文與密文的n維線性關(guān)系幾乎不可能,試驗表明神經(jīng)網(wǎng)絡(luò)的逼近方法對這種變參數(shù)的非線性模型也無能為力。

c、安全強(qiáng)度的穩(wěn)定性

近年來混沌保密系統(tǒng)受到質(zhì)疑,Dedieu等用參數(shù)自適應(yīng)同步控制的方法對混沌系統(tǒng)的參數(shù)(密鑰)進(jìn)行辨識,從而達(dá)到破解的目的,所以許多簡單的低維混沌映射加密算法保密性能不夠安全,察其原因主要是由混沌方程產(chǎn)生的類隨機(jī)流不是數(shù)學(xué)意義上的理想狀態(tài),同一混沌方程連續(xù)多次迭代,例如超過幾百萬次,由于計算機(jī)精度造成的舍入誤差,混沌的類隨機(jī)流將變成巨型周期,這為密鑰帶來一定信息,本加密算法中,只用混沌映射作為密鑰擴(kuò)展算法,使得混沌序列的長度大大縮短,其長度遠(yuǎn)小于由舍入誤差導(dǎo)致的巨大周期,所以可以看成是隨機(jī)序列,大大減小了密鑰、明文密文對相互之間的相關(guān)性,同時,由于采用的混沌序列長度很短,這就使得密碼攻擊者無法取得足夠多的樣本數(shù)據(jù),進(jìn)而辨識出混沌系統(tǒng)的參數(shù)(密鑰).另外,在本加密算法中,由于密鑰的各位對安全性的貢獻(xiàn)是相對平均的,即密鑰之間的相關(guān)性很弱,即使部分密鑰被破譯后,也很難得出其他密鑰的信息,以上這些措施充分保證了密碼安全強(qiáng)度的穩(wěn)定性。

三、實驗結(jié)果比較

采用本文方法對多幅圖像進(jìn)行試驗,圖4為該加密算法對Lena圖像文件加密與解密結(jié)果,圖4(b)的密鑰為x0 =0.65834,μ0=3.7853,ho=200。圖4(d)錯誤密鑰為x0=0.65833,μ0=3.7853,ho=200。

由實驗結(jié)果可以看出,加密后的圖像呈地毯狀均勻分布,密鑰正確時,解出的圖像無誤,當(dāng)密鑰錯誤時,解密得出的圖像與原圖像相比較面目全非,得不到有用的信息,直方圖也呈現(xiàn)均勻分布,這里不再列出。

基于二維可逆非線性映射的圖像加密算法

小知識之線性映射

在數(shù)學(xué)中,線性映射(也叫做線性變換或線性算子)是在兩個向量空間之間的函數(shù),它保持向量加法和標(biāo)量乘法的運算。術(shù)語“線性變換”特別常用,尤其是對從向量空間到自身的線性映射(自同態(tài))。