Feistel結(jié)構(gòu)圖像加密算法

為了更好地將傳統(tǒng)的Feistel加密結(jié)構(gòu)應(yīng)用在圖像加密中,將加密與混沌系統(tǒng)結(jié)合起來(lái),在混沌圖像加密的基礎(chǔ)上,提出了一種基于超混沌序列和Feistel結(jié)構(gòu)的圖像加密算法。

一、加密算法原理

1、超混沌系統(tǒng)

超混沌系統(tǒng)一般具有兩個(gè)或以上正的Lyapunov指數(shù),由于其具有比普通混沌系統(tǒng)更大的可用密鑰空間,可以提高系統(tǒng)的抗破譯能力。也有資料給出的圖像加密算法用到了Kawakami和Hyperhenon映射兩個(gè)超混沌系統(tǒng)。

Kawakami混沌映射的定義如下:

Feistel結(jié)構(gòu)圖像加密算法

其中,a=0.1,b=1.60時(shí),系統(tǒng)處于超混沌狀態(tài),Kawakami混沌映射本身是一種超混沌序列。此處取X0∈(O,l)。

Hyperhenon混沌映射的定義如下:

Feistel結(jié)構(gòu)圖像加密算法

其中,c=1.76,d=0.1時(shí),系統(tǒng)處于超混沌狀態(tài),Hyperhenon映射本身就是一種超混沌序列。此處取X0∈(O,l)。

本文設(shè)計(jì)的圖像加密算法還將用到Logistic混沌映射,其定義如下:

Feistel結(jié)構(gòu)圖像加密算法

其中當(dāng)3.5699456--≤μ≤4,(O<xn<1)時(shí),系統(tǒng)進(jìn)入穩(wěn)定的混沌狀態(tài)。

2、圖像預(yù)處理算法

為了增強(qiáng)加密算法的安全性,首先對(duì)待加密的圖像進(jìn)行預(yù)處理。本文以Kawakami超混沌映射為例,首先介紹預(yù)處理過(guò)程。設(shè)原始圖像形的大小為MxN,相應(yīng)的預(yù)處理算法描述如下:

a)給定Kawakami映射的初始值xo、Yo,利用式(1)通過(guò)迭代計(jì)算產(chǎn)生兩個(gè)混沌值xl和Y1,將第x1放人數(shù)組a,Y1放人數(shù)組b,將x1、Yi再代人式(1)迭代產(chǎn)生X2和Yz,X2放人數(shù)組a,y2放人數(shù)組b。以此類推,直到不滿足<MxN則停止。

b)分別對(duì)數(shù)組口和6中每個(gè)混沌值進(jìn)行變換,取每個(gè)混沌值小數(shù)點(diǎn)后的第3—5位組成一個(gè)新的三位整數(shù)L,然后L對(duì)256做取模運(yùn)算,將數(shù)組口中每個(gè)新得到的整數(shù)依次放人大小為MxN的矩陣A,同樣將數(shù)組b中新得到的整數(shù)放人大小為MxN的矩陣B。

c)將兩個(gè)矩陣A與B其中的每個(gè)值轉(zhuǎn)換為二進(jìn)制序列,并放回A和B矩陣。

d)將原始圖像W的像素值轉(zhuǎn)換為二進(jìn)制序列,與步驟c)所得到的序列矩陣A與B做異或運(yùn)算。

e)將異或后的結(jié)果轉(zhuǎn)換為十進(jìn)制放入圖像矩陣W中,完成圖像的預(yù)處理,得到預(yù)處理加密圖像w1。

圖像的預(yù)處理算法雖然只是對(duì)原始圖像做簡(jiǎn)單的異或運(yùn)算,但由于是基于超混沌序列的,為整個(gè)算法的安全性提供了一定的安全保證。圖l給出了預(yù)處理的基本流程。

Feistel結(jié)構(gòu)圖像加密算法

3、圖像加密算法

在預(yù)處理的基礎(chǔ)上,利用Logi8tic混沌序列生成Hyperhenon超混沌的初始值,再由Hyperhenon超混沌序列產(chǎn)生S盒,使用Feistel結(jié)構(gòu)對(duì)圖像進(jìn)行加密。具體的加密過(guò)程如下:

a)將經(jīng)過(guò)預(yù)處理后的圖像矩陣W的每一行分為左右兩部分,分別記為L(zhǎng)i0和Ri0。

b)給定一個(gè)初始值z(mì)o,利用Logistic映射,即式(2)迭代生成48個(gè)序列值,以第j,j+16,j+32個(gè)序列值作為第j輪的子密鑰,記為Kj。代入Hyperhenon混沌映射,通過(guò)迭代計(jì)算每輪生成三個(gè)混沌序列值x、y、z,通過(guò)16輪迭代計(jì)算,生成的混沌序列分別組成X、y、Z三個(gè)16×(N/2)的矩陣。

c)利用X、y、Z構(gòu)造S盒,對(duì)X、y、Z每個(gè)矩陣中的每一行作升序排列,得到矩陣XL、K、zl,然后將X、y、Z在Xl、yI、Zl中的位置作為置換矩陣p、q、r。此時(shí)p、q、r矩陣的每一行就是Feistel結(jié)構(gòu)中第i輪的S盒,每一輪共有三個(gè)。

d)取預(yù)處理圖像的第一行Lio和Rio,將Rio經(jīng)過(guò)三個(gè)S盒的置換,然后與Lio進(jìn)行異或,得到的結(jié)果作為下一輪循環(huán)的Ru,而下一輪循環(huán)的Lii則等于Rio。

e)利用p、q、r三個(gè)S盒中的2—l6行重復(fù)d)。

f)合并得到的結(jié)果Ll16和Rl16放入圖像矩陣中。

g)對(duì)預(yù)處理圖像的每一行重復(fù)d)e),最終得到的圖像就是加密后的圖像W2。

加密算法的基本流程如圖2所示。

Feistel結(jié)構(gòu)圖像加密算法

本文中的加密算法是基于超混沌序列的Feistel結(jié)構(gòu)加密,使得系統(tǒng)可以較好地抵御差分攻擊。

解密過(guò)程與加密過(guò)程基本一致,只需要將子密鑰逆序輸入即可解密圖像。

小知識(shí)之Feistel 結(jié)構(gòu)

在密碼學(xué)研究中,F(xiàn)eistel 密碼結(jié)構(gòu)是用于分組密碼中的一種對(duì)稱結(jié)構(gòu)。以它的發(fā)明者 Horst Feistel 為名,而Horst Feistel 本人是一位物理學(xué)家兼密碼學(xué)家,在他為 IBM 工作的時(shí)候,為Feistel 密碼結(jié)構(gòu)的研究奠定了基礎(chǔ)。很多密碼標(biāo)準(zhǔn)都采用了Feistel 結(jié)構(gòu),其中包括DES。Feistel 的優(yōu)點(diǎn)在于:由于它是對(duì)稱的密碼結(jié)構(gòu),所以對(duì)信息的加密和解密的過(guò)程就極為相似,甚至完全一樣。這就使得在實(shí)施的過(guò)程中,對(duì)編碼量和線路傳輸?shù)囊缶蜏p少了幾乎一半。