基于最小粒度全置亂圖像加密算法

基于最小粒度全置亂圖像加密算法是通過對圖像比特全排列,同時完成全矩陣范圍內(nèi)像素比特位置置亂和像素值替換兩個操作。圖像比特全排序的驅(qū)動是依賴非線性混沌動力系統(tǒng)來完成的。在眾多的混沌映射中,依據(jù)混沌置亂信息熵選擇用于比特全排列的混沌映射。

一、選擇混沌映射

常見的混沌很多,如一維Logistc映射、二維的Henon映射、三維的Lorenz映射和Chua映射等。在眾多的混沌映射中,選擇哪一個混沌序列才能使圖像全排列加密算法安全性好,本文提出應(yīng)用混沌置亂熵選擇標(biāo)準(zhǔn)。

從置亂信息熵定義可知,置亂信息熵越大,圖像全排列加密強度越高,安全性越好。依據(jù)置亂信息熵的定義,實驗測得常見混沌置亂信息熵如表所示。

基于最小粒度全置亂圖像加密算法

表第一行數(shù)字代表窗口寬度。從實驗數(shù)據(jù)可見,Lorenz混沌整體置亂信息熵高于Logistc映射、Henon映射和Chua映射,而Lorenz混沌分量x的置亂信息熵強于分量y、z的置亂信息熵。故本文圖像比特全排列使用Lorenz混沌分量x驅(qū)動。

二、混沌加密算法

1、 圖像比特全排列算法

對于一幅任意大小的灰度圖像I,設(shè)其大小為M×N。

a)依據(jù)混沌置亂信息熵,選擇合適的混沌動力學(xué)方程,給出與密鑰相關(guān)的初始值x1或初始向量V1,并令K=1。

b)應(yīng)用選擇的混沌方程迭代m=m×n×8次,生成混沌實值序列{x1,x2,…,xm}或向量序列{V1,V2,V3,…,Vm},依據(jù)置亂信息熵,選擇置亂信息熵最大的一行,成為實值序列{x1,x2,…,xm}。

c)從小到大把混沌實值序列{x1,x2,…,xm}排序,得到排序后的序列{y1,y2,…,ym}。

d)計算置亂地址碼集{t1,t2,…,tm},ti∈{1,2,…,m}。ti是xi在排序后的序列{y1,y2,…,ym}中的下標(biāo)。

e)把二維圖像變成一維數(shù)組,再把每個數(shù)組元素變成二進制比特序列,順序連接形成長度為M×N×8的比特序列,利用置亂地址碼集進行擾亂,然后還原成一維十進制數(shù)組,完成圖像比特全置亂。

2、圖像替換算法

雖然上述圖像最小粒度(比特)全排列已使圖像像素值和位置發(fā)生改變,具有很好的加密信息熵,但僅僅全排列加密并不安全,不能抵御差分攻擊能力。為了增加圖像抗差分攻擊能力,我們又進行了像素值替換算法。

基本思想如下:仿照混沌拉伸和折疊的運行機理,首先把要替換的像素放到更大的運算空間進行;為了增大軌道回歸周期,把當(dāng)前像素盡可能地與前面已經(jīng)加密的像素進行運算,最后折疊回像素空間。

a)給出種子元素seed,選擇合適的混沌。

b)設(shè)Ei,Ei+1分別代表第i個和第i+1個已經(jīng)加密元素,Pi+2代表順序號為i+2的欲加密元素,分別把Ei,Ei+1轉(zhuǎn)換為二進制串并進行連接,作為hash函數(shù)的輸入值。若采用MD5加密算法,輸出長度為32個十六進制串,轉(zhuǎn)化為十進制類型的數(shù)值,然后作為混沌參數(shù)輸入。迭代一次的輸出值轉(zhuǎn)換為uint64類型的數(shù)值,與當(dāng)前欲加密像素做相加或異或操作,把得到的結(jié)果模256折疊回像素值區(qū)間。

基于最小粒度全置亂圖像加密算法

其中:hash()為哈希函數(shù);chaosfunction()為生成混沌序列的混沌映射;F()為把哈希函數(shù)輸出的32個十六進制串轉(zhuǎn)換為十進制類型的數(shù)值。

c)重復(fù)上述過程直到最后一個元素。

d)把一維數(shù)組轉(zhuǎn)換為表示圖像的二維矩陣。

說明:

a)對于第一個元素的加密,w值由用戶給定,對于生成第二個元素w值過程中,因為沒有E0,可由用戶指定任意一個長度為8的十六進制串。

b)數(shù)組元素轉(zhuǎn)換為二進制序列的方法。pt(i,j)代表數(shù)組元素p(i,j)變換成二進制后的第t個數(shù)字。

基于最小粒度全置亂圖像加密算法

