本發(fā)明涉及數(shù)字圖像加密的
技術(shù)領(lǐng)域:
,具體涉及一種基于比特置換與動(dòng)態(tài)dna編碼的混沌圖像加密方法。
背景技術(shù):
:隨著多媒體技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,數(shù)字圖像處理已經(jīng)廣泛應(yīng)用到了人類社會(huì)生活的各個(gè)方面,如:遙感、工業(yè)檢測(cè)、醫(yī)學(xué)、氣象、通信、偵查和智能機(jī)器人等。因此,圖像信息越來(lái)越得到重視。保護(hù)圖像數(shù)據(jù)的安全就顯得更加重要,尤其是在軍事、商業(yè)和醫(yī)療等特殊領(lǐng)域。圖像加密技術(shù)已成為一種有效保護(hù)所傳輸數(shù)字圖像的方法。圖像數(shù)據(jù)具有數(shù)據(jù)量大,相關(guān)性強(qiáng)、冗余度高等特點(diǎn),現(xiàn)有的經(jīng)典加密方法因其加密效率低,安全性不高等原因,已不能滿足圖像加密的需要。作為一種復(fù)雜的非線性系統(tǒng),混沌系統(tǒng)具有初值敏感性、偽隨機(jī)性、非周期性等特點(diǎn),與密碼學(xué)所要求的特性相吻合。將混沌序列作為隨機(jī)密鑰,可以達(dá)到與一次一密相同的加密效果,在理論上也是不可破的。因此,混沌加密技術(shù)在信息安全領(lǐng)域,尤其是圖像加密領(lǐng)域得到了廣泛的應(yīng)用。目前,對(duì)于混沌序列的使用,大多數(shù)基于混沌系統(tǒng)的圖像加密算法的混淆與擴(kuò)散結(jié)構(gòu)受計(jì)算機(jī)字長(zhǎng)的限制,會(huì)導(dǎo)致混沌的動(dòng)力學(xué)特性退化,特別是低維混沌系統(tǒng),這嚴(yán)重影響了混沌加密的安全性。為此,許多學(xué)者使用超混沌系統(tǒng)來(lái)確?;煦缧蛄械膹?fù)雜性,以提高算法的安全性。但是,不可否認(rèn)的是,單一的混沌映射構(gòu)成的加密算法無(wú)法保證所加密的圖像具有較高安全性。dna是生物體內(nèi)遺傳信息儲(chǔ)存的重要載體,在生物體遺傳代謝中發(fā)揮重要作用。由于其具有超大規(guī)模并行性、超高的存儲(chǔ)密度、超低的能耗以及獨(dú)特的分子結(jié)構(gòu)與分子間識(shí)別機(jī)制決定了其突出的信息存儲(chǔ)及信息處理能力。dna分子在信息加密、隱藏、認(rèn)證等信息安全
技術(shù)領(lǐng)域:
具有巨大的發(fā)展?jié)摿?,為現(xiàn)代密碼學(xué)的發(fā)展提供了一個(gè)新途徑。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有基于混沌系統(tǒng)的圖像加密方法的混沌動(dòng)力學(xué)特性退化,影響混沌加密的安全性的問(wèn)題,本發(fā)明借助于混沌映射對(duì)初始條件的敏感性與偽隨機(jī)性,結(jié)合dna分子固有的空間構(gòu)型及獨(dú)特的信息處理能力等優(yōu)勢(shì),提出一種基于比特置換與動(dòng)態(tài)dna編碼的混沌圖像加密方法。為了解決上述技術(shù)問(wèn)題,本發(fā)明的技術(shù)方案是:一種基于比特置換與動(dòng)態(tài)dna編碼的混沌圖像加密方法,其步驟如下:步驟一:將灰度圖像i轉(zhuǎn)換成大小為m×n的二維的圖像矩陣i1;其中,m和n分別為圖像矩陣i1的行和列的維數(shù);步驟二:利用keccak算法對(duì)dan序列sq進(jìn)行計(jì)算,得到一組散列值k,并生成混沌初始化參數(shù);步驟三:將超混沌chen系統(tǒng)產(chǎn)生的索引序列b1按照升序排列,得到置換索引序列x,將置換索引序列x按照每行m個(gè)值進(jìn)行填充可得到置換矩陣t,用置換矩陣t置亂圖像矩陣i1中的像素位置,得到置亂后的圖像矩陣i2;步驟四:根據(jù)編碼規(guī)則將dna序列sq轉(zhuǎn)化為二進(jìn)制序列sqb;對(duì)二進(jìn)制序列sqb中的位,按照每8位為一組進(jìn)行分組,每組作為一個(gè)控制字節(jié),取前m*n組得到序列sqb'={sqb′1,sqb′2,sqb′3,...,sqb′m*n};利用三級(jí)置亂的butterfly置換網(wǎng)絡(luò),選擇控制字節(jié)sqb′(i-1)*n+j作為控制位對(duì)圖像矩陣i2中的任一個(gè)像素i2(i,j)進(jìn)行置換;通過(guò)對(duì)圖像矩陣i2中的所有像素進(jìn)行三級(jí)置亂的butterfly置換,得到新的圖像矩陣i3;其中,i∈{1,2,…,m},j∈{1,2,…,n};步驟五:將圖像矩陣i3分為兩個(gè)子矩陣,根據(jù)子圖置亂與擴(kuò)散方法,通過(guò)超混沌chen系統(tǒng)產(chǎn)生的序列b2和序列b3分別對(duì)兩個(gè)子矩陣進(jìn)行置亂與擴(kuò)散后,再恢復(fù)成一個(gè)矩陣,得到圖像矩陣i4;步驟六:在dna序列sq的s處截取4×m×n個(gè)堿基序列,采用動(dòng)態(tài)編碼技術(shù)選擇編碼規(guī)則,將圖像矩陣i4轉(zhuǎn)換成長(zhǎng)度為4×m×n的dna序列dna_s,并將序列dna_s與dna序列sq做代數(shù)運(yùn)算實(shí)現(xiàn)像素替代,得到的結(jié)果序列dna_sd,利用編碼規(guī)則將結(jié)果序列dna_sd還原成圖像矩陣,得到圖像矩陣i5;步驟七:根據(jù)密文擴(kuò)散技術(shù),對(duì)圖像矩陣i5中的每個(gè)像素與前一個(gè)像素的密文進(jìn)行異或運(yùn)算,得到圖像矩陣i6并輸出,其中,前一個(gè)像素的密文是指圖像矩陣i6中的前一個(gè)元素。所述dan序列sq為genbank數(shù)據(jù)庫(kù)中id號(hào)為nz_lozq01000068的dna序列。所述散列值和生成混沌初始化參數(shù)的方法為:散列值的長(zhǎng)度為512比特,dna序列sq生成的散列值用十六進(jìn)制表示為:9caa44db566cfe1f6a98c4991fffe891bb7d7fdf840449a026e923e9feab60b8b7ed7a3933a757358c2c9441366976fab4bda222f9b5e4df814322e0dc12c13f,其二進(jìn)制表示為{k1,k2,k3,…,k512},將其分為64組,每組包含8個(gè)比特位,則散列值為k={k′1,k′2,k′3,...,k′64};根據(jù)散列值k={k′1,k′2,k′3,...,k′64},按照如下公式計(jì)算超混沌chen系統(tǒng)的初值x0,y0,z0和ω0:其中,v=6(u-1),u=1,2,3,4。所述超混沌chen系統(tǒng)產(chǎn)生的索引序列的方法是:超混沌chen系統(tǒng)方程為:其中,x、y、z和ω為系統(tǒng)的狀態(tài)變量,u1、u2、u3、u4和r為系統(tǒng)的控制參數(shù),在u1=35、u2=3、u3=12、u4=7和0.085≤r≤0.798時(shí),系統(tǒng)表現(xiàn)為超混沌狀態(tài);在給定初始狀態(tài)值x0、y0、z0和ω0,使混沌系統(tǒng)處于超混沌狀態(tài)下,通過(guò)迭代,產(chǎn)生4個(gè)給定長(zhǎng)度的混沌序列,舍去起始端數(shù)據(jù),從中取出l個(gè)不重復(fù)的值,可以得到4個(gè)離散實(shí)數(shù)值超混沌序列a1:{a11,a12,…,a1l};a2:{a21,a22,…,a2l};a3:{a31,a32,…,a3l};a4:{a41,a42,…,a4l}為統(tǒng)一實(shí)數(shù)序列的值域,僅取4個(gè)序列的小數(shù)部分,可以得到新的序列,分別為b1:{b11,b12,…,b1l};b2:{b21,b22,…,b2l};b3:{b31,b32,…,b3l};b4:{b41,b42,…,b4l},即:其中,[x]表示取x的整數(shù)部分。所述置換矩陣t中的元素ti,j與索引序列x中的元素xk對(duì)應(yīng)關(guān)系如下:ti,j=x(i-1)*j+j;其中,k=(i-1)*j+j,i∈{1,2,…,m},j∈{1,2,…,n}。所述三級(jí)置亂的butterfly置換網(wǎng)絡(luò)包括兩種開(kāi)關(guān)元件,開(kāi)關(guān)元件均包含有一個(gè)待置換的位b,開(kāi)關(guān)元件均有直通和交叉兩種情況;開(kāi)關(guān)元件為圓形元件和八邊形元件,圓形元件是一種被動(dòng)選擇元件,圓形元件對(duì)應(yīng)的兩個(gè)通道的下一層哪一個(gè)位置沒(méi)有被占用,選擇沒(méi)有被占用的通道;八邊形元件的底端包含一個(gè)控制位,當(dāng)控制位為1時(shí),選擇交叉,當(dāng)控制位為0時(shí),選擇直通。所述三級(jí)置亂的butterfly置換網(wǎng)絡(luò)的上端為源端、下端為終端、控制字節(jié)c={c8,c7,c6,c5,c4,c3,c2,c1},中間包含了3級(jí)置換,級(jí)與級(jí)之間為蝶式變換;置換網(wǎng)絡(luò)從右向左進(jìn)行,總是有八邊形的元件先做出通道的選擇;三級(jí)置亂的butterfly置換網(wǎng)絡(luò)包括一級(jí)置亂網(wǎng)絡(luò)、二級(jí)置亂網(wǎng)絡(luò)和三級(jí)置亂網(wǎng)絡(luò);一級(jí)置亂網(wǎng)絡(luò)從右到左的低4位為八邊形元件和高4位為圓形元件,一級(jí)置亂網(wǎng)絡(luò)的低4位的八邊形元件的控制位分別是控制字節(jié)c中的控制位c1、c2、c3和c4;二級(jí)置亂網(wǎng)絡(luò)的第1、2、5、6位為八邊形元件和第3、4、7、8位為圓形元件,二級(jí)置亂網(wǎng)絡(luò)的第1、2、5、6位的八邊形元件的控制位分別為c5、c6、c7和c8;三級(jí)置亂網(wǎng)絡(luò)的第1、3、5、7位為八邊形元件和第2、4、6、8位為圓形元件,三級(jí)置亂網(wǎng)絡(luò)的第1、3、5、7位的八邊形元件的控制位分別為:和其中,為同或運(yùn)算。所述子圖置亂的方法為:圖像矩陣i3中的每個(gè)像素值可用一個(gè)8位二進(jìn)制序列表示,將每個(gè)像素值的二進(jìn)制序列中的第1、3、5、7位取出作為一個(gè)字節(jié)的低4位,高4位補(bǔ)0,形成一個(gè)字節(jié),作為一個(gè)新的像素值按照對(duì)應(yīng)的位置重新生成一個(gè)子矩陣,得到子矩陣sub_i;將每個(gè)像素值的二進(jìn)制數(shù)中的第2、4、6、8位作為一個(gè)字節(jié)的低4位,高4位補(bǔ)0,按照對(duì)應(yīng)的位置生成另外一個(gè)子矩陣sub_ii;先后對(duì)超混沌chen系統(tǒng)產(chǎn)生的序列b2截取長(zhǎng)度為m和n的混沌序列y1和y2,然后將這兩個(gè)序列分別按升序排列,得到兩個(gè)新的有序的序列y1’和序列y2’,確定混沌序列y1和y2中每一個(gè)元素在序列y1’和y2’中所在的位置,形成位置索引序列ym和yn;利用索引序列ym和yn分別對(duì)子矩陣sub_i的所有行進(jìn)行左移和上移置亂,即根據(jù)位置索引序列ym中元素ymi的值對(duì)子矩陣sub_i的第i行進(jìn)行循環(huán)左移ymi位(i=1,2,…,m),對(duì)子矩陣sub_i的第j列進(jìn)行上移,將其循環(huán)上移ynj位(j=1,2,…,n);先后對(duì)超混沌chen系統(tǒng)產(chǎn)生的序列b3截取長(zhǎng)度為m和n的序列,并排序生成索引序列zm和zn,根據(jù)索引序列zm和zn分別對(duì)子矩陣sub_ii進(jìn)行右移和下移置亂;對(duì)兩個(gè)子矩陣進(jìn)行移位置亂后,再按照拆分子矩陣的原理,將兩個(gè)子矩陣sub_i和sub_ii恢復(fù)成一個(gè)圖像矩陣。所述密文擴(kuò)散的方法是:將圖像矩陣i5按照行優(yōu)先的順序轉(zhuǎn)換為長(zhǎng)度為m×n的一維序列si={si1,si2,si3,…sim×n},設(shè)密文擴(kuò)散后的序列為sd={sd1,sd2,sd3,…sdm×n},密文擴(kuò)散的公式如下:其中,初始化元素sd(0)=k′1,t=1,2,…m*n,k′1為前面產(chǎn)生的散列值k的前8位二進(jìn)制位;將sd序列轉(zhuǎn)化為大小m×n的二維矩陣,得到圖像矩陣i6。所述的動(dòng)態(tài)編碼技術(shù)是指:根據(jù)圖像矩陣i={ii,j}中待編碼像素所在矩陣中的位置與前面產(chǎn)生的散列值k共同決定選擇編碼規(guī)則的一種,即對(duì)像素ii,j所選擇的dna編碼規(guī)則計(jì)算如下:i∈{1,2,…,m},j∈{1,2,…,n},s=mod((i-1)*n+j-1,510)+1;ksks+1ks+2是由產(chǎn)生的散列值k的第s位、s+1位和s+2位組成的三位二進(jìn)制位,bin2dec(ksks+1ks+2)為將二進(jìn)制數(shù)轉(zhuǎn)為十進(jìn)制數(shù)的函數(shù)。本發(fā)明將比特置換與動(dòng)態(tài)dna編碼技術(shù)相結(jié)合,首先利用keccak算法對(duì)給定的dna序列計(jì)算散列值作為混沌映射的初值,采用超混沌chen系統(tǒng)產(chǎn)生混沌映射索引對(duì)圖像進(jìn)行像素位置全局置亂;用給定的dna序列作為控制位,結(jié)合butterfly網(wǎng)絡(luò)對(duì)比特置亂,以實(shí)現(xiàn)位級(jí)別置亂;通過(guò)對(duì)圖像進(jìn)行動(dòng)態(tài)dna編碼,并與給定的dna序列進(jìn)行異或運(yùn)算,實(shí)現(xiàn)像素的替代,進(jìn)一步提高了加密的安全性;最后通過(guò)密文反饋來(lái)進(jìn)一步增強(qiáng)算法的混淆和擴(kuò)散特性。本發(fā)明不僅密鑰空間大、對(duì)密鑰的敏感性強(qiáng),而且能有效抵御統(tǒng)計(jì)性分析和窮舉分析等攻擊操作,安全性高。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明的流程圖。圖2為本發(fā)明butterfly置換網(wǎng)絡(luò)的置換元件。圖3為本發(fā)明butterfly置換網(wǎng)絡(luò)的比特置換網(wǎng)絡(luò)。圖4為本發(fā)明實(shí)驗(yàn)的原圖像、加密圖像和解密圖像。圖5為本發(fā)明lena圖像加密前后灰度直方圖圖6為本發(fā)明加密圖像與原始圖像水平、垂直及對(duì)角方向相鄰像素相關(guān)性比較。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。如圖1所示,一種基于比特置換與動(dòng)態(tài)dna編碼的混沌圖像加密方法,第一,像素內(nèi)置亂,借助于butterfly網(wǎng)絡(luò)實(shí)現(xiàn)每個(gè)像素的比特位置亂;第二,像素位置置亂變換,利用超混沌chen系統(tǒng)產(chǎn)生的混沌序列構(gòu)成需要的置換索引,通過(guò)置換索引將圖像像素位置進(jìn)行置亂變化;第三:像素替代與密文擴(kuò)散,將原始圖像的每個(gè)像素的值轉(zhuǎn)換成dna序列,然后與dna編碼序列庫(kù)中的序列進(jìn)行運(yùn)算,再通過(guò)密文反饋進(jìn)行迭代置換。本發(fā)明利用超混沌chen系統(tǒng)、keccak算法、比特置換、dna序列庫(kù)以及自身像素灰度值之間的變換與運(yùn)算達(dá)到混淆與擴(kuò)散的目的,從而實(shí)現(xiàn)對(duì)數(shù)字圖像的加密,具體步驟如下:步驟一:將灰度圖像i轉(zhuǎn)換成大小為m×n的二維的圖像矩陣i1,其中,m和n分別為灰度圖像的行維數(shù)和列維數(shù)。步驟二:利用keccak算法對(duì)dan序列sq進(jìn)行計(jì)算,產(chǎn)生一組散列值k,并生成混沌初始化參數(shù)。核酸數(shù)據(jù)庫(kù)是所有已知核酸信息集合的一個(gè)數(shù)據(jù)資料庫(kù),它包含核酸的核苷酸序列,單核苷酸多態(tài)性、結(jié)構(gòu)、性質(zhì)以及相關(guān)描述等內(nèi)容。序列在數(shù)據(jù)庫(kù)中的id號(hào)被稱為序列代碼,它具有唯一性和永久性。隨著測(cè)序技術(shù)的快速發(fā)展,核酸數(shù)據(jù)庫(kù)的規(guī)模正在以指數(shù)方式增長(zhǎng),到目前為止能夠公開(kāi)獲取的dna序列已經(jīng)超過(guò)1.63億條。如此巨大規(guī)模的數(shù)據(jù)庫(kù),相當(dāng)于一個(gè)天然的密碼本,為圖像加密技術(shù)提供了一個(gè)全新的思路和解決方案。本發(fā)明dna序列主要用于密文擴(kuò)散,以及散列值的產(chǎn)生。dna分子由四種脫氧核苷酸組成,分別是:腺嘌呤a、胞嘧啶c、鳥(niǎo)嘌呤g和胸腺嘧啶t。對(duì)于兩個(gè)單鏈dna分子,可以通過(guò)核苷酸之間的氫鍵形成一個(gè)穩(wěn)定的dna分子。堿基的化學(xué)結(jié)構(gòu)確定了堿基互補(bǔ)配對(duì)的原則,也稱為watson-crick堿基配對(duì)原則,即腺嘌呤a和胸腺嘧啶t之間通過(guò)兩個(gè)氫鍵配對(duì),鳥(niǎo)嘌呤g和胞嘧啶c之間通過(guò)三個(gè)氫鍵配對(duì)。這一天然的四進(jìn)制組合,正好與半導(dǎo)體通斷所形成的二進(jìn)制類似。因此,運(yùn)用堿基的排列組合可以進(jìn)行信息的存儲(chǔ)和計(jì)算。如果按照a→00,c→01,g→10,t→11進(jìn)行對(duì)應(yīng)編碼,則互補(bǔ)數(shù)字配對(duì)及與堿基對(duì)的互補(bǔ)配對(duì)及吻合,這樣共有8中編碼組合滿足互補(bǔ)配對(duì)規(guī)則,如表1所示。表1.8種編碼規(guī)則對(duì)于灰度圖像來(lái)說(shuō),每個(gè)像素的灰度值可以用8位二進(jìn)制數(shù)表示,如果采用dna編碼,只需要編碼4個(gè)堿基序列;轉(zhuǎn)換成dna序列以后,就可以將dna序列的轉(zhuǎn)換規(guī)則用到圖像處理中。在加密圖像中,為達(dá)到像素值擾亂的目的,同時(shí)定義了如下堿基運(yùn)算規(guī)則。根據(jù)互補(bǔ)配對(duì)規(guī)則,針對(duì)a→00,c→01,g→10,t→11編碼,這里給出一種堿基之間的運(yùn)算規(guī)則,如表2-表4所示,針對(duì)其他編碼,同樣可以建立類似的運(yùn)算規(guī)則。表2.異或運(yùn)算規(guī)則xoracgtaacgtccatgggtacttgca表3.加法運(yùn)算規(guī)則addacgtaacgtccgtaggtacttacg表4.減法運(yùn)算規(guī)則subacgtaatgcccatgggcatttgcakeccak算法是一種標(biāo)準(zhǔn)的單向散列函數(shù)算法。散列函數(shù)可以根據(jù)任意長(zhǎng)度的消息計(jì)算出固定長(zhǎng)度的散列值。將散列值附在消息之后發(fā)出或者以消息一同存儲(chǔ),可以防止消息在存儲(chǔ)和傳輸過(guò)程中被修改。消息不同,產(chǎn)生的散列值也不同,消息中哪怕只有1比特的改變,散列值就會(huì)完全不用。利用這一特點(diǎn),通過(guò)選擇合適的消息,利用keccak散列函數(shù)生成的散列值與圖像進(jìn)行運(yùn)算來(lái)改變圖像的像素值。同時(shí),對(duì)該散列值進(jìn)行相應(yīng)的修正來(lái)設(shè)定混沌系統(tǒng)的初值和系統(tǒng)參數(shù),來(lái)進(jìn)一步提高加密的安全性。keccak算法在輸入數(shù)據(jù)長(zhǎng)度上限方面沒(méi)有長(zhǎng)度限制,可以生成任意程度的散列值。散列值k的長(zhǎng)度選擇512比特,可以表示為k={k1,k2,k3,…,k512}。比如genbank數(shù)據(jù)庫(kù)中id號(hào)為nz_lozq01000068的dna序列所生成的散列值為(十六進(jìn)制表示):9caa44db566cfe1f6a98c4991fffe891bb7d7fdf840449a026e923e9feab60b8b7ed7a3933a757358c2c9441366976fab4bda222f9b5e4df814322e0dc12c13f。如果將其分為64組,每組包含8個(gè)比特位,則為k={k′1,k′2,k′3,...,k′64}。根據(jù)散列值k={k′1,k′2,k′3,...,k′64},按照如下公式計(jì)算超混沌chen系統(tǒng)的初值x0,y0,z0,ω0:其中,v=6(u-1),u=1,2,3,4。步驟三:將超混沌chen系統(tǒng)產(chǎn)生的索引序列b1按照升序排列,得到置換索引序列x,將置換索引序列x按照每行m個(gè)值進(jìn)行填充可得到置換矩陣t,用置換矩陣t置亂圖像矩陣i1中的像素位置,得到置亂后的圖像矩陣i2。混沌作為一種特有非線性現(xiàn)象,具有良好的偽隨機(jī)性、軌道的不可預(yù)測(cè)性、對(duì)初始狀態(tài)及結(jié)構(gòu)參數(shù)的極端敏感性、迭代的不重復(fù)性等一系列優(yōu)良特性,廣泛被應(yīng)用于保密通信中。與低維混沌系統(tǒng)相比,高維超混沌系統(tǒng)有更多正性李雅昔諾夫指教、更加復(fù)雜和難以預(yù)測(cè)的動(dòng)力學(xué)特性,能有效解決低維混沌系統(tǒng)動(dòng)力學(xué)特性退化問(wèn)題,保密性強(qiáng),實(shí)現(xiàn)簡(jiǎn)單,密鑰空間大。2005年,李等人通過(guò)狀態(tài)反饋控制構(gòu)建了超混沌chen系統(tǒng),其方程為:其中,x、y、z和ω為系統(tǒng)的狀態(tài)變量,u1、u2、u3、u4和r為系統(tǒng)的控制參數(shù),在u1=35、u2=3、u3=12、u4=7和0.085≤r≤0.798時(shí),系統(tǒng)表現(xiàn)為超混沌狀態(tài)。在給定初始狀態(tài)值x0,y0,z0和ω0,使混沌系統(tǒng)處于超混沌狀態(tài)下,通過(guò)迭代,產(chǎn)生4個(gè)給定長(zhǎng)度的混沌序列;舍去序列的起始端數(shù)據(jù),從中取出l個(gè)不重復(fù)的值,可以得到4個(gè)離散實(shí)數(shù)值超混沌序列a1:{a11,a12,…,a1l};a2:{a21,a22,…,a2l};a3:{a31,a32,…,a3l};a4:{a41,a42,…,a4l}為統(tǒng)一實(shí)數(shù)序列的值域,僅取4個(gè)序列的小數(shù)部分,可以得到新的序列,分別為b1:{b11,b12,…,b1l};b2:{b21,b22,…,b2l};b3:{b31,b32,…,b3l};b4:{b41,b42,…,b4l},則:其中,[x]表示取x的整數(shù)部分。圖像置亂技術(shù)是通過(guò)對(duì)圖像像素矩陣的重排,破壞圖像矩陣的相關(guān)性,可以很大限度的提高隱蔽載體的魯棒性,所以圖像置亂是信息隱藏中非常常用的一項(xiàng)技術(shù),以此實(shí)現(xiàn)信息的加密,達(dá)到安全傳輸圖像的目的。給定二維矩陣i,圖像置亂主要是尋找一個(gè)二維可逆映射t作為置亂矩陣,當(dāng)矩陣i經(jīng)過(guò)置亂矩陣t變換后得到二維矩陣i’。則i與i’的對(duì)應(yīng)關(guān)系為:ii,j=i'p,q。其中,p=div(ti,j-1,m)+1,q=mod(ti,j-1,m)+1,i∈{1,2,…,m},j∈{1,2,…,n}。m和n為二維矩陣i的行數(shù)和列數(shù)。根據(jù)超混沌chen系統(tǒng)產(chǎn)生的序列b1,按照升序排列,得到置換索引序列x,將索引序列x按照每行m個(gè)值進(jìn)行填充可得到置換矩陣t,用于圖像像素的位置置亂。置換矩陣t中的每個(gè)元素ti,j與索引序列x中的每個(gè)元素xk對(duì)應(yīng)關(guān)系如下:ti,j=x(i-1)*j+j,k=(i-1)*j+j,i∈{1,2,…,m},j∈{1,2,…,n}步驟四:根據(jù)編碼規(guī)則將dna序列sq轉(zhuǎn)化為二進(jìn)制序列sqb;對(duì)二進(jìn)制序列sqb中的位,按照每8位為一組進(jìn)行分組,每組作為一個(gè)控制字節(jié),取前m*n組得到序列sqb'={sqb′1,sqb′2,sqb′3,...,sqb′m*n};利用三級(jí)置亂的butterfly置換網(wǎng)絡(luò),選擇控制字節(jié)sqb′(i-1)*n+j作為控制位對(duì)圖像矩陣i2中的任一個(gè)像素i2(i,j)進(jìn)行置換;通過(guò)對(duì)圖像矩陣i2中的所有像素進(jìn)行置換,得到新的圖像矩陣i3;其中,i∈{1,2,…,m},j∈{1,2,…,n}。dna序列sq轉(zhuǎn)化為二進(jìn)制序列sqb的編碼規(guī)則為表1中的規(guī)則1。置亂是密碼算法中隱藏明文信息的重要手段,通過(guò)位置置換來(lái)實(shí)現(xiàn)明文到密文的擴(kuò)散。而比特置換提供了字節(jié)操作所無(wú)法實(shí)現(xiàn)的混亂擴(kuò)散等功能。butterfly是一種常見(jiàn)的通訊交換網(wǎng)絡(luò)。butterfly網(wǎng)絡(luò)和逆butterfly網(wǎng)絡(luò)連接一起可以組合成一種可重排非阻塞網(wǎng),能實(shí)現(xiàn)從輸入端到輸出端的所有置換。因此,butterfly置換網(wǎng)絡(luò)可以用來(lái)構(gòu)造實(shí)現(xiàn)任意置換操作的比特單元實(shí)現(xiàn)像素內(nèi)置換。butterfly置換網(wǎng)絡(luò)包括兩種開(kāi)關(guān)元件,分別為圓形元件和八邊形元件,用于控制比特置換,如圖2所示。圓形元件和八邊形元件均有直通和交叉兩種情況,每個(gè)開(kāi)關(guān)元件中包括一個(gè)待置換的位b,八邊形元件的底端包含一個(gè)控制位c。對(duì)于八邊形的開(kāi)關(guān)元件,當(dāng)c=1時(shí),選擇交叉,c=0時(shí),選擇直通。而對(duì)于圓形元件,是一種被動(dòng)選擇元件,要看它對(duì)應(yīng)的兩個(gè)通道的下一層哪一個(gè)位置沒(méi)有被占用,只能選擇沒(méi)有被占用的通道。根據(jù)butterfly網(wǎng)絡(luò)的設(shè)計(jì)原理,計(jì)算從右向左進(jìn)行,總是有八邊形的元件先做出通道的選擇。一旦八邊形的元件運(yùn)算結(jié)束,剩下的圓形元件有且僅有一種通道被選擇。為了達(dá)到置換的目的,本發(fā)明實(shí)現(xiàn)三級(jí)置亂,通過(guò)對(duì)butterfly網(wǎng)絡(luò)進(jìn)行改進(jìn),僅需要一個(gè)控制字來(lái)控制一個(gè)給定字節(jié)位的置換。三級(jí)置亂的butterfly置換網(wǎng)絡(luò)的上端為源端、下端為終端、控制字節(jié)c={c8,c7,c6,c5,c4,c3,c2,c1},中間包含了3級(jí)置換,級(jí)與級(jí)之間為蝶式變換;網(wǎng)絡(luò)從右向左進(jìn)行,總是有八邊形的元件先做出通道的選擇;三級(jí)置亂的butterfly置換網(wǎng)絡(luò)包括一級(jí)置亂網(wǎng)絡(luò)、二級(jí)置亂網(wǎng)絡(luò)和三級(jí)置亂網(wǎng)絡(luò);一級(jí)置亂網(wǎng)絡(luò)從右到左的低4位為八邊形元件和高4位為圓形元件,一級(jí)置亂網(wǎng)絡(luò)的低4位的八邊形元件的控制位分別是控制字節(jié)c中的控制位c1、c2、c3和c4;二級(jí)置亂網(wǎng)絡(luò)的第1、2、5、6位為八邊形元件和第3、4、7、8位為圓形元件,二級(jí)置亂網(wǎng)絡(luò)的第1、2、5、6位的八邊形元件的控制位分別為c5、c6、c7和c8;三級(jí)置亂網(wǎng)絡(luò)的第1、3、5、7位為八邊形元件和第2、4、6、8位為圓形元件,三級(jí)置亂網(wǎng)絡(luò)的第1、3、5、7位的八邊形元件的控制位分別為:和其中,為同或運(yùn)算,如圖3所示。比如給定待置換字節(jié)b=10100101,控制字節(jié)c=10011001,則中間字節(jié)s=00111100和字節(jié)t=10011001,則輸出字節(jié)d=01100110,實(shí)現(xiàn)了字節(jié)10100101到字節(jié)01100110的位置換。輸入待置換字節(jié)b=10100101和控制字節(jié)c=10011001,則對(duì)于第一級(jí)置亂,有b的低4位為八邊形元件,根據(jù)控制位先做出選擇通道,高4位僅有的通道做出選擇。得出第一級(jí)置換結(jié)果字節(jié)s=00111100,同時(shí)作為第二級(jí)置換的輸入字節(jié)。在第二級(jí)置換中,字節(jié)s的第1、2、5、6位為八邊形元件,根據(jù)給定控制位先做出通道的選擇;剩余的位對(duì)剩余的通道進(jìn)行選擇,得到中間字節(jié)t=10011001。字節(jié)t同時(shí)為第三級(jí)的輸入字節(jié),在第三級(jí)置換中,t字節(jié)的第1、3、5、7位有八邊形元件所控制,根據(jù)控制字節(jié)c的部分位,首先做出通道的選擇,剩余的位對(duì)剩余的通道做出選擇,得到最終輸出字節(jié)d=01100110;最終實(shí)現(xiàn)了字節(jié)b=10100101再控制字節(jié)c=10011001的作用下置換為字節(jié)d=01100110。本發(fā)明明文圖像經(jīng)過(guò)比特級(jí)置亂后,不僅像素位置改變了,同時(shí)像素值也得到了改變,進(jìn)一步提高了安全性。步驟五:將圖像矩陣i3分為兩個(gè)子矩陣,根據(jù)子圖置亂與擴(kuò)散方法,通過(guò)超混沌chen系統(tǒng)產(chǎn)生的序列b2和序列b3分別對(duì)兩個(gè)子矩陣進(jìn)行置亂與擴(kuò)散后,再恢復(fù)成一個(gè)矩陣,得到圖像矩陣i4。像素位置全局置亂階段的操作將實(shí)現(xiàn)對(duì)圖像像素位置的全局置亂,以打破相鄰像素的相關(guān)性,僅對(duì)圖像進(jìn)行位置置亂,而不改變像素值是不安全的,很難抵御明文攻擊。為增強(qiáng)加密算法的安全性,結(jié)合視覺(jué)密碼加密原理,將圖像分成兩個(gè)子圖,進(jìn)一步置亂像素值以實(shí)現(xiàn)像素?cái)U(kuò)散。針對(duì)灰度圖像的二維矩陣i,每個(gè)像素值可用一個(gè)8位二進(jìn)制序列表示,即:ii,j=(b8b7b6b5b4b3b2b1)i,j,其中,bk∈{0,1},k=1,2,…,8,i∈{1,2,…,m},j∈{1,2,…,n},b8代表最高位,b1代表最低位。將每個(gè)像素的二進(jìn)制數(shù)中的第1、3、5和7位取出作為一個(gè)字節(jié)的低4位,高4位補(bǔ)0,形成一個(gè)字節(jié),作為一個(gè)新的像素值,按照對(duì)應(yīng)的位置重新生成一個(gè)子矩陣,得到子矩陣sub_i;同樣,將每個(gè)像素的二進(jìn)制數(shù)中的第2、4、6和8位作為一個(gè)字節(jié)的低4位,高4位補(bǔ)0,按照對(duì)應(yīng)的位置生成另外一個(gè)子矩陣sub_ii。這樣一幅灰度圖像可以由這2個(gè)子圖中的子矩陣所確定,并且圖像中每個(gè)像素點(diǎn)值的信息都分布在這兩個(gè)子矩陣中。根據(jù)超混沌chen系統(tǒng)產(chǎn)生的序列b2,先后截取長(zhǎng)度為m和n的混沌序列y1和y2,然后將這兩個(gè)序列分別按升序排列,得到兩個(gè)新的有序序列y′1和y′2。確定混沌序列y1和y2中每一個(gè)元素在有序序列y′1和y′2元素所在的位置,形成位置索引序列ym和yn。首先,對(duì)子矩陣sub_i的所有行進(jìn)行左移置亂,根據(jù)序列ym中元素ymi的值對(duì)子矩陣sub_i的第i行進(jìn)行循環(huán)左移ymi位(i=1,2,…,m)。然后對(duì)子矩陣sub_i的所有列進(jìn)行上移置亂;比如第j列,將其循環(huán)上移ynj位(j=1,2,…,n);同理,根據(jù)混沌產(chǎn)生的序列b3,先后截取長(zhǎng)度為m和n的序列,并排序生成索引序列zm和zn,根據(jù)索引序列zm和zn對(duì)子矩陣sub_ii進(jìn)行右移和下移置亂。通過(guò)分別對(duì)每個(gè)子矩陣sub_i和sub_ii進(jìn)行移位置亂后,再按照拆分子矩陣的原理,將兩個(gè)子矩陣恢復(fù)成一個(gè)圖像矩陣i4來(lái)實(shí)現(xiàn)密文的置亂與擴(kuò)散。步驟六:在dna序列sq的s處截取4×m×n個(gè)堿基序列,采用動(dòng)態(tài)編碼技術(shù)選擇編碼規(guī)則,將圖像矩陣i4轉(zhuǎn)換成長(zhǎng)度為4×m×n的dna序列dna_s,并將序列dna_s與dna序列sq做代數(shù)運(yùn)算實(shí)現(xiàn)像素替代,得到的結(jié)果序列dna_sd,利用編碼規(guī)則將結(jié)果序列dna_sd還原成圖像矩陣,得到圖像矩陣i5。像素置亂通過(guò)矩陣初等變化快速的將圖像的位置進(jìn)行打亂,破壞了相鄰像素之間的相關(guān)性,但無(wú)法有效地抵抗密碼學(xué)攻擊,進(jìn)一步通過(guò)像素替換和密文擴(kuò)散能夠徹底混淆明文圖像和密文圖像之間的關(guān)系。使用復(fù)雜的非線性替代變換可以達(dá)到比較好的混淆效果,替代加密常用手段包括模運(yùn)算和加運(yùn)算,加運(yùn)算能夠使像素值與其他值關(guān)聯(lián),進(jìn)而使各像素值的分布更加均為,消除置換圖像的紋理特征。將圖像矩陣中的每個(gè)像素值通過(guò)編碼規(guī)則轉(zhuǎn)換成dna序列,并與給定的dna序列進(jìn)行代數(shù)運(yùn)算,進(jìn)而達(dá)到像素替代的目的。dna序列運(yùn)算可以是加、減或異或運(yùn)算。這里針對(duì)每一個(gè)像素均采取動(dòng)態(tài)dna編碼技術(shù),動(dòng)態(tài)dna編碼技術(shù)是根據(jù)圖像矩陣i中待編碼像素所在矩陣中的位置與前面產(chǎn)生的散列值共同決定選擇表1中編碼規(guī)則的一種,也即對(duì)像素ii,j所選擇的dna編碼規(guī)則計(jì)算如下:i∈{1,2,…,m},j∈{1,2,…,n},s=mod((i-1)*n+j-1,510)+1;ksks+1ks+2由散列值k的第s位、s+1位和s+2位三位二進(jìn)制位組成,bin2dec(ksks+1ks+2)為將三位二進(jìn)制數(shù)轉(zhuǎn)為十進(jìn)制數(shù)的函數(shù)。由于每個(gè)像素值可以由8位二進(jìn)制表示,因此每個(gè)像素被編碼為4個(gè)堿基。因此,編碼后的序列dna_s長(zhǎng)度為4×m×n。如原始圖像的第37行和第54列的像素值是108,用二進(jìn)制表示為[01101100],根據(jù)動(dòng)態(tài)編碼技術(shù),應(yīng)選擇規(guī)則為r37,54=8,用dna編碼規(guī)則8進(jìn)行編碼,得到該像素的dna序列為[gcat]。將序列dna_s與給定dna序列sq做代數(shù)運(yùn)算。代數(shù)運(yùn)算可以是表2、表3或表4中的其中一種運(yùn)算。比如選擇表2的異或運(yùn)算:其中,f=1,2,3,…,4×m×n。最后,對(duì)結(jié)果序列dna_sd選擇編碼規(guī)則1,恢復(fù)成圖像矩陣。步驟七:根據(jù)密文擴(kuò)散技術(shù),對(duì)圖像矩陣i5中的每個(gè)像素與前一個(gè)像素的密文進(jìn)行異或運(yùn)算,得到圖像矩陣i6并輸出,其中,前一個(gè)像素的密文是指圖像矩陣i6中的前一個(gè)元素。密文擴(kuò)散操作使明文的微小變化可以擴(kuò)散到整個(gè)密文,從而打亂明文圖像與密文圖像的關(guān)系,可以有效抵抗選擇明文等密碼學(xué)攻擊手段,實(shí)現(xiàn)密文擴(kuò)散。將圖像矩陣i5按照行優(yōu)先的順序轉(zhuǎn)換為長(zhǎng)度為m×n的一維序列si={si1,si2,si3,…,sim×n},設(shè)密文擴(kuò)散后的一維序列為sd={sd1,sd2,sd3,…sdm×n},密文擴(kuò)散的公式如下:其中,初始化元素sd(0)=k′1,t=1,2,…m*n,k′1為前面產(chǎn)生的散列值k的前8位二進(jìn)制位。將序列sd轉(zhuǎn)化為大小m×n的二維矩陣,得到圖像矩陣i6。圖像解密算法是上述過(guò)程的逆過(guò)程。這里不再闡述。本發(fā)明也適用于彩色圖像的加密,只需將像素的值進(jìn)行rgb分解處理即可。應(yīng)用matlab軟件編程實(shí)現(xiàn)來(lái)驗(yàn)證本發(fā)明的可行性,采用大小為256*256的lena灰度圖像,原始圖像如圖4(a),利用本發(fā)明得到的加密圖像如圖4(b)所示,利用本發(fā)明的逆過(guò)程對(duì)圖4(b)的解密圖像如圖4(c)所示。本發(fā)明所采用的密鑰主要用于像素置亂和擴(kuò)散過(guò)程,分別是:超混沌chen系統(tǒng)初值參數(shù)r=0.6,核酸數(shù)據(jù)庫(kù)的dna序列選擇id號(hào)為nz_lozq01000068的序列,起始位置為s=1,其他參數(shù)均有dna序列的散列值生成。如果計(jì)算精度為10-14,密鑰的空間即可達(dá)到10100,可見(jiàn)本發(fā)明具有足夠的空間來(lái)抵抗窮舉攻擊。為了測(cè)試密鑰的靈敏度,對(duì)于超混沌chen系統(tǒng)映射,將超混沌chen系統(tǒng)的初始值x0的初值增加0.0000000001,其他密鑰不變的情況下,無(wú)法正確解密出原圖像,可見(jiàn)本發(fā)明具有較強(qiáng)的密鑰靈敏性。當(dāng)然,這里的x0是由dna序列所產(chǎn)生的散列值計(jì)算所得,本發(fā)明真正的密鑰是dna序列與起始位置s,如果將dna序列中的堿基更換一個(gè),將導(dǎo)致散列值完全不一樣,這樣產(chǎn)生的混沌系統(tǒng)初始值會(huì)變化更大。圖像的統(tǒng)計(jì)信息在一定程度上可以曝露出原始圖像灰度值的分布規(guī)律,能否改變?cè)紙D像的統(tǒng)計(jì)分布也是圖像加密中至關(guān)重要的指標(biāo)。本發(fā)明對(duì)圖像像素灰度值運(yùn)算操作的目的即是為抵御攻擊方進(jìn)行灰度統(tǒng)計(jì)攻擊。圖4(a)中原始圖像的灰度直方圖如圖5(a)所示,圖4(b)中加密圖像的灰度直方如圖5(b)所示。由圖5可以得出,異或處理及置換運(yùn)算使所得加密圖像灰度分布非常均勻,這說(shuō)明了該算法具有很好的抵御統(tǒng)計(jì)分析能力,使攻擊者不能夠分析出原始灰度值分布范圍。一般原始圖像中像素的相關(guān)性比較大,為了阻止統(tǒng)計(jì)分析,必須降低相鄰像素的相關(guān)性,隨機(jī)選取加密圖像和原始圖像各2500對(duì)像素對(duì),觀測(cè)其水平、垂直和對(duì)角方向的像素相關(guān)性,結(jié)果如表5所示。原始圖像水平方向、豎直方向、對(duì)角方向的相鄰像素相關(guān)性分別如圖6(a)、圖6(c)和圖6(e)所示,加密圖像的水平方向、豎直方向、對(duì)角方向的相鄰像素相關(guān)性分別如圖6(b)、圖6(d)和圖6(f)所示。從表5可以看出,加密前的圖像像素之間具有較大的相關(guān)性,經(jīng)過(guò)加密后,圖像像素之間相關(guān)性大大減少。這表明加密圖像的相鄰像素已基本不相關(guān),原始圖像的統(tǒng)計(jì)特征已被擴(kuò)散到隨機(jī)密文圖像中。表5和圖6給出了原始圖像與加密圖像相鄰像素對(duì)之間的相關(guān)性比較。表5相鄰像素相關(guān)性比較信息熵是一種測(cè)試不確定性的指標(biāo)。計(jì)算公式如下:其中,p(mi)表示信息mi出現(xiàn)的概率。對(duì)于灰度圖像矩陣i來(lái)說(shuō),信息m有256種狀態(tài),最小值0,最大值為255。則根據(jù)上式可知,當(dāng)信息熵為8時(shí),表明信息是完全隨機(jī)的。也就是說(shuō),密文信息熵越大,信息越安全。本發(fā)明的圖4(b)加密圖像得到的密文圖像的信息熵為7.9893,這表明密文的信息泄露極小,進(jìn)一步證明了本發(fā)明的安全性。本發(fā)明通過(guò)比特置換、混沌映射與dna序列庫(kù)之間的運(yùn)算實(shí)現(xiàn)圖像像素位置的置亂變換與像素值的擴(kuò)散,基于比特置換與dna編碼相結(jié)合,使其能有效抵抗明文攻擊,差分攻擊和統(tǒng)計(jì)攻擊,密鑰空間大,安全性高。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)12