趙 耿 李建新 馬英杰 秦曉宏
1(西安電子科技大學(xué) 陜西 西安 710071)2(北京電子科技學(xué)院 北京 100070)
隨著互聯(lián)網(wǎng)的迅速發(fā)展,多媒體信息被廣泛傳輸,圖像作為多媒體信息的重要部分,其安全性受到重視。如今混沌在信息安全領(lǐng)域的應(yīng)用越來越多,混沌密碼作為密碼學(xué)的新分支已經(jīng)受到國內(nèi)外研究人士的廣泛關(guān)注。
利用混沌的圖像加密大致分為空域加密和變換域加密兩種。隨著小波變換的廣泛使用,變換域加密的優(yōu)點(diǎn)被放大,加密和壓縮的共同完成提高了加密效率,變換域的過程提高了復(fù)雜度。使用低維Logistic映射[1-4]和小波變換進(jìn)行加密的方案取得了不錯的效果。但是低維混沌加密方案存在被破解風(fēng)險[5],所以使用高維混沌進(jìn)行圖像加密更優(yōu)。文獻(xiàn)[6]使用Lorenz混沌映射,經(jīng)過處理得到混沌序列,然后進(jìn)行小波域加密。文獻(xiàn)[7]使用了超混沌系統(tǒng)。本文使用基于m序列擾動的Lorenz混沌系統(tǒng)來生成抗退化混沌序列。首先結(jié)合小波變換進(jìn)行子帶系數(shù)獲取,將各子帶系數(shù)置亂,進(jìn)行低頻子帶系數(shù)擴(kuò)散,小波逆變換重構(gòu)之后得到初始加密圖像;然后對初始加密圖像使用耦合擴(kuò)散的方法進(jìn)行二次加密得到最終加密圖像;最后對加密圖像進(jìn)行了密鑰空間、統(tǒng)計分析,以及抗窮舉攻擊、抗統(tǒng)計攻擊和抗差分攻擊等評測。
小波變換是一種從時域到頻域的分析方法,它在短時傅里葉變換局部化的思想上,有效地克服了窗口大小不隨頻率變化等問題。小波變換用小波函數(shù)系中的一族函數(shù)去表示某一函數(shù),且這一族函數(shù)是由基本小波函數(shù)進(jìn)行平移或伸縮得到的。
定義1設(shè)ψ(t)∈L2(R),其傅里葉變換為ψ(ω),當(dāng)ψ(ω)滿足如下允許條件時,稱ψ(t)為一個基本小波或母小波。
(1)
將母函數(shù)ψ(t)經(jīng)伸縮和平移后得到連續(xù)小波基函數(shù):
(2)
式中:a是伸縮因子;b是平移因子。
小波變換可分為連續(xù)小波變換和離散小波變換。
定義2對任意f(t)∈L2(R),在基本小波ψ(t)下展開,稱為f(t)的連續(xù)小波變換(CWT)。其表達(dá)式為:
(3)

(4)
則任意函數(shù)f(t)的離散小波變換為:
(5)
混沌是在確定的非線性性系統(tǒng)中出現(xiàn)的內(nèi)在隨機(jī)性現(xiàn)象。混沌系統(tǒng)具有以下特點(diǎn):對初始條件敏感、正的Lyapunov指數(shù)、運(yùn)動的遍歷性、有界性、分形與分維性、自相似性、連續(xù)功率譜以及類噪聲性等[8-9]。
Lorenz系統(tǒng)是一個三維混沌系統(tǒng),用其生成的混沌序列有三個優(yōu)點(diǎn):一是復(fù)雜度高,Lorenz系統(tǒng)的結(jié)構(gòu)比常見的一維和二維混沌系統(tǒng)復(fù)雜,故產(chǎn)生的實(shí)數(shù)值序列不可預(yù)測性更強(qiáng);二是密鑰空間大,Lorenz系統(tǒng)有三個初始值以及三個系統(tǒng)參數(shù),均可作生成加密混沌序列的種子密鑰,則Lorenz系統(tǒng)的密鑰空間高于低維混沌系統(tǒng);三是設(shè)計更具靈活性,Lorenz系統(tǒng)可以輸出三路實(shí)數(shù)值混沌序列,可以對單路進(jìn)行處理,也可以對三路進(jìn)行組合處理[10]。
Lorenz系統(tǒng)的動力學(xué)方程式為:

