基于最小粒度全置亂圖像加密算法
基于最小粒度全置亂圖像加密算法是通過(guò)對(duì)圖像比特全排列,同時(shí)完成全矩陣范圍內(nèi)像素比特位置置亂和像素值替換兩個(gè)操作。圖像比特全排序的驅(qū)動(dòng)是依賴非線性混沌動(dòng)力系統(tǒng)來(lái)完成的。在眾多的混沌映射中,依據(jù)混沌置亂信息熵選擇用于比特全排列的混沌映射。
一、選擇混沌映射
常見的混沌很多,如一維Logistc映射、二維的Henon映射、三維的Lorenz映射和Chua映射等。在眾多的混沌映射中,選擇哪一個(gè)混沌序列才能使圖像全排列加密算法安全性好,本文提出應(yīng)用混沌置亂熵選擇標(biāo)準(zhǔn)。
從置亂信息熵定義可知,置亂信息熵越大,圖像全排列加密強(qiáng)度越高,安全性越好。依據(jù)置亂信息熵的定義,實(shí)驗(yàn)測(cè)得常見混沌置亂信息熵如表所示。

表第一行數(shù)字代表窗口寬度。從實(shí)驗(yàn)數(shù)據(jù)可見,Lorenz混沌整體置亂信息熵高于Logistc映射、Henon映射和Chua映射,而Lorenz混沌分量x的置亂信息熵強(qiáng)于分量y、z的置亂信息熵。故本文圖像比特全排列使用Lorenz混沌分量x驅(qū)動(dòng)。
二、混沌加密算法
1、 圖像比特全排列算法
對(duì)于一幅任意大小的灰度圖像I,設(shè)其大小為M×N。
a)依據(jù)混沌置亂信息熵,選擇合適的混沌動(dòng)力學(xué)方程,給出與密鑰相關(guān)的初始值x1或初始向量V1,并令K=1。
b)應(yīng)用選擇的混沌方程迭代m=m×n×8次,生成混沌實(shí)值序列{x1,x2,…,xm}或向量序列{V1,V2,V3,…,Vm},依據(jù)置亂信息熵,選擇置亂信息熵最大的一行,成為實(shí)值序列{x1,x2,…,xm}。
c)從小到大把混沌實(shí)值序列{x1,x2,…,xm}排序,得到排序后的序列{y1,y2,…,ym}。
d)計(jì)算置亂地址碼集{t1,t2,…,tm},ti∈{1,2,…,m}。ti是xi在排序后的序列{y1,y2,…,ym}中的下標(biāo)。
e)把二維圖像變成一維數(shù)組,再把每個(gè)數(shù)組元素變成二進(jìn)制比特序列,順序連接形成長(zhǎng)度為M×N×8的比特序列,利用置亂地址碼集進(jìn)行擾亂,然后還原成一維十進(jìn)制數(shù)組,完成圖像比特全置亂。
2、圖像替換算法
雖然上述圖像最小粒度(比特)全排列已使圖像像素值和位置發(fā)生改變,具有很好的加密信息熵,但僅僅全排列加密并不安全,不能抵御差分攻擊能力。為了增加圖像抗差分攻擊能力,我們又進(jìn)行了像素值替換算法。
基本思想如下:仿照混沌拉伸和折疊的運(yùn)行機(jī)理,首先把要替換的像素放到更大的運(yùn)算空間進(jìn)行;為了增大軌道回歸周期,把當(dāng)前像素盡可能地與前面已經(jīng)加密的像素進(jìn)行運(yùn)算,最后折疊回像素空間。
a)給出種子元素seed,選擇合適的混沌。
b)設(shè)Ei,Ei+1分別代表第i個(gè)和第i+1個(gè)已經(jīng)加密元素,Pi+2代表順序號(hào)為i+2的欲加密元素,分別把Ei,Ei+1轉(zhuǎn)換為二進(jìn)制串并進(jìn)行連接,作為hash函數(shù)的輸入值。若采用MD5加密算法,輸出長(zhǎng)度為32個(gè)十六進(jìn)制串,轉(zhuǎn)化為十進(jìn)制類型的數(shù)值,然后作為混沌參數(shù)輸入。迭代一次的輸出值轉(zhuǎn)換為uint64類型的數(shù)值,與當(dāng)前欲加密像素做相加或異或操作,把得到的結(jié)果模256折疊回像素值區(qū)間。

其中:hash()為哈希函數(shù);chaosfunction()為生成混沌序列的混沌映射;F()為把哈希函數(shù)輸出的32個(gè)十六進(jìn)制串轉(zhuǎn)換為十進(jìn)制類型的數(shù)值。
c)重復(fù)上述過(guò)程直到最后一個(gè)元素。
d)把一維數(shù)組轉(zhuǎn)換為表示圖像的二維矩陣。
說(shuō)明:
a)對(duì)于第一個(gè)元素的加密,w值由用戶給定,對(duì)于生成第二個(gè)元素w值過(guò)程中,因?yàn)闆]有E0,可由用戶指定任意一個(gè)長(zhǎng)度為8的十六進(jìn)制串。
b)數(shù)組元素轉(zhuǎn)換為二進(jìn)制序列的方法。pt(i,j)代表數(shù)組元素p(i,j)變換成二進(jìn)制后的第t個(gè)數(shù)字。

