韋丞婧,李國東
(桂林電子科技大學(xué)數(shù)學(xué)與計算科學(xué)學(xué)院,廣西桂林 541010)
在互聯(lián)網(wǎng)技術(shù)不斷發(fā)展、信息傳遞越發(fā)頻繁的時代,各種形式的信息在網(wǎng)絡(luò)上的傳輸極大地方便了人們的生活與工作。但在圖像和視頻的傳輸過程中,這些信息往往容易遭到非法竊取、篡改和傳播,造成數(shù)據(jù)泄露,信息的安全得不到保障[1],尤其是在軍事、航天、醫(yī)學(xué)等一些關(guān)鍵領(lǐng)域,圖像和視頻信息的泄露可能會造成不可估量的損失。
混沌系統(tǒng)因具有確定性、隨機性、初值敏感性、遍歷性等特點[2],在圖像加密算法設(shè)計中得到廣泛運用[3]。同時,目前對混沌系統(tǒng)理論的研究也不斷深入[4-7]。
在圖像加密設(shè)計研究中,研究者提出了許多針對單幅圖像的加密算法設(shè)計。文獻[8]提出了改進的Logistic 映射方法,運用置亂-擴散同時操作的方式對圖像進行加密。文獻[9]提出了一種對多圖像重組加密的算法,運用L-F 級聯(lián)混沌生成混沌序列,實現(xiàn)了對多幅不同尺寸的圖像進行加密。文獻[10]提出由Logistic映射改進的復(fù)合混沌系統(tǒng),設(shè)計了一種新的S 盒運用于加密。一維混沌映射簡單直接,能夠快速生成混沌序列,提高加密的速度,但其參數(shù)少且形式簡單,容易遭到窮舉攻擊。文獻[11]在使用低維混沌映射的基礎(chǔ)上,提出結(jié)合動態(tài)DNA 編碼加密的算法,但根據(jù)混沌序列對圖像分塊選取不同DNA 編碼規(guī)則增加了加密用時,效率不高。文獻[12]在一維Logistic 混沌映射的基礎(chǔ)上進行改進,擴大了混沌序列取值的范圍,但該方法參數(shù)少,密鑰空間較小。文獻[13]提出使用混沌系統(tǒng)與壓縮感知的方法對圖像進行加密,增加了算法的復(fù)雜度,但由于加密過程有損,盡可能降低圖像質(zhì)量損失的方案設(shè)計較困難。
高維混沌系統(tǒng)具有復(fù)雜的動力學(xué)特性,而低維混沌系統(tǒng)應(yīng)用在加密中安全性不足,這是因為低維混沌系統(tǒng)雖有正的李雅普諾夫指數(shù),但值不夠大,且容易發(fā)生簡并,導(dǎo)致混沌動力學(xué)特性退化。同時,低維混沌系統(tǒng)的可變參數(shù)較少,導(dǎo)致密鑰空間不大,無法抵御窮舉攻擊[14]。文獻[7]提出運用細(xì)胞神經(jīng)網(wǎng)絡(luò)(Cellular Neural Network,CNN)混沌系統(tǒng)和Lorenz 混沌系統(tǒng)進行雙擴散加密的方法,增加了加密算法的復(fù)雜度和密鑰空間,但高維混沌系統(tǒng)結(jié)構(gòu)復(fù)雜,增加了計算用時[1],難以對信息量較大的視頻圖像進行加密。對于多圖像的加密方案設(shè)計,文獻[15]將多幅圖像轉(zhuǎn)換成二維碼的方式,根據(jù)光學(xué)加密原理進行組合加密,實現(xiàn)了對多幅圖像的快速加密,提高了效率,但圖像轉(zhuǎn)換二維碼過程復(fù)雜,在實際應(yīng)用中難以實現(xiàn)。在對視頻加密的研究中,部分研究者提出對視頻進行選擇性加密的方法。文獻[16]提出了先對視頻碼流進行分析選擇,再對選取的部分進行加密的方法,節(jié)省了視頻加密所需要的時間。然而,這一類視頻加密算法在加密過程中需要對視頻進行壓縮,這會對原視頻質(zhì)量產(chǎn)生影響,因而所設(shè)計的加密方案不是無損的。
針對以上問題,本文提出一種視頻幀逐一加密與組合加密相結(jié)合的視頻圖像加密算法。對視頻幀逐幀加密,采用計算速度較快的Logistic 混沌映射,對每幀圖像使用哈希函數(shù)生成哈希值,計算控制每幀加密對應(yīng)的混沌序列初值,生成混沌序列,再對視頻幀進行逐一異或,達(dá)到一幀一密的效果。在此基礎(chǔ)上,將所有視頻幀進行組合,采用動力學(xué)特性更為復(fù)雜的六維細(xì)胞神經(jīng)網(wǎng)絡(luò)混沌系統(tǒng)生成混沌序列,根據(jù)混沌序列對組合矩陣進行置亂擴散,再分解為單幀圖像完成加密。
1988 年,細(xì)胞神經(jīng)網(wǎng)絡(luò)(CNN)首次由CHUA 等提出[17],其以細(xì)胞為基本單位,是一種局部互聯(lián)的神經(jīng)網(wǎng)絡(luò)系統(tǒng)。由M行、N列個細(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]:
計 算Lyapunov 指 數(shù),當(dāng)t→∞時,λ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個正的李雅普諾夫指數(shù),說明系統(tǒng)是超混沌系統(tǒng)。相比于僅使用一個一維混沌映射產(chǎn)生的6個混沌序列,使用六維CNN 混沌系統(tǒng)產(chǎn)生的6個混沌序列動力學(xué)特性更復(fù)雜,隨機性更高。因為具有2 個及以上正的李雅普諾夫指數(shù)的混沌序列表明混沌軌道能夠從多個維度產(chǎn)生分離,從而增加了不同序列間數(shù)值的隨機性。
Logistic 混沌映射是最簡單的一維混沌映射。1995 年,PHATAK 對Logistic 混沌映射的混沌特性進行了研究[19],給出其表達(dá)式為:
其 中:Xn∈(0,1),n=1,2,…。經(jīng)研究表明,當(dāng)μ∈[3.569 945 627,4]時,序列Xn處于混沌狀態(tài)。該一維混沌序列計算形式簡單,且有很好的偽隨機序列特性,被廣泛運用于圖像加密中。
獲取混沌序列首先需要確定初始值[20]。根據(jù)混沌系統(tǒng)的初值敏感性,當(dāng)初值僅發(fā)生微小變化時就會使得混沌序列的數(shù)值發(fā)生很大的變化。因此,在本文算法中,對視頻每隔固定幀數(shù)選取一個視頻幀,利用哈希函數(shù)生成該視頻幀圖像信息的摘要,并根據(jù)摘要信息計算更新偽隨機序列的初值,以用于對視頻的逐幀加密。將每次加密所用到的混沌系統(tǒng)的初值作為密鑰,使得算法的密鑰與視頻明文圖像相關(guān),所需要加密的視頻圖像不同,產(chǎn)生的密鑰也不同。
將短視頻按幀分成s張尺寸都為M×N的圖像,間隔f幀更新一次混沌序列的初值,根據(jù)第1+nf(n=0,1,…;1+nf≤s)幀圖像的像素矩陣,使用SHA-256 哈希函數(shù)生成256 位二進制表示的哈希值L1+nf:
將初值代入到Logistic 混沌系統(tǒng)中,迭代100+MN-1 次,去掉前100 個值得到混沌序列x1+nf(t),t=101,102,…,100+MN-1,再將混沌序列轉(zhuǎn)換成取值范圍在[0,255]之間的數(shù):
將s個M×N的像素矩陣轉(zhuǎn)成二進制,組合成一個MN×8 的矩陣,根據(jù)組合矩陣使用SHA-256 哈希函數(shù)生成256 位哈希值C:
將KC 轉(zhuǎn)化成十進制數(shù)C′:
從C′中從左到右取,每10 位數(shù)字組成一個數(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 個混沌序列,去掉前100 個值,得到x(t)={x1(t),x2(t),x3(t),x4(t),x5(t),x6(t)},t=101,102,…,100+MN-1。對混沌序列做以下處理,將序列的取值范圍變成[1,M×N]:
本文對多幀圖像組合的方法采用類似于計算機使用二進制儲存信息的方式。例如,十進制數(shù)11 和其二進制形式1011 之間相互轉(zhuǎn)換的規(guī)則為:
同樣地,設(shè)視頻共有s幀,將視頻幀I={I1,I2,…,Is}轉(zhuǎn)換成 二進制,得 到是M×N行8 列、元素取值為0 或1 的矩陣,再做以下運算得到組合矩陣P:
由于組合矩陣的每一行表示所有視頻幀在相同位置的像素值,因此對組合矩陣進行置亂不僅會改變像素點的值,也會改變像素點的位置。
對組合矩陣P再按十進制轉(zhuǎn)二進制的方式,可以重新分解成s個M×N行8 列的二進制矩陣:
以灰度視頻圖像為例,完整的加密步驟描述如下:
1)將視頻按幀分成s個M×N的圖像像素矩陣。
2)設(shè)置更新Logistic 混沌初值的幀間隔f,對第1+nf(n=0,1,…;1+nf≤s) 個像素 矩陣分 別使用SHA-256 哈希函數(shù)生成圖像的哈希值,經(jīng)過2.1 節(jié)所描述的算法計算得到加密第1+nf幀到第(n+1)f幀圖像對應(yīng)的Logistic 混沌序列的初值x1+nf(0),代入Logistic 混沌系統(tǒng)迭代得到n+1 個混沌序列x1+nf(t),并將序列按式(9)處理成取值范圍為[0,255]的偽隨機序列S1+nf(t)。
3)將Logistic 混沌序列S1+nf分別與第1+nf幀~第(n+1)f幀圖像像素矩陣I1+nf,I1+nf+1,…,I(n+1)f按位異或,最終得到經(jīng)過逐幀加密的視頻幀。
5)對組合矩陣P按照2.2節(jié)所述方法,使用SHA-256函數(shù)生成組合矩陣的哈希值C,經(jīng)過計算得到CNN混沌系統(tǒng)的初值x(0),代入CNN 混沌系統(tǒng)迭代得到6 個混沌序列x(t),并將序列按式(12)處理成取值范圍為[1,M×N]的偽隨機序列S。
6)按從左到右、從上到下的順序?qū)(i,j)的值與P(u,ν)的值互換,其中u,ν計算公式如下;
7)將替換后的組合矩陣按式(15)重新分解為s個二進制矩陣Ei(i=1,2,…,s),轉(zhuǎn)回十進制表示形式,即得到s幀加密視頻幀
由于本文設(shè)計的加密算法為無損加密算法,因此解密過程即為加密過程的逆過程。將加密步驟用流程圖表示,如 圖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)幀圖像對應(yīng)的Logistic混沌序列的初值;x1(0),x2(0),x[s/52]+1(0)為CNN 混沌序列的初值,S1+i×f(t)為第1+i×f(i=1,…,n) 幀圖像 對應(yīng)的 Logistic 混沌序 列;S1(t),S2(t),S[s/52]+1(t)為對應(yīng)的CNN 混沌序列。
圖1 加密流程Fig.1 Encryption process
選取2 個320×240 視頻的前12 幀圖像作為仿真實驗中需要加密的圖像。在逐幀加密中,對每一幀圖像都更新Logistic 混沌序列的初值,即更新初值的幀間隔f=1。將本文算法中六維CNN 混沌序列改為初值不同、參數(shù)相同計算生成的6 個Logistic 混沌序列,同樣對視頻圖像進行加密,比較兩種加密方案的安全性能。經(jīng)過本文算法加密,分別得到2 個視頻圖像中第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
信息熵是對信息量的量化度量,信息熵越接近8,表示圖像所含信息量越小,隨機性越強。本文計算了視頻A 和視頻B 每幀圖像加密前后的信息熵,如表1 所示。表2 給出了視頻A 加密后平均每幀的信息熵,和僅使用一維Logistic 混沌映射進行加密、其他文獻提出的圖像加密算法做比較。
表1 視頻幀加密前后信息熵Table 1 Entropy of video frames before and after encryption
表2 不同加密算法的信息熵比較Table 2 Entropy comparison of different encryption algorithms
由表1 和表2 可以看出:經(jīng)過加密后視頻幀的信息熵皆達(dá)到了7.997,加密效果較好;本文的算法相比于其他算法加密的信息熵處于較高水平,且相比于僅用一維混沌加密得到的信息熵更高一些。
在本文設(shè)計的算法中,所用的Logistic 混沌映射的1 個參數(shù)和6 階CNN 超混沌系統(tǒng)的78 個參數(shù)可作為密鑰,計算精度為計算機所能達(dá)到的精度10-14;在逐幀加密中,將每次更新得到的Logistic 映射的初值作為密鑰,算法中精度為10-10,可根據(jù)實際需要調(diào)整更新初值的間隔幀數(shù),間隔越大,密鑰個數(shù)越少;在組合加密中,每個組合矩陣所對應(yīng)的CNN 混沌系統(tǒng)的6 個初值作為密鑰,精度同樣為10-10。在本文的仿真實驗中,密鑰空間可以計算為1014×79×1010×12×1010×6=101286。本文算法密鑰空間足夠大,能夠抵御窮舉攻擊,且能夠根據(jù)實際加密需要調(diào)整密鑰個數(shù),提高加密效率。
在圖像加密中,密鑰的敏感性是評價加密算法是否安全的一個重要指標(biāo)。當(dāng)算法的密鑰僅發(fā)生微小變化,就能導(dǎo)致使解密失敗,從而很好地抵御攻擊。在本文實驗中,將生成第1 個Logistic 混沌的初值減小,再對密文圖像進行解密,得到第3 幀的解密圖像,如圖4 所示??梢钥闯?,本文提出的算法密鑰敏感性較強。
圖4 改變密鑰進行解密結(jié)果圖Fig.4 Decryption results of changing key to ecrypt
破譯者選用對指定像素點的值進行改變的不同明文圖像,對同一加密算法進行加密,通過分析每次加密后圖像之間的關(guān)聯(lián)與差別總結(jié)出加密算法,能夠達(dá)到破譯的目的。若明文圖像改變像素點的值后密文圖像像素點的值隨之改變,則能很好地抵抗差分攻擊。NPCR 和UACI 指標(biāo)能衡量密文圖像的抗差分攻擊能力,計算公式如下:
其中:C1(i,j)和C2(i,j)分別為明文圖像和更改了一個像素點的值的明文圖像經(jīng)過同樣加密算法加密后第i行第j列的像素值。
在仿真實驗中,分別將視頻A 和視頻B 第3 幀明文圖像第80 行第100 列的像素值改為0,經(jīng)過加密后計算圖像更改像素值前后的NPCR 值和UACI 值,并和僅使用一維Logistic 混沌映射進行加密、其他文獻加密算法進行比較,結(jié)果如表3 所示??梢钥闯?,僅僅更改其中一幀圖像的一個像素點的值,就能使每一幀的密文圖像大部分像素值都發(fā)生變化。加入CNN 高維混沌系統(tǒng)進行加密的UACI 值有更好的表現(xiàn),說明本文的加密算法較好。
表3 視頻幀NPCR 和UACI 的值Table 3 NPCR and UACI of video frames
視頻圖像在傳輸過程中還容易遭到剪切攻擊,導(dǎo)致部分?jǐn)?shù)據(jù)丟失的情況[8]。本文實驗測試視頻A丟失1/4、1/2 的數(shù)據(jù)時解密的效果。圖5 為解密前后第3 幀的圖像,可以看到,解密后的視頻幀仍能基本還原圖像,肉眼能夠分辨得出圖像內(nèi)容,說明本文算法的抗剪切攻擊能力較強。
圖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)過加密后像素點基本能在[0,255]范圍內(nèi)均勻取值。
圖6 視頻加密前后直方圖Fig.6 Histograms of video frames before and after encryption
明文圖像的相鄰像素點通常具有較高相關(guān)性,相關(guān)系數(shù)接近于1。對圖像進行加密需要消除這種相鄰像素點間的相關(guān)性,才能很好地抵抗統(tǒng)計攻擊。本文對視頻A 和視頻B 每一幀都在水平、垂直、對角3 個方向上計算其相關(guān)系數(shù),結(jié)果如表4、表5 所示??梢钥闯?,經(jīng)過本文加密后像素點相關(guān)系數(shù)都接近于0。
表4 視頻A 每幀相鄰像素點相關(guān)系數(shù)Table 4 Correlation indexes between adjacent pixels of video A
表5 視頻B 每幀相鄰像素點相關(guān)系數(shù)Table 5 Correlation indexes between adjacent pixels of video B
表6 給出了仿真實驗中視頻A 加密后平均每幀相關(guān)系數(shù),和僅使用一維Logistic 混沌映射進行加密、其他文獻提出的圖像加密算法進行比較??梢钥闯?,本文算法平均每幀相關(guān)系數(shù)最低達(dá)到0.003 749,很好地消除了像素點間的相關(guān)性,且使用CNN 高維超混沌系統(tǒng)生成序列進行加密后像素點間的相關(guān)系數(shù)更低。
表6 相鄰像素點相關(guān)系數(shù)比較Table 6 Comparison of correlation coefficients between adjacent pixels
選取視頻A 和視頻B 的第3 幀,分別繪制加密前后在水平、垂直、對角3 個方向上相鄰像素點的散點圖,如圖7、圖8 所示??梢钥闯觯曨l幀明文圖像的相鄰像素點散點圖呈線性趨勢,而加密后的散點圖均分布均勻。
圖7 視頻A 第3 幀加密前后相鄰像素點散點圖Fig.7 Adjacent pixel scatter plot of the third frame of video A before and after encryption
圖8 視頻B 第3 幀加密前后相鄰像素點散點圖Fig.8 Adjacent pixel scatter plot of the third frame of video B before and after encryption
本文提出一種對視頻幀圖像逐一加密、組合加密相結(jié)合的視頻加密算法。利用結(jié)構(gòu)簡單的一維Logistic 混沌序列逐幀加密,通過隨機性較強的六維CNN 混沌序列對視頻幀組合矩陣進行置亂。仿真實驗結(jié)果表明,該算法引入具有復(fù)雜動力學(xué)特性的高維混沌系統(tǒng),安全性能相比于僅使用一維混沌的算法要高,且具有較好的穩(wěn)定性,同時算法復(fù)雜度和密鑰個數(shù)可根據(jù)需要靈活改變,能適應(yīng)不同的視頻長度和不同的加密安全需要。此外,設(shè)計的組合加密方法能夠通過一輪操作實現(xiàn)像素點位置和取值同時改變,提高了加密算法的效率。相比于單幅圖像的加密,本文算法對視頻按幀進行加密,所需要處理的數(shù)據(jù)量更大,更適用于對包含重要信息的短視頻進行加密。后續(xù)將把算法推廣到對時長更長、清晰度更高的視頻進行加密,并進一步提高加密效率。