基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法

目前已有研究表明,一些單純建立在混沌系統(tǒng)上的置亂方法已有了破解方法,因而必須結(jié)合其他置亂方法來(lái)提高混沌動(dòng)力系統(tǒng)的圖像置亂性能。鑒于此,我們提出了一種基于混沌二值密鑰的、依據(jù)格雷碼表分塊置亂的數(shù)字圖像加密算法。該方法首先將圖像分成幾幅子圖相互均勻散布(稱(chēng)為“洗牌”),然后再將各子圖按照格雷碼表順序進(jìn)行分段置亂,置亂次數(shù)由參數(shù)設(shè)置。

一、混沌系統(tǒng) 

目前,絕大多數(shù)文獻(xiàn)中使用的混沌動(dòng)力系統(tǒng)是一維離散時(shí)間非線(xiàn)性動(dòng)力系統(tǒng)Lohistic映射和k階Chebyshev映射。

(1)Lohistic映射

Lohistic動(dòng)力系統(tǒng)可謂目前最簡(jiǎn)單、最被廣泛研究和應(yīng)用的混沌動(dòng)力系統(tǒng),其方程定義如下:

基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法

其中,r為分支參數(shù),當(dāng)O≤r≤3. 569 945 972...時(shí),該動(dòng)力系統(tǒng)因從穩(wěn)定狀態(tài)到分叉而產(chǎn)生倍周期;當(dāng)3. 569 945 972...<r≤4時(shí),該動(dòng)力系統(tǒng)進(jìn)入混沌狀態(tài)。

通過(guò)簡(jiǎn)單變量替換,式(1)可以定義到(-1,1)區(qū)間:

基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法

(2)k階Chebyshev映射

k階Chebyshev映射是另一類(lèi)簡(jiǎn)單的以階數(shù)為參數(shù)的映射,其定義如下:

基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法

在r=2的滿(mǎn)射條件下,式(1)和式(4)是拓?fù)涔曹椀?,即它們不僅可以被視為動(dòng)力狀態(tài)相同的系統(tǒng),而且其生成序列的概率密度也相同,即:

基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法

從式(4)可以看出,由于Logistic和Chebyshev映射生成的混沌序列具有遍歷性,同時(shí)它們還具有δ—like型自相關(guān)函數(shù)和零的互相關(guān)函數(shù),并且具有初值敏感性,因而可以提供數(shù)量眾多、非相關(guān)、類(lèi)隨機(jī)而又可確定、可再生的混沌序列。其非常大的周期性和優(yōu)良的隨機(jī)性,不僅非常適合產(chǎn)生符合安全要求的序列密碼,而且可以提供數(shù)量眾多的密鑰,因而可以很好地被應(yīng)用于各種混沌保密通信系統(tǒng)中。

本文在具體生成混沌二值密鑰時(shí)采用共用初始密鑰,由Logistic和Chebyshev映射交替或迭代生成二進(jìn)制密鑰流的方法。由于Logistic映射和hebyshev映射在表達(dá)式結(jié)構(gòu)上相異程度很大,所以其動(dòng)力特征退化或平凡密鑰具有相似性的概率極小,因而可產(chǎn)生質(zhì)量較高的混沌二值密鑰流。

二、數(shù)字圖像加密算法

1、 格雷碼表設(shè)計(jì)

格雷碼與普通二進(jìn)制代碼相比的最大特點(diǎn)是其相鄰兩個(gè)代碼之間只有一位數(shù)據(jù)發(fā)生變化,即只有一位碼元不同(此特點(diǎn)通常稱(chēng)作“邏輯相鄰性”)。有資料曾提出了利用FASS曲線(xiàn)和Hilbert曲線(xiàn)遍歷圖像中的所有點(diǎn)以生成一幅新的“雜亂’’圖像的圖像置亂加密思想。該加密算法利用了這些曲線(xiàn)的充滿(mǎn)空間( Space- Fill-ing)、非自交(Sclf-Aroiding)、自相似(Sclf-Sirnilar)等特性,多次置亂的加密效果良好,但要求設(shè)計(jì)人員有堅(jiān)實(shí)的數(shù)學(xué)功底,計(jì)算復(fù)雜度也相對(duì)較高。而依靠數(shù)字邏輯的基本工具——卡諾圖(Karnaugh Map)的幫助,設(shè)計(jì)3位、4位及多位格雷碼表無(wú)論對(duì)設(shè)計(jì)人員還是計(jì)算機(jī)軟硬件實(shí)現(xiàn)都是非常容易的。

基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法

上圖所示即為依據(jù)4位卡諾圖,從不同點(diǎn)(即算法中的‘種子’)切人生成一張格雷碼表(表1)的實(shí)例。

基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法實(shí)際上,依據(jù)卡諾圖的性質(zhì),4位卡諾圖中任一點(diǎn)(即‘種子’)有四個(gè)相鄰碼,因而可有四種格雷碼排列順序;5位卡諾圖中任一點(diǎn)(即‘種子’)有五個(gè)相鄰碼,因而可有五種格雷碼排列順序。依此類(lèi)推可知:

n位二進(jìn)制數(shù)的格雷碼排列方式共有基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法種,每一種對(duì)應(yīng)一張格雷碼置亂碼表;而且,隨著n的增加,數(shù)據(jù)流分段劃分越小,置亂碼表越復(fù)雜,加密效果越好,安全性越高。由于本加密算法是對(duì)稱(chēng)加密算法,雙方只要約定了相同的碼表即可進(jìn)行正確的加解密信息傳輸。該碼表亦可依據(jù)密鑰隨機(jī)生成和定期更換,以更好地提高安全性。