(6)
式中:參數(shù)值a=10,b=28,c=8/3時,Lorenz系統(tǒng)處于混沌狀態(tài)。在MATLAB上可以得到Lorenz混沌系統(tǒng)的相圖如圖1所示。

圖1 Lorenz混沌系統(tǒng)的x-y-z相圖
(1) Lorenz方程系統(tǒng)參數(shù)選取a=10,b=28,c=8/3。給定系統(tǒng)方程初始值x0、y0和z0后,使用四階Runge-Kutta算法進(jìn)行計算,舍去前1 000組混沌序列值,以第1 001次得到的計算值作為新的初始值。此后計算可得到的三個離散混沌序列分別記為X、Y、Z。
(2) 二值化處理:截取三個混沌序列中L位的二值序列作為輸出序列。經(jīng)驗(yàn)證發(fā)現(xiàn),只選取一個序列不如依次選取X、Y、Z的某些位連接后的偽隨機(jī)性好,而且將這三位進(jìn)行“異或”的偽隨機(jī)性并不好。這里將三個序列按求余方式選取。第t次選取,則有:當(dāng)t(mod3)=1時,選取X;當(dāng)t(mod3)=2時,選取Y;當(dāng)t(mod3)=0時,選取Z。這里設(shè)置實(shí)數(shù)精度為雙精度,則可以對之前以取余方式選取的混沌序列進(jìn)行轉(zhuǎn)二進(jìn)制,并取小數(shù)點(diǎn)后的部分位作為預(yù)處理輸出序列S。
(3) m序列是最長線性移位寄存器序列的簡稱,是一種偽隨機(jī)序列、偽噪聲(PN)碼或偽隨機(jī)碼[11]。n級線性反饋移位寄存器的輸出序列的最大周期為2n-1,當(dāng)達(dá)到最大周期時,此序列是n級m序列。若m序列的長度小于2n-1,則該長度的序列是非周期序列。圖2為m序列產(chǎn)生器的結(jié)構(gòu)。

圖2 m序列產(chǎn)生器的結(jié)構(gòu)
本文采用16級線性反饋移位寄存器LFSR生成m序列,簡記為R。其特征多項(xiàng)式為f(x)=x16+x12+x3+x+1,即圖2中c0=c1=c3=c12=c16=1,其余的ci為0。
(4) 每隔n次與X的后s位與m序列的s位作“異或”處理,返回到輸入,作為對系統(tǒng)的擾動。擾動過后重新回到(1)繼續(xù)計算,最終輸出序列為S′。如果需要偽隨機(jī)二值序列的長度為M,則需要如此循環(huán)M/n次。
系統(tǒng)的結(jié)構(gòu)框圖如圖3所示。該方案中,Lorenz混沌系統(tǒng)和LFSR相互獨(dú)立,Lorenz混沌系統(tǒng)輸出端得到3個二進(jìn)制比特序列集,經(jīng)過對這3個二進(jìn)制比特序列集的截取與組合得到初始輸出序列,通過與LFSR輸出的序列R間隔性進(jìn)行“異或”,實(shí)現(xiàn)擾動,并將擾動結(jié)果返回至系統(tǒng)的輸入端,進(jìn)行下一輪運(yùn)算。相比原數(shù)字混沌系統(tǒng),經(jīng)過擾動的混沌序列的周期就至少擴(kuò)大了n(2N-1)倍[12]。

