彩色圖像文件加密及抗剪切攻擊解密算法

為了實(shí)現(xiàn)對(duì)數(shù)字彩色圖像信息的有效保護(hù),提出了一種基于Lorenz混沌序列的彩色圖像加密及抗剪切攻擊解密算法。對(duì)Lorenz系統(tǒng)輸出的三維混沌序列進(jìn)行改進(jìn),使其具有理想的偽隨機(jī)特性。根據(jù)這三維序列依次改變RGB三分量圖像的像素位置和像素值,從而實(shí)現(xiàn)圖像文件加密。

一、Lorenz混沌序列及其改進(jìn)

Lorenz系統(tǒng)是一個(gè)經(jīng)典的三維混沌系統(tǒng),其動(dòng)力學(xué)方程為:

彩色圖像文件加密及抗剪切攻擊解密算法

式中:σ,r,b為系統(tǒng)參數(shù),當(dāng)σ= 10,r= 28,b=8/3時(shí),系統(tǒng)進(jìn)入混沌狀態(tài)。本文采用四階Runge-Kutta數(shù)值積分方法來求解微分方程組。對(duì)于給定的初始條件(x0,y0,zo),可產(chǎn)生非周期、不收斂、對(duì)初始值(x0,y0,zo)極端敏感的三維混沌序列{(xi,yi,zi)|i=1,2,3,4,…)}。

以初始值xo=-1.01,yo =0,zo=1.02,積分步長(zhǎng)h=0.001來計(jì)算Lorenz序列,求出各序列的105項(xiàng),其x序列的后2000項(xiàng)、x序列的自相關(guān)性和x-z序列的互相關(guān)性如圖1所示。

彩色圖像文件加密及抗剪切攻擊解密算法

按照Golomb對(duì)偽隨機(jī)序列提出的3個(gè)公設(shè),理想的混沌序列應(yīng)具有均勻分布,自相關(guān)是δ函數(shù),互相關(guān)是零的統(tǒng)計(jì)特性。由此可見,原方程產(chǎn)生的序列不是很理想的偽隨機(jī)序列。

為此,本加密算法對(duì)原序列作如下改進(jìn):

(1)將序列的大小擴(kuò)大10k倍(k=0,1,2,3,4,…);

(2)將序列映射到值域(-0.5,+0.5)。

計(jì)算公式為:

彩色圖像文件加密及抗剪切攻擊解密算法

式中:ruund取最近整數(shù)。上面的序列經(jīng)公式(2)處理后k=4),其序列值和整體序列相關(guān)性如圖2所示。此時(shí),序列值分布均勻,自相關(guān)為理想的δ函數(shù),互相關(guān)近似為零,是理想的偽隨機(jī)序列。實(shí)驗(yàn)證明,原序列對(duì)于不同的初值,其序列相關(guān)性相差很大,而經(jīng)改進(jìn)后的序列的相關(guān)性卻都幾乎一致。

彩色圖像文件加密及抗剪切攻擊解密算法

二、加密算法

本文加密算法同時(shí)采用像素置亂和像素值擴(kuò)散加密,使加密圖像像素隨機(jī)分布,以提高算法的抗剪切能力和抗像素特征值統(tǒng)計(jì)攻擊能力,需要如下混沌序列。

設(shè)RGB彩色圖像大小為m×n,由Lorenz系統(tǒng)產(chǎn)生的原序列經(jīng)公式(2)處理后生成混沌序列:

1

序列{xi|i=1,2,3,…,m×n},{yi|i=1,2,3,…,m×n},{zi|i==1,2,3,…,m×n}依次用于彩色圖像RGB分量的像素位置和像素值加密。

1、基于混沌序列的像素置亂

本文加密算法應(yīng)用混沌序列的偽隨機(jī)性和遍歷性,由不重復(fù)的混沌序列決定將原像素(i,j)變換到(r0w,col)新位置。

將混沌序列{xi|i=1,2,3,…,m×n}按升序或降序排序得到新的有序序列{cxi|i=1,2,3,…,m×n},將cx(i)值用其在x中的位置索引值替代,即得到服從[1,m×n]的穩(wěn)定整數(shù)(排序位置)分布的混沌隨機(jī)序列{sxi|i=1,2,3,…,m×n},依此序列一一把R分量的像素(i,j)按行列順序移位到(r0w,col)。

彩色圖像文件加密及抗剪切攻擊解密算法

式中:i=1,2,3,…,m,j=1,2,3,…,n。上式計(jì)算后,若col=0,則row= r0w-1,col=n。

同理,依次把GB分量的像素移位到新的位置。這樣,原來同一像素位置的RGB分量的像素位置己在各自分量上隨機(jī)分布在不同的位置。

2、基于異或運(yùn)算的像素值擴(kuò)散

本文加密算法采用根據(jù)隨機(jī)條件隨機(jī)選擇混沌序列作為XOR異或操作數(shù)來加密RGB各分量的像素值,方法如下:

(1)可選的XOR操作數(shù)

將混沌序列變換為8位無符號(hào)整數(shù)作為可選擇的XOR操作數(shù):

1

式中:i=l,2,3,…,m×n,k≥4。

(2)RGB分量的像素值擴(kuò)散

設(shè)RGB圖像wK阿的某像素值A(chǔ)(i,j),則新像素值A(chǔ)(i,j)的RG分量為:

1

式中:rX,gY和bZ異或操作數(shù)的取值根據(jù)隨機(jī)選擇變量uptiurt由表1選擇。uptiurt由下式計(jì)算:

彩色圖像文件加密及抗剪切攻擊解密算法

式中:T-X,Y,Z序列之一。i=1,2,3,…,m×n,k≥2。

表1給出了mX,mY和mZ的排列結(jié)果與序號(hào)一致的一種對(duì)應(yīng)關(guān)系,通過對(duì)該排列結(jié)果進(jìn)行全排列,可得到720種對(duì)應(yīng)關(guān)系表。

彩色圖像文件加密及抗剪切攻擊解密算法

三、抗剪切攻擊解密算法

本文加密算法是可逆算法,按加密算法反向運(yùn)算即可得到無損原圖像。為了抵抗惡意剪切或涂鴉等攻擊,提出一種抗剪切攻擊解密恢復(fù)算法。本算法的可靠性是基于本文加密算法的像素置亂和像素值擴(kuò)散分布均勻的特性。本加密算法原理示意圖如圖3所示,圖3(a)表示加密圖像各像素值,圖3(b)表示加密圖像被剪切像素被F標(biāo)記,圖3(c)表示解密后的像素值和被剪切像素標(biāo)記,本算法就是恢復(fù)F處的像素值。

彩色圖像文件加密及抗剪切攻擊解密算法

1、檢測(cè)被剪切圖像

解密前,檢測(cè)被剪切像素。經(jīng)過像素置亂和像素值變換雙重加密后的圖像,相鄰像素幾乎不相關(guān),如圖3(a)所示。如連續(xù)出現(xiàn)2—3個(gè)像素的像素值一樣的,則認(rèn)為這些像素是被剪切像素。在本文加密算法下,多次實(shí)驗(yàn)證明,取連續(xù)3個(gè)像素作為判斷條件是很可靠的。

設(shè)用flagm×n×3無符號(hào)整數(shù)矩陣標(biāo)記加密圖像RGB各分量被剪切像素,并初始化為零。從第一行第一列開始逐行逐列掃描,如連續(xù)3個(gè)像素值相同,則與這些像素對(duì)應(yīng)flag置1。

因?yàn)榧羟羞吔玎徲蛳袼乜赡苡信c剪切區(qū)域像素值相同的像素被誤判為剪切像素,所以取flag記錄中被剪切像素最少的對(duì)回flag分量作為被剪切像素區(qū)域。

flag標(biāo)志位(如圖3(b)所示)需變換到被剪切像素在解密后的位置flag(如圖3(c)所示)。

2、抗剪切恢復(fù)算法

為方便起見,本算法簡(jiǎn)稱Np恢復(fù)算法,其基本思想是:圖像解密后,被剪切像素己隨機(jī)分散在整個(gè)圖像,應(yīng)用4鄰域相鄰像素的高度相關(guān)性,被剪切像素的像素值取值可以根據(jù)鄰域像素決定。本算法是:

(1)根據(jù)jlg,恢復(fù)第1行、第1列、第w行和第n列被剪切像素值,取其鄰值或鄰值平均值;

(2)從第2行第2列像素開始,根據(jù)flg逐行逐列計(jì)算被剪切像素,如其右鄰域像素不被剪切,則取左右鄰域像素值平均值;否則,如其下鄰域像素不被剪切,則取上下鄰域像素值平均值;否則,如其下鄰域像素被剪切,則取左鄰域像素值和上鄰域像素值的平均值。

四、本文加密算法的特點(diǎn)

由于改進(jìn)后的Lorenz混沌序列具有更強(qiáng)的偽隨機(jī)特性和更理想的相關(guān)特性,使得本文加密算法可靠實(shí)現(xiàn):

(1)根據(jù)改進(jìn)的三維序列分別移位RGB三基色分量的像素位置分布均勻,提高算法的抗剪切能力;

(2)采用多重隨機(jī)選擇異或操作數(shù)和足夠多的隨機(jī)操作數(shù)樣本,使算法具有很強(qiáng)的像素值擴(kuò)散能力,且像素值分布均勻;

(3)像素位置置亂均布和像素值均布兩大前提保證了基于鄰域相鄰像素特性的加密圖像抗剪切攻擊恢復(fù)的有效實(shí)現(xiàn)。

基于鄰域相鄰像素特性的解密圖像的抗剪切恢復(fù)算法,隨著被剪切面積的增加,被剪切像素點(diǎn)的還原準(zhǔn)確性逐漸下降,需進(jìn)一步改進(jìn)算法,提高恢復(fù)質(zhì)量。

小知識(shí)之偽隨機(jī)性

偽隨機(jī)性(Pseudorandomness)是指一個(gè)過程似乎是隨機(jī)的,但實(shí)際上并不是。例如偽隨機(jī)數(shù)(或稱偽亂數(shù)),是使用一個(gè)確定性的算法計(jì)算出來的似乎是隨機(jī)的數(shù)序,因此偽隨機(jī)數(shù)實(shí)際上并不隨機(jī)。在計(jì)算偽隨機(jī)數(shù)時(shí)假如使用的開始值不變的話,那么偽隨機(jī)數(shù)的數(shù)序也不變。偽隨機(jī)數(shù)的隨機(jī)性可以用它的統(tǒng)計(jì)特性來衡量,其主要特征是每個(gè)數(shù)出現(xiàn)的可能性和它出現(xiàn)時(shí)與數(shù)序中其它數(shù)的關(guān)系。偽隨機(jī)數(shù)的優(yōu)點(diǎn)是它的計(jì)算比較簡(jiǎn)單,而且只使用少數(shù)數(shù)值很難推算出計(jì)算它的算法。