韋丞婧,李國(guó)東
(桂林電子科技大學(xué)數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,廣西桂林 541010)
在互聯(lián)網(wǎng)技術(shù)不斷發(fā)展、信息傳遞越發(fā)頻繁的時(shí)代,各種形式的信息在網(wǎng)絡(luò)上的傳輸極大地方便了人們的生活與工作。但在圖像和視頻的傳輸過(guò)程中,這些信息往往容易遭到非法竊取、篡改和傳播,造成數(shù)據(jù)泄露,信息的安全得不到保障[1],尤其是在軍事、航天、醫(yī)學(xué)等一些關(guān)鍵領(lǐng)域,圖像和視頻信息的泄露可能會(huì)造成不可估量的損失。
混沌系統(tǒng)因具有確定性、隨機(jī)性、初值敏感性、遍歷性等特點(diǎn)[2],在圖像加密算法設(shè)計(jì)中得到廣泛運(yùn)用[3]。同時(shí),目前對(duì)混沌系統(tǒng)理論的研究也不斷深入[4-7]。
在圖像加密設(shè)計(jì)研究中,研究者提出了許多針對(duì)單幅圖像的加密算法設(shè)計(jì)。文獻(xiàn)[8]提出了改進(jìn)的Logistic 映射方法,運(yùn)用置亂-擴(kuò)散同時(shí)操作的方式對(duì)圖像進(jìn)行加密。文獻(xiàn)[9]提出了一種對(duì)多圖像重組加密的算法,運(yùn)用L-F 級(jí)聯(lián)混沌生成混沌序列,實(shí)現(xiàn)了對(duì)多幅不同尺寸的圖像進(jìn)行加密。文獻(xiàn)[10]提出由Logistic映射改進(jìn)的復(fù)合混沌系統(tǒng),設(shè)計(jì)了一種新的S 盒運(yùn)用于加密。一維混沌映射簡(jiǎn)單直接,能夠快速生成混沌序列,提高加密的速度,但其參數(shù)少且形式簡(jiǎn)單,容易遭到窮舉攻擊。文獻(xiàn)[11]在使用低維混沌映射的基礎(chǔ)上,提出結(jié)合動(dòng)態(tài)DNA 編碼加密的算法,但根據(jù)混沌序列對(duì)圖像分塊選取不同DNA 編碼規(guī)則增加了加密用時(shí),效率不高。文獻(xiàn)[12]在一維Logistic 混沌映射的基礎(chǔ)上進(jìn)行改進(jìn),擴(kuò)大了混沌序列取值的范圍,但該方法參數(shù)少,密鑰空間較小。文獻(xiàn)[13]提出使用混沌系統(tǒng)與壓縮感知的方法對(duì)圖像進(jìn)行加密,增加了算法的復(fù)雜度,但由于加密過(guò)程有損,盡可能降低圖像質(zhì)量損失的方案設(shè)計(jì)較困難。
高維混沌系統(tǒng)具有復(fù)雜的動(dòng)力學(xué)特性,而低維混沌系統(tǒng)應(yīng)用在加密中安全性不足,這是因?yàn)榈途S混沌系統(tǒng)雖有正的李雅普諾夫指數(shù),但值不夠大,且容易發(fā)生簡(jiǎn)并,導(dǎo)致混沌動(dòng)力學(xué)特性退化。同時(shí),低維混沌系統(tǒng)的可變參數(shù)較少,導(dǎo)致密鑰空間不大,無(wú)法抵御窮舉攻擊[14]。文獻(xiàn)[7]提出運(yùn)用細(xì)胞神經(jīng)網(wǎng)絡(luò)(Cellular Neural Network,CNN)混沌系統(tǒng)和Lorenz 混沌系統(tǒng)進(jìn)行雙擴(kuò)散加密的方法,增加了加密算法的復(fù)雜度和密鑰空間,但高維混沌系統(tǒng)結(jié)構(gòu)復(fù)雜,增加了計(jì)算用時(shí)[1],難以對(duì)信息量較大的視頻圖像進(jìn)行加密。對(duì)于多圖像的加密方案設(shè)計(jì),文獻(xiàn)[15]將多幅圖像轉(zhuǎn)換成二維碼的方式,根據(jù)光學(xué)加密原理進(jìn)行組合加密,實(shí)現(xiàn)了對(duì)多幅圖像的快速加密,提高了效率,但圖像轉(zhuǎn)換二維碼過(guò)程復(fù)雜,在實(shí)際應(yīng)用中難以實(shí)現(xiàn)。在對(duì)視頻加密的研究中,部分研究者提出對(duì)視頻進(jìn)行選擇性加密的方法。文獻(xiàn)[16]提出了先對(duì)視頻碼流進(jìn)行分析選擇,再對(duì)選取的部分進(jìn)行加密的方法,節(jié)省了視頻加密所需要的時(shí)間。然而,這一類(lèi)視頻加密算法在加密過(guò)程中需要對(duì)視頻進(jìn)行壓縮,這會(huì)對(duì)原視頻質(zhì)量產(chǎn)生影響,因而所設(shè)計(jì)的加密方案不是無(wú)損的。
針對(duì)以上問(wèn)題,本文提出一種視頻幀逐一加密與組合加密相結(jié)合的視頻圖像加密算法。對(duì)視頻幀逐幀加密,采用計(jì)算速度較快的Logistic 混沌映射,對(duì)每幀圖像使用哈希函數(shù)生成哈希值,計(jì)算控制每幀加密對(duì)應(yīng)的混沌序列初值,生成混沌序列,再對(duì)視頻幀進(jìn)行逐一異或,達(dá)到一幀一密的效果。在此基礎(chǔ)上,將所有視頻幀進(jìn)行組合,采用動(dòng)力學(xué)特性更為復(fù)雜的六維細(xì)胞神經(jīng)網(wǎng)絡(luò)混沌系統(tǒng)生成混沌序列,根據(jù)混沌序列對(duì)組合矩陣進(jìn)行置亂擴(kuò)散,再分解為單幀圖像完成加密。
1988 年,細(xì)胞神經(jīng)網(wǎng)絡(luò)(CNN)首次由CHUA 等提出[17],其以細(xì)胞為基本單位,是一種局部互聯(lián)的神經(jīng)網(wǎng)絡(luò)系統(tǒng)。由M行、N列個(gè)細(xì)胞排列組成的細(xì)胞神經(jīng)網(wǎng)絡(luò)系統(tǒng)定義如下:

