專利名稱:一種基于元胞自動機的圖像加密和解密方法
技術領域:
本發(fā)明涉及一種基于元胞自動機的圖像加密和解密方法,屬于信息安全領域中的圖像保密技術。
背景技術:
圖像是人類獲取信息,表達信息和傳遞信息的重要手段。隨著互聯(lián)網和多媒體技術的迅猛發(fā)展,越來越多圖像可以在網絡上方便、快捷地發(fā)布和傳輸。一些涉及個人隱私、 商業(yè)機密或國家秘密的圖像就很容易被惡意攻擊者輕易地瀏覽、竊取、竄改、非法復制與傳播,若不對這些圖像采取必要的安全保護措施,由此帶來的嚴重后果是不可估量的。因而, 圖像加密作為圖像安全保護的核心技術,其應用愈來愈廣泛,其要求也愈來愈高。與文本信息不同,圖像具有數(shù)據(jù)量大、冗余度高、相鄰像素間相關性強等特點,一些傳統(tǒng)的對稱加密算法如DES、AES盡管具備良好的混淆和擴散特性,但在處理圖像數(shù)據(jù)時顯得效率不高、效果不理想,這些問題對圖像加密提出了新的挑戰(zhàn),我們迫切需要研究和開發(fā)出更多適合圖像自身特點的加密方法。
近年來,將元胞自動機應用于密碼學引起了廣泛關注。元胞自動機是一種空間、時間和狀態(tài)均離散的動力系統(tǒng),它由元胞空間、狀態(tài)、鄰域和規(guī)則四個主要部分構成。空間中的每一個元胞取有限的離散狀態(tài),并根據(jù)相同的局部規(guī)則作同步更新。元胞自動機具有組成單元的簡單性、單元之間作用的局部性、信息處理的高度并行性以及全局的復雜性等特點,這些特點非常有利于設計出簡單、并行、高效的加密系統(tǒng)。目前,元胞自動機加密研究主要集中在序列密碼和分組密碼,而專門涉及圖像加密的方法較少。Martin提出了一種基于元胞自動機的二值圖像加密方法,該方法利用混合元胞自動機構造出偽隨機序列發(fā)生器, 然后通過偽隨機序列與明文圖像進行異或來實現(xiàn)圖像的加密。這種流密碼加密方法雖然處理速度快,但安全性完全依賴于偽隨機序列發(fā)生器的安全,并且經不住已知明文攻擊。Chen 等人利用元胞自動機的迭代實現(xiàn)圖像加密過程中的替代操作,并利用SCAN技術實現(xiàn)置換操作。這類方法具有良好的混淆和擴散性能,但未能考慮算法的容錯能力,當密文圖像在傳輸過程中出錯或受損時,即便是1比特的錯誤,也會因為誤差的全局擴散而導致解密失敗。
發(fā)明內容
針對現(xiàn)有技術中的不足,本發(fā)明結合元胞自動機理論和密碼學理論,提出一種安全性好且具有容錯能力的基于元胞自動機的圖像加密和解密方法。
本發(fā)明的技術方案如下
1、加密過程(如圖2):
提取明文圖像的像素矩陣Imxn,M是圖像的寬度,N是圖像的高度,均以像素計,并且N為偶數(shù),如果不是偶數(shù),在像素矩陣末尾補上1行,補上的像素值全為0,然后將像素矩陣的每一行轉換為二進制序列,得到N個二進制序列B1, B2,..., Bn,每個二進制序列的長度為L = MXD,其中D代表存儲每個像素所用的二進制位數(shù);
(1)第一輪
步驟1 將二進制序列B1、二進制序列化分別作為加密端的第一個元胞自動機的輸入1和輸入2,加密端的第一個元胞自動機根據(jù)輸入的規(guī)則號迭代d次,產生的輸出1和輸出2分別為二進制序列C1、二進制序列C2 ;
步驟2 將B3和C1異或的結果、B4和C2異或的結果分別作為加密端的第二個元胞自動機的輸入1和輸入2,加密端的第二個元胞自動機根據(jù)輸入的規(guī)則號f2迭代d次,產生的輸出1和輸出2分別為二進制序列C3、二進制序列C4 ;
以此類推繼續(xù)執(zhí)行,直到將BN_i和CN_3異或的結果、 和CN_2異或的結果分別作為加密端的第N/2個元胞自動機的輸入1和輸入2,加密端的第N/2個元胞自動機根據(jù)輸入的規(guī)則號fN/2迭代d次,產生的輸出1和輸出2分別為二進制序列CV1、二進制序列Cn ;
(2)第二輪
令B1 = CN, B2 = C1, B3 = C2, . . . , Bn = C1^1,然后重復第一輪的迭代
步驟1 將二進制序列B1、二進制序列化分別作為加密端的第一個元胞自動機的輸入1和輸入2,加密端的第一個元胞自動機根據(jù)輸入的規(guī)則號迭代d次,產生的輸出1和輸出2分別為二進制序列C'工、二進制序列C' 2;
步驟2:將 和('工異或的結果、Bjn C' 2異或的結果分別作為加密端的第二個元胞自動機的輸入1和輸入2,加密端的第二個元胞自動機根據(jù)輸入的規(guī)則號f2迭代d 次,產生的輸出1和輸出2分別為二進制序列C' 3、二進制序列C' 4 ;
以此類推繼續(xù)執(zhí)行,直到將Bim和C' N_3異或的結果、 和C' N_2異或的結果分別作為加密端的第N/2個元胞自動機的,加密端的第N/2個元胞自動機根據(jù)輸入的規(guī)則號fN/2 迭代d次,產生的輸出1和輸出2分別為二進制序列C' η、二進制序列C' N,最終第二輪輸出的二進制序列C' i;C' 2,...,C' 換為像素矩陣Γ ΜΧΝ后得到密文圖像;
2、解密過程(如圖3):
提取密文圖像的像素矩陣Γ ΜΧΝ,然后將像素矩陣的每一行轉換為二進制序列, 得到N個二進制序列C1, C2, ...,Cn,每個二進制序列的長度為L = MXD;
(1)第一輪
步驟1 將二進制序列Cn、二進制序列CV1分別作為解密端的第Ν/2個元胞自動機的輸入1和輸入2,解密端的第Ν/2個元胞自動機根據(jù)輸入的規(guī)則號fN/2迭代d次,產生的輸出1和輸出2分別與二進制序列CN_2、CN_3進行異或運算,從而得到二進制序列Bn、二進制序列I1 ;
步驟2 將二進制序列CN_2、二進制序列CN_3分別作為解密端的第N/2-1個元胞自動機的輸入1和輸入2,解密端的第N/2-1個元胞自動機根據(jù)輸入的規(guī)則號fN/2_i迭代d次, 產生分別與二進制序列CN_4、CN_5進行異或運算,從而得到二進制序列BN_2、二進制序列Bn_3 ;
以此類推繼續(xù)執(zhí)行,直到將二進制序列C2、二進制序列C1分別作為解密端的第1個元胞自動機的輸入1和輸入2,解密端的第1個元胞自動機根據(jù)輸入的規(guī)則號迭代d次, 產生的輸出1和輸出2分別為二進制序列氏、二進制序列B1 ;
(2)第二輪
令C1 = B2, C2 = B3, ... , CV1 = Bn, Cn = B1,然后重復第一輪的迭代
步驟1 將二進制序列Cn、二進制序列CV1分別作為解密端的第N/2個元胞自動機的輸入1和輸入2,解密端的第N/2個元胞自動機根據(jù)輸入的規(guī)則號fN/2迭代d次,產生的輸出1和輸出2分別與二進制序列CN_2、CN_3進行異或運算,從而得到二進制序列B' N、二進制序列B' ;
步驟2 將二進制序列CN_2、二進制序列CN_3分別作為解密端的第N/2-1個元胞自動機的輸入1和輸入2,解密端的第N/2-1個元胞自動機根據(jù)輸入的規(guī)則號fN/2_i迭代d次, 產生分別與二進制序列CN_4、CN_5進行異或運算,從而得到二進制序列B' N_2、二進制序列R' .υ Ν-3 ‘
以此類推繼續(xù)執(zhí)行,直到將二進制序列C2、二進制序列C1分別作為解密端的第1個元胞自動機的輸入1和輸入2,解密端的第1個元胞自動機根據(jù)輸入的規(guī)則號迭代d次, 產生的輸出1和輸出2分別為二進制序列B' 2、二進制序列B'工,最終第二輪輸出的二進制序列B' 1 B' 2,...,B' 換為像素矩陣Imxn后得到明文圖像;
令j = 1、2、…、N/2,J=^^,第j個元胞自動機根據(jù)輸入的規(guī)則號fj迭代d次的過程如圖4所示,具體步驟如下
(1)建立第j個元胞自動機的迭代表達式
if1 二乂夂”夂攻!) ·^—1,/=1,2,...,/ \*MERGEF0RMAT(1)
式中彳為第i個元胞在t時刻的狀態(tài),為第i_l個元胞在t時刻的狀態(tài),為第 i+1個元胞在t時刻的狀態(tài),1為第i個元胞在t-Ι時刻的狀態(tài),廣1為第i個元胞在t+Ι時刻的狀態(tài),狀態(tài)取值為0或1 是異或運算符;g是具有3個變量的邏輯函數(shù),當攻乂‘的取值分別為000,001,ο 10,ο 11,100,101,110,111時,對應的邏輯函數(shù)玄C^1,4 <4)的值分別為規(guī)則號fJ中的元素、-決附!^-九^!^-九竹!^-知,當i = 1時,令么=/z,當i = L時,令c/ - c/ ^/+1 _ ‘
所述規(guī)則號f」由偽隨機序列發(fā)生器產生,該偽隨機序列發(fā)生器以密鑰種子K作為輸入,然后輸出一串長度為4N比特的二進制偽隨機序列Ic1I^k3,. . .,k4N,規(guī)則號fj取二進制偽隨機序列 I^k2Ic3, ... , k4N 中的 1 ^! ^! ^! ^! ^! ^! ^! ,
(2)初始化將從第j個元胞自動機的輸入1輸入的長度為L的二進制序列作為t =0時刻的第j個元胞自動機的全局狀態(tài)UVK...乂), 41,...乂分別表示第j個元胞自動機中t = 0時刻的各個元胞的狀態(tài)值,將從第j個元胞自動機的輸入2輸入的長度為 L的二進制序列作為t = 1時刻的第j個元胞自動機的全局狀態(tài)Cv11,...,4),44,4,...,4 分別表示第j個元胞自動機中t = 1時刻的各個元胞的狀態(tài)值,
(3)計算第j個元胞自動機t = 2時刻的全局狀態(tài)Cv1V2V32,…,亡,方法為第i個元胞(i = 1,2,...L)根據(jù)元乂丄的取值,得到對應的邏輯函數(shù)^1)的值,然后將該邏輯函數(shù)WU,心)的值與4進行異或,從而得到4,其中,元分別表示第j個元胞自動機中t = 1時刻的第i-1,i,i+Ι個元胞的狀態(tài)值,當i = 1時,令元=4,當i = L時, 令A1 =4 4表示第j個元胞自動機中t = 0時刻的第i個元胞的狀態(tài)值,乂表示第j個元胞自動機中t = 2時刻的第i個元胞的狀態(tài)值,
(4)計算元胞自動機t = 3時刻的全局狀態(tài)…乂),方法為第i個元胞,i =1,2, ... L,根據(jù)毛, +1的取值,得到對應的邏輯函數(shù)《(毛乂,元)的值,然后將該邏輯函數(shù)的值與4進行異或,從而得到4,其中,4, +1分別表示第· 個元胞自動機中t = 2時刻的第i-1,i,i+1個元胞的狀態(tài)值,當i = 1時,令=#,當i = L時,令 =彳4表示第j個元胞自動機中t = 1時刻的第i個元胞的狀態(tài)值,彳表示第j個元胞自動機中t = 3時刻的第i個元胞的狀態(tài)值,
以此類推繼續(xù)執(zhí)行,直到計算出第j個元胞自動機t = d時刻的全局狀態(tài) Cvf,和t = d+i時刻的全局狀態(tài)(if 1Z+1,if V..,if Ο,然后將這兩個全局狀態(tài)分別作為第j個元胞自動機迭代d次后的輸出1的輸出值和輸出2的輸出值,其中,if,分別表示第j個元胞自動機中t = d時刻的各個元胞的狀態(tài)值,if+Vf1,ifV..,if1分別表示第j個元胞自動機中t = d+Ι時刻的各個元胞的狀態(tài)值。
本發(fā)明的有益效果在于
首先,利用元胞自動機(如圖1所示)無信息損失和不需要進行浮點運算的特點, 杜絕了由于計算機精度產生的舍入誤差。其次,采用二輪鏈式循環(huán)迭代不僅具有良好的全局擴散性能,而且使得明文圖像、密文圖像和密鑰之間的依賴關系非常復雜,提高了安全性。另外,本發(fā)明對密文圖像的數(shù)據(jù)損失具有一定的容錯能力,適合用于誤碼率較高的無線網絡環(huán)境下的圖像加密。
圖1是元胞自動機模塊;
圖2是第一輪鏈式迭代加密示意圖3是第一輪鏈式迭代解密示意圖4是元胞自動機的迭代過程;
圖5是明文圖像;
圖6是密文圖像;
圖7是明文圖像的直方圖8是密文圖像的直方圖9是明文圖像水平方向相鄰像素的相關性分布圖10是密文圖像水平方向相鄰像素的相關性分布圖
圖11是受損密文的解密圖像。
具體實施例方式
下面結合附圖和實施例對本發(fā)明作進一步詳細說明,所給出的實施例是為了說明本發(fā)明方法的技術特點和功能特點,而不是限制本發(fā)明的范圍。
本發(fā)明的實施例采用Mathematica 8軟件進行仿真,明文圖像選用大小為 256X256的標準測試灰度圖像“Lena”,圖像的每一個像素由8比特組成,如圖5所示。
加密方法的步驟如下
首先,利用Mathematica的Import函數(shù)提取明文圖像的像素矩陣I256x256,然后將像素矩陣的每一行轉換為256個二值序列B1, B2, B3, ... , B256,每個二值序列長度為2048 比特。設定迭代次數(shù)d = 512。然后,采用Mathematica的Random函數(shù)生成IOM比特的二進制偽隨機序列啦3,... , k1Q24,依次賦值于規(guī)則號,令= k1k2k3k4k5k6k7k8, f2 =^gk1Qk1 jkjgk^k^kjgkjg, · · ·,f128 — k1017k1018k1019k1(^0k1021klffi2k1023k1024。
(1)第一輪
步驟1 將二進制序列B1、二進制序列化分別作為加密端的第一個元胞自動機的輸入1和輸入2,加密端的第一個元胞自動機根據(jù)輸入的規(guī)則號迭代512次,產生的輸出1 和輸出2分別為二進制序列C1、二進制序列C2 ;
步驟2 將B3和C1異或的結果、B4和C2異或的結果分別作為加密端的第二個元胞自動機的輸入1和輸入2,加密端的第二個元胞自動機根據(jù)輸入的規(guī)則號f2迭代512次,產生的輸出1和輸出2分別為二進制序列C3、二進制序列C4 ;
以此類推繼續(xù)執(zhí)行,直到將化55和C253異或的結果、B256和C254異或的結果分別作為加密端的第1 個元胞自動機的輸入1和輸入2,加密端的第1 個元胞自動機根據(jù)輸入的規(guī)則號fm迭代512次,產生的輸出1和輸出2分別為二進制序列C255、二進制序列C2ai ;
(2)第二輪
令B1 = C256, B2 = C1, B3 = C2, ... , B256 = C255,然后重復第一輪的迭代
步驟1 將二進制序列B1、二進制序列化分別作為加密端的第一個元胞自動機的輸入1和輸入2,加密端的第一個元胞自動機根據(jù)輸入的規(guī)則號迭代512次,產生的輸出1 和輸出2分別為二進制序列C'工、二進制序列C' 2;
步驟2:將 和('工異或的結果、B4和C' 2異或的結果分別作為加密端的第二個元胞自動機的輸入1和輸入2,加密端的第二個元胞自動機根據(jù)輸入的規(guī)則號f2迭代512 次,產生的輸出1和輸出2分別為二進制序列C' 3、二進制序列C' 4 ;
以此類推繼續(xù)執(zhí)行,直到將化55和C' 253異或的結果、B256和C' 254異或的結果分別作為加密端的第1 個元胞自動機的,加密端的第1 個元胞自動機根據(jù)輸入的規(guī)則號迭代512次,產生的輸出1和輸出2分別為二進制序列C' 255、二進制序列C' 256,最終第二輪輸出的二進制序列C' i;C' 2,...,C256 ‘轉換為像素矩陣Γ 256X2Ki后得到密文圖像如圖6所示,它類似于“噪聲”圖像,很好地隱藏了原圖像的信息。
解密方法的步驟如下
首先,利用Mathematica的Import函數(shù)提取密文圖像的像素矩陣Γ M6X256,然后將像素矩陣的每一行轉換為256個二值序列C1, C2, C3, ... , C256,每個二值序列長度為2048 比特。設定迭代次數(shù)d = 512。
(1)第一輪
步驟1 將二進制序列C256、二進制序列C255分別作為解密端的第1 個元胞自動機的輸入1和輸入2,解密端的第1 個元胞自動機根據(jù)輸入的規(guī)則號fm迭代512次,產生的輸出1和輸出2分別與二進制序列C254、C253進行異或運算,從而得到二進制序列B256、 二進制序列化55 ;
步驟2 將二進制序列C254、二進制序列C253分別作為解密端的第127個元胞自動機的輸入1和輸入2,解密端的第127個元胞自動機根據(jù)輸入的規(guī)則號f127迭代512次,產生分別與二進制序列C252、C251進行異或運算,從而得到二進制序列化54、二進制序列化53 ;
以此類推繼續(xù)執(zhí)行,直到將二進制序列C2、二進制序列C1分別作為解密端的第1個元胞自動機的輸入1和輸入2,解密端的第1個元胞自動機根據(jù)輸入的規(guī)則號迭代512 次,產生的輸出1和輸出2分別為二進制序列化、二進制序列B1 ;
(2)第二輪
令C1 = B2, C2 = B3, ... , C255 = B256, C256 = B1,然后重復第一輪的迭代
步驟1 將二進制序列C256、二進制序列C255分別作為解密端的第1 個元胞自動機的輸入1和輸入2,解密端的第1 個元胞自動機根據(jù)輸入的規(guī)則號fm迭代512次,產生的輸出1和輸出2分別與二進制序列C254、C253進行異或運算,從而得到二進制序列B' 256、 二進制序列B' 255 ;
步驟2 將二進制序列C254、二進制序列C253分別作為解密端的第127個元胞自動機的輸入1和輸入2,解密端的第127個元胞自動機根據(jù)輸入的規(guī)則號f127迭代512次,產生分別與二進制序列C252、C251進行異或運算,從而得到二進制序列B' 254、二進制序列B' 253 ;
以此類推繼續(xù)執(zhí)行,直到將二進制序列C2、二進制序列C1分別作為解密端的第1個元胞自動機的輸入1和輸入2,解密端的第1個元胞自動機根據(jù)輸入的規(guī)則號迭代512 次,產生的輸出1和輸出2分別為二進制序列B' 2、二進制序列B' ”最終第二輪輸出的二進制序列B' 1 B' 2,..., B256 ‘轉換為像素矩陣I256x2ai后得到明文圖像;
令j = 1、2、…、128,第j個元胞自動機根據(jù)輸入的規(guī)則號。迭代512次的步驟如下
(1)建立第j個元胞自動機的迭代表達式
^+1/=1,2,...,2048
式中<為第i個元胞在t時刻的狀態(tài),為第i_l個元胞在t時刻的狀態(tài),為第 i+1個元胞在t時刻的狀態(tài),芩1為第i個元胞在t-Ι時刻的狀態(tài),壙1為第i個元胞在t+Ι時刻的狀態(tài),狀態(tài)取值為0或1 ;當i = 1時,令(=^048,當i = 2048時,令= ^鈁是異或運算符;g是具有3個變量的邏輯函數(shù),又稱為規(guī)則,規(guī)則的另一種表示形式為真值表,如下
表1規(guī)則真值表
輸入輸出J/-l ‘ J/ ‘ J/+l000aO001ax010a2Oil100aA101a5110ae111α
真值表中輸入項是鄰域內元胞狀態(tài)取值的所有可能組合{000,001, 010,011,100,101,110,111},按二進制數(shù)遞增排列。真值表的輸出項是所有輸入變量取值下的邏輯函數(shù)玄(毛,夂<4)的值{已。,£11,82,£13,&4,£15,&6,&7},其中£11;£ {0,1},k = 0,1,. . .,7。 輸入項和輸出項的對應關系為:(0,0,0) -a0 ; (0,0,1) -B1 ; (0,1,0) -a2 ; (0,1,1) — a3 ; (1,0,0) - a4 ; (1,0,1) -a5 ;(1,1,0) - a6 ; (1,1,1) — a7。這樣,輸入變量毛,取值一旦確定,即可從真值表中查找到相應的輸出值4,然后將該輸出值與元胞t-Ι時刻的狀態(tài)值進行異或,從而得到元胞t+Ι時刻的狀態(tài)值Jf1。這里,將^^ ^這樣一個長度為8比特的二進制序列稱為規(guī)則號。一旦給定了規(guī)則號。,就可以建立該規(guī)則號的規(guī)則真值表。由于本實施例中一共有128個規(guī)則號f1; f2,. . .,f128,因此可建立128張真值表。
(2)初始化將從第j個元胞自動機的輸入1輸入的長度為2048比特的二進制序列作為t = ο時刻的第j個元胞自動機的全局狀態(tài)Cv1VK...,4,^,...,4^分另U 表示第j個元胞自動機中t = ο時刻的各個元胞的狀態(tài)值,將從第j個元胞自動機的輸入 2輸入的長度為2048比特的二進制序列作為t = 1時刻的第j個元胞自動機的全局狀態(tài),分別表示第j個元胞自動機中t = 1時刻的各個元胞的狀態(tài)值,
(3)計算第j個元胞自動機t = 2時刻的全局狀態(tài)(元 ...,4J,方法為第i 個元胞(i = 1,2,. . . 2048)根據(jù)元乂元丨的取值,查找規(guī)則號為。的真值表,得到對應的邏輯函數(shù)玄(元乂丄)的值,然后將該邏輯函數(shù)玄CidX1)的值與4進行異或,從而得到彳,其中,Sii^1分別表示第j個元胞自動機中t = 1時刻的第i-l,i,i+l個元胞的狀態(tài)值,當 i = 1時,令元=^2048,當i = 2048時,令‘ =^彳表示第j個元胞自動機中t = 0時刻的第i個元胞的狀態(tài)值,<表示第j個元胞自動機中t = 2時刻的第i個元胞的狀態(tài)值,
(4)計算元胞自動機t = 3時刻的全局狀態(tài)Cv13,…乂),方法為第i個元胞, i = 1,2,...2048,根據(jù)毛,^+1的取值,查找規(guī)則號為fj的真值表,得到對應的邏輯函數(shù)廠^彳,義)的值,然后將該邏輯函數(shù)< (毛, +1)的值與4進行異或,從而得到4,其中, 毛, +!分別表示第J個元胞自動機中t = 2時刻的第i-1,i,i+1個元胞的狀態(tài)值,當i =1時,令4 =危48,當i = 2048時,令A =彳4表示第j個元胞自動機中t = 1時刻的第 i個元胞的狀態(tài)值,4表示第j個元胞自動機中t = 3時刻的第i個元胞的狀態(tài)值,
以此類推繼續(xù)執(zhí)行,直到計算出第j個元胞自動機t = 512時刻的全局狀態(tài) GfV25V『,…,O和t = 513時刻的全局狀態(tài)(Of 乂13,…,4),然后將這兩個全局狀態(tài)分別作為第j個元胞自動機迭代512次后的輸出1的輸出值和輸出2的輸出值,其中, 51 W.,^分別表示第j個元胞自動機中t = 512時刻的各個元胞的狀態(tài)值, if3,if3,ifV.w=分別表示第j個元胞自動機中t = 513時刻的各個元胞的狀態(tài)值。
下面結合附圖對實施例進行性能分析
密文圖像的直方圖如圖8所示,它與明文圖像的直方圖7完全不同,密文圖像的直方圖分布十分均勻,這表明密文圖像的像素值在
上的取值概率均等,因此能夠有效抵抗統(tǒng)計分析。
圖9和圖10分別給出了明文圖像和密文圖像水平方向相鄰像素的相關性分布,由圖可見,明文圖像像素之間的相關性呈現(xiàn)明顯的線性結構,而密文圖像像素之間的相關性呈現(xiàn)均勻、隨機分布。因此,加密圖像比原始圖像的相關性降低了。
為了測試當密文圖像經過有噪信道發(fā)生誤碼時是否能恢復原始圖像,我們在仿真過程中改變密文圖像的一個像素值,然后檢驗解密效果。從圖11可以看出,誤碼僅在局部擴散,只有若干分組不能恢復原始圖像,其他部分仍然能正確解碼,因此本發(fā)明方法對于密文受損具有一定的容錯能力。
由上述性能分析可見,本發(fā)明方法具有良好的加密效果,能有效抵抗直方圖和相關性等統(tǒng)計分析攻擊,并且對密文受損具有一定的容錯能力。
權利要求
1. 一種基于元胞自動機的圖像加密和解密方法,其特征在于包括加密步驟和加密步驟,所述加密步驟為提取明文圖像的像素矩陣Imxn,M是圖像的寬度,N是圖像的高度,均以像素計,并且N 為偶數(shù),如果不是偶數(shù),在像素矩陣末尾補上1行,補上的像素值全為0,然后將像素矩陣的每一行轉換為二進制序列,得到N個二進制序列B1, B2,..., ,每個二進制序列的長度為L =MXD,其中D代表存儲每個像素所用的二進制位數(shù);(1)第一輪步驟1 將二進制序列B1、二進制序列4分別作為加密端的第一個元胞自動機的輸入1 和輸入2,加密端的第一個元胞自動機根據(jù)輸入的規(guī)則號迭代d次,產生的輸出1和輸出 2分別為二進制序列C1、二進制序列C2 ;步驟2 將 和C1異或的結果、B4和C2異或的結果分別作為加密端的第二個元胞自動機的輸入1和輸入2,加密端的第二個元胞自動機根據(jù)輸入的規(guī)則號f2迭代d次,產生的輸出1和輸出2分別為二進制序列C3、二進制序列C4 ;以此類推繼續(xù)執(zhí)行,直到將Bim和CN_3異或的結果、 和CN_2異或的結果分別作為加密端的第N/2個元胞自動機的輸入1和輸入2,加密端的第N/2個元胞自動機根據(jù)輸入的規(guī)則號fN/2迭代d次,產生的輸出1和輸出2分別為二進制序列CV1、二進制序列Cn ;(2)第二輪令 B1 = CN, B2 = C1, B3 = C2, . . . , Bn = CV1,然后重復第一輪的迭代 步驟1 將二進制序列B1、二進制序列化分別作為加密端的第一個元胞自動機的輸入1 和輸入2,加密端的第一個元胞自動機根據(jù)輸入的規(guī)則號迭代d次,產生的輸出1和輸出 2分別為二進制序列C'工、二進制序列C' 2;步驟2:將 和('工異或的結果、B4和C' 2異或的結果分別作為加密端的第二個元胞自動機的輸入1和輸入2,加密端的第二個元胞自動機根據(jù)輸入的規(guī)則號f2迭代d次,產生的輸出1和輸出2分別為二進制序列C' 3、二進制序列C' 4 ;以此類推繼續(xù)執(zhí)行,直到將Bim和C' N_3異或的結果、 和('N_2異或的結果分別作為加密端的第N/2個元胞自動機的,加密端的第N/2個元胞自動機根據(jù)輸入的規(guī)則號fN/2迭代d次,產生的輸出1和輸出2分別為二進制序列C' η、二進制序列C' N,最終第二輪輸出的二進制序列C' i;C' 2,...,C' 換為像素矩陣Γ ΜΧΝ后得到密文圖像; 所述解密步驟為提取密文圖像的像素矩陣Γ ΜΧΝ,然后將像素矩陣的每一行轉換為二進制序列,得到N 個二進制序列C1, C2, ... , Cn,每個二進制序列的長度為L = MXD ; (1)第一輪步驟1 將二進制序列Cn、二進制序列CV1分別作為解密端的第Ν/2個元胞自動機的輸入1和輸入2,解密端的第Ν/2個元胞自動機根據(jù)輸入的規(guī)則號fN/2迭代d次,產生的輸出 1和輸出2分別與二進制序列CN_2、CN_3進行異或運算,從而得到二進制序列Bn、二進制序列 R ·jjN-I,步驟2 將二進制序列CN_2、二進制序列分別作為解密端的第Ν/2-1個元胞自動機的輸入1和輸入2,解密端的第Ν/21個元胞自動機根據(jù)輸入的規(guī)則號fN/2_i迭代d次,產生分別與二進制序列CN_4、CN_5進行異或運算,從而得到二進制序列BN_2、二進制序列Bn_3 ;以此類推繼續(xù)執(zhí)行,直到將二進制序列C2、二進制序列C1分別作為解密端的第1個元胞自動機的輸入1和輸入2,解密端的第1個元胞自動機根據(jù)輸入的規(guī)則號迭代d次,產生的輸出1和輸出2分別為二進制序列氏、二進制序列B1 ;(2)第二輪令 C1 = B2, C2 = B3, ... , CV1 = Bn, Cn = B1,然后重復第一輪的迭代步驟1 將二進制序列Cn、二進制序列CV1分別作為解密端的第N/2個元胞自動機的輸入1和輸入2,解密端的第N/2個元胞自動機根據(jù)輸入的規(guī)則號fN/2迭代d次,產生的輸出 1和輸出2分別與二進制序列CN_2、CN_3進行異或運算,從而得到二進制序列B' N、二進制序列 B' N-1;步驟2 將二進制序列CN_2、二進制序列CN_3分別作為解密端的第N/2-1個元胞自動機的輸入1和輸入2,解密端的第N/2-1個元胞自動機根據(jù)輸入的規(guī)則號fN/2_i迭代d次,產生分別與二進制序列CN_4、CN_5進行異或運算,從而得到二進制序列B' N_2、二進制序列B' N_3;以此類推繼續(xù)執(zhí)行,直到將二進制序列C2、二進制序列C1分別作為解密端的第1個元胞自動機的輸入1和輸入2,解密端的第1個元胞自動機根據(jù)輸入的規(guī)則號迭代d次,產生的輸出1和輸出2分別為二進制序列B' 2、二進制序列B'工,最終第二輪輸出的二進制序列B' 1 B' 2,...,B' 換為像素矩陣Imxn后得到明文圖像;令j = 1、2、…、N/2,J=^^,第j個元胞自動機根據(jù)輸入的規(guī)則號fj迭代d次的步驟如下(1)建立第j個元胞自動機的迭代表達式^ =/.= 1,2”..,Z式中4為第i個元胞在t時刻的狀態(tài),J么為第i-Ι個元胞在t時刻的狀態(tài),為第i+1 個元胞在t時刻的狀態(tài),為第i個元胞在t-Ι時刻的狀態(tài),為第i個元胞在t+Ι時刻的狀態(tài),狀態(tài)取值為0或1 是異或運算符;g是具有3個變量的邏輯函數(shù),當?shù)娜≈捣謩e為000,001,010,011,100,101,110,111時,對應的邏輯函數(shù)玄的值分別為規(guī)則號fj中的元素、-知-知-知-^-知-如-知,當i = 1時,令么=/z ,當i = L時,令c/ - c/ _ ‘所述規(guī)則號fj由偽隨機序列發(fā)生器產生,該偽隨機序列發(fā)生器以密鑰種子K作為輸入,然后輸出一串長度為4N比特的二進制偽隨機序列Ii1I^k3,. . .,k4N,規(guī)則號fj取二進制偽隨機序列 I^k2Ii3,!^"!^竹!^-;^“!^-擊幻-;^幻-;^幻,(2)初始化將從第j個元胞自動機的輸入1輸入的長度為L的二進制序列作為t= 0 時刻的第j個元胞自動機的全局狀態(tài)UVK..+乂), 41,...乂分別表示第j個元胞自動機中t = 0時刻的各個元胞的狀態(tài)值,將從第j個元胞自動機的輸入2輸入的長度為L的二進制序列作為t = 1時刻的第j個元胞自動機的全局狀態(tài)Cv11,...,4),...,4分另U 表示第j個元胞自動機中t = 1時刻的各個元胞的狀態(tài)值,(3)計算第j個元胞自動機t= 2時刻的全局狀態(tài)心,方法為第i個元胞 (i = 1,2,. . . L)根據(jù)元乂義,的取值,得到對應的邏輯函數(shù)玄Ci1,^1)的值,然后將該邏輯函數(shù)玄(元乂丄)的值與4進行異或,從而得到4,其中,A 乂 4分別表示第· 個元胞自動機中t = 1時刻的第i_l,i,i+1個元胞的狀態(tài)值,當i = 1時,令^1=兄,當i = L時,令 H 4表示第j個元胞自動機中t = ο時刻的第i個元胞的狀態(tài)值,乂表示第j個元胞自動機中t = 2時刻的第i個元胞的狀態(tài)值,(4)計算元胞自動機t = 3時刻的全局狀態(tài)(if,…乂),方法為第i個元胞,i = 1, 2, ... L,根據(jù)毛,^+1的取值,得到對應的邏輯函數(shù)< , :)的值,然后將該邏輯函數(shù)的值與4進行異或,從而得到4,其中,毛, +1分別表示第· 個元胞自動機中t =2時刻的第i-1,i,i+1個元胞的狀態(tài)值,當i = 1時,令4 =#,當i = L時,令^ =<, 乂表示第j個元胞自動機中t = 1時刻的第i個元胞的狀態(tài)值,4表示第j個元胞自動機中 t = 3時刻的第i個元胞的狀態(tài)值,以此類推繼續(xù)執(zhí)行,直到計算出第j個元胞自動機t = d時刻的全局狀態(tài)(if, 和t = d+i時刻的全局狀態(tài)(壙1X+1,V..,if1),然后將這兩個全局狀態(tài)分別作為第j個元胞自動機迭代d次后的輸出1的輸出值和輸出2的輸出值,其中,分別表示第j 個元胞自動機中t = d時刻的各個元胞的狀態(tài)值,if+Vf1,ifV..,if1分別表示第j個元胞自動機中t = d+Ι時刻的各個元胞的狀態(tài)值。
全文摘要
本發(fā)明提供一種基于元胞自動機的圖像加密和解密方法,屬于信息安全領域中的圖像保密技術。該加密方法首先提取明文圖像的像素矩陣,將像素矩陣的每一行轉換為二值序列,然后采用多個元胞自動機對圖像的每一行進行兩輪鏈式循環(huán)迭代,將迭代結果轉換成相應像素矩陣后得到密文圖像。在每個迭代環(huán)節(jié)中,迭代次數(shù)預先設定,使用的規(guī)則號由偽隨機序列發(fā)生器產生。本發(fā)明的解密過程是加密過程的逆過程,規(guī)則號使用的順序與加密時相反。本發(fā)明的效果和益處是采用元胞自動機的鏈式循環(huán)迭代使得明文、密鑰與密文之間具有復雜且不可預測的關系,既保證了網絡傳輸過程中圖像的安全性,又具有一定的容錯能力。
文檔編號H04N1/44GK102523365SQ20111039723
公開日2012年6月27日 申請日期2011年12月5日 優(yōu)先權日2011年12月5日
發(fā)明者平萍, 王宇, 王志堅, 許峰 申請人:河海大學