蘭紅,方毅
(江西理工大學(xué)信息工程學(xué)院,江西 贛州 341000)
數(shù)字圖像作為一種信息載體,具有內(nèi)容直觀信息豐富的特點(diǎn),廣泛運(yùn)用于人們的日常生活.在一些涉及安全保密的領(lǐng)域,圖像是一種重要的信息傳輸方式,為了確保圖像信息不被人為地惡意篡改或竊取,保證信息傳輸?shù)陌踩?,?duì)圖像進(jìn)行有效的加密就顯得尤為重要.
Arnold置亂算法[1-2]作為一種基于空間域的像素置亂算法,具有可逆性和周期性等[3-4]特性,在圖像加密領(lǐng)域有重要的地位.Arnold變換由V.I.Arnold在研究環(huán)面上的自同態(tài)時(shí)提出[5],國(guó)內(nèi)學(xué)者丁瑋等[6]將Arnold變換應(yīng)用于圖像置亂加密中,因Arnold變換只有一個(gè)同余映射參數(shù),導(dǎo)致該算法僅限于方陣加密.針對(duì)這一不足,許多學(xué)者對(duì)Arnold變換運(yùn)用于非方陣加密[7]進(jìn)行了相應(yīng)的論證并提出相應(yīng)改進(jìn)算法.文獻(xiàn)[8]提出選擇合適的置亂系數(shù)用于非等長(zhǎng)圖像的置亂,并給出了圖像高寬比為整數(shù)時(shí)Arnold變換周期性存在的判據(jù).文獻(xiàn)[9]證明了圖像寬高比為奇數(shù)時(shí),Arnold變換周期也存在,并給出了一個(gè)改進(jìn)的Arnold變換矩陣用于任意大小圖像的加密,但僅采用該變換矩陣對(duì)圖像置亂加密易被破解.文獻(xiàn)[10]提出一種將非正方形圖像劃分成多個(gè)正方形區(qū)域,并對(duì)每個(gè)正方形區(qū)域分別置亂加密的算法,該算法使用Arnold變換,區(qū)域選擇及變換矩陣存在局限性.
針對(duì)文獻(xiàn)[9]和文獻(xiàn)[10]的不足,立足于提升圖像加密效果和加密安全性,提出了一種非等長(zhǎng)Arnold變換圖像加密改進(jìn)算法.實(shí)驗(yàn)表明文中提出的改進(jìn)算法對(duì)任意寬高圖像的加密是有效的.
設(shè)圖像像素矩陣大小為N×N,矩陣內(nèi)像素坐標(biāo)為(x,y),且 x,y∈[0,1,…,N-1],若(x,y)和(x′,y′)滿足映射式(1),則稱為等長(zhǎng)Arnold變換.
式(1)中,a,b,c,d∈Z+,且滿足 gcd(ad-bc,N)=1(Z+表示正整數(shù),gcd(·)表示最大公約數(shù)),實(shí)際應(yīng)用中,通常取 a=b=c=1,d=2.
設(shè)圖像像素矩陣大小為M×N,矩陣內(nèi)像素坐標(biāo)為(x,y),且 x∈[0,1,…,M-1],y∈[0,1,…,N-1]若(x,y)和(x′,y′)滿足映射式(2),則稱為非等 長(zhǎng)Arnold變換.
式(2)中,a,b,c,d∈Z+,且滿足|ad-bc|>0.特別地,當(dāng)變換矩陣,a=1,b>0,c=nq,d=1+bc 時(shí),對(duì)任意M×N矩陣進(jìn)行Arnold變換周期都是存在的,為適合計(jì)算,取 b=n=1,得到式(3):
其中:
對(duì)數(shù)字圖像內(nèi)的像素點(diǎn)進(jìn)行Arnold變換,即將原圖中的像素點(diǎn)從(x,y)移動(dòng)至(x′,y′),從而使得圖像內(nèi)的像素點(diǎn)在空間位置上發(fā)生了改變.當(dāng)Arnold變換遍歷圖像中所有的像素點(diǎn)后,也就生成了一幅Arnold置亂加密圖像.
Arnold變換具有周期性[11-12]是指經(jīng)Arnold置亂后的加密圖像再經(jīng)過若干次變換可以得到與原圖一致的圖像,即通過周期性可以解密Arnold置亂后的圖像.假設(shè)原始圖像I0的Arnold變換周期為 T,經(jīng) n(0<n<T)次變換后得到置亂加密圖像 I1,若再經(jīng)過(T-n)次變換得到圖像 I2,此時(shí) I2=I0,I2也就是解密圖像.表1所示為部分圖像大?。∕,N代表行列)和Arnold變換周期T的關(guān)系.
表1 Arnold變換周期
當(dāng)Arnold變換周期存在時(shí),利用周期性恢復(fù)Arnold變換置亂后的圖像是一種有效的解密方法,但是周期被獲取后加密圖像易被解密.公式(3)中,作為變換矩陣的唯一變量q的取值可通過圖像的寬高值計(jì)算獲取,若對(duì)一幅圖像使用公式(3)置亂加密,q的取值容易被獲取,從而通過Arnold變換的周期性解密圖像.將非等長(zhǎng)圖像劃分成多個(gè)正方形區(qū)域加密,雖然可以實(shí)現(xiàn)加密的目的,但是存在著兩個(gè)方面的不足,一是只使用公式(1)的一般式進(jìn)行置亂加密,變換矩陣的單一性容易成為加密漏洞,二是沒有明確的分塊方法,不同大小、不同寬高比的圖像加密時(shí),前期分塊將復(fù)雜化.
針對(duì)以上不足,文中基于以下三個(gè)方面對(duì)非等長(zhǎng)圖像Arnold變換進(jìn)行改進(jìn).
1)等長(zhǎng)Arnold變換和非等長(zhǎng)Arnold變換混合運(yùn)用于圖像置亂加密.兩種Arnold變換因周期性的存在,若對(duì)一幅圖像單獨(dú)使用其中一種變換,安全性能并不高,在置亂加密過程中將兩種變換混合使用,可以使得Arnold變換周期和變換公式均存在差異.
2)局部周期確定,整體上周期不存在.將圖像劃分成若干個(gè)方陣和非方陣,每個(gè)分塊區(qū)域都存在周期,各個(gè)區(qū)域大小不一,周期也就有所區(qū)別,而對(duì)于加密圖像整體而言,周期性并不存在.
3)提升實(shí)用性.實(shí)際運(yùn)用中,待加密圖像的大小不盡相同,若沒有明確區(qū)域劃分的方法,將使得加密過程十分繁瑣,因此為了提升加密方法的實(shí)用性,需要確定圖像分塊的方法.
改進(jìn)后的圖像加密算法首先對(duì)圖像進(jìn)行分塊,劃分成等長(zhǎng)和非等長(zhǎng)區(qū)域,然后采用相對(duì)應(yīng)的Arnold變換公式對(duì)各個(gè)區(qū)域進(jìn)行置亂加密,最終得到加密圖像.
為將圖像劃分成若干個(gè)方陣和非方陣,本文使用一種改進(jìn)的隨機(jī)取點(diǎn)分塊法來實(shí)現(xiàn)該目的.該算法通過在圖像內(nèi)隨機(jī)取點(diǎn),點(diǎn)擴(kuò)展為面,以此確定方塊位置,然后延展方塊邊界將圖像除方塊外區(qū)域分割,最終將圖像完整分塊.具體操作如下:
step1:獲取圖像的寬高m×n;
step2:設(shè)置初始參數(shù):方塊個(gè)數(shù)(num)和方塊寬高(l);
step3:在范圍內(nèi)隨機(jī)取點(diǎn)(mi,ni);
step4:點(diǎn)(mi,ni)擴(kuò)展為 l×l方形區(qū)域.
step5:圖像剩余區(qū)域通過延長(zhǎng)方塊的邊界分割成若干矩陣.
通過隨機(jī)取點(diǎn)分塊法,可將圖像劃分成任意方塊和若干個(gè)非方塊,滿足算法需求.
圖像分塊的偽代碼描述如下:
%%隨機(jī)取點(diǎn)獲取方塊
IMG=imread(′img_name.jpg′);%讀取圖像
[m,n]=size(IMG);%獲取圖像的寬高
Num_Square=num;
Side_length=l;%輸入初始參數(shù):方形矩陣個(gè)數(shù)和方陣寬高
for i=1:num
mi=unidrnd(m-l);%在 0~m-l內(nèi)隨機(jī)取整數(shù)
ni=unidrnd(n-l);%在 0~n-l內(nèi)隨機(jī)取整數(shù)
end
Block(i)=IMG(mi:mi+l-1,ni:ni+l-1);
%Block(i)為分割出的方塊
以圖1為例說明隨機(jī)取點(diǎn)分塊法的實(shí)現(xiàn)效果.選取600×800灰度實(shí)景圖,初始參數(shù)設(shè)置為:方塊個(gè)數(shù)num=2,方塊寬高l=300,采用隨機(jī)取點(diǎn)分塊法進(jìn)行分塊.圖1(a)表示劃分的方形區(qū)域,圖1(b)為完整的分塊圖,通過該分塊法原始圖像被劃分為2個(gè)300×300方塊和6個(gè)大小各異的非方塊.
圖1 隨機(jī)取點(diǎn)分塊法
為避免分塊內(nèi)外的像素點(diǎn)發(fā)生置換,各分塊在加密過程中需作為一個(gè)單獨(dú)的整體存在.如圖2所示,設(shè)圖像中點(diǎn)(x0,y0)為某一分塊的左上角坐標(biāo),移動(dòng)圖像的直角坐標(biāo)系,原圖像中(x0,y0)轉(zhuǎn)換為分塊坐標(biāo)系中的原點(diǎn)(0,0),分塊區(qū)域在原圖像中的坐標(biāo)范圍為x∈X,y∈Y,則轉(zhuǎn)換后的坐標(biāo)范圍為 x∈X-x0,y∈Y-y0.
圖2 分塊法坐標(biāo)變換
將等長(zhǎng) Arnold 變換式(1)變換為式(5),其中a=b=c=1,d=2,像素點(diǎn)坐標(biāo)由(x,y)變?yōu)椋▁-x0,yy0),n表示為方塊的邊長(zhǎng),具體公式如下:
同理,非等長(zhǎng) Arnold變換式(3)變換為式(6),m和n分別表示非方塊的寬高.
對(duì)圖1(b)中的正方形和非正方形區(qū)域采用公式(5)和公式(6)分別進(jìn)行置亂50次,得到圖3.
圖3 分塊置亂
由圖3(b)可看出非等長(zhǎng)Arnold變換直接運(yùn)用于非方形區(qū)域的置亂效果不佳,而且存在明顯的紋理特征,圖3(c)中各分塊之間存在明顯的分界線,為解決這些問題,在圖像分塊后應(yīng)對(duì)圖像預(yù)置亂,破壞圖像的原始特征,再對(duì)各分塊置亂加密,進(jìn)一步提升加密效果.
解密是加密的逆過程.本文改進(jìn)算法利用Arnold變換的周期性依次對(duì)各分塊進(jìn)行解密,得到最終解密圖.圖 4(a)和圖 4(b)分別給出了本文改進(jìn)算法的加密及解密流程圖.
圖4 加密解密流程
為證明改進(jìn)算法的有效性,在處理器為Intel(R)Core(TM)i5-4210U 1.70 GHz的 Windows 7操作系統(tǒng)下,采用MATLAB R2014a仿真軟件平臺(tái)進(jìn)行實(shí)驗(yàn)仿真.
選取450×500的非等長(zhǎng)灰度Lena圖像作為原始圖像,實(shí)驗(yàn)參數(shù)設(shè)置為:方塊個(gè)數(shù)num=2,方塊寬高l=200,非等長(zhǎng)Arnold變換預(yù)置亂10次,各分塊采用相應(yīng)的Arnold變換公式分別置亂50次.
在圖像內(nèi)隨機(jī)取點(diǎn),得到坐標(biāo)為 (189,83)和(42,200)的兩點(diǎn),然后進(jìn)行分塊得到圖 5(a).在原始圖像未預(yù)置亂的情況下使用公式(5)對(duì)方塊區(qū)域置亂,得到圖 5(b),之后使用公式(6)對(duì)分塊中非方形區(qū)域置亂得到圖 5(c),圖 5(d)為預(yù)置亂圖,圖5(e)為本文算法完整置亂加密圖.對(duì)比圖 5(c)和圖5(e),在未預(yù)置亂的情況下,各分塊的分界線明顯,部分分塊存在紋理特征,而預(yù)置亂后的加密圖則解決了上述問題,顯著提升了加密效果.本文改進(jìn)算法中,預(yù)置亂的時(shí)間復(fù)雜度為O(n2),分塊法Arnold置亂也為O(n2),因預(yù)置亂和分塊法Arnold置亂是依次進(jìn)行的,故算法的時(shí)間復(fù)雜度為O(n2).雖然在時(shí)間復(fù)雜度方面本文算法跟經(jīng)典Arnold變換一樣,沒有明顯提升,但基于分塊變換的置亂加密對(duì)加密效果有較大提升.
圖5 置亂加密圖
實(shí)驗(yàn)過程中記錄各分塊區(qū)域大小、q值取值和變換周期,得到表2.
表2 實(shí)驗(yàn)參數(shù)
由表2可以看出,非等長(zhǎng)Arnold變換式(6)中q的取值實(shí)現(xiàn)了多樣化,也表明其變換矩陣具有多樣性,而且在同一幅圖像中各個(gè)區(qū)域因大小的不同,Arnold變換周期也隨之發(fā)生改變.
為驗(yàn)證本文算法抗攻擊能力,對(duì)圖5的置亂圖像進(jìn)行剪切攻擊,然后利用Arnold變換的周期性對(duì)被攻擊圖像進(jìn)行恢復(fù).實(shí)驗(yàn)中,隨機(jī)將圖5(e)若干50×50的區(qū)域像素點(diǎn)值置為255,得到圖6(a)和圖 6(c),圖 6(b)和圖 6(d)為相對(duì)應(yīng)的恢復(fù)圖像.
由圖 6(b)和圖 6(d)可看出,改進(jìn)算法可以有效地將剪切攻擊分布均勻化,恢復(fù)圖像與原圖相差無(wú)幾,說明加密圖像具有很好地抗剪切攻擊能力,能保障在被惡意攻擊之后的得到最大程度地恢復(fù).
相關(guān)性是指相鄰像素點(diǎn)的相關(guān)密切程度,對(duì)于一幅數(shù)字圖像而言,相鄰的像素點(diǎn)之間存在水平、垂直、對(duì)角方向的空間相關(guān)性,一般來說,圖像像素點(diǎn)之間具有很高的相關(guān)性,而對(duì)于加密圖像而言,像素點(diǎn)的相關(guān)性越低表示圖像越亂,置亂加密程度也越高同時(shí)安全性也更高.
選用大小為400×300的灰度圖作為實(shí)驗(yàn)圖像,測(cè)試本文算法在降低圖像像素點(diǎn)之間空間相關(guān)性的效果并且與文獻(xiàn)[10]算法進(jìn)行對(duì)比分析.采用文獻(xiàn)[10]算法將原圖劃分成六塊正方形區(qū)域得到圖7(a),分別對(duì)每塊區(qū)域Arnold置亂50次得到圖7(b);本文算法參數(shù)設(shè)為方塊個(gè)數(shù)num=2,方塊寬高l=200,非等長(zhǎng)Arnold變換預(yù)置亂10次,圖 7(c)為分塊圖,各分塊分別置亂50次,得到圖7(d).
在加密圖像中隨機(jī)選取2000組數(shù)據(jù),記作(xi,yi),i=1,2,3,…,2000,使用公式(7)計(jì)算像素點(diǎn)之間的水平、垂直、對(duì)角方向的空間相關(guān)性,式(7)中cov表示協(xié)方差,D表示方差,方差和協(xié)方差的計(jì)算公式分別為式(8)和式(9);式(8)和式(9)中的 E表示期望,期望的計(jì)算公式為式(10).
圖6 剪切攻擊圖
圖7 對(duì)比置亂加密圖
利用公式(7)計(jì)算的像素空間相關(guān)性如表3所示.
由表 3 可知,圖 7(d)比圖 7(b)的水平、垂直、對(duì)角線方向的空間系數(shù)分別降低了0.0782、0.0998、0.0682,相比較于文獻(xiàn)[10]算法,本文算法能更好地破壞像素點(diǎn)之間的相關(guān)性.
表3 像素空間相關(guān)系數(shù)
文中在等長(zhǎng)和非等長(zhǎng)Arnold變換的基礎(chǔ)上,結(jié)合圖像分塊提出的改進(jìn)算法在直觀上取得了很好的加密效果,解決了非等長(zhǎng)Arnold變換在圖像加密中存在的問題,圖像像素點(diǎn)之間的相關(guān)性大大降低,各分塊周期的差異性和Arnold變換矩陣多樣性很好地提升了解密難度.結(jié)合本文算法的局限,下一步將對(duì)Arnold變換結(jié)合像素值的改變做更加深入的研究.