其中:Εr(i,j)為半徑為r的第i行第j列的細(xì)胞的鄰域;c(m,n)為鄰域內(nèi)的細(xì)胞。
細(xì)胞的狀態(tài)方程可表示如下:

輸出方程表示為:

其 中:|Wkl| ≤1,|xij(0)| ≤1,P>0,Rx>0;Q為閾值 常數(shù);yij為輸出變量;P為線性電容;Rx為線性電阻;A為反饋模板;B為控制模板。
研究表明,高維超混沌系統(tǒng)擁有更優(yōu)良的混沌特性。因此,本文選用六維細(xì)胞神經(jīng)網(wǎng)絡(luò)混沌系統(tǒng),其表達(dá)式如下[18]:

計(jì) 算Lyapunov 指 數(shù),當(dāng)t→∞時(shí),λ1=2.748 1,λ2=-2.984 4,λ3=1.241 1,λ4=-14.454 9,λ5=-1.412 3,λ6=-83.228 2,其中有2個(gè)正的李雅普諾夫指數(shù),說(shuō)明系統(tǒng)是超混沌系統(tǒng)。相比于僅使用一個(gè)一維混沌映射產(chǎn)生的6個(gè)混沌序列,使用六維CNN 混沌系統(tǒng)產(chǎn)生的6個(gè)混沌序列動(dòng)力學(xué)特性更復(fù)雜,隨機(jī)性更高。因?yàn)榫哂? 個(gè)及以上正的李雅普諾夫指數(shù)的混沌序列表明混沌軌道能夠從多個(gè)維度產(chǎn)生分離,從而增加了不同序列間數(shù)值的隨機(jī)性。
Logistic 混沌映射是最簡(jiǎn)單的一維混沌映射。1995 年,PHATAK 對(duì)Logistic 混沌映射的混沌特性進(jìn)行了研究[19],給出其表達(dá)式為:

