張雪鋒, 陳堯堯, 翟羽佳
(西安郵電大學(xué) 通信與信息工程學(xué)院, 陜西 西安 710121)
隨著互聯(lián)網(wǎng)和數(shù)字多媒體技術(shù)的飛速發(fā)展,基于視頻、圖像等多媒體數(shù)據(jù)的應(yīng)用日益普及。許多數(shù)字圖像包含個(gè)人隱私、機(jī)密信息等敏感信息,使得對(duì)數(shù)字圖像加密成為一個(gè)研究熱點(diǎn)[1-2]。由于混沌系統(tǒng)具有良好的遍歷性、隨機(jī)性、非周期性以及對(duì)系統(tǒng)參數(shù)和初值敏感性等密碼學(xué)特征[3],因此被應(yīng)用于圖像加密算法中[4],如基于混沌系統(tǒng)的像素位置置亂[5]方法。由于該方法只能改變像素的位置不能改變像素值,致使加密效果有限。近年來(lái)研究者提出了基于混沌系統(tǒng)的位平面圖像加密算法[6-7],不僅能置換像素位置,也能改變像素的灰度值,改善了算法性能。在基于混沌的圖像加密算法中,對(duì)混沌系統(tǒng)的選擇直接影響圖像加密效果。多維混沌系統(tǒng)結(jié)構(gòu)復(fù)雜,硬件實(shí)現(xiàn)和計(jì)算的難度較大。而一維混沌系統(tǒng)雖然結(jié)構(gòu)簡(jiǎn)單、容易實(shí)現(xiàn)且計(jì)算復(fù)雜度低,但其參數(shù)取值范圍較小且生成的偽隨機(jī)序列分布不均勻[8-9]。
為了兼顧算法的簡(jiǎn)單性和加密性能,本文擬提出一種基于一維混沌映射和比特塊置亂的彩色圖像加密算法。使用Logistic映射生成的偽隨機(jī)序列置亂彩色圖像像素的位置,將圖像的每個(gè)像素值轉(zhuǎn)換成二進(jìn)制數(shù),得到24個(gè)位平面,將每個(gè)位平面分成8×8的比特塊,再用偽隨機(jī)序列進(jìn)行置亂,對(duì)結(jié)果圖像進(jìn)行擴(kuò)散操作,實(shí)現(xiàn)圖像加密。
Logistic混沌映射因其結(jié)構(gòu)簡(jiǎn)單、容易實(shí)現(xiàn),被廣泛應(yīng)用于加密領(lǐng)域。第n+1次Logistic混沌映射生成的偽隨機(jī)值[4]可以表示為
xn+1=u×xn×(1-xn)。
(1)
其中,控制參數(shù)u∈(0,4];初始值x0∈(0,1);第n次生成的偽隨機(jī)值xn∈[0,1],且遍歷區(qū)間[0,1]內(nèi)的所有值。當(dāng)取3.569 945 6…1.2 一維混沌映射
文[10]給出一種一維混沌映射,其第n+1次生成的偽隨機(jī)值為
(2)
其中,控制參數(shù)a∈[3,8],混沌映射的初始值y0∈[0,1],yn遍歷區(qū)間[0,1]內(nèi)的所有值。該混沌系統(tǒng)容易實(shí)現(xiàn)、結(jié)構(gòu)簡(jiǎn)單,本文利用其生成的偽隨機(jī)序列來(lái)置亂比特塊加密。
一個(gè)非負(fù)整數(shù)d可以用q位二進(jìn)制數(shù)表示為
(3)
一幅像素級(jí)為256灰度圖像的每個(gè)像素值可由8位二進(jìn)制數(shù)表示,因此一幅灰度圖像可分解成8個(gè)位平面,第i(i=1,2,…,8)個(gè)位平面包含所有像素的第i個(gè)比特值,并且高位平面包含灰度圖像的有用信息比低位平面多[11]。
Lena明文圖像和Lena明文圖像R(red)分量如圖1所示。
圖1 Lena圖像
一幅數(shù)字灰度圖像可以用一個(gè)二維整數(shù)矩陣來(lái)表示,因此一幅像素級(jí)為256級(jí)的灰度圖像可分成8個(gè)位平面,每個(gè)位平面可以分成一組比特塊,以實(shí)現(xiàn)圖像加密。反之,將比特塊組合成一個(gè)位平面,就能夠恢復(fù)出原始灰度圖像[11]。
設(shè)一幅彩色圖像的大小為M×N,令
mod(M,8)=0, mod(N,8)=0,
以灰度圖像R的第7位平面為例,其被分成 的比特塊后的結(jié)果如圖2所示。
圖2 第7位平面比特塊劃分結(jié)果
對(duì)位平面進(jìn)行比特塊劃分后,就可以采用分塊算法嵌入隱秘信息,在盡可能少地修改圖像原始比特位的前提下,有效地保持圖像紋理的漸變規(guī)律。
使用Logistic映射生成的偽隨機(jī)序列置亂彩色圖像的像素位置,將圖像的每個(gè)像素值轉(zhuǎn)換成二進(jìn)制數(shù),得到24個(gè)位平面,將每個(gè)位平面分成8×8的比特塊,再利用偽隨機(jī)序列對(duì)比特塊進(jìn)行置亂得到置亂圖像,對(duì)置亂后的圖像進(jìn)行擴(kuò)散操作,完成圖像加密。
本文彩色圖像加密算法采用對(duì)稱(chēng)密鑰結(jié)構(gòu),即加密過(guò)程和解密過(guò)程采用相同的密鑰。加密算法密鑰為x0,y0,u,a。
加密算法的基本步驟如下。
步驟1構(gòu)造混沌序列。
將彩色圖像I分成三幅大小均為M×N的灰度圖像R、G和B,并分別轉(zhuǎn)換成M×N階的行矩陣,按行拼接得到1×3MN階的矩陣P。
(4)
其中
選取混沌系統(tǒng)式(1)的控制參數(shù)u和a分別為
(5)
步驟2生成偽隨機(jī)序列,置亂圖像。
給定Logistic映射初始值x0和控制參數(shù)u,根據(jù)式(1)進(jìn)行3MN次迭代計(jì)算,生成偽隨機(jī)序列X1={x1,x2,…,x3MN}并升序排序,得到整數(shù)型偽隨機(jī)序列T1={tX,1,tX,2,…,tX,3MN}。生成偽隨機(jī)序列的過(guò)程如圖3所示。
圖3 生成偽隨機(jī)序列的過(guò)程
根據(jù)整數(shù)型偽隨機(jī)序列T1對(duì)矩陣P進(jìn)行置亂操作,得到1×3MN階矩陣Q。將矩陣Q分成3個(gè)長(zhǎng)度均為1×MN的階矩陣R1、G1和B1。將R1中的像素值轉(zhuǎn)換成8×MN階的二進(jìn)制數(shù)矩陣,按行分成8個(gè)1×MN階矩陣,將每個(gè)矩陣分割成8×8的比特塊,8個(gè)矩陣共得到8mxmy個(gè)比特塊,組成比特塊集合
R2={R2,1,R2,2,…,R2,8mxmy}。
對(duì)G1和B1進(jìn)行相同操作,得到比特塊集合
G2={G2,1,G2,2,…,G2,8mxmy},B2={B2,1,B2,2,…,B2,8mxmy}。
按行拼接R2、G2和B2共得到24mxmy個(gè)比特塊,組成比特塊集合
K1={K1,1,K1,2,…,K1,24mxmy} 。
給定一維映射初始值y0和控制參數(shù)a,根據(jù)式(2)進(jìn)行24mxmy次迭代計(jì)算,生成偽隨機(jī)序列Y1={y1,y2,…,y3MN,經(jīng)過(guò)升序排序,得到整數(shù)型偽隨機(jī)序列T2={tY,1,tY,2,…,tY,3MN}。使用整數(shù)型偽隨機(jī)序列T2對(duì)K1進(jìn)行置亂操作,得到比特塊集合
D={D1,D2,…,D24mxmy}。
步驟3置亂擴(kuò)散,得到密文圖像。
將D分為3個(gè)集合
D1={D1,D2,…,D8mxmy},D2={D8mxmy+1,D8mxmy+2,…,D16mxmy},D3={D16mxmy+1,D16mxmy+2,…,D24mxmy}。
將D1中的每個(gè)元素分成8個(gè)1×mxmy階的行矩陣,每個(gè)行矩陣轉(zhuǎn)換成mx×my階矩陣。將每個(gè)矩陣擴(kuò)展成M×N的二進(jìn)制數(shù)矩陣,并轉(zhuǎn)換成為M×N階行矩陣,8個(gè)行矩陣按列拼接得到8×MN階矩陣R3。對(duì)D2和D3進(jìn)行相同操作,得到矩陣G3和B3。按列拼接R3、G3和B3,并轉(zhuǎn)換成1×3MN階的十進(jìn)制置亂矩陣K2。
令fi=mod(X1(i)×1015,256),(i=1,2,…,3MN)求出擴(kuò)散矩陣f=[f1,f2,…,f3MN]。根據(jù)擴(kuò)散矩陣f和置亂矩陣K2得到加密圖像的像素矩陣
C=[C1,C2,…,C3MN],
其中Ci=mod(fi+K2,i,256)⊕Ci+1,K2,i為K2中的第i個(gè)元素。將C按行分成3個(gè)矩陣
C1=[C1,C2,…,CMN],C2=[CMN+1,CMN+2,…,C2MN],C3=[C2MN+1,C2MN+2,…,C3MN]。
將C1、C2和C3分別轉(zhuǎn)換為代表圖像紅、綠、藍(lán)三個(gè)分量的M×N矩陣
綜合3個(gè)分量矩陣,最終得到彩色密文圖像CI。
給出的圖像加密算法是一個(gè)對(duì)稱(chēng)密鑰加密算法,即加密過(guò)程和解密過(guò)程采用相同的密鑰,解密過(guò)程是加密過(guò)程的逆過(guò)程。將彩色密文圖像CI分成CR、CG和CB三個(gè)分量,分別轉(zhuǎn)換為1×MN階的行矩陣,并拼接成1×3MN階矩陣C,求出十進(jìn)制置亂矩陣K2,按照與加密過(guò)程相反步驟即可恢復(fù)原始圖像。
分別選取分辨率均為512×512的Lena和pepper圖像進(jìn)行實(shí)驗(yàn)。Lena圖像的密鑰
x0=0.121 6,y0=0.952 9,u=3.993 5,a=7.743 7;
pepper圖像的密鑰
x0=0.466 7,y0=0.156 9,u=3.992 1,a=7.748 6。
加密和解密結(jié)果如圖4所示。從視覺(jué)效果上看,所提出圖像加密算法的明文圖像與密文圖像沒(méi)有關(guān)聯(lián),解密圖像與明文圖像高度一致,說(shuō)明本文算法的加密和解密效果較好。
圖4 Lena和pepper 加解密結(jié)果
密鑰空間是指用于加密系統(tǒng)的全部密鑰數(shù)。有效的圖像加密算法應(yīng)具有足夠大的密鑰空間,以抵抗暴力攻擊[12]。安全的密鑰空間一般為2100[13]。所提算法的密鑰包含混沌系統(tǒng)的初始值x0,y0和控制參數(shù)u,a。由于計(jì)算機(jī)的有效精度為10-16,因此本文算法密鑰空間為(1016)4=1064,比安全的密鑰空間2100大,說(shuō)明所提算法具有足夠大的密鑰空間,可以抵抗暴力攻擊。
差分攻擊是指攻擊者對(duì)明文圖像改變前和改變后的兩幅圖像加密,通過(guò)對(duì)比兩幅加密圖像,找出明文圖像和密文圖像之間的關(guān)聯(lián),來(lái)攻擊密碼算法的一種方法[14]。有效的加密算法在改變明文圖像的同時(shí),也對(duì)密文產(chǎn)生影響。一般使用像素值改變率(number of pixels change rate, NPCR)和歸一化像素值平均改變強(qiáng)度(unified average changing intensity, UACI)檢測(cè)抗差分攻擊的性能[12]。
隨機(jī)選擇Lena明文圖像R分量的一個(gè)像素值I(100,100)=173進(jìn)行實(shí)驗(yàn)。為檢測(cè)抗差分攻擊的性能,將這個(gè)像素值改為100。像素值改變后Lena密文圖像的NPCR和UACI值如表1所示??梢钥闯?,對(duì)明文圖像微小改變會(huì)導(dǎo)致密文圖像的全部改變,表明本文算法可以抵抗差分攻擊。
表1 像素值改變后Lena密文圖像的NPCR和UACI值
用原始密鑰和改變后的密鑰加密Lena圖像分析密鑰的敏感性。分別將原始密鑰x0從0.121 6改變?yōu)?.121 600 000 001,y0從0.952 9改變?yōu)?.952 900 000 001,u從3.993 5改變?yōu)?.993 500 000 001,a從7.743 7改變?yōu)?.743 700 000 001,計(jì)算密鑰改變前后密文圖像的相鄰像素相關(guān)性。相鄰像素相關(guān)性越小,表明加密算法的安全性越強(qiáng),可以更加有效地抵抗統(tǒng)計(jì)攻擊。密鑰改變前后加密圖像相應(yīng)位置的像素相關(guān)性如表2-表5所示。可以看出,密鑰改變前后密文圖像相應(yīng)位置的像素相關(guān)性接近0,說(shuō)明加密密鑰的微小改變會(huì)導(dǎo)致密文圖像完全不同,表明本文算法具有較高的密鑰敏感性。
表2 x0改變前、后加密圖像各分量之間的像素相關(guān)性
表3 y0改變前、后加密圖像各分量之間的像素相關(guān)性
表4 u改變前、后加密圖像各分量之間的像素相關(guān)性
表5 a改變前、后加密圖像各分量之間的像素相關(guān)性
使用原始密鑰得到的解密圖像和使用修改密鑰得到的解密圖像如圖5所示??梢钥闯?,二個(gè)解密圖像之間完全無(wú)關(guān)。二個(gè)解密圖像相應(yīng)位置像素相關(guān)性如表6-表9所示,可以看出,二個(gè)解密圖像相應(yīng)位置像素相關(guān)性接近0,說(shuō)明即使解密密鑰的微小改變,也不能得到正確明文圖像。因此,本文算法具有較好的密鑰敏感性,可以抵抗統(tǒng)計(jì)攻擊。
圖5 Lena解密密鑰敏感性
密鑰改變前的各分量密鑰改變后的各分量RGBR0.004 00.003 70.003 9G0.003 80.003 70.003 8B0.003 80.004 00.003 9
表7 y0改變前、后加密圖像各分量之間的像素相關(guān)性
表8 u改變前、后加密圖像各分量之間的像素相關(guān)性
表9 a改變前、后加密圖像各分量之間的像素相關(guān)性
在圖像傳輸過(guò)程中,噪聲對(duì)解密圖像的質(zhì)量有一定影響,一般用噪聲攻擊和抗剪切變換攻擊來(lái)檢測(cè)算法的魯棒性[15]。對(duì)密文圖像分別添加強(qiáng)度為1%、5%和10%的椒鹽噪聲,受椒鹽噪聲攻擊的Lena解密圖像如圖6所示??梢钥闯?,圖像的噪聲是隨機(jī)分布在解密圖像中。隨著噪聲強(qiáng)度的增加,對(duì)解密圖像的影響也相應(yīng)增加,但解密圖像中仍包含明文圖像的信息。說(shuō)明本文算法可以抵抗一定程度的噪聲攻擊。
圖6 椒鹽噪聲攻擊后的Lena解密圖像
對(duì)密文圖像的中心部位進(jìn)行不同面積的剪切,測(cè)試算法的抗剪切變換攻擊性能。分別以1/16、1/8和1/4的比例剪切Lena的密文圖像,得到相應(yīng)的解密圖像如圖7所示??梢钥闯?,雖然解密圖像的質(zhì)量隨著剪切塊大小的增加而降低,但是密文圖像局部信息丟失不會(huì)導(dǎo)致解密圖像相應(yīng)部分信息的丟失,說(shuō)明本文算法具有較好的魯棒性,可以抵抗一定程度的噪聲攻擊和剪切變換攻擊。
圖7 Lena剪切攻擊后的Lena解密圖像
直方圖描述圖像像素值的分布情況,理想密文圖像的直方圖呈均勻分布[16]。Lena明文圖像、文獻(xiàn)[8]算法、本文算法密文圖像的R、G和B分量直方圖分別如圖8-圖10所示??梢钥闯觯疚乃惴芪膱D像的直方圖均衡度較好,而明文圖像的直方圖和文獻(xiàn)[8]密文圖像的直方圖均衡度較差,說(shuō)明本文算法可以抵抗統(tǒng)計(jì)攻擊。
圖8 Lena明文直方圖
圖9 文獻(xiàn)[8]算法的Lena密文直方圖
圖10 本文算法的Lena密文直方圖
相鄰像素的強(qiáng)相關(guān)性是衡量圖像加密的一個(gè)重要指標(biāo)。相鄰像素相關(guān)性越小,加密算法的安全性越強(qiáng),可以更加有效地抵抗統(tǒng)計(jì)攻擊[17]。分別從明文圖像和文獻(xiàn)[8]、文獻(xiàn)[11]、本文算法密文圖像的水平、垂直和對(duì)角線三個(gè)方向隨機(jī)選取5 000對(duì)相鄰像素并分析其相關(guān)性。Lena明文圖像和密文圖像相鄰像素間的相關(guān)系數(shù)如表10-表12所示??梢钥闯?,明文圖像相鄰像素間的相關(guān)系數(shù)接近1,而密文圖像相鄰像素間的相關(guān)系數(shù)接近0,說(shuō)明用統(tǒng)計(jì)的方法難以得到正確的明文圖像,本文算法可以抵抗統(tǒng)計(jì)攻擊。
表10 水平方向兩個(gè)相鄰像素的相關(guān)系數(shù)
表11 垂直方向兩個(gè)相鄰像素的相關(guān)系數(shù)
表12 對(duì)角線方向兩個(gè)相鄰像素的相關(guān)系數(shù)
信息熵反映了數(shù)字圖像的像素灰度級(jí)分布的均勻程度。像素灰度級(jí)分布越均勻,信息熵越大,加密效果越好[18]。一幅256級(jí)灰度圖像的理想信息熵為8[13],加密圖像的信息熵值越接近于8,說(shuō)明圖像加密算法的結(jié)果越好。Lena明文圖像的信息熵和文獻(xiàn)[8]、文獻(xiàn)[11]、本文算法相應(yīng)密文圖像的信息熵如表13所示??梢钥闯觯疚乃惴ǖ拿芪膱D像的三個(gè)分量信息熵均趨于8,好于文獻(xiàn)[8]的結(jié)果,說(shuō)明本文算法可以抵抗統(tǒng)計(jì)攻擊。
表13 Lena明文圖像和不同算法密文圖像的信息熵
提出了一種基于一維混沌映射和比特塊置亂的彩色圖像加密算法。使用Logistic映射生成的偽隨機(jī)序列置亂原始彩色圖像,將置亂的結(jié)果分解成24個(gè)位平面,依次將每個(gè)位平面劃分為8×8特塊并置亂,對(duì)置亂圖像進(jìn)行擴(kuò)散操作,實(shí)現(xiàn)圖像的加密。對(duì)密鑰空間、明文敏感性、密鑰敏感性、魯棒性、直方圖、相鄰像素相關(guān)性和信息熵仿真分析,結(jié)果表明,本文算法具有較好的加密效果,并且可以抵抗一定程度的暴力攻擊、噪聲攻擊、剪切變換攻擊、差分攻擊和統(tǒng)計(jì)攻擊,具有一定的安全性。