式中,可以把灰度圖像變換成由0,1組成的比特矩陣。相反,運(yùn)用下面公式可以把pt(i,j)變成灰度像素p(i,j)。
![]()
3、解密算法
a)給定相同的初始值,先進(jìn)行圖像替換算法的逆操作,把密文圖像轉(zhuǎn)換為一維數(shù)組,從最后一個(gè)加密元素開始向前解密,直到第一個(gè)元素。
b)根據(jù)圖像比特全排列算法進(jìn)行操作,不同的是i從1到m,把第i列的比特值用第ti列的比特值替換。
三、基于最小粒度全置亂圖像加密算法安全性分析
1、密鑰空間
一個(gè)安全可靠的加密算法應(yīng)擁有足夠大的密鑰空間。而對(duì)于基于混沌映射的加密算法,參數(shù)(包括初始值)往往用作密鑰,因此控制參數(shù)越多就意味著密鑰越多,參數(shù)空間大才能保證密鑰空間大。本文提出的加密算法分兩步:
a)圖像比特全置亂,密鑰為選擇混沌的初始值及參數(shù),Lorenz的密鑰初值為x0=10e-15,yo=10e-15,zo=10e-14;
b)圖像比特置換,密鑰為初始種子,用于哈希函數(shù)輸入的Eo、混沌參數(shù)。在這樣一個(gè)足夠大的密鑰空間中,采用窮舉法進(jìn)行攻擊是沒有意義的。
2、統(tǒng)計(jì)分析
統(tǒng)計(jì)分析包括直方圖分析和相鄰像素點(diǎn)的相關(guān)性分析。
1)原始圖像及密文圖像數(shù)字特征
下表給出了密文圖像及其直方圖的各種數(shù)字特征。
從實(shí)驗(yàn)結(jié)果可見,建議算法的密文信息熵、密文均值、方差、直方圖方差較Huang算法、Ye算法更加優(yōu)越。具有更強(qiáng)的抗攻擊能力。
2)相鄰像素點(diǎn)的相關(guān)性分析
以水平相關(guān)性為例,從圖像中隨機(jī)選擇1000對(duì)兩個(gè)水平鄰接像素,選擇1000次,運(yùn)用下面公式計(jì)算每一對(duì)相鄰像素的平均相關(guān)系數(shù)。

x,y圖像中兩個(gè)鄰接像素灰度值,在數(shù)值計(jì)算中使用下面的離散公式。

原始圖像和加密圖像相關(guān)性分析如表所示。由表可知,原始圖像相鄰像素相關(guān)系數(shù)接近1,加密圖像相鄰像素相關(guān)系數(shù)接近0。經(jīng)文件加密,圖像相鄰像素間相關(guān)度很低。同時(shí),比較建議算法和Ye算法、Huang算法可知,建議算法比Ye算法優(yōu)越,與Huang算法具有同等的去相關(guān)性能。這說(shuō)明攻擊者很難通過(guò)統(tǒng)計(jì)攻擊方法破解加密圖像。

3)密文對(duì)密鑰的敏感性分析
密文對(duì)密鑰的依賴性可以采用計(jì)算兩幅圖像間的相關(guān)系數(shù)進(jìn)行驗(yàn)證。用上文公式進(jìn)行計(jì)算,不同的是x,y代表使用不同密鑰加密后密文圖像的像素值,像素為整個(gè)圖像。根據(jù)密文對(duì)密鑰的敏感性定義可知,如果加密方法對(duì)密鑰具有敏感性,那么微小差異的密鑰對(duì)同一幅圖像進(jìn)行加密后得到的結(jié)果應(yīng)具有很大差異,具有很小的相關(guān)性。本文選擇Lorenz分量x0密鑰先后兩次相差10的-10次方,測(cè)試相關(guān)系數(shù)結(jié)果為1.263862e-4,從該數(shù)據(jù)可以得知,算法對(duì)密鑰具有很高的敏感性。這主要是因?yàn)榛煦缑舾行院凸:瘮?shù)敏感性再加上最小粒度置亂的結(jié)果。
4)差分分析
為了抵抗差分攻擊,明文細(xì)小的改變應(yīng)該造成密文巨大的變化。為了測(cè)試改變一個(gè)像素對(duì)密文圖像的影響,使用兩個(gè)常用的定量測(cè)試方法:像素個(gè)數(shù)變化率(NPCR)和整體平均變化密度(UACI),定義如下:

其中:c1和c2是兩個(gè)密文圖像,其對(duì)應(yīng)的明文圖像僅有一個(gè)像素差異,c1、c2在(i,j)處的灰度值表示為c1(i,j)、c2(i,j),W、H是密文圖像的寬度和高度。D(i,j)由c1(i,j)、c2(i,j)決定,如果c1(i,j)=c2(i,j),則D(i,j)=1;否則,D(i,j)=0。
明文首先被加密,接著隨機(jī)選擇圖像中的一個(gè)像素并改動(dòng),被修改的圖像用相同的密鑰加密生成新的密文圖像。最后計(jì)算NPCR和UACI,其值如下表所示。

由表可以看出,建議算法比Ye算法和Huang算法在NPCR、UACI兩個(gè)度量指標(biāo)方面具有更大的優(yōu)越性。因而,加密算法能有效抗擊外界差分攻擊。
本文首先給出選擇混沌作為圖像比特全排列準(zhǔn)則,即依據(jù)混沌信息熵,選擇適合圖像置亂的混沌映射;接著,把圖像轉(zhuǎn)換為二值比特串進(jìn)行全排列,在所選混沌的驅(qū)動(dòng)下,利用混沌軌道不可預(yù)測(cè)的特性,完成最大程度的置亂;最后,依據(jù)混沌映射原理,設(shè)計(jì)圖像比特替換算法,完成圖像置亂和替換的加密算法。
小知識(shí)之置亂
所謂“置亂”,就是將圖像的信息次序打亂,將a像素移動(dòng)到b像素的位置上,b像素移動(dòng)到c像素的位置上……使其變換成雜亂無(wú)章難以辨認(rèn)的圖像。