其 中:Xn∈(0,1),n=1,2,…。經(jīng)研究表明,當(dāng)μ∈[3.569 945 627,4]時(shí),序列Xn處于混沌狀態(tài)。該一維混沌序列計(jì)算形式簡(jiǎn)單,且有很好的偽隨機(jī)序列特性,被廣泛運(yùn)用于圖像加密中。
獲取混沌序列首先需要確定初始值[20]。根據(jù)混沌系統(tǒng)的初值敏感性,當(dāng)初值僅發(fā)生微小變化時(shí)就會(huì)使得混沌序列的數(shù)值發(fā)生很大的變化。因此,在本文算法中,對(duì)視頻每隔固定幀數(shù)選取一個(gè)視頻幀,利用哈希函數(shù)生成該視頻幀圖像信息的摘要,并根據(jù)摘要信息計(jì)算更新偽隨機(jī)序列的初值,以用于對(duì)視頻的逐幀加密。將每次加密所用到的混沌系統(tǒng)的初值作為密鑰,使得算法的密鑰與視頻明文圖像相關(guān),所需要加密的視頻圖像不同,產(chǎn)生的密鑰也不同。
將短視頻按幀分成s張尺寸都為M×N的圖像,間隔f幀更新一次混沌序列的初值,根據(jù)第1+nf(n=0,1,…;1+nf≤s)幀圖像的像素矩陣,使用SHA-256 哈希函數(shù)生成256 位二進(jìn)制表示的哈希值L1+nf:


將初值代入到Logistic 混沌系統(tǒng)中,迭代100+MN-1 次,去掉前100 個(gè)值得到混沌序列x1+nf(t),t=101,102,…,100+MN-1,再將混沌序列轉(zhuǎn)換成取值范圍在[0,255]之間的數(shù):

將s個(gè)M×N的像素矩陣轉(zhuǎn)成二進(jìn)制,組合成一個(gè)MN×8 的矩陣,根據(jù)組合矩陣使用SHA-256 哈希函數(shù)生成256 位哈希值C:

將KC 轉(zhuǎn)化成十進(jìn)制數(shù)C′:

從C′中從左到右取,每10 位數(shù)字組成一個(gè)數(shù),共取60 位,再分別乘以10-10得到混沌序列的初值x(0)={x01(0),x02(0),x03(0),x04(0),x05(0),x06(0)}。
將x(0)代入六維CNN方程中,迭代100+M×N-1次,生成6 個(gè)混沌序列,去掉前100 個(gè)值,得到x(t)={x1(t),x2(t),x3(t),x4(t),x5(t),x6(t)},t=101,102,…,100+MN-1。對(duì)混沌序列做以下處理,將序列的取值范圍變成[1,M×N]:

本文對(duì)多幀圖像組合的方法采用類(lèi)似于計(jì)算機(jī)使用二進(jìn)制儲(chǔ)存信息的方式。例如,十進(jìn)制數(shù)11 和其二進(jìn)制形式1011 之間相互轉(zhuǎn)換的規(guī)則為:

同樣地,設(shè)視頻共有s幀,將視頻幀I={I1,I2,…,Is}轉(zhuǎn)換成 二進(jìn)制,得 到是M×N行8 列、元素取值為0 或1 的矩陣,再做以下運(yùn)算得到組合矩陣P:

由于組合矩陣的每一行表示所有視頻幀在相同位置的像素值,因此對(duì)組合矩陣進(jìn)行置亂不僅會(huì)改變像素點(diǎn)的值,也會(huì)改變像素點(diǎn)的位置。
對(duì)組合矩陣P再按十進(jìn)制轉(zhuǎn)二進(jìn)制的方式,可以重新分解成s個(gè)M×N行8 列的二進(jìn)制矩陣:

以灰度視頻圖像為例,完整的加密步驟描述如下:
1)將視頻按幀分成s個(gè)M×N的圖像像素矩陣。
2)設(shè)置更新Logistic 混沌初值的幀間隔f,對(duì)第1+nf(n=0,1,…;1+nf≤s) 個(gè)像素 矩陣分 別使用SHA-256 哈希函數(shù)生成圖像的哈希值,經(jīng)過(guò)2.1 節(jié)所描述的算法計(jì)算得到加密第1+nf幀到第(n+1)f幀圖像對(duì)應(yīng)的Logistic 混沌序列的初值x1+nf(0),代入Logistic 混沌系統(tǒng)迭代得到n+1 個(gè)混沌序列x1+nf(t),并將序列按式(9)處理成取值范圍為[0,255]的偽隨機(jī)序列S1+nf(t)。
3)將Logistic 混沌序列S1+nf分別與第1+nf幀~第(n+1)f幀圖像像素矩陣I1+nf,I1+nf+1,…,I(n+1)f按位異或,最終得到經(jīng)過(guò)逐幀加密的視頻幀。
5)對(duì)組合矩陣P按照2.2節(jié)所述方法,使用SHA-256函數(shù)生成組合矩陣的哈希值C,經(jīng)過(guò)計(jì)算得到CNN混沌系統(tǒng)的初值x(0),代入CNN 混沌系統(tǒng)迭代得到6 個(gè)混沌序列x(t),并將序列按式(12)處理成取值范圍為[1,M×N]的偽隨機(jī)序列S。
6)按從左到右、從上到下的順序?qū)(i,j)的值與P(u,ν)的值互換,其中u,ν計(jì)算公式如下;

7)將替換后的組合矩陣按式(15)重新分解為s個(gè)二進(jìn)制矩陣Ei(i=1,2,…,s),轉(zhuǎn)回十進(jìn)制表示形式,即得到s幀加密視頻幀
由于本文設(shè)計(jì)的加密算法為無(wú)損加密算法,因此解密過(guò)程即為加密過(guò)程的逆過(guò)程。將加密步驟用流程圖表示,如 圖1 所 示。其 中:L1+1×f、L1+2×f、L1+n×f和C1、C2、C[s/52]+1分別為根據(jù)視頻幀、組合矩陣使用SHA-256生成的哈希值;x1+i×f(0)為第1+i×f(i=1,…,n)幀圖像對(duì)應(yīng)的Logistic混沌序列的初值;x1(0),x2(0),x[s/52]+1(0)為CNN 混沌序列的初值,S1+i×f(t)為第1+i×f(i=1,…,n) 幀圖像 對(duì)應(yīng)的 Logistic 混沌序 列;S1(t),S2(t),S[s/52]+1(t)為對(duì)應(yīng)的CNN 混沌序列。

圖1 加密流程Fig.1 Encryption process
選取2 個(gè)320×240 視頻的前12 幀圖像作為仿真實(shí)驗(yàn)中需要加密的圖像。在逐幀加密中,對(duì)每一幀圖像都更新Logistic 混沌序列的初值,即更新初值的幀間隔f=1。將本文算法中六維CNN 混沌序列改為初值不同、參數(shù)相同計(jì)算生成的6 個(gè)Logistic 混沌序列,同樣對(duì)視頻圖像進(jìn)行加密,比較兩種加密方案的安全性能。經(jīng)過(guò)本文算法加密,分別得到2 個(gè)視頻圖像中第6、12 幀的明文圖像、加密圖像和解密圖像,如圖2、圖3 所示。

圖2 視頻A 部分幀加密和解密結(jié)果Fig.2 Encryption and decryption results forpartofframes ofvideoA

圖3 視頻B 部分幀加密和解密結(jié)果Fig.3 Encryption and decryption results for part of frames of video B
信息熵是對(duì)信息量的量化度量,信息熵越接近8,表示圖像所含信息量越小,隨機(jī)性越強(qiáng)。本文計(jì)算了視頻A 和視頻B 每幀圖像加密前后的信息熵,如表1 所示。表2 給出了視頻A 加密后平均每幀的信息熵,和僅使用一維Logistic 混沌映射進(jìn)行加密、其他文獻(xiàn)提出的圖像加密算法做比較。

表1 視頻幀加密前后信息熵Table 1 Entropy of video frames before and after encryption

