李 涵,葛 斌
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,圖像作為一種信息載體被廣泛使用.但由于圖像信息量大、冗余度高的特點(diǎn),傳統(tǒng)的加密算法,如DES(Data Encryption Standard)等對(duì)文本進(jìn)行加密的算法[1],已經(jīng)不適用于對(duì)圖像進(jìn)行加密.由于混沌映射函數(shù)具有對(duì)初值敏感性、偽隨機(jī)性、非周期性等特點(diǎn),被廣泛應(yīng)用到隨機(jī)序列的生成,這使得混沌加密算法受到眾多學(xué)者的關(guān)注[2-10].
混沌映射包括:低維映射與高維映射,其中,一維Logistic混沌映射函數(shù),形式簡(jiǎn)單且運(yùn)算效率高,被廣泛使用[3],但其安全性較低;高維映射參數(shù)多,安全性高,但其效率較低[4];因此,一些學(xué)者通過(guò)改進(jìn)一維混沌映射,提高混沌序列的隨機(jī)性[5-7].周輝等[6]通過(guò)構(gòu)造2維Henon-Sine映射,提高混沌映射函數(shù)的性能.對(duì)于加密系統(tǒng)而言,混沌序列應(yīng)用到置換與擴(kuò)散操作中,增強(qiáng)了混沌序列的隨機(jī)性,加密系統(tǒng)的安全性也隨之提高.
對(duì)于圖像加密算法而言,像素級(jí)的置亂操作僅僅能改變像素的位置,破壞相鄰像素之間的相關(guān)性,但是每個(gè)像素值在整張圖像中出現(xiàn)的頻率并沒(méi)有改變.因此,像素級(jí)的置亂操作不能抵抗統(tǒng)計(jì)分析攻擊.而對(duì)圖像中像素進(jìn)行bit位置亂操作卻能夠同時(shí)改變像素值的位置和大小,算法效率較高,能夠達(dá)到抵抗統(tǒng)計(jì)攻擊的目的[9-10].
本文選擇憶阻器神經(jīng)網(wǎng)絡(luò),將其更新的權(quán)值作為混沌系統(tǒng)的密鑰,使用生成的混沌隨機(jī)序列完成圖像的置亂和擴(kuò)散;并通過(guò)密鑰空間分析、信息熵分析、直方圖分析、相關(guān)性分析等進(jìn)行安全性分析.
通過(guò)引入指數(shù)函數(shù)ek,對(duì)1-D Logistic映射進(jìn)行改進(jìn),xk為1-D Logistic映射,復(fù)合指數(shù)混沌系統(tǒng)yk定義為:
其中:μ?[1,4],步長(zhǎng)為10-3,對(duì)原混沌映射函數(shù)進(jìn)行改進(jìn)后,其混沌特性明顯增強(qiáng).由圖1可以觀(guān)察到其混沌范圍變廣;當(dāng)參數(shù)μ>2.7時(shí),函數(shù)已完全進(jìn)入混沌狀態(tài),且沒(méi)有周期加倍的分岔現(xiàn)象.
圖1 復(fù)合指數(shù)混沌系統(tǒng)
本文所考慮的自相關(guān)性是指混沌系統(tǒng)在經(jīng)過(guò)步長(zhǎng)為d而產(chǎn)生序列長(zhǎng)度為L(zhǎng)的迭代過(guò)程中,一個(gè)步長(zhǎng)的取值與另一步長(zhǎng)取值的依賴(lài)關(guān)系,其公式可以表示為:
其中:Rac為自相關(guān)系數(shù),x(n)為序列值.
輸入初始值x0=0.2,μ=4到混沌系統(tǒng),對(duì)獲得的長(zhǎng)度為65 536的混沌隨機(jī)序列x1進(jìn)行分析.從圖2可以看出,隨機(jī)序列在滯留間隔內(nèi)只有一個(gè)最高峰,且相關(guān)性在x軸上下波動(dòng),相關(guān)性系數(shù)接近于0.
圖2 隨機(jī)序列自相關(guān)性
Lyapunov指數(shù)是識(shí)別混沌運(yùn)動(dòng)的一個(gè)重要數(shù)值特征,當(dāng)出現(xiàn)數(shù)值為正數(shù)時(shí),系統(tǒng)則產(chǎn)生混沌現(xiàn)象.由于在一維混沌映射中,其仿真數(shù)值并不是很理想.
本文提出的混沌系統(tǒng)則表現(xiàn)出較好的混沌特性.從圖3可以觀(guān)察到,混沌系統(tǒng)的Lyapunov指數(shù)皆為正值,表示其具有良好的混沌特性.
NIST SP 800-22 Test Suite為隨機(jī)性檢測(cè)工具,其中介紹了15種檢測(cè)隨機(jī)性的統(tǒng)計(jì)學(xué)方法.本文使用隨機(jī)性檢驗(yàn)套件對(duì)混沌隨機(jī)序列進(jìn)行測(cè)試,為滿(mǎn)足NIST檢驗(yàn)的15項(xiàng)測(cè)試要求,首先對(duì)1 000 000個(gè)混沌序列值進(jìn)行二值化處理,然后對(duì)取得的1 000 000位二進(jìn)制序列進(jìn)行NIST檢驗(yàn).
對(duì)于15項(xiàng)隨機(jī)性檢驗(yàn),每一項(xiàng)都會(huì)產(chǎn)生[0,1]的P值,當(dāng)P值大于顯著性水平(α=0.01)時(shí),則表示二進(jìn)制序列通過(guò)測(cè)試且滿(mǎn)足隨機(jī)性特點(diǎn).通過(guò)表1可以觀(guān)察到,所取得的隨機(jī)序列通過(guò)了NIST隨機(jī)性檢驗(yàn),混沌序列具有良好的隨機(jī)特性.
表1 NIST檢驗(yàn)
憶阻器模型是由兩層鉑觸點(diǎn)和兩層TiO2薄膜組成,其中一層由于氧空位的摻雜而起到半導(dǎo)體的作用,而另一層則是顯示出絕緣性能,摻雜區(qū)的寬度可由通過(guò)憶阻器的電荷來(lái)確定.由于外界的激發(fā),摻雜區(qū)的氧空位出現(xiàn)了漂移,使區(qū)域之間的邊界向同一方向移動(dòng)[11].
在描述邊界偏移速率時(shí),同時(shí)考慮到憶阻器內(nèi)部,以及邊界條件的漂移行為使離子產(chǎn)生非線(xiàn)性狀態(tài),選擇經(jīng)典的Joglekar窗口函數(shù)對(duì)摻雜漂移行為進(jìn)行建模;在文獻(xiàn)[8]中,當(dāng)p=1時(shí),憶阻器的非線(xiàn)性特性最強(qiáng),則非線(xiàn)性窗口函數(shù)f(x)表示為:
憶阻器阻值M(t)為:
其中:Ron和Roff分別指憶阻器的低、高電阻,q(t)為流過(guò)憶阻器的電流,為參數(shù),,μv為平均遷移率,約為10-14m2s-1V-1.
由于憶阻器電導(dǎo)為其阻值的倒數(shù),則憶阻器電導(dǎo)G(t)為:
憶阻器電導(dǎo)對(duì)時(shí)間t進(jìn)行微分,可得到關(guān)于電導(dǎo)變化率的方程為:
由于混沌多項(xiàng)式的遞歸和正交特性,被選擇作為神經(jīng)網(wǎng)絡(luò)的激活函數(shù),本文選擇Che?byshevⅡ類(lèi)多項(xiàng)式作為神經(jīng)網(wǎng)絡(luò)的激活函數(shù).
神經(jīng)網(wǎng)絡(luò)的輸出.本文選擇ChebyshevⅡ正交多項(xiàng)式作為全連接層神經(jīng)網(wǎng)絡(luò)的激活函數(shù),x為輸入,wi為權(quán)值,Ci(t)為激活函數(shù),則輸出層y為:
計(jì)算誤差:
其中:f(x)為期望輸出,y為實(shí)際輸出.
權(quán)值更新.使用憶阻器電導(dǎo)率?G代替?w,當(dāng)電流很小時(shí),憶阻器電導(dǎo)的變化也很小,趨近于0;當(dāng)電流值為±4 mA時(shí),憶阻器電導(dǎo)會(huì)產(chǎn)生很大的變化,由憶阻方程推導(dǎo)出的權(quán)值更新方程為:
利用誤差ei代替為ei的積分,η為學(xué)習(xí)率,Ci為Chebyshev混沌多項(xiàng)式.
計(jì)算所得的權(quán)值作為加密過(guò)程中的密鑰,且加密解密都使用同一個(gè)神經(jīng)網(wǎng)絡(luò),如圖4所示.
圖4 神經(jīng)網(wǎng)絡(luò)
STEP1:初始值密鑰的選取.將明文像素矩陣連同在明文像素矩陣中隨機(jī)選取的像素值x作為混沌神經(jīng)網(wǎng)絡(luò)的輸入,設(shè)置輸入層和隱層之間的權(quán)值為1,混沌神經(jīng)網(wǎng)絡(luò)一經(jīng)確定輸入值和權(quán)值,便向輸出快速收斂并進(jìn)行權(quán)值的更新.將混沌神經(jīng)網(wǎng)絡(luò)得到的權(quán)值wi作為混沌系統(tǒng)的密鑰值,其中算法1為混沌系統(tǒng)初始值,以及控制參數(shù)的更新算法.
STEP2:混沌序列的生成.使用算法1獲得混沌系統(tǒng)的初始值與控制參數(shù)x1,0、μ1,進(jìn)行N0+l次的迭代后,為避免暫態(tài)效應(yīng),省略掉前面的N0個(gè)值而保留后面的l個(gè)值,生成混沌序列S={s1,s2,s3,…,sl},其中l(wèi)=M×N,M為明文像素矩陣的行,N為明文像素矩陣的列.
STEP3:獲得索引數(shù)組,完成像素級(jí)置亂.將混沌序列S={s1,s2,s3,…,sl}轉(zhuǎn)置為M×N混沌矩陣后,對(duì)其進(jìn)行逐行逐列的排序,得到索引矩陣D;按照索引矩陣D對(duì)明文像素矩陣P進(jìn)行置亂操作,得到置亂后像素矩陣P′.
STEP4:初始值選擇.同樣使用算法1獲得混沌系統(tǒng)的初始值與控制參數(shù)x2,0、μ2,分別進(jìn)行N0+8L次的迭代,將產(chǎn)生的混沌序列組合成序列W={w1,w2,…,w8L}.
STEP5:bit位重組.將P′中每個(gè)像素值轉(zhuǎn)化成二進(jìn)制的形式Q,如Q(1,1)={1 0 000 001};將混沌序列W轉(zhuǎn)置為M×8N的矩陣,對(duì)其進(jìn)行排序后,得到索引數(shù)組C;按照索引數(shù)組C對(duì)序列Q中的元素進(jìn)行重新排列,組合成新的序列A,即為bit位置亂后的序列.
STEP6:密鑰序列.首先,使用算法1獲得混沌系統(tǒng)的初始值與控制參數(shù)x3,0、μ3,x4,0、μ4,進(jìn)行N0+l次的迭代后,獲得混沌隨機(jī)序列S1和S2;從置亂后圖像中隨機(jī)選取像素值A(chǔ)k,并在權(quán)值中選擇wk1、wk2加入到混沌隨機(jī)序列S1和S2中,使得混沌序列的長(zhǎng)度為l+1.為滿(mǎn)足擴(kuò)散階段的bit-wise異或,以及mod運(yùn)算的要求,使用算法2分別對(duì)混沌隨機(jī)序列S1和S2進(jìn)行處理.
本文在進(jìn)行bit位異或運(yùn)算過(guò)程中,引入前一階段的像素值,使得每一個(gè)值擴(kuò)散都與前一個(gè)步驟相關(guān),且與前一個(gè)密文像素點(diǎn)相關(guān),實(shí)現(xiàn)密文反饋機(jī)制,增強(qiáng)了加密算法的安全性.
STEP7:擴(kuò)散.第一輪:在擴(kuò)散加密時(shí),引入bit級(jí)置亂后的結(jié)果A(l),作為擴(kuò)散的輸入.
當(dāng)l=1時(shí),
當(dāng)1 第二輪:在擴(kuò)散加密時(shí),引入第一擴(kuò)散后的結(jié)果Enc1(l),作為擴(kuò)散的輸入. 當(dāng)l=L時(shí), 當(dāng)1≤l 得到最終的加密圖像為Enc2. 解密算法為加密算法的逆運(yùn)算,且解密過(guò)程中所使用的密鑰與加密過(guò)程中所使用的密鑰相同. 圖5為圖像加密前后的對(duì)比,加密算法已經(jīng)完全改變了圖像原本的特征,安全性較高.下文將從抗統(tǒng)計(jì)攻擊、信息熵、相鄰像素相關(guān)性等方面對(duì)加密結(jié)果進(jìn)行分析. 圖5 圖像加密結(jié)果 密鑰作為明文和密文之間相互轉(zhuǎn)化的參數(shù),其空間的大小是衡量加密效果的重要指標(biāo),密鑰位數(shù)越長(zhǎng),其密鑰空間越大;本文密鑰精度可以達(dá)到10-15,其密鑰集合E={x1,0,μ1,x2,0,μ2,x3,0,μ3,x4,0,μ4,Ak,wk1,wk2,N0};因此,密鑰空 間 為(1015×8)×256×256×256×3 000≈2435,其密鑰空間?2128,能夠抵抗窮舉式攻擊. 對(duì)于一張有完整意義的圖像,其相鄰像素之間必定存在較強(qiáng)的相關(guān)性,因此第三方可以通過(guò)對(duì)圖像像素值進(jìn)行統(tǒng)計(jì)分析,實(shí)現(xiàn)統(tǒng)計(jì)攻擊. 4.3.1 相鄰像素相關(guān)性分析 在加密算法中,通過(guò)對(duì)原圖像的像素進(jìn)行置亂操作,破壞了原圖像相鄰像素之間的相關(guān)性,進(jìn)而達(dá)到了抵抗統(tǒng)計(jì)攻擊的目的.在對(duì)圖像進(jìn)行相鄰像素相關(guān)性分析時(shí),分別從原圖像與密文圖像中隨機(jī)選擇5 000對(duì)像素點(diǎn),從水平、垂直及對(duì)角線(xiàn)三個(gè)方向,對(duì)像素點(diǎn)相鄰像素相關(guān)性進(jìn)行計(jì)算,計(jì)算公式為: 由圖6可以明顯地觀(guān)察到加密前,圖像相鄰像素之間的相關(guān)性近似為1;由表2可知,加密后其相關(guān)性幾乎為0,完全破壞了圖像相鄰像素之間的相關(guān)性,原圖像變得毫無(wú)意義. 表2 相鄰像素相關(guān)性 4.3.2 直方圖分析 直方圖是對(duì)圖像中像素出現(xiàn)頻率進(jìn)行統(tǒng)計(jì)的工具;圖7中,加密前,可以清楚地觀(guān)察到原圖像中每一個(gè)像素值占整張圖像像素個(gè)數(shù)的比例,而加密后的直方圖,每一個(gè)像素的分布都變得均勻,達(dá)到了抵抗統(tǒng)計(jì)攻擊的目的. 對(duì)信息源的不確定度的度量,是圖像所包含信息的重要指標(biāo).信息熵越大,則圖像所包含信息越多,其混亂程度越高,因此,也不容易被第三方獲得圖像所包含的信息.加密后信息熵的理想值為8.信息熵的數(shù)學(xué)公式為: 圖6 相鄰像素相關(guān)性分析 圖7 直方圖分析 表3為對(duì)不同圖像加密后的信息熵,從表中可以觀(guān)察到加密后的圖像信息熵為7.997 3,接近于8,加密算法不易被第三方獲取信息. 表3 信息熵 本文通過(guò)引入指數(shù)函數(shù),對(duì)一維Logistic混沌映射進(jìn)行改進(jìn),提出一種基于憶阻器神經(jīng)網(wǎng)絡(luò)與改進(jìn)Logistic混沌映射的圖像加密算法,仿真實(shí)驗(yàn)證明提出的混沌映射的隨機(jī)性明顯提高;憶阻器神經(jīng)網(wǎng)絡(luò)的應(yīng)用,為加密系統(tǒng)的密鑰提供了選擇;并且神經(jīng)網(wǎng)絡(luò)的輸入與明文相關(guān),使得混沌系統(tǒng)的初始值與明文相關(guān),達(dá)到了一次一密的Shannon完善保密性標(biāo)準(zhǔn);雙重置亂算法使得加密結(jié)果能夠抵抗統(tǒng)計(jì)分析攻擊;雙向擴(kuò)散算法使得每一個(gè)像素的影響擴(kuò)散到整張圖像,加密算法的安全性提高,能夠抵抗典型的攻擊.3.2 解密算法
4 實(shí)驗(yàn)結(jié)果與安全性分析
4.1 加密結(jié)果
4.2 密鑰空間
4.3 統(tǒng)計(jì)攻擊分析
4.4 信息熵分析
5 結(jié)語(yǔ)