圖3 m序列擾動Lorenz系統(tǒng)的偽隨機(jī)數(shù)發(fā)生器結(jié)構(gòu)框圖
圖像的加密過程由小波系數(shù)獲取、子帶系數(shù)置亂與擴(kuò)散和初始加密圖像擴(kuò)散3個過程。小波系數(shù)獲取過程進(jìn)行兩層分解,置亂過程使用Arnold變換,低頻子帶系數(shù)擴(kuò)散基于擴(kuò)散參數(shù)和混沌序列生成的擴(kuò)散矩陣,擴(kuò)散參數(shù)使用第二層小波分解的高頻系數(shù)獲取。最后進(jìn)行的初始加密圖像擴(kuò)散使用混沌序列“異或”與像素間耦合加密組成。加密算法整體框圖見圖4。

圖4 加密算法整體框架圖
原始圖像經(jīng)過小波變換,會將原始數(shù)據(jù)變換到頻域,由4個子帶圖像組成。LL:水平和垂直方向的低頻子帶圖像;LH:水平方向的低頻和垂直方向的高頻子帶圖像;HL:水平方向的高頻和垂直方向的低頻子帶圖像;HH:水平和垂直方向的高頻子帶圖像。由于在頻域內(nèi),低頻部分包含了圖像大多數(shù)信息,能量更為集中,而高頻部分則包含了圖像的大多數(shù)細(xì)節(jié)信息。對于圖像數(shù)據(jù),存在冗余性高的問題,相比傳統(tǒng)的對原圖像空間域進(jìn)行加密,對低頻部分加密會減少加密數(shù)據(jù)量,提高加密效率。如果對圖像細(xì)節(jié)保密要求高,則高頻部分保留的細(xì)節(jié)也需要進(jìn)行部分處理,不過與低頻部分的大信息量相比,此部分可以進(jìn)行簡化處理,如子帶系數(shù)矩陣置亂。
本文采用“db1”小波對灰度圖像進(jìn)行兩層的小波變換。第一層變換得到LL1、LH1、HL1和HH1,第二層變換是在LL1上再次進(jìn)行小波變換,得到LL2、LH2、HL2和HH2。以灰色頭像Lena為示例圖像進(jìn)行小波變換,圖5(a)為原始圖像,在兩次小波分解之后分別得到第一層壓縮圖像圖5(b)和第二層壓縮圖像圖5(c)。因此,通過低頻信息仍然可以看出圖像內(nèi)容,同時由表1數(shù)據(jù)可以得出,圖像數(shù)據(jù)量得到了大大的壓縮。

(a) 原始圖像 (b) 第一層壓縮圖像 (c) 第二層壓縮圖像圖5 原始圖像和各層壓縮圖像

表1 原始圖像和各層壓縮圖像大小對比
對原始圖像I首先進(jìn)行尺寸變換,將原始圖像變?yōu)殚L寬相等的IM×M,長寬不等圖像進(jìn)行空位點(diǎn)像素值補(bǔ)0操作。然后進(jìn)行兩層小波分解,對各子帶系數(shù)矩陣進(jìn)行置亂處理,再對置亂后的第二層低頻子帶系數(shù)使用混沌序列進(jìn)行擴(kuò)散。
(1) 置亂:由于是對子帶系數(shù)進(jìn)行處理,置亂過程可以改變子帶系數(shù)矩陣分布,從而在小波重構(gòu)后得到相鄰像素相關(guān)性更低的加密圖像。
本文使用Arnold變換對子帶系數(shù)矩陣進(jìn)行置亂加密。設(shè)(xn,yn)是變換前某點(diǎn)的位置,則Arnold變換過程如下:
(7)

(8)
混沌二值序列以8位為劃分單位,獲得一個與低頻子帶系數(shù)大小相同的擴(kuò)散矩陣C,此部分需要M2/2位混沌二值序列。將得到的擴(kuò)散參數(shù)用在第一步得到的置亂低頻子帶系數(shù)上,與擴(kuò)散矩陣C進(jìn)行計算:
(9)