表2 不同加密算法的信息熵比較Table 2 Entropy comparison of different encryption algorithms
由表1 和表2 可以看出:經(jīng)過(guò)加密后視頻幀的信息熵皆達(dá)到了7.997,加密效果較好;本文的算法相比于其他算法加密的信息熵處于較高水平,且相比于僅用一維混沌加密得到的信息熵更高一些。
在本文設(shè)計(jì)的算法中,所用的Logistic 混沌映射的1 個(gè)參數(shù)和6 階CNN 超混沌系統(tǒng)的78 個(gè)參數(shù)可作為密鑰,計(jì)算精度為計(jì)算機(jī)所能達(dá)到的精度10-14;在逐幀加密中,將每次更新得到的Logistic 映射的初值作為密鑰,算法中精度為10-10,可根據(jù)實(shí)際需要調(diào)整更新初值的間隔幀數(shù),間隔越大,密鑰個(gè)數(shù)越少;在組合加密中,每個(gè)組合矩陣所對(duì)應(yīng)的CNN 混沌系統(tǒng)的6 個(gè)初值作為密鑰,精度同樣為10-10。在本文的仿真實(shí)驗(yàn)中,密鑰空間可以計(jì)算為1014×79×1010×12×1010×6=101286。本文算法密鑰空間足夠大,能夠抵御窮舉攻擊,且能夠根據(jù)實(shí)際加密需要調(diào)整密鑰個(gè)數(shù),提高加密效率。
在圖像加密中,密鑰的敏感性是評(píng)價(jià)加密算法是否安全的一個(gè)重要指標(biāo)。當(dāng)算法的密鑰僅發(fā)生微小變化,就能導(dǎo)致使解密失敗,從而很好地抵御攻擊。在本文實(shí)驗(yàn)中,將生成第1 個(gè)Logistic 混沌的初值減小,再對(duì)密文圖像進(jìn)行解密,得到第3 幀的解密圖像,如圖4 所示。可以看出,本文提出的算法密鑰敏感性較強(qiáng)。

圖4 改變密鑰進(jìn)行解密結(jié)果圖Fig.4 Decryption results of changing key to ecrypt
破譯者選用對(duì)指定像素點(diǎn)的值進(jìn)行改變的不同明文圖像,對(duì)同一加密算法進(jìn)行加密,通過(guò)分析每次加密后圖像之間的關(guān)聯(lián)與差別總結(jié)出加密算法,能夠達(dá)到破譯的目的。若明文圖像改變像素點(diǎn)的值后密文圖像像素點(diǎn)的值隨之改變,則能很好地抵抗差分攻擊。NPCR 和UACI 指標(biāo)能衡量密文圖像的抗差分攻擊能力,計(jì)算公式如下:

其中:C1(i,j)和C2(i,j)分別為明文圖像和更改了一個(gè)像素點(diǎn)的值的明文圖像經(jīng)過(guò)同樣加密算法加密后第i行第j列的像素值。
在仿真實(shí)驗(yàn)中,分別將視頻A 和視頻B 第3 幀明文圖像第80 行第100 列的像素值改為0,經(jīng)過(guò)加密后計(jì)算圖像更改像素值前后的NPCR 值和UACI 值,并和僅使用一維Logistic 混沌映射進(jìn)行加密、其他文獻(xiàn)加密算法進(jìn)行比較,結(jié)果如表3 所示。可以看出,僅僅更改其中一幀圖像的一個(gè)像素點(diǎn)的值,就能使每一幀的密文圖像大部分像素值都發(fā)生變化。加入CNN 高維混沌系統(tǒng)進(jìn)行加密的UACI 值有更好的表現(xiàn),說(shuō)明本文的加密算法較好。

表3 視頻幀NPCR 和UACI 的值Table 3 NPCR and UACI of video frames
視頻圖像在傳輸過(guò)程中還容易遭到剪切攻擊,導(dǎo)致部分?jǐn)?shù)據(jù)丟失的情況[8]。本文實(shí)驗(yàn)測(cè)試視頻A丟失1/4、1/2 的數(shù)據(jù)時(shí)解密的效果。圖5 為解密前后第3 幀的圖像,可以看到,解密后的視頻幀仍能基本還原圖像,肉眼能夠分辨得出圖像內(nèi)容,說(shuō)明本文算法的抗剪切攻擊能力較強(qiáng)。

圖5 視頻A 第3 幀丟失部分?jǐn)?shù)據(jù)解密效果Fig.5 Decryption of the third frame of video A with partial data missing
分別繪制視頻A 和視頻B 的第6 幀、第12 幀明文圖像、密文圖像直方圖,如圖6 所示。可以看出,視頻幀原圖像直方圖分布及不均勻,呈現(xiàn)出了明顯的規(guī)律,經(jīng)過(guò)加密后像素點(diǎn)基本能在[0,255]范圍內(nèi)均勻取值。

