基于Logistic映射的多重圖像加密技術(shù)
近年來,混沌理論以其對初值極其敏感性、非線性、偽隨機(jī)等特性受到人們的廣泛應(yīng)用,將混沌理論應(yīng)用于圖像加密已成為一個熱點(diǎn)的研究方向。下面,我就給大家介紹一種新的加密方法:在空域和變換域?qū)煞N加密方式結(jié)合起來,在空域利用混沌序列和矩陣擴(kuò)散變換對原始圖像信息進(jìn)行雙重像素值擾亂,在小波變換域?qū)π〔ㄏ禂?shù)進(jìn)行基于混沌序列的位置置亂,對置亂后的小波系數(shù)重構(gòu)生成加密圖像。
一、混沌序列
混沌現(xiàn)象是在非線性動力系統(tǒng)中出現(xiàn)的類似隨機(jī)過程,這種過程既非周期也不收斂。混沌區(qū)的數(shù)據(jù)具有迭代不重復(fù)性、初值敏感性和參數(shù)敏感性等特征。目前,用于圖像加密的典型的混沌系統(tǒng)有三種:一維的Logistic映射,二維的Henon映射,三維的Lorenz映射。其中,Logistic映射是一類非常簡單且被廣泛研究的非線性動力系統(tǒng),現(xiàn)選用該混沌系統(tǒng)完成圖像像素值的擾亂和小波系數(shù)的位置置亂。
Logistic混沌系統(tǒng)被定義為:
Xk+1=μXk(1 -Xk) ? ? ?式(1)
式中,0≤μ≤4稱為分支參數(shù)。研究工作者指出:當(dāng)Xk∈(0,1)且3.569 945 <μ≤4時,Logistic映射工作于混沌狀態(tài)。
二、像素值擾亂
對像素值置亂的目的是為了改變原圖像的直方圖,保護(hù)原圖像像素的灰度值分布信息,使加密圖像能有效地抵抗對圖像進(jìn)行分析統(tǒng)計(jì)的攻擊。文中采用兩種方法對原始圖像的像素值進(jìn)行雙擾亂,一種是基于混沌序列的像素值擾亂,一種是基于矩陣變換的擴(kuò)散變換擾亂。
1、基于混沌序列的像素值擾亂
設(shè)原圖像I的大小為M×N,選取參數(shù)μ與初始值X0采用式(1)生成一組混沌序列,并選取舍去參數(shù)n0,從Xno開始取M×N個序列并將其轉(zhuǎn)換成M×N的矩陣G。根據(jù)Logistic混沌的特點(diǎn)可知G(i,j)∈(0,1),對G按照式(2)做相應(yīng)地變換得到像素?cái)_亂矩陣G1,G1(i,j)∈(0,255)。
G1(i,j)= round(G(i,j)×255) ? 式 (2)
對原圖像I中的每個像素的像素值I(i,j)與G1(i,j)作異或運(yùn)算,得到像素值首次被擾亂的加密圖像I1。為了像素?cái)_亂的有效性,我們給出圖1(a)與圖1(b)兩幅圖像的原直方圖分布情況和經(jīng)過像素值擾亂后的直方圖分布情況(μ=4,X0=0.100 1,n0=40),圖2(a)與圖2(b)分別為兩幅圖的原始數(shù)據(jù)直方圖。圖3(a)與圖3(b)分別為兩幅圖經(jīng)過像素置亂后的直方圖分布情況。從圖中可以看出,經(jīng)過混沌置亂后的圖像直方圖更均勻,有效地保護(hù)了原圖像的直方圖分布情況,因此,該像素值擾亂方法能有效地抵抗圖像的分析統(tǒng)計(jì)攻擊。



2、基于矩陣變換的擴(kuò)散
變換為了使加密圖像能夠抵抗已知明文圖像的統(tǒng)計(jì)分析攻擊的能力更強(qiáng)。對原始圖像的像素值進(jìn)行擴(kuò)散變換,使得密文的直方圖得以改變以進(jìn)一步保護(hù)原圖像灰度值的分布信息。
將經(jīng)過初次像素值擾亂的圖像I1分解成2 ×2的小方塊,對每個方塊中的四個像素值I1(i,j),I1(i+1,j),I1(i,j+1),I1(i+1,j+1)運(yùn)用變換X'=T×X,其中X=[I1(i,j),I1(i+ 1,j)I1(i,j+ 1),I1(i+1,j+1)]'為圖像塊中四個像素值組成的列向量,X'為經(jīng)過擴(kuò)散變換后的像素值向量,T為擴(kuò)散矩陣。

