張 昊,王曉慶,謝紅薇,劉雨心
(1.太原理工大學(xué) 信息與計(jì)算機(jī)學(xué)院,山西 晉中 030600; 2.太原理工大學(xué) 軟件學(xué)院,山西 晉中 030600)
近年來,由于混沌系統(tǒng)良好的初值敏感性、偽隨機(jī)性、不可預(yù)測性、非周期性等特點(diǎn)[1,2],在圖像加密中得到了廣泛的應(yīng)用。混沌映射一般分為一維和高維混沌映射。一維混沌映射由于其混沌軌跡簡單和初值條件少,很容易被預(yù)測[3]。相比之下,高維混沌系統(tǒng)具有更復(fù)雜的軌跡和更多的初始條件,其軌跡難以預(yù)測。然而,高維混沌映射也有一些缺點(diǎn),如復(fù)雜的性能分析和高實(shí)施成本[4]。因此,越來越多的學(xué)者開始將多個(gè)一維混沌映射結(jié)合設(shè)計(jì)了安全簡單2D混沌系統(tǒng)[2,5,6],但是這些系統(tǒng)的軌跡圖和分叉圖分布不夠均勻,并且李指數(shù)和排列熵還有待提高。
目前,壓縮感知(compressed sensing,CS)技術(shù)廣泛應(yīng)用于圖像加密中[7-9]。文獻(xiàn)[7]存在的問題是,為了成功地恢復(fù)壓縮圖像,需要傳輸測量矩陣。文獻(xiàn)[8]利用混沌映射產(chǎn)生的偽隨機(jī)序列構(gòu)造了Bernoulli測量矩陣,利用壓縮感知通過測量矩陣進(jìn)行壓縮采樣。該方案減少了測量矩陣的傳輸,節(jié)省了存儲(chǔ)空間,但是算法效率不高。
綜上所述,本文提出基于改進(jìn)的混沌系統(tǒng)與塊壓縮感知結(jié)合的圖像加密算法。實(shí)驗(yàn)結(jié)果表明,構(gòu)造的混沌系統(tǒng)具有良好的隨機(jī)性,并且在壓縮感知中測量矩陣由混沌密鑰序列生成,節(jié)省傳輸過程中的信道帶寬和存儲(chǔ)空間。此外,擴(kuò)散算法使用了行單獨(dú)擴(kuò)散的方式,使圖像每一行加密后可以單獨(dú)傳輸,而不必等到整個(gè)圖像被加密后傳輸。
壓縮感知以小于奈奎斯特采樣率同時(shí)對信號(hào)進(jìn)行壓縮和采樣,可以從小的觀測值中高概率地恢復(fù)出圖像,詳細(xì)的描述如下:
假定一個(gè)L×1維離散信號(hào)X在變換域中可以表示為
(1)
(2)
其中,Φ是一個(gè)大小為M×L的測量矩陣 (M?L)。 Θ是相關(guān)的傳感矩陣,為了從信號(hào)y正確重建信號(hào)s,Θ必須滿足RIP[1]準(zhǔn)則,它的等價(jià)條件是測量矩陣Φ和Ψ是不相關(guān)的。
(3)
目前,相關(guān)的重構(gòu)算法包括正交匹配追蹤法(OMP)[10]、壓縮采樣匹配追蹤法(CoSaMP)[11]和迭代硬閾值法(IHT)[12],可以有效地用來解決l1范數(shù)最小化問題。
最近,已經(jīng)提出基于投影的重建算法[13](SPL),信號(hào)重建是通過在迭代中連續(xù)投影和閾值化來實(shí)現(xiàn)的。例如,從初值近似值s0開始,在i+1次形成近似值,如下所示
(4)
(5)
其中,δ是ΦTΦ的最大特征值,τ(i)是每次在迭代時(shí)設(shè)置的閾值。
基于投影的壓縮感知重建算法,降低了計(jì)算復(fù)雜度低,而且很容易結(jié)合一些優(yōu)化的條件以提高重建精度。例如在文獻(xiàn)[14]中,將維納濾波結(jié)合到投影Landweber(PL)迭代中,消除塊效應(yīng)來提高重建圖像的質(zhì)量。
二維SCC(sine-coupling-cubic)映射主要由兩個(gè)簡單的一維混沌映射(Sine和Cubic)組成。該映射通過耦合參數(shù)相互混合并相互影響,使系統(tǒng)的性質(zhì)發(fā)生變化,使混沌序列更加復(fù)雜,以達(dá)到更安全的隱藏信息的目的。其中,Sine映射表示為
ui+1=λsin(πui)
(6)
其中,當(dāng)λ∈(0,1] 時(shí),Sine映射的李雅普諾夫指數(shù)大于0,系統(tǒng)是混沌的并產(chǎn)生隨機(jī)的序列。
而Cubic映射表示為
(7)
其中,p表示Cubic映射的控制參數(shù)。當(dāng)p∈(2.3,3), 系統(tǒng)處于混沌狀態(tài),產(chǎn)生隨機(jī)的序列。
對式(6)和式(7)中的系統(tǒng)進(jìn)行耦合,并擴(kuò)展維數(shù),即可得到如下的二維SCC映射
(8)
為了進(jìn)一步分析SCC映射的非線性性質(zhì),刻畫系統(tǒng)的二維相圖并將其與幾類最新的二維混沌映射LASM[2]、LSCM[5]和LSMCL[6]進(jìn)行比較,結(jié)果如圖1所示。
圖1 相圖分析
通過圖1可以看出,相比于LSCM和LSMCL兩類二維映射,SCC的狀態(tài)軌跡能夠布滿定義區(qū)域內(nèi)的所有部分。而相較于LASM,SCC的跡點(diǎn)分布更加平均,相圖中沒有明顯的線形軌跡存在。進(jìn)一步刻畫幾類映射的分岔圖像,如圖2所示。
圖2 分岔圖分析
從圖2可以看出,相比于LASM和LSMCL兩類映射,SCC的分岔圖不僅分岔點(diǎn)分布更加平均,而且沒有明顯的周期窗口存在。而相比于LSCM的分岔圖,SCC的分岔圖中也沒有明顯的線形軌跡存在。為了更好分析系統(tǒng)的混沌性,采用李雅普諾夫指數(shù)(lyapunov exponent,LE)來評價(jià)系統(tǒng)的混沌行為,LE的計(jì)算如以下公式所示
(9)
其中,λi表示的是第i個(gè)LE,xt表示的是第t次迭代,s表示的是總的迭代次數(shù),fi表示混沌系統(tǒng),從而可以進(jìn)一步刻畫幾類映射的李雅普諾夫指數(shù)圖如圖3所示。
圖3 李指數(shù)分析
從圖3可以看出,相比于LASM、LSCM和LSMCL映射,SCC不僅始終具有兩個(gè)正的李雅普諾夫指數(shù),具有超混沌性,而且LE更大,混沌性更強(qiáng)。類似地,SCC的混沌性質(zhì)還可以采用排列熵(permutation entropy,PE)來對比分析,結(jié)果如圖4所示。
圖4 排列熵分析
相比于LE,PE的對比更加明顯。從圖4可以看到,SCC和LASM相比于LSCM和LSMCL, PE熵更接近于1,混沌性更好。而SCC相比于LASM,局部的混沌性能又要更好一些。
采用SCC系統(tǒng)產(chǎn)生的混沌信號(hào),基于NIST SP800-22測試集進(jìn)一步測試其隨機(jī)性,每項(xiàng)測試結(jié)果大于0.01表示通過測試,其結(jié)果見表1。
從表1可以看出,SCC系統(tǒng)所產(chǎn)生的偽隨機(jī)信號(hào)的測試結(jié)果都大于0.01,通過了NIST測試集的所有測試,標(biāo)明了該超混沌映射的混沌信號(hào)具有很好的偽隨機(jī)性,可以用于圖像加密等應(yīng)用。
本文提出的彩色圖像加密系統(tǒng)是基于塊壓縮感知和超混沌系統(tǒng)。首先,在加密壓縮前,將初始化的系統(tǒng)參數(shù)和初值輸入混沌系統(tǒng)得到密鑰流。然后,在壓縮前對圖像執(zhí)行置亂操作,對置亂的圖像使用塊壓縮感知算法進(jìn)行編碼并對編碼結(jié)果進(jìn)行量化。最后,對量化后的彩色圖像執(zhí)行擴(kuò)散操作,以進(jìn)一步提高加密系統(tǒng)的安全性能。算法流程如圖5所示。
從圖5可以看出,本文提出的彩色圖像加密方法使用了與明文信息相關(guān)的SHA散列函數(shù)來初始化SCC系統(tǒng)的初值和參數(shù),并使用得到的隨機(jī)信號(hào)對不同通道的分量分別進(jìn)行測量、量化和擴(kuò)散處理。具體的過程如以下部分所示。
彩色圖像的哈希散列函數(shù)生成384比特散列值K,K被轉(zhuǎn)換成3組十進(jìn)制數(shù)k1,j,k2,j,k3,j, 其中j=16。 給定的密鑰值x0,y0,θ0,p0和散列值k1,j,k2,j,k3,j通過式(10)初始化得到3組密鑰值,分別用于圖像3個(gè)通道的加密
表1 SCC系統(tǒng)二值信號(hào)在NIST SP800-22測試集上的結(jié)果
圖5 彩色圖像加密壓縮流程
(10)
將SHA-384生成的初值系統(tǒng)密鑰值key1={x1,y1,θ1,p1} 輸入到超混沌系統(tǒng)SCC,首次迭代N0次以消除暫態(tài)效果,然后迭代S=max(n×n,CR×N) 次,得到長度為S的兩組隨機(jī)序列S1R,S2R, 其中n為塊的大小,CR為壓縮比。同理,密鑰值key2={x2,y2,θ2,p2} 輸入到超混沌系統(tǒng)SCC得到長度為S的兩組隨機(jī)序列S1G,S2G。 密鑰值key3={x3,y3,θ3,p3} 輸入到超混沌系統(tǒng)得到長度為S的兩組隨機(jī)序列S1B,S2B。
如圖5所示,基于生成的隨機(jī)序列,對彩色圖像的多通道分別進(jìn)行置亂、壓縮和擴(kuò)散處理。
步驟1 截取序列S1R,S2R,S1G,S2G,S1B,S2B的前N個(gè)值,排序得到索引下標(biāo)indexpi, 其中i=1,2,…,6。 如式(11)所示,N是圖像的大小
(11)
其中, [~,index]=sort(·) 函數(shù)表示對序列排序,index表示有序序列在原序列中的索引值。
(12)
(13)
步驟4 選取混沌序列S1R前l(fā)en2個(gè)值構(gòu)造大小為len×len的矩陣,然后正交化得矩陣ΦR(len×len), 選取ΦR前m行得到Φ′R, 其中m=CR×len,CR為壓縮比。len=n×n,n為塊大小。同理,通過式(14)和式(15)可以得到Φ′G, Φ′B
(14)
(15)
其中,函數(shù)reshape(A,M,N) 表示矩陣A按列排列成M行N列, orth(·) 函數(shù)表示矩陣正交化函數(shù)。
步驟5 將圖像的每個(gè)通道分塊,塊的大小為n×n, 每一塊轉(zhuǎn)換成一維向量xi(len×1), 然后按照式(16)分塊測量編碼,其中i表示第i個(gè)塊,i=1,2,…,N/n
(16)
步驟6 分量yr,yg,yb按列排列成大小為CR×N×N的圖像,并且選取隨機(jī)序列S2R,S2G,S2B的前CR×N2個(gè)值使用式(17)量化得到序列SR,SG,SB
(17)
其中, floor(·) 表示向下取整函數(shù), mod(·) 式求余函數(shù)。
步驟7 不同通道的圖像通過式(18)進(jìn)行量化
(18)
這里minr表示分量yr中的最小值,maxr表示分量yr中的最大值。 round(·) 函數(shù)表示四舍五入取整函數(shù)。
步驟8 多通道圖像在量化后,進(jìn)一步通過式(19)按行擴(kuò)散加密得到不同分量的密文圖像CR,CG,CB, 合并不同分量得到密文圖像C
(19)
其中,T=R,G,B, 函數(shù)Cyclicshift(A,k) 表示數(shù)A向右循環(huán)移位k位,其逆變換為Cyclicshift(A,8-k)。
當(dāng)接受者收到密文圖像C, 并從安全的通道收到密鑰值minr,maxr,ming,maxg,minb,maxb,n,x0,y0,θ0,p0,K,N,CR時(shí),通過解密-重建算法可以有效重構(gòu)明文圖像。詳細(xì)的步驟如下所示。
步驟1 將接收的密鑰值x0,y0,θ0,p0和K通過2.1節(jié)部分的算法生成隨機(jī)序列S1R,S2R,S1G,S2G,S1B,S2B。
步驟2 分離密文圖像不同的通道得到CR,CG,CB分量,CR,CG,CB通過式(19)逆運(yùn)算得到PR,PG,PB。
步驟3PR,PG,PB使用式(20)執(zhí)行量化逆操作得到y(tǒng)r,yg,yb
(20)
步驟4 分量yr,yg,yb分別按照列重新排列成大小為CR×len×N2/len的矩陣。
步驟5 序列S1R,S1G,S1B執(zhí)行2.2節(jié)中的步驟4得到測量矩陣Φ′R, Φ′G, Φ′B。
對于上文中所提系統(tǒng)和算法,選擇以下平臺(tái)加以仿真實(shí)驗(yàn)。其中軟件系統(tǒng)為OS:Windows 10 64-bit MATLAB R2014a版本,硬件系統(tǒng)參數(shù)為CPU:Intel(R) Core(TM) i7-7500 CPU 2.7 GHz;RAM:16 GB。
采用第二部分的算法,選取大小為512×512×3的彩色Lena圖像進(jìn)行加解密和壓縮測試,壓縮比(CR)分別選取為0.25,0.5和0.75時(shí),得到的圖像加密和壓縮結(jié)果如下。
從圖6中可以看出,本文算法可以實(shí)現(xiàn)不同壓縮比的圖像壓縮和加密。在不同壓縮比下圖像占用的存儲(chǔ)空間也不同,當(dāng)壓縮比為0.25時(shí),基于所給平臺(tái),實(shí)現(xiàn)加密需要1.950 182 s;當(dāng)壓縮比為0.5時(shí),實(shí)現(xiàn)加密需要3.689 097 s;當(dāng)壓縮比為0.75時(shí),基于所給平臺(tái),實(shí)現(xiàn)加密需要5.445 659 s。故而,壓縮比越高,耗時(shí)短,壓縮后數(shù)據(jù)占用空間越小。需要注意的是,當(dāng)壓縮比變小時(shí),圖像恢復(fù)的效果開始變差,不同壓縮比下恢復(fù)的圖像如圖7所示。
圖6 壓縮加密結(jié)果
圖7 重構(gòu)和解密結(jié)果
從圖7中可以看出,不同壓縮比下的圖像都能夠恢復(fù)出原圖像的大部分信息。但是隨著壓縮比的變大,圖像的重構(gòu)效果逐漸變好,細(xì)節(jié)的紋理變得更加清晰。
直方圖是用來分析圖像像素值分布的測試圖,一個(gè)好的加密算法可以使得加密之后的圖像像素值分布均勻。對于本文所提算法,對應(yīng)于圖6中原圖和加密后圖像的直方圖如圖8所示。
圖8 直方圖分布
從圖8(a)中可以看出原圖中R,G,B通道的像素值呈現(xiàn)明顯的有規(guī)律的分布。在加密后,對于不同的壓縮比,其R,G,B通道的所有像素值都呈現(xiàn)均勻分布,看不出明顯的規(guī)律。
信息熵是用來測試信息不確定性和隨機(jī)性的重要指標(biāo),其計(jì)算過程可以用如下公式加以表述
(21)
其中,gi表示的是第i個(gè)灰度級(jí),p(gi) 表示的是灰度級(jí)gi在圖像中所占的比列。對于加解密圖像,信息熵的測試結(jié)果見表2。
從表2可以看出,原始明文圖像的信息熵相比于加密后的圖像的信息熵值較低,呈現(xiàn)出規(guī)律性。而在加密壓縮后,信息熵值都接近于理論值8,表示加密圖像均具有良好的加密效果。同時(shí),壓縮比較低時(shí)信息熵較差,表示高壓縮比會(huì)一定程度上影響加密的效果,隨著壓縮比的提升,R,G,B各通道的信息熵逐漸變大。表3是大小為256×256×3的密文Lena圖在CR=1時(shí)所計(jì)算出的信息熵,從表中可以看出,相比于一些加密算法,本文提出的算法熵值更接近于理論值8。
表2 明文密文圖像信息熵值
表3 不同算法Lena(256×256×3)圖信息熵比較
在圖像加密中,加密效果的好壞還可以用圖像像素相關(guān)性分析來加以評測。明文圖像由于呈現(xiàn)規(guī)律性,相鄰像素往往相關(guān)性較強(qiáng),而密文圖像由于其像素點(diǎn)呈現(xiàn)隨機(jī)性,相關(guān)性較差。關(guān)于相關(guān)性的計(jì)算過程可以用如下公式加以表示
(22)
(23)
(24)
(25)
其中,x′,y′表示的是兩個(gè)相鄰的圖像像素序列,r表示的是每組序列當(dāng)中隨機(jī)選取的像素個(gè)數(shù)。為了方便測試,選取明文圖像和壓縮比為1的加密圖像進(jìn)行分析,信息熵的測試結(jié)果見表4。
從表4可以看出,對于明文圖像的各個(gè)通道,無論水平、垂直還是對角線方向,相關(guān)性的值都接近于1,表示對應(yīng)像素點(diǎn)具有相關(guān)性。而加密圖像的所有相關(guān)性系數(shù)則接近于0,表示對應(yīng)像素點(diǎn)幾乎不具有相關(guān)性。以R通道為例,加解密圖像在水平、垂直和對角線方向的相關(guān)性分布如圖9所示。
表4 明文密文圖像相關(guān)性系數(shù)
圖9 加解密圖像R通道相關(guān)性
從圖9可以與表3中類似的結(jié)論,這表明了本文算法具有良好的加密效果,使得規(guī)則的圖像無法識(shí)別,實(shí)現(xiàn)了魯棒加密。
峰值信噪比(PSNR)是用來測試解密后重構(gòu)圖像質(zhì)量的重要指標(biāo),其公式可以表述如下
(26)
(27)
其中,MSE表示均方誤差,pij和cij分別表示明文和密文圖像在第i行,第j列的像素值,xp表示圖像像素的最大數(shù)值。對于如上的加密壓縮算法,不同壓縮比下各通道的PSNR值見表5。
表5 密文圖像PSNRs/dB比較
從表5中可以看出,不同壓縮比下,重構(gòu)圖像的不同分量計(jì)算得到的PSNR值均大于30,標(biāo)明了重構(gòu)后的圖像基本復(fù)原了原圖像的信息。當(dāng)壓縮比逐漸變大時(shí),PSNR也逐漸變大,表明對壓縮比要求不高時(shí),恢復(fù)的圖像更好。從表6可以得到,我們的算法具有更好的重建效果。
表6 不同算法Lena(256×256)PSNRS值比較
在針對圖像加密的攻擊中,攻擊者通常會(huì)改變明文圖像的某個(gè)值,然后用同樣的方法來進(jìn)行加密,最后通過比較原始圖像的加密圖和改變圖像的加密圖來試圖找到明文和密文之間的關(guān)聯(lián)性。而這種微小改變帶來的不同通常采用像素改變率(NPCR)和像素值平均改變強(qiáng)度(UACI)來加以測試,通常定義如下
(28)
(29)
其中,C(i,j) 表示圖像對應(yīng)位置的像素值。
表7是隨機(jī)選擇一個(gè)像素,將其值更改1,然后對修改后的圖像進(jìn)行加密。計(jì)算更改前后密文圖像的NPCR和UACI值,我們可以發(fā)現(xiàn)加密算法對明文圖像的微小變化非常敏感。因此,該密碼系統(tǒng)能夠抵抗差分攻擊。
表7 NPCR和UACI
一個(gè)好的加密方法,應(yīng)該是對除了明文之外的密鑰也同樣敏感的,對密鑰的任意改變也將導(dǎo)致加密的結(jié)果發(fā)生極大的變化。本文中,固定壓縮比為0.25,我們對x0,y0,θ0,p0密鑰分別做微小改變10-15得到如下的加密結(jié)果。
通過觀察圖10可以發(fā)現(xiàn),當(dāng)任意密鑰發(fā)生微小變化時(shí),得到的壓縮加密圖像已經(jīng)和正確密鑰加密后的壓縮加密圖像完全不同,這表明本文所提算法的有效性和魯棒性。
圖10 不同密鑰加密圖像及差圖像
本文通過耦合兩個(gè)一維混沌映射,構(gòu)造了一類超混沌系統(tǒng),并對該混沌系統(tǒng)進(jìn)行了動(dòng)力學(xué)分析和隨機(jī)性測試,發(fā)現(xiàn)該系統(tǒng)具有良好的混沌性質(zhì)并可產(chǎn)生優(yōu)質(zhì)的偽隨機(jī)信號(hào)。再此基礎(chǔ)上,進(jìn)一步設(shè)計(jì)了一種基于分塊壓縮感知的壓縮加密算法,成功實(shí)現(xiàn)了不同壓縮比下的加密和壓縮。針對RGB彩色圖像,我們進(jìn)行了分析實(shí)驗(yàn),通過測試直方圖、信息熵、相關(guān)性系數(shù)、PSNR值等指標(biāo),可以得出結(jié)論,本文所設(shè)計(jì)方法不僅具有有效性,同時(shí)具有魯棒性,可以對任意大小的彩色圖像成功實(shí)現(xiàn)有效加密和壓縮。