(1) 使用混沌二值序列生成M×M大小的擴(kuò)散矩陣K,生成方式為每8位為一組,作為擴(kuò)散矩陣K的一個元素,共需要混沌二值序列8M2位。
(2) 從第二個像素開始,將每個位置的像素值與其前一位置的像素值進(jìn)行二進(jìn)制按位“異或”操作,最后與擴(kuò)散矩陣K進(jìn)行二進(jìn)制按位“異或”的操作。

(10)
如果相鄰像素間相關(guān)性較大,使用像素點(diǎn)之間的耦合操作會有:
I′(x,y)≈K(x,y)
(11)
這使得被加密的像素點(diǎn)的值近似為擴(kuò)散矩陣對應(yīng)位置的值,既減少了相關(guān)性,又增加解密的復(fù)雜性。
解密的過程是加密的逆過程:
(1) 將解密密鑰中x0、y0和z0作為混沌系統(tǒng)的初始值,按照混沌序列的產(chǎn)生方式生成混沌序列;將前M2/2位混沌序列轉(zhuǎn)為擴(kuò)散矩陣C,再取8M2位混沌序列轉(zhuǎn)為擴(kuò)散矩陣K。

(12)
(4) 將步驟(3)中得到的子帶系數(shù)矩陣進(jìn)行Arnold逆變換得到LL2、LH2、HL2、HH2、LH1、HL1和HH1:
(13)
(5) 將步驟(4)中得到的子帶系數(shù)矩陣進(jìn)行小波重構(gòu),得到原始圖像,完成第二次解密。
本文采用256×256的Lena灰度圖像進(jìn)行加密和解密仿真實(shí)驗(yàn),仿真環(huán)境為MATLAB 9.0(R2016a)軟件平臺。Lorenz混沌系統(tǒng)的三個初值分別取0.25、0.13和0.15,置亂參數(shù)a=15,b=9,n=20。圖像加密效果如圖6所示,其中(a)為原始Lena圖像,(b)為加密之后得到的加密Lena圖像。

(a) 原始Lena圖像 (b) 加密Lena圖像圖6 圖形加密效果對比
如果密鑰空間很大,則攻擊時間和代價會變得很高,使得攻擊者無法使用窮舉攻擊。密鑰空間越大,加密算法抵御窮舉攻擊的性能越強(qiáng)。本算法的密鑰由混沌系統(tǒng)初值(x0,y0,z0)和16級m序列寄存器初始值。三個混沌系統(tǒng)初值均為雙精度實(shí)數(shù),小數(shù)位由52位二進(jìn)制表示。16級m序列寄存器初始值為16位二進(jìn)制數(shù)。由此可計算密鑰空間為252×252×252×216=2172。故本算法具有抗窮舉攻擊能力。
密鑰敏感性分析是在微小改變密鑰后,來測試對解密密鑰的敏感性。如果算法的敏感性強(qiáng),應(yīng)該在密鑰改動最小精度時,也不能正確解密。由于本算法混沌初始值采取雙精度實(shí)數(shù)作為密鑰,其精度達(dá)到10-14。對原始密鑰改變10-14,獲取解密圖像。m序列寄存器初始值改變1位作為解密密鑰進(jìn)行解密,獲取解密圖像。正確密鑰和錯誤密鑰解密對比見圖7,其中(a)為正確密鑰解密圖,(b)為使用錯誤密鑰x0的解密圖,(c)為使用錯誤密鑰y0的解密圖,(d)為使用錯誤密鑰z0的解密圖,圖7(e)為使用錯誤的寄存器初始值的解密圖。圖7表明本文算法對密鑰具有很高的敏感性。

(a) 正確密鑰解密圖 (b) 錯誤密鑰x0解密圖

(c) 錯誤密鑰y0解密圖(d) 錯誤密鑰z0解密圖

(e) 錯誤密鑰寄存器初始值解密圖圖7 正確密鑰與錯誤密鑰解密圖
直方圖可以直觀地反映圖像像素灰度值的分布情況。如果像素灰度值分布直方圖是均勻分布的,則能有效抵抗統(tǒng)計攻擊。圖8(a)是原始圖像加密前的灰度值分布直方圖,(b)是原始圖像加密后的灰度值分布直方圖。