其中k為任意數(shù)。這樣可以把k作為擴(kuò)散的參數(shù)增強(qiáng)加密強(qiáng)度。這樣可以進(jìn)一步擾亂圖像的像素值,并改變其分布情況。
為了說明擴(kuò)散變換的有效性,圖4(a)與圖4(b)給出了圖1所示的兩幅圖像所對應(yīng)的僅經(jīng)過擴(kuò)散變換后的直方圖(擴(kuò)散參數(shù)k= 2)。對比圖2原始圖像直方圖與圖4僅經(jīng)過擴(kuò)散變換的直方圖,可以看出擴(kuò)散變換擾亂像素值信息的有效性,實(shí)質(zhì)上,擴(kuò)散變換不僅擾亂了圖像的直方圖分布信息,而且改變了圖像數(shù)據(jù)的數(shù)據(jù)范圍(原圖像的數(shù)據(jù)范圍為0 , 255,擴(kuò)散變換后數(shù)據(jù)范圍將擴(kuò)大很多,這與擴(kuò)散變換的參數(shù)k有關(guān))。圖5為兩幅原始圖像經(jīng)過基于混沌序列的像素值擾亂和擴(kuò)散變換擾亂的雙重?cái)_亂后的直方圖分布情況。結(jié)合圖3與圖5,可以看出僅經(jīng)過混沌序列的置亂使圖像分布趨于均勻,經(jīng)過雙重?cái)_亂后使加密圖像的直方圖分布趨于相似,這樣可以防止已知明文對加密圖像的攻擊。實(shí)驗(yàn)表明:文中的雙重像素值擾亂方法是一種有效的圖像文件加密方法。


3、小波系數(shù)位置置亂
為了進(jìn)一步提高加密圖像的安全性,對經(jīng)過雙重像素值擾亂的圖像進(jìn)行小波分解,在小波變換域?qū)π〔ㄏ禂?shù)進(jìn)行位置置亂,并對置亂后的小波系數(shù)重構(gòu)得到最終的加密圖像。設(shè)經(jīng)過多層小波分解得到的系數(shù)矩陣為C,這里即利用混沌生成的位置置亂矩陣對C進(jìn)行位置置亂。由于采用Matlab提供的wavedec2函數(shù)進(jìn)行多層小波分解,則得到的小波系數(shù)矩陣C為一個行向量。設(shè)C的大小為1 ×t,位置置亂矩陣的生成方法為:首先選取參數(shù)μ和X0根據(jù)式(1)產(chǎn)生一組混沌序列,舍棄前R0個混沌元素,從第R0+ 1個序列開始取t個混沌序列{Xr0+1,Xr0+2,Xr0+3,…,Xr0+t},通過變換將這t個混沌序列值從小到大排序(或從大到小)得到新的序列{x'1,x'2,x'3,…,x't},并確定Xr0+i在{x'1,x'2,x'3,…,x't}中的位置編號,得到位置編號集{s1,s2,s3,…,st},得到的位置編號集即為位置置亂矩陣,設(shè)置亂后的系數(shù)矩陣為C1,則置亂時將C(i)存放于C1(si)中。位置置亂完成后對置亂后的小波系數(shù)C1重構(gòu)得到最終加密圖像I*。
4、加密/解密算法描述
設(shè)原始圖像為I(大小為M×N),最終加密圖像為I*,則具體加密過程為:
(1)選取參數(shù)μ,x0,n0根據(jù)式(1)生成像素?cái)_亂矩陣G1,并按式(2)進(jìn)行像素值的擾亂,得到初次加密圖像I1;
(2)選取擴(kuò)散變換參數(shù)k,對I1進(jìn)行擴(kuò)散變換,得到第二次像素值擾亂圖像I2;
(3)選取小波變換的層數(shù)l及小波基函數(shù)fwave,對I2進(jìn)行多層小波變換,得到小波系數(shù)矩陣C;
(4)重新設(shè)置混沌序列生成的參數(shù)μ,X0,n0,新參數(shù)記為μ1,x10,r0,按上述(3)中的方法生成位置置亂矩陣{s1,s2,s3,…,st},并將小波系數(shù)C置亂得到置亂后的小波系數(shù)C1;
(5)對C1進(jìn)行小波重構(gòu)得到最終加密圖像I*。
這里,密鑰為μ,x0,n0,k,l,fwave,μ1,x10,r0。解密過程與加密過程相反。
小知識之置亂
所謂“置亂”,就是將圖像的信息次序打亂,將a像素移動到b像素的位置上,b像素移動到c像素的位置上……使其變換成雜亂無章難以辨認(rèn)的圖像。










