秦秋霞,梁仲月,徐 毅
(大連民族大學 a.計算機科學與工程學院;b.理學院,遼寧 大連 116650)
快速發(fā)展的互聯(lián)網(wǎng)在現(xiàn)代生活中發(fā)揮著巨大作用。不僅給人們帶來簡單、便捷的生活方式,同時使人們信息交流暢通無阻。圖像信息以其直觀、簡單的特點已成為傳遞信息的一種媒介[1]。然而互聯(lián)網(wǎng)時代具有雙面性,給人們的生活帶來巨大便捷的同時,圖片信息的惡性盜取、傳播也會給人們的公眾財產(chǎn)帶來巨大損失[2-3]。為了保護圖像信息,使其在公共信道上能夠安全的傳輸,本文使用新型復合混沌系統(tǒng)結(jié)合比特級的擴散、置亂方法實現(xiàn)圖像加密。
混沌系統(tǒng)是用來描述確定的非線性系統(tǒng)所產(chǎn)生的對初值條件敏感、非周期性、內(nèi)部隨機性的一種復雜的混沌現(xiàn)象[4-5]。一般情況下,混沌系統(tǒng)分為低維混沌[6]和高維混沌[7]。高維混沌系統(tǒng)結(jié)構(gòu)較復雜,控制參數(shù)多,計算的復雜度高[7]。低維混度系統(tǒng)結(jié)構(gòu)簡單,控制參數(shù)少,易于實現(xiàn)[6]。但也存在一些問題,比如,混沌行為是有限的,混沌區(qū)間不連續(xù),生成的混沌序列呈現(xiàn)非均勻數(shù)據(jù)分布等。為了開發(fā)具有更好混沌性能的混沌系統(tǒng),研究人員將多種低維混沌結(jié)合在一起,形成新的復合混沌系統(tǒng)[8-9],該類混沌系統(tǒng)可以有效克服低維混沌的不足,并且與高維混沌相比,復雜度更低,更易實現(xiàn)。比如,2022年唐等人[8]針對傳統(tǒng)一維混沌系統(tǒng)的局限性以及參數(shù)值的安全問題,提出一種Logistic-Sine復合混沌映射并將其用于圖像加密,取得了良好的加密效果。同年,張等人[9]使用Logistic-Sine-Cosine復合混沌系統(tǒng)生成的混沌序列進行行列置亂和循環(huán)像素擴散,保障了算法的安全性。所以,本文使用Logistic混沌映射和Tent混沌映射復合生成的Logistic-Tent混沌映射參與加密過程,提高了加密算法的隨機性。
灰度圖可以用多個比特位來表示,其中的每個比特位可以用來表示1個二值的平面,也稱為位平面[7]。一幅數(shù)字圖像可以分解為多個位平面,不同的位平面代表不同的圖像信息。目前,多數(shù)加密算法的置亂、擴散操作是在塊、像素級別上進行的,這些算法的加密效果與基于比特級的加密效果相比較差。比如,王等人[10]提出了一種基于分塊置亂和混合混沌的圖像加密算法,該算法是在塊級別上實現(xiàn)的置亂操作。張等人[11]提出了一種結(jié)合S盒與混沌映射的圖像加密算法,該算法所有的操作都是在像素級上進行的。無論是基于塊級別的加密算法還是基于像素級別的加密算法,加密效果與基于比特級別的加密算法相比略差一些。所以,文本提出了一種基于位平面和混沌的圖像加密算法,使用位平面的分解以及合并,保證置亂、擴散操作可以在比特級上進行,保證了加密效果,提高了加密算法的安全性。
綜上所述,本文提出了一種基于Logistic-Tent混沌映射和位平面的圖像加密算法。首先將原始圖像分解成位平面,然后將其轉(zhuǎn)化為兩個大小相同的二進制序列,然后在Logistic-Tent混沌序列的控制下實現(xiàn)比特級別的置亂和擴散操作,最后進行位平面的合并,得到加密圖像,完成加密操作。本文的主要結(jié)構(gòu)如下:第一部分主要介紹本算法使用的基本原理;第二部分介紹加、解密算法的詳細設(shè)計和基本步驟;第三部分給出仿真結(jié)果和安全性分析;第四部分給出結(jié)論。
本章主要介紹本文用到的Logistic-Tent混沌映射,位平面相關(guān)原理。
Logistic混沌系統(tǒng)是一個非常典型的一維混沌系統(tǒng),它雖然結(jié)構(gòu)簡單,但卻能產(chǎn)生復雜的混沌動力學特性,因此在加密算法中非常常見[6]。Logistic混沌系統(tǒng)的數(shù)學定義公式如下:
xn+1=μxn(1-xn)。
(1)
式中:x是系統(tǒng)變量;μ是控制參數(shù);x∈[0,1],μ∈[3.57,4]。
但Logistic混沌映射也存在一些不足,比如,混沌范圍僅存在于μ∈[3.57,4]時,參數(shù)的有些取值并不能使得系統(tǒng)產(chǎn)生混沌行為,并且在μ<3.57時,李雅普諾夫指數(shù)為負數(shù),如圖1;系統(tǒng)參數(shù)的值不在[0,1]時,生成的混沌序列不均勻,不適合用于圖像加密。
圖1 Logistic混沌的李雅普諾夫指數(shù)
Tent混沌系統(tǒng)又稱為帳篷映射,它是一種分段線性的一維映射,它具有混沌特性,均勻的概率密度和功率譜密度,并且具有比較良好的自相關(guān)性[6]。其數(shù)學定義公式如下:
(2)
式中:x是系統(tǒng)變量;k是控制參數(shù);x∈[0,1],當k∈[2,4]時,系統(tǒng)處于混沌狀態(tài)。同樣的,Tent混沌映射也會存在控制參數(shù)少,混沌區(qū)間有限等問題。
Gupta等人[6]將經(jīng)典的一維Logistic混沌系統(tǒng)、Tent混沌系統(tǒng)進行集成生成的Logistic-Tent復合混沌系統(tǒng)。該混沌系統(tǒng)融合了Logistic復雜的混沌動力學特性和Tent混沌系統(tǒng)更快的迭代速度、更多的自相關(guān)性和適用于大量序列的特點。將該混沌系統(tǒng)引入本加密算法,保證算法的安全性。它的數(shù)學公式定義如下:
(3)
式中:X是系統(tǒng)變量;r為控制參數(shù);X∈[0,1],r∈(0,4)。Logistic-Tent混沌系統(tǒng)在[0,1]的分岔圖如圖2。
圖2 Logistic-Tent混沌分岔圖
從圖2可知,當X∈[0,1]范圍內(nèi)時,其輸出序列均勻分布,遠比Logistic、Tent映射在此范圍內(nèi)的混沌特性更加突出,因此說明該混沌系統(tǒng)比Logistic混沌系統(tǒng)和Tent混沌系統(tǒng)擁有更好的混沌性能。
把灰度圖中處于同一個比特位上的二進制像素值進行組合,得到的一幅二進制圖像稱為灰度圖的一個位平面[7]。在灰度圖中,像素值的范圍是[0,255],一個像素值可以用8位二進制序列表示。最后,使用二進制位平面分解就可以將灰度圖分為8個二進制位平面。第i個位平面包含灰度圖中每一個像素序列的第i個比特值,其中i∈[0,8]。對測試圖像Tank進行位平面分解后,得到的每個位平面的視覺效果如圖3。
圖3 位平面分解圖
從圖3中的位平面分解圖可以看出,灰度圖的第5~8位高位位平面,呈現(xiàn)的效果較好,接近于原始圖像。而第1~3位的低位位平面接近黑白色,與原始圖像的信息相差較大。本文將位平面的分解與合并運用到加密算法中,可以實現(xiàn)比特級的置亂、擴散,提高了加密算法的隨機性。
本文提出了一種基于Logistic-Tent混沌映射和位平面的圖像加密算法。首先,將原始圖像進行位平面的分解,分解的各個位平面轉(zhuǎn)化成行向量;然后,Logistic-Tent混沌映射使用密鑰1多次迭代生成混沌序列,將混沌序列也轉(zhuǎn)化成行向量,兩種方式生成的行向量使用循環(huán)移位和按位異或進行擴散操作;然后,使用密鑰2再次迭代Logistic-Tent混沌映射,生成的混沌序列用來控制兩種序列的交換過程,實現(xiàn)置亂操作;最后,將置亂后的序列轉(zhuǎn)換為位平面,各個位平面合并生成加密圖像。具體的加密步驟如2.1~2.5節(jié)所示。加密流程圖如圖4。
圖4 加密流程圖
位平面的分解主要包括原始圖像P的位平面分解以及Logistic-Tent混沌序列的位平面的分解,具體如下:
第一步:讀入原始圖像P,將原始圖像P使用二進制取余法分解為1~8位位平面,如下所示:
p1=mod(P,2);
p2=mod(floor(P/2),2);
p3=mod(floor(P/4),2);
p4=mod(floor(P/8),2);
p5=mod(floor(P/16),2);
p6=mod(floor(P/32),2);
p7=mod(floor(P/64),2);
p8=mod(floor(P/128),2)。
其中,floor()是向下取整函數(shù),mod()是取余函數(shù)。
第二步:將高位位平面組合生成矩陣A1,低位位平面組合生成矩陣A2,其中A1和A2的大小都為4MN,兩個矩陣將參與后續(xù)擴散操作,生成過程如下:
A1=[p1,p2,p3,p4],
A2=[p5,p6,p7,p8]。
第三步:使用密鑰1中的x0和μ0作為Logistic-Tent混沌映射的初值和控制參數(shù),多次迭代生成大小為MN的混沌序列seq1,由于像素值的范圍是[0,255],需要對得到的混沌序列seq1進行如下處理:
seq1=mod(floor(seq1×1014),256)。
其中,floor()是向下取整函數(shù),mod()是取余函數(shù)。
第四步:將第三步生成的混沌序列seq1使用二進制取余法也進行位平面的分解,具體如下:
s1=mod(seq1,2);
s2=mod(floor(seq1/2),2);
s3=mod(floor(seq1/4),2);
s4=mod(floor(seq1/8),2);
s5=mod(floor(seq1/16),2);
s6=mod(floor(seq1/32),2);
s7=mod(floor(seq1/64),2);
s8=mod(floor(seq1/128),2)。
其中,floor()是向下取整函數(shù),mod()是取余函數(shù)。
第五步:將混沌序列分解生成的位平面進行分組,高位位平面組合生成矩陣B1,低位位平面組合生成矩陣B2,B1和B2的大小都為4MN,具體如下:
B1=[s1,s2,s3,s4],
B2=[s5,s6,s7,s8]。
本文使用循環(huán)移位和按位異或?qū)崿F(xiàn)擴散操作,具體如下:
第一步:使用A2矩陣像素值之和作為循環(huán)移位的位數(shù),為第一次循環(huán)移位操作做準備,具體如下:
sum1=sum(sum(A2))。
其中,sum()求和函數(shù),此處輸入的是矩陣,所以求得結(jié)果是矩陣所有元素之和。
第二步:對矩陣A1進行循環(huán)移位操作,具體如下:
A11=circshift(A1,sum1,2)。
其中,circshift()函數(shù)是循環(huán)右移函數(shù),第一個參數(shù)表示待移位的矩陣,第二個參數(shù)表示移位數(shù),第三個變量等于1時表示列移位,第三個變量等于2時表示行移位。
第三步:第二步生成的A11與A2矩陣、B1矩陣進行按位異或操作,得到序列C1,實現(xiàn)了像素值的改變,具體如下:
C1(1)=((A11(1)⊕A11(4MN))⊕A2(1))⊕B1(1)。
C1(i)=((A11(i)⊕A11(i-1))⊕A2(i))⊕B1(i),i=2,…,4MN。
其中,⊕是按位異或操作。
第四步:使用第三步得到的C1繼續(xù)生成第二次循環(huán)移位的移位數(shù)sum2,具體如下:
sum2=sum(C1)。
其中,sum()求和函數(shù),此處輸入的是一個序列,所有得到的結(jié)果就是序列的所有元素之和。
第五步:對矩陣A2進行循環(huán)移位操作,具體如下:
A22=circshift(A2,sum2,2)。
其中,circshift()函數(shù)是循環(huán)右移函數(shù),第一個參數(shù)表示待移位的矩陣,第二個參數(shù)表示移位數(shù),第三個變量等于1時表示列移位,第三個變量等于2時表示行移位。
第六步:將第五步生成的A22與序列C1、矩陣B2進行按位異或操作,得到序列C2,具體如下所示:
C2(1)=((A22(1)⊕A22(4MN))⊕C1(1))⊕B2(1),
C2(i)=((A22(i)⊕A22(i-1))⊕C1(i))⊕B2(i),i=2,…,4MN。
其中,⊕是按位異或操作。
使用另一組密鑰迭代Logistic-Tent混沌映射,生成混沌序列用來控制C1和C2序列的交換過程,實現(xiàn)置亂操作。
第一步:使用C2序列對密鑰2中的初值xx0進行更新,具體如下:
xx0=mod(xx0+(sum2+sum(C2))/4MN,1)。
其中,sum()是求和函數(shù),mod()是取余函數(shù)。
第二步:使用更新后的xx0以及密鑰2中的μμ0作為Logistic-Tent混沌映射的初值和控制參數(shù)進行多次迭代,生成大小為8MN的seq2混沌序列。
第三步:將混沌序列seq2分為s1和s2兩個混沌序列,各個混沌序列大小都為4MN,具體如下:
s1=seq2(1:4MN);
s2=seq2(4MN+1:8MN)。
第四步:因為要使用s1和s2交換C1序列和C2序列的各個元素的位置,C1和C2大小都是4MN,所以需要對s1和s2做進一步的處理,對應地生成Y和Z序列。具體如下:
Y=mod(floor(s1*1014),4MN)+1,
Z=mod(floor(s2*1014),4MN)+1。
其中,floor()是向下取整函數(shù),mod()是取余函數(shù)。
第五步:使用Y和Z來交換C1序列和C2序列各個元素的位置,主要包括兩輪交換。首先使用Y來控制位置的交換,然后再使用Z控制位置的交換,如下所示:
[C2(Y(i)),C1(i)]=deal(C1(i),C2(Y(i))),
i=1,…,4MN,
[C1(Z(j)),C2(j)]=deal(C2(j),C1(Z(j))),
j=1,…,4MN。
其中,此處的deal()函數(shù)具有將兩個參數(shù)分別賦予兩個對應變量的作用。
將C1和C2序列首先轉(zhuǎn)化成矩陣,然后將各個矩陣轉(zhuǎn)換成4個大小為MN的矩陣,也就是各個位平面,然后將位平面合并,生成加密圖像C。
第一步:將C1和C2序列分別轉(zhuǎn)換成成4MN的矩陣CC1和CC2,如下:
CC1=reshape(C1,M,4N),
CC2=reshape(C2,M,4N)。
其中,reshape()函數(shù)是矩陣重組函數(shù)。
第二步:將CC1、CC2矩陣分別生成4個MN大小的數(shù)組,如下:
E1=mat2cell(CC1,M,[N,N,N,N]),
E2=mat2cell(CC2,M,[N,N,N,N])。
其中,mat2cell()函數(shù)就是將矩陣轉(zhuǎn)化成胞元數(shù)組。
第三步:將E1和E2中的各個數(shù)組轉(zhuǎn)化成矩陣,也就是各個位平面,提取出各個位平面c1、c2、c3、c4、c5、c6、c7、c8。
第四步:使用二進制取余法的逆操作,將各個位平面進行合并,生成加密圖像C,加密完成。
具體的加密步驟如下:
(1)原始圖像以及Logistic-Tent混沌序列使用二進制取余法進行位平面的分解,高位位平面和低位平面組合分別生成2個矩陣,如2.1節(jié)所示。
(2)原始圖像位平面分解后生成的矩陣和混沌序列位平面分解后的矩陣進行循環(huán)移位操作以及按位異或操作,使得像素值發(fā)生改變,完成擴散操作,如2.2節(jié)所示。
(3)使用密鑰2再次迭代Logistic-Tent混沌生成混沌序列,用來交換擴散后得到的序列的各個元素的位置,使得像素值的位置發(fā)生改變,完成置亂操作,如2.3節(jié)所示。
(4)將置亂后生成的序列轉(zhuǎn)換成矩陣,并提取各個位平面,最后將各個位平面進行合并,生成加密圖像,如2.4節(jié)所示。
解密算法和加密算法是互逆的關(guān)系。在加密算法中,需要進行位平面分解、擴散、置亂、位平面合并操作。但在解密算法中需要注意各個操作的順序,應該先進行位平面分解,置亂的逆操作,擴散的逆操作,位平面的合并,才能完成解密過程。其他類似,不再詳細介紹。
在Window 10操作系統(tǒng)下,Matlab R2020a軟件中進行仿真實驗。該實驗主要是對三組不同大小的灰度圖像進行加密、解密實驗。本實驗中使用的具體的密鑰信息見表1。256×256大小的Tank原始圖像、加密圖像以及解密圖像如圖5。512×512大小的Cat原始圖像、加密圖像以及解密圖像。1024×1024大小的Airplane原始圖像如圖6,加密圖像以及解密圖像如圖7。
表1 密鑰展示表
a) Tank原圖 b) Tank密圖 c) Tank解密圖圖5 Tank圖的加密、解密效果
a) Cat原圖 b) Cat密圖 c) Cat解密圖圖6 Cat圖的加密、解密效果
a) Airplane原圖 b) Airplane密圖 c) Airplane解密圖圖7 Airplane圖的加密、解密效果
通過圖5~7的加密、解密的效果圖可以看出,本算法得到的密圖十分模糊,絲毫看不出原圖的任何信息,得到的解密圖和原圖相對比,在視覺上看不出差異,見表2。同時通過表2也可以看出,原圖和解密圖的相似度高達99.999%,說明解密圖像和原始圖像的差別在可接受的范圍內(nèi),基本上可以忽略不計。以下各個章節(jié)對于安全性能的分析,均以Tank圖為例。
表2 原圖、解密圖相似度分析表
密鑰空間指加密密鑰的大小,加密密鑰要足夠大才能夠有效的抵抗窮舉攻擊[12]。隨著計算機設(shè)備不斷地發(fā)展,一次攻擊使用的時間越來越短,占用資源越來越少。目前,當密鑰空間大于2時100[13],加密算法才能處于相對穩(wěn)定的狀態(tài)。
通過表1可以看出,本算法的加密算法主要分為兩部分。密鑰1是在擴散操作時使用的密鑰,其中包括2個密鑰。密鑰2是在置亂操作時使用的密鑰,其中也包括2個密鑰。當計算精度為1014時,本加密算法的密鑰大小是(1014)4=1064。本算法的密鑰空間在數(shù)值上大于2100,說明該算法密鑰空間足夠大,可以有效抵抗窮舉攻擊,保障了加密算法的安全性。
信息熵是圖像評價的一個衡量標準,它指的是圖像信息的相對復雜性[14]?;叶戎灯骄植嫉膱D像信息熵也比較大,當各個灰度值等概率分布時,信息熵能夠達到最大值。信息熵的數(shù)學表達式如下:
(4)
式中:m表示灰度圖像;H(m)表示灰度圖像的信息熵;mi表示L灰度級圖像m的第i個灰度值;P(mi)表示mi出現(xiàn)的概率。理想情況下,隨機圖像的信息熵為8[15]。原始圖像和加密圖像的信息熵對比情況,見表3。
表3 原圖和密圖信息熵對比表分
通過表3可以看出,首先,本算法可以使得信息熵較低的原圖經(jīng)過加密算法變成信息熵接近于理想值的密圖,提高了算法的隨機性和安全性。其次,通過與各個算法對比,本算法的信息熵值略高于文獻[16],文獻[17],與文獻[18]相近。說明本算法可以有效地增大圖像的信息熵值,與其他算法相比具有一定的優(yōu)越性。
相關(guān)性強是原始圖像的固有屬性,這種強相關(guān)性能夠傳遞出原始圖像的信息[15]。加密算法的目的就是打破這種強相關(guān)性得到反映不出原始圖像信息的加密圖像。在理想情況下,相關(guān)性應該盡可能的接近于0[8]。相關(guān)性系數(shù)的計算公式如下:
(5)
(6)
(7)
(8)
式中:x和y是圖像的像素值;E(x)是期望值;D(x)是方差;cov(x,y)是協(xié)方差;rxy是相關(guān)性系數(shù)。
這一小節(jié)從兩個方面來分析使用本加密算法得到的密文圖像的相關(guān)性。一是定量分析,給出加密前后水平、垂直、對角線方向的相關(guān)系數(shù)值。本文選取2000對相鄰的像素點用來計算相關(guān)性數(shù)值,實驗結(jié)果見表4。
表4 原圖和密圖相關(guān)性系數(shù)對比表
從表4數(shù)據(jù)可以看出,明文像素相關(guān)性系數(shù)和密文相關(guān)性系數(shù)存在很大差異,明文3個方向相關(guān)性系數(shù)接近于1,說明像素之間存在極強的相關(guān)性。而密文圖像3個方向相關(guān)性系數(shù)接近于0,說明加密過程削弱了明文圖像的相關(guān)性,能夠很好的隱藏明文圖像信息,能夠達到良好的加密效果。并且與其他最新文獻相對比情況來看,本算法性能也比較好。
二是定性分析,從直觀上繪出了三個方向像素對的分布情況,如圖8~9。
a) 原圖水平 b) 原圖垂直 c) 原圖對角線圖8 原圖相關(guān)性點圖
a) 密圖水平 b) 密圖垂直 c) 密圖對角線圖9 密圖相關(guān)性點圖
從圖8、圖9可以看出,明文圖像3個方向的相鄰像素對基本上都是處于象限對角線兩側(cè),這說明相鄰像素對的值非常相似,也就是說像素對具有強相關(guān)性。但是加密后圖像三個方向的相鄰像素對都是均勻分布在坐標區(qū)域X軸和Y軸的象限區(qū)域內(nèi),這說明這些相鄰像素對的值不同,相關(guān)性低。綜合相關(guān)性系數(shù)表和相關(guān)性圖來看,本加密算法具備良好的抗統(tǒng)計攻擊的能力。
圖像的直方圖用來分析一個圖像像素分布的情況。圖像信息都是由像素構(gòu)成的,所以用來分析圖像像素分布的直方圖是衡量圖像的一種重要特性[5]。原始圖像的直方圖,加密圖像的直方圖,解密圖像的直方圖具體如圖10。
a) 原圖直方圖 b) 密圖直方圖 c) 解密圖直方圖圖10 原圖、密圖、解密圖的直方圖分布
從圖10可以看出,由于原始圖像是存在特殊意義的圖像,所以像素分布在中間灰度范圍內(nèi)較集中,總體分布高低不平,統(tǒng)計性信息明顯。加密圖在[0,255]灰度范圍內(nèi)基本上是均衡分布的,統(tǒng)計特征被很好地掩飾。解密圖的直方圖與原始幾乎是100%相似,說明本算法可以解密出有效圖像。
一個性能優(yōu)越的加密算法,除了能夠得到良好仿真結(jié)果圖,具備足夠強大的安全性之外。還要保證能夠在有效的時間內(nèi)得到加密圖、并且在較短時間內(nèi)能夠?qū)崿F(xiàn)快速解密[3]。本小節(jié)對3組不同尺寸大小的圖像進行加解密的時間測試,具體見表5。
表5 時間性能對比表
從表5數(shù)據(jù)看出,本算法不僅能夠?qū)Σ煌叽绱笮〉膱D片進行加解密,而且加解密能夠控制在非常短的時間內(nèi),說明本算法在時間性能方面也比較優(yōu)越。
本文提出了一種基于Logistic-Tent混沌映射和位平面的圖像加密算法。Logistic-Tent混沌系統(tǒng)結(jié)合位平面的操作,實現(xiàn)了比特級的置亂和擴散操作。從仿真結(jié)果和安全性分析來看,本算法不僅具有良好的加密、解密效果,而且密鑰空間足夠大,安全性也能夠得到保障。另外,本算法具有一定的時效性,能夠在較短時間內(nèi)對不同尺寸的圖像實現(xiàn)快速的加密、解密操作。以上說明本算法非常適用于圖像加密。