圖6 視頻加密前后直方圖Fig.6 Histograms of video frames before and after encryption
明文圖像的相鄰像素點(diǎn)通常具有較高相關(guān)性,相關(guān)系數(shù)接近于1。對(duì)圖像進(jìn)行加密需要消除這種相鄰像素點(diǎn)間的相關(guān)性,才能很好地抵抗統(tǒng)計(jì)攻擊。本文對(duì)視頻A 和視頻B 每一幀都在水平、垂直、對(duì)角3 個(gè)方向上計(jì)算其相關(guān)系數(shù),結(jié)果如表4、表5 所示。可以看出,經(jīng)過(guò)本文加密后像素點(diǎn)相關(guān)系數(shù)都接近于0。

表4 視頻A 每幀相鄰像素點(diǎn)相關(guān)系數(shù)Table 4 Correlation indexes between adjacent pixels of video A

表5 視頻B 每幀相鄰像素點(diǎn)相關(guān)系數(shù)Table 5 Correlation indexes between adjacent pixels of video B
表6 給出了仿真實(shí)驗(yàn)中視頻A 加密后平均每幀相關(guān)系數(shù),和僅使用一維Logistic 混沌映射進(jìn)行加密、其他文獻(xiàn)提出的圖像加密算法進(jìn)行比較。可以看出,本文算法平均每幀相關(guān)系數(shù)最低達(dá)到0.003 749,很好地消除了像素點(diǎn)間的相關(guān)性,且使用CNN 高維超混沌系統(tǒng)生成序列進(jìn)行加密后像素點(diǎn)間的相關(guān)系數(shù)更低。

表6 相鄰像素點(diǎn)相關(guān)系數(shù)比較Table 6 Comparison of correlation coefficients between adjacent pixels
選取視頻A 和視頻B 的第3 幀,分別繪制加密前后在水平、垂直、對(duì)角3 個(gè)方向上相鄰像素點(diǎn)的散點(diǎn)圖,如圖7、圖8 所示。可以看出,視頻幀明文圖像的相鄰像素點(diǎn)散點(diǎn)圖呈線性趨勢(shì),而加密后的散點(diǎn)圖均分布均勻。

圖7 視頻A 第3 幀加密前后相鄰像素點(diǎn)散點(diǎn)圖Fig.7 Adjacent pixel scatter plot of the third frame of video A before and after encryption

圖8 視頻B 第3 幀加密前后相鄰像素點(diǎn)散點(diǎn)圖Fig.8 Adjacent pixel scatter plot of the third frame of video B before and after encryption
本文提出一種對(duì)視頻幀圖像逐一加密、組合加密相結(jié)合的視頻加密算法。利用結(jié)構(gòu)簡(jiǎn)單的一維Logistic 混沌序列逐幀加密,通過(guò)隨機(jī)性較強(qiáng)的六維CNN 混沌序列對(duì)視頻幀組合矩陣進(jìn)行置亂。仿真實(shí)驗(yàn)結(jié)果表明,該算法引入具有復(fù)雜動(dòng)力學(xué)特性的高維混沌系統(tǒng),安全性能相比于僅使用一維混沌的算法要高,且具有較好的穩(wěn)定性,同時(shí)算法復(fù)雜度和密鑰個(gè)數(shù)可根據(jù)需要靈活改變,能適應(yīng)不同的視頻長(zhǎng)度和不同的加密安全需要。此外,設(shè)計(jì)的組合加密方法能夠通過(guò)一輪操作實(shí)現(xiàn)像素點(diǎn)位置和取值同時(shí)改變,提高了加密算法的效率。相比于單幅圖像的加密,本文算法對(duì)視頻按幀進(jìn)行加密,所需要處理的數(shù)據(jù)量更大,更適用于對(duì)包含重要信息的短視頻進(jìn)行加密。后續(xù)將把算法推廣到對(duì)時(shí)長(zhǎng)更長(zhǎng)、清晰度更高的視頻進(jìn)行加密,并進(jìn)一步提高加密效率。