式中,可以把灰度圖像變換成由0,1組成的比特矩陣。相反,運用下面公式可以把pt(i,j)變成灰度像素p(i,j)。

基于最小粒度全置亂圖像加密算法

3、解密算法

a)給定相同的初始值,先進行圖像替換算法的逆操作,把密文圖像轉(zhuǎn)換為一維數(shù)組,從最后一個加密元素開始向前解密,直到第一個元素。

b)根據(jù)圖像比特全排列算法進行操作,不同的是i從1到m,把第i列的比特值用第ti列的比特值替換。

三、基于最小粒度全置亂圖像加密算法安全性分析

1、密鑰空間

一個安全可靠的加密算法應(yīng)擁有足夠大的密鑰空間。而對于基于混沌映射的加密算法,參數(shù)(包括初始值)往往用作密鑰,因此控制參數(shù)越多就意味著密鑰越多,參數(shù)空間大才能保證密鑰空間大。本文提出的加密算法分兩步:

a)圖像比特全置亂,密鑰為選擇混沌的初始值及參數(shù),Lorenz的密鑰初值為x0=10e-15,yo=10e-15,zo=10e-14;

b)圖像比特置換,密鑰為初始種子,用于哈希函數(shù)輸入的Eo、混沌參數(shù)。在這樣一個足夠大的密鑰空間中,采用窮舉法進行攻擊是沒有意義的。

2、統(tǒng)計分析

統(tǒng)計分析包括直方圖分析和相鄰像素點的相關(guān)性分析。

1)原始圖像及密文圖像數(shù)字特征

下表給出了密文圖像及其直方圖的各種數(shù)字特征。

基于最小粒度全置亂圖像加密算法從實驗結(jié)果可見,建議算法的密文信息熵、密文均值、方差、直方圖方差較Huang算法、Ye算法更加優(yōu)越。具有更強的抗攻擊能力。

2)相鄰像素點的相關(guān)性分析

以水平相關(guān)性為例,從圖像中隨機選擇1000對兩個水平鄰接像素,選擇1000次,運用下面公式計算每一對相鄰像素的平均相關(guān)系數(shù)。

基于最小粒度全置亂圖像加密算法

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

基于最小粒度全置亂圖像加密算法

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

基于最小粒度全置亂圖像加密算法

3)密文對密鑰的敏感性分析

密文對密鑰的依賴性可以采用計算兩幅圖像間的相關(guān)系數(shù)進行驗證。用上文公式進行計算,不同的是x,y代表使用不同密鑰加密后密文圖像的像素值,像素為整個圖像。根據(jù)密文對密鑰的敏感性定義可知,如果加密方法對密鑰具有敏感性,那么微小差異的密鑰對同一幅圖像進行加密后得到的結(jié)果應(yīng)具有很大差異,具有很小的相關(guān)性。本文選擇Lorenz分量x0密鑰先后兩次相差10的-10次方,測試相關(guān)系數(shù)結(jié)果為1.263862e-4,從該數(shù)據(jù)可以得知,算法對密鑰具有很高的敏感性。這主要是因為混沌敏感性和哈希函數(shù)敏感性再加上最小粒度置亂的結(jié)果。

4)差分分析

為了抵抗差分攻擊,明文細小的改變應(yīng)該造成密文巨大的變化。為了測試改變一個像素對密文圖像的影響,使用兩個常用的定量測試方法:像素個數(shù)變化率(NPCR)和整體平均變化密度(UACI),定義如下:

基于最小粒度全置亂圖像加密算法

其中:c1和c2是兩個密文圖像,其對應(yīng)的明文圖像僅有一個像素差異,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。

明文首先被加密,接著隨機選擇圖像中的一個像素并改動,被修改的圖像用相同的密鑰加密生成新的密文圖像。最后計算NPCR和UACI,其值如下表所示。

基于最小粒度全置亂圖像加密算法

由表可以看出,建議算法比Ye算法和Huang算法在NPCR、UACI兩個度量指標(biāo)方面具有更大的優(yōu)越性。因而,加密算法能有效抗擊外界差分攻擊。

本文首先給出選擇混沌作為圖像比特全排列準(zhǔn)則,即依據(jù)混沌信息熵,選擇適合圖像置亂的混沌映射;接著,把圖像轉(zhuǎn)換為二值比特串進行全排列,在所選混沌的驅(qū)動下,利用混沌軌道不可預(yù)測的特性,完成最大程度的置亂;最后,依據(jù)混沌映射原理,設(shè)計圖像比特替換算法,完成圖像置亂和替換的加密算法。

小知識之置亂

所謂“置亂”,就是將圖像的信息次序打亂,將a像素移動到b像素的位置上,b像素移動到c像素的位置上……使其變換成雜亂無章難以辨認的圖像。