2、總體算法描述

如前所述,數(shù)字圖像的置亂一般可以在其位置空間、色彩空間或頻率空間上進(jìn)行,置亂的目的是將圖像像素的位置或像素的顏色“打亂”,將原始圖像變換成一個(gè)雜亂無(wú)章的新圖像。

本算法是在圖像空間位置上進(jìn)行的完全加密算法,適用于各種索引圖像、灰度圖像和真彩圖像文件加密。若考慮將圖像數(shù)據(jù)矩陣先與混沌二值密鑰進(jìn)行按位異或加密,則可更好地提高抵抗已知明文攻擊的能力。

(1)加密算法實(shí)現(xiàn)

設(shè)被置亂圖像大小為2m X 2n,m、z∈N。

Step l輸入?yún)?shù):輸入原始待加密圖像文件名)inFileName)、加密后圖像文件輸出名) outFileName)、Logistic混沌映射分支參數(shù))r)、Chebyshev混沌映射階數(shù)(k)、加密密鑰) x0)、圖像分塊數(shù)(k),加密輪數(shù)(mc)和所取格雷碼位數(shù)(nc)。

Step 2生成長(zhǎng)度為N的混沌二值密鑰序列L:根據(jù)輸入?yún)?shù),由Logistic映射和Chebyshev映射相互迭代生成混沌實(shí)值序列{lk,k=1,2,3,…,N},生成過(guò)程中Chebyshev映射的輸出取絕對(duì)值,根據(jù)閾值法(如設(shè)r=0.5,若lk≥0.5,lk=1,否則lk=0)將實(shí)值序列轉(zhuǎn)換成二值密鑰序列{lk,k=1,2,3,…,N}。若圖像分塊數(shù)、加密輪數(shù)和格雷碼位數(shù)較小,序列長(zhǎng)度N=)4+kc×nc),每輪密鑰長(zhǎng)度mcLen=4+kc×nc,如當(dāng)kc=4,nc=4,mc=10時(shí),混沌二值密鑰序列長(zhǎng)度N=)4+4×4)× 10=200,每輪密鑰長(zhǎng)度mclen=20,當(dāng)這些參數(shù)數(shù)值較大時(shí),如加密輪數(shù)mc= 30,此時(shí)可取固定長(zhǎng)度N為128、256或512等等。

Step 3將原圖像分塊進(jìn)行均勻散布(即“洗牌”):

a、首先得到文件名為inFileName的圖像的句柄(h)(CData圖像數(shù)據(jù)矩陣y)。

b、下面以k=4為例講述圖像分塊散布過(guò)程:

①將y等分為四幅子岡,將這些子圖按左上,左下、右上、右下四個(gè)方向分別標(biāo)記為Pl、P2、P3、P4。

②從本輪密鑰的前四位提取出散布種子zi,如zi='0101'等。

③從P1、P2、P3、P4中兩兩選取子圖相互進(jìn)行均勻散布,則共有P4= 24種,從中約定16種方式;如=‘0000’,P1散布到P2中,P3散布到P4中;i=‘oooi’,P1散布到P2中,P4散布到P3

中,等等?!吧⒉肌辈僮骺捎孟率矫枋觯簩⒁粋€(gè)子圖P=(plk)m×n均勻散布到另一個(gè)子圖像Q=(plk)m×n中去,即Fi,j=基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法,F(xiàn)=(f,ij)m×2n為置亂后圖像,kc>4的散布過(guò)程可參照kc=4的過(guò)程,唯一的區(qū)別是約定從磚:p=(kc)!中選取16種散布方式。

Step 4對(duì)均勻散布后的各子圖進(jìn)行格雷碼表分段置亂:

a、將均勻散布后的圖像再分成kc一幅子圖。

b、將每幅子圖分成2w段,按照上節(jié)中所述nc位格雷碼表進(jìn)行分段置亂(為不占用計(jì)算機(jī)內(nèi)存空間,nc位格雷碼表依據(jù)約定參數(shù)隨機(jī)生成)。每帽子圖的置亂切人點(diǎn)(即“種子”)從本輪密鑰的第5~kc ×nc位每nc位依次選取。

Step5重復(fù)Step3和Step4,直至完成mc輪加密過(guò)程。

Step6顯示加密后圖像,將加密圖像保存為文件,加密過(guò)程結(jié)束。

(2)解密算法實(shí)現(xiàn)

由于是對(duì)稱(chēng)算法,用戶(hù)輸入正確的解密密鑰)jx0)后,將加密算法逆向運(yùn)算,即可獲得解密圖像。加解密流程如圖所示。

基于混沌二值密鑰的格雷碼分塊置亂圖像加密算法

小知識(shí)之格雷碼

格雷碼是一種絕對(duì)編碼方式,典型格雷碼是一種具有反射特性和循環(huán)特性的單步自補(bǔ)碼,它的循環(huán)、單步特性消除了隨機(jī)取數(shù)時(shí)出現(xiàn)重大誤差的可能,它的反射、自補(bǔ)特性使得求反非常方便。格雷碼屬于可靠性編碼,是一種錯(cuò)誤最小化的編碼方式,因?yàn)?,雖然自然二進(jìn)制碼可以直接由數(shù)/模轉(zhuǎn)換器轉(zhuǎn)換成模擬信號(hào),但在某些情況,例如從十進(jìn)制的3轉(zhuǎn)換為4時(shí)二進(jìn)制碼的每一位都要變,能使數(shù)字電路產(chǎn)生很大的尖峰電流脈沖。