(a) 加密前灰度值分布直方圖

(b) 加密后灰度值分布直方圖圖8 原始圖像加密前后的灰度值分布直方圖
香農(nóng)的信息論中提出信息熵的概念,用來表示平均信息量,反映了信源的不確定度。信息熵計算公式為:
(14)
式中:P(Si)為Si出現(xiàn)的概率。由于使用灰度級為256的圖像,理論上信息熵是8。本文算法的信息熵計算值與其他文獻(xiàn)比較見表2。可以看出,本文算法信息熵更接近理論值,可以更加有效地抵御外來熵攻擊。

表2 本文算法與參考文獻(xiàn)算法信息熵比較
絕大多數(shù)明文圖像的相鄰像素都有較高的相關(guān)性。衡量加密效果的一個方面就是進(jìn)行相關(guān)性分析,圖像的相關(guān)性越小,說明置亂效果越好。計算公式為:
(15)
(16)
(17)
(18)
本文從原始明文圖像和加密圖像中隨機(jī)選擇2 000對相鄰像素點(diǎn),通過計算公式得到水平、垂直和對角三個方向上的相關(guān)系數(shù),見表3。加密前后相鄰像素相關(guān)性對比圖見圖9。

表3 相鄰像素相關(guān)系數(shù)對比

(a) 原圖水平方向(b) 加密圖像水平方向

(c) 原圖垂直方向(d) 加密圖像垂直方向

(e) 原圖對角方向(f) 加密圖像對角方向圖9 圖像加密前后相鄰像素相關(guān)性
表3是本文算法與參考文獻(xiàn)的相鄰像素相關(guān)系數(shù)的比較。可以看出,原始圖像在水平、垂直和對角三個方向上的相關(guān)系數(shù)均接近于1,說明相鄰像素是具有高度相關(guān)性的。在經(jīng)過本文算法的加密之后,三個方向上的相關(guān)系數(shù)都接近于0,說明原始圖像經(jīng)過加密之后各像素得到了良好的擴(kuò)散。
一個好的圖像加密算法應(yīng)該具有抵御差分攻擊的能力,衡量此能力的重要指標(biāo)是像素變化率(NPCR)和歸一化平均變化強(qiáng)度(UACI)。
設(shè)密文圖像C1和密文圖像C2,兩者的原始圖像之間僅有一個像素位置的灰度值是不相等的,令矩陣D與密文圖像C1和密文圖像C2的大小一致。當(dāng)C1(i,j)=C2(i,j)時,D(i,j)=0,否則D(i,j)=1。NPCR和UACI的計算公式為:
(19)
(20)
NPCR的理想值為0.996,UACI的理想值為0.334。作為對比,隨機(jī)選取10個點(diǎn),灰度值先后增加1,計算出每個點(diǎn)的NPCR和UACI,然后取平均值作為本文的NPCR和UACI。與文獻(xiàn)[16]對比結(jié)果見表4,結(jié)果表明本文算法更加接近理想值,所以本算法具有更好的抗差分攻擊能力。

表4 NPCR和UCAI對比結(jié)果
本文基于小波變換,結(jié)合混沌系統(tǒng),通過對各子帶系數(shù)矩陣的置亂處理和對低頻系數(shù)的擴(kuò)散處理實(shí)現(xiàn)初始加密,最后對初始加密圖像進(jìn)行像素擴(kuò)散和像素耦合加密,完成最終的加密。混沌系統(tǒng)經(jīng)過抗退化處理得到的混沌序列具有優(yōu)良的隨機(jī)性,與小波的結(jié)合加強(qiáng)了加密性能和效率。仿真結(jié)果表明,本文算法具有密鑰空間大、密鑰敏感性強(qiáng)和統(tǒng)計特性良好等優(yōu)點(diǎn),可以抵御窮舉攻擊、統(tǒng)計攻擊和差分攻擊等。