本發(fā)明涉及一種基于可逆仿生元胞自動機(jī)的圖像加密方法,屬于信息安全領(lǐng)域中的圖像保密技術(shù)。
背景技術(shù):
圖像是人類獲取信息,表達(dá)信息和傳遞信息的重要手段。隨著互聯(lián)網(wǎng)和多媒體技術(shù)的迅猛發(fā)展,越來越多圖像可以在網(wǎng)絡(luò)上方便、快捷地發(fā)布和傳輸。一些涉及個人隱私、商業(yè)機(jī)密或國家秘密的圖像就很容易被惡意攻擊者輕易地瀏覽、竊取、竄改、非法復(fù)制與傳播,若不對這些圖像采取必要的安全保護(hù)措施,由此帶來的嚴(yán)重后果是不可估量的。因而,圖像加密作為圖像安全保護(hù)的核心技術(shù),其應(yīng)用愈來愈廣泛,其要求也愈來愈高。與文本信息不同,圖像具有數(shù)據(jù)量大、冗余度高、相鄰像素間相關(guān)性強(qiáng)等特點,一些傳統(tǒng)的對稱加密算法如des、aes盡管具備良好的混淆和擴(kuò)散特性,但在處理圖像數(shù)據(jù)時顯得效率不高、效果不理想,這些問題對圖像加密提出了新的挑戰(zhàn),我們迫切需要研究和開發(fā)出更多適合圖像自身特點的加密方法。
元胞自動機(jī)是一個時間、空間和狀態(tài)都離散的動力學(xué)系統(tǒng)。它具有很多重要的特性,例如組成單元的簡單性、信息處理的并行性以及全局演化的復(fù)雜性等,這些特點都非常適用于密碼研究。如今,元胞自動機(jī)在密碼學(xué)領(lǐng)域得到了廣泛的應(yīng)用,成為密碼學(xué)研究中的熱點。近年來,許多學(xué)者提出了基于元胞自動機(jī)的圖像加密方法。吳穎芝等人構(gòu)造一種t型可逆元胞自動機(jī),并且利用其演化對圖像進(jìn)行分組加密;張水平等人提出一種基于元胞自動機(jī)分治策略的圖像加密算法,其基本思想是先將明文圖像分解為若干幅圖像,在使用不同的元胞自動機(jī)規(guī)則分別對分解后的圖像進(jìn)行加密,最后把加密后的圖像合并,得到加密圖像;王福來等人提出一種基于誤差快速擴(kuò)散元胞自動機(jī)的加密技術(shù),構(gòu)造出一種新型一維元胞自動機(jī),密鑰采用了偽隨機(jī)數(shù)序列生成方法,用密文直接產(chǎn)生流密碼,利用元胞自動機(jī)演化規(guī)則進(jìn)行加密;上述方法均基于一維元胞自動機(jī),然而利用一維元胞自動機(jī)進(jìn)行加密,元胞自動機(jī)規(guī)則空間較小,擴(kuò)散程度較低,且僅僅局限在水平方向上,因此加密算法安全性不高。
針對一維元胞自動機(jī)加密技術(shù)的缺陷,有學(xué)者提出基于二維元胞自動機(jī)的加密技術(shù)。丁瑋等人提出了一種基于生命游戲的圖像加密方法,該方法可有效降低圖像相鄰像素的相關(guān)性,但存在以下問題:首先,只改變像素位置,沒有進(jìn)行擴(kuò)散操作,這難以產(chǎn)生雪崩效應(yīng);其次,加密后的圖像存在明顯的紋理,加密效果不好;最后,由于該算法只有置亂操作,因此難以抵抗選擇明文攻擊;李敬醫(yī)等人提出一種3d混沌映射和二階可逆元胞自動機(jī)相結(jié)合的圖像加密算法。該算法的優(yōu)點是采用比特級別的混淆操作,能有效抵抗統(tǒng)計分析和差分分析,具有較高的安全性。但是,其缺點是置亂為像素級別,而混淆為比特級別,需要多次將圖像的像素值轉(zhuǎn)換為比特值,然后再次轉(zhuǎn)換為像素值,這樣降低了加密效率。
技術(shù)實現(xiàn)要素:
發(fā)明目的:針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種基于可逆仿生元胞自動機(jī)的圖像加密方法。
技術(shù)方案:一種基于可逆仿生元胞自動機(jī)的圖像加密方法,包括如下步驟:
步驟1,提取明文圖像的像素矩陣im×n,m是圖像的高度,n是圖像的寬度,均以像素計;
步驟2,將明文圖像的像素矩陣im×n轉(zhuǎn)換為二進(jìn)制矩陣pm×(w×n),轉(zhuǎn)換方法為:若明文圖像為灰度圖像,則令w=8,將每個像素值轉(zhuǎn)換為8位二進(jìn)制,得到一個m行和8n列的二進(jìn)制矩陣;若明文圖像為彩色圖像,則令w=24,將每個像素值轉(zhuǎn)換為24位二進(jìn)制,得到一個m行和24n列的二進(jìn)制矩陣;
步驟3,將二進(jìn)制矩陣pm×(w×n)按照左右劃分為兩個大小相同的矩陣p′m×(w×n/2)和p″m×(w×n/2),矩陣p′m×(w×n/2)和p″m×(w×n/2)均有m行和w×n/2列;
步驟4,將二進(jìn)制矩陣p′m×(w×n/2)和p″m×(w×n/2)分別作為仿生元胞自動機(jī)的兩個初始狀態(tài)c0和c1,其中c0表示t=0時刻仿生元胞自動機(jī)的狀態(tài),c1表示t=1時刻仿生元胞自動機(jī)的狀態(tài),然后選取一個仿生元胞自動機(jī)規(guī)則f作為密鑰;
步驟5,根據(jù)仿生元胞自動機(jī)規(guī)則f,計算:
步驟6,重復(fù)步驟5,仿生元胞自動機(jī)迭代n次,得到仿生元胞自動機(jī)的兩個終止?fàn)顟B(tài)cn和cn+1,左右合并后轉(zhuǎn)為十進(jìn)制數(shù)像素矩陣即為密文圖像;
所述步驟4中該仿生元胞自動機(jī)有m×(w×n/2)個元胞,其中m表示元胞的行數(shù),w×n/2表示元胞的列數(shù),每個元胞具有活和死兩個狀態(tài),分別用1和0表示,每個元胞與其上下左右以及對角線上的元胞組成一個3×3的moore鄰域;對仿生元胞自動機(jī)邊界上的元胞進(jìn)行周期型邊界處理:第0行元胞的狀態(tài)值等于第m行元胞的狀態(tài)值,第m+1行元胞的狀態(tài)值等于第1行元胞的狀態(tài)值,第0列元胞的狀態(tài)值等于第w×n/2列元胞的狀態(tài)值,第w×n/2+1列元胞的狀態(tài)值等于第1列元胞的狀態(tài)值。
所述步驟4中的仿生規(guī)則f表示為bx/sy,其中x和y是0-8中任意的數(shù)字,bx表示當(dāng)前元胞如果是死的,那么它的鄰居必須出現(xiàn)x中規(guī)定個數(shù)的活元胞,下一時刻它才能活。sy表示當(dāng)前元胞如果是活的,那么它的鄰居必須出現(xiàn)y中規(guī)定個數(shù)的活元胞,下一時刻它才能活。
本發(fā)明采用上述技術(shù)方案,具有以下有益效果:
首先,置亂和混淆均在比特級別進(jìn)行,能夠同時改變像素位置和像素值,提高了安全性和加密效率。其次,與李敬醫(yī)等人提出的二階可逆元胞自動機(jī)相比,采用仿生元胞自動機(jī)無需存儲規(guī)則表以及進(jìn)行查表操作,提高了加密效率
附圖說明
圖1是實施例1中的明文圖像;
圖2是實施例1中密文圖像;
圖3是實施例1中明文圖像的直方圖;
圖4是實施例1中密文圖像的直方圖。
具體實施方式
下面結(jié)合具體實施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對本發(fā)明的各種等價形式的修改均落于本申請所附權(quán)利要求所限定的范圍。
采用mathematica8軟件進(jìn)行仿真本發(fā)明提供的基于可逆仿生元胞自動機(jī)的圖像加密方法,下面給出本發(fā)明的一個實施例:
明文圖像選用大小為256×256的灰度圖像,灰度圖像的每一個像素由8比特組成,如圖1所示。
實施例的圖像加密的具體實施步驟如下:
步驟1:提取明文圖像的像素矩陣i256×256,圖像的高度為256個像素,圖像的寬度為256個像素;
步驟2,將明文圖像的像素矩陣i256×256轉(zhuǎn)換為二進(jìn)制矩陣p256×2048;
步驟3,將二進(jìn)制矩陣p256×2048按照左右劃分為兩個大小相同的矩陣p2′56×1024和p2′5′6×1024;
步驟4,令仿生元胞自動機(jī)水平方向元胞的數(shù)量為1024,仿生元胞自動機(jī)垂直方向元胞的數(shù)量為256,設(shè)定一個大小為256×1024個元胞的仿生元胞自動機(jī);該仿生元胞自動機(jī)的每個元胞具有活和死兩個狀態(tài),分別用1和0表示,每個元胞與其上下左右以及對角線上的元胞組成一個3×3的moore鄰域,由于仿生元胞自動機(jī)邊界上的元胞沒有完整的moore鄰域,因此需要進(jìn)行合理的邊界處理,在這里我們做如下周期型邊界處理:第0行元胞的狀態(tài)值等于第256行元胞的狀態(tài)值,第257行元胞的狀態(tài)值等于第1行元胞的狀態(tài)值,第0列元胞的狀態(tài)值等于第1024列元胞的狀態(tài)值,第1025列元胞的狀態(tài)值等于第1列元胞的狀態(tài)值;將二進(jìn)制矩陣p′256×1024和p″256×1024,分別作為仿生元胞自動機(jī)的兩個初始狀態(tài)c0和c1,并選取一個仿生元胞自動機(jī)規(guī)則f作為密鑰;假定仿生元胞自動機(jī)的規(guī)則f為b3/s1234,規(guī)則描述如下:若一個狀態(tài)為0的元胞,當(dāng)它的moore鄰域中有3個元胞的狀態(tài)為1,那么在下一時刻,該元胞的狀態(tài)為1;若一個狀態(tài)為1的元胞,當(dāng)它的moore鄰域中有1個或2個或3個或4個元胞的狀態(tài)為1,那么在下一時刻,該元胞的狀態(tài)仍為1;否則,不論該元胞的當(dāng)前狀態(tài)為0或1,下一時刻均為0;
步驟5,根據(jù)仿生元胞自動機(jī)規(guī)則f,計算:
步驟6,重復(fù)步驟5,仿生元胞自動機(jī)迭代700次,最后交換c700和c701,左右合并后轉(zhuǎn)為十進(jìn)制數(shù)像素矩陣即為密文圖像,如圖2所示;
下面結(jié)合附圖對實施例進(jìn)行性能分析:
1、直方圖分析
直方圖是圖像信息統(tǒng)計規(guī)律的客觀反映,一個好的圖像加密算法應(yīng)該使得密文圖像在統(tǒng)計上不能提供任何有用的信息。比較理想的狀態(tài)是加密過程將原始圖像像素值的不均勻分布變成了像素值的均勻分布,使密文像素值在整個空間范圍內(nèi)的取值概率均等。圖3是明文灰度圖像圖1的直方圖,圖4是采用本發(fā)明方法加密過后密文圖像圖2的直方圖,對比可以看出,密文圖像的直方圖與明文圖像完全不同,其直方圖分布呈平坦而均勻的分布,這表明密文圖像的像素值在[0,255]上的取值概率趨于均等,因此本發(fā)明方法能夠有效抵抗基于統(tǒng)計分析的攻擊。
2、相關(guān)性分析
數(shù)字圖像中相鄰像素的相關(guān)性通常很高,圖像加密的目標(biāo)之一就是降低相鄰像素的相關(guān)性。為了分析相鄰像素的相關(guān)性,首先在水平方向、垂直方向和對角方向上分別隨機(jī)選擇20000對相鄰像素,然后根據(jù)式(1)-(4)計算三個方向上的相關(guān)系數(shù)γxy。
其中,x和y分別表示圖像中相鄰2個像素點的像素值。表1列出了原圖與密文圖像在水平、垂直和對角三個方向上相鄰像素的相關(guān)性。從表1中可知,原圖像三個方向上相鄰像素的相關(guān)系數(shù)接近于1,這說明原圖中相鄰像素間具有很強(qiáng)的相關(guān)性。而加密后圖像同方向上相鄰像素相關(guān)系數(shù)幾乎為0,可見加密后的圖像像素相關(guān)性大幅降低,相鄰像素已經(jīng)基本上不相關(guān)了。
表1
3、差分分析
一個好的密碼系統(tǒng)應(yīng)當(dāng)對明文變化十分敏感,也就是說明文的微小改變能夠引起密文的很大變化,以隱蔽明文的統(tǒng)計特性和結(jié)構(gòu)規(guī)律。為了說明算法的擴(kuò)散效果,下面引入兩個量:像素數(shù)目改變率(npcr)和平均強(qiáng)度變化率(uaci)。像素數(shù)目改變率是指當(dāng)明文圖像改變一個像素時,加密圖像像素值發(fā)生改變的數(shù)目所占的百分比,平均強(qiáng)度變化率是指加密圖像像素值變化的程度。設(shè)兩幅僅相差一個像素的明文圖像加密后的密文圖像為c1,c2,則:
其中,w和h表示圖像的寬和高。c1(i,j),c2(i,j)分別為密文圖像c1,c2中像素點(i,j)的灰度值。d(i,j)是一個二維矩陣,當(dāng)c1(i,j)=c2(i,j)時,d(i,j)=0,否則d(i,j)=1。
實驗選取明文圖像圖1中6個不同位置的像素進(jìn)行明文敏感性測試。測試過程中,首先保持密鑰不變,然后計算圖像中單個像素點的差值而產(chǎn)生的npcr和uaci的值。實驗結(jié)果如表2所示,本發(fā)明方法的npcr和uaci均非常接近理想的期望值,這表明本發(fā)明方法對明文非常敏感。
表2