岳文文,魏勝非,周 凱,周培釗
(東北師范大學(xué)物理學(xué)院,吉林 長春 130024)
信息加密是保護信息安全的一種重要手段,圖像數(shù)據(jù)相對于文本數(shù)據(jù)而言,具有數(shù)據(jù)量大,數(shù)據(jù)相關(guān)性強和數(shù)據(jù)冗余信息大等特點,使傳統(tǒng)的基于文本的加密方法不再適用于圖像加密系統(tǒng)。因為混沌系統(tǒng)具有初值敏感性、內(nèi)在隨機性、遍歷性和非規(guī)則的有序性等核心特性,在密碼學(xué)領(lǐng)域得到了廣泛的研究和應(yīng)用[1]?;诨煦绲膱D像加密算法有著良好的發(fā)展前景,許多學(xué)者提出了各種優(yōu)秀的圖像加密算法。文獻(xiàn)[2]提出對明文圖像分別進(jìn)行了塊操作和整體操作,利用Logistic映射選擇分塊置亂的子塊和動態(tài)Arnold映射置亂,借助Tent映射、Sine映射進(jìn)行分塊擴散;結(jié)合Tent-Sine映射進(jìn)行整體擴散,得到最終的密文圖像。針對一維混沌系統(tǒng)結(jié)構(gòu)簡單,隨機性弱的缺點,文獻(xiàn)[3-5]提出使用二維復(fù)合混沌系統(tǒng)來加密圖像,產(chǎn)生序列的復(fù)雜度高,密鑰空間大,但初始密鑰與明文圖像無關(guān),不能很好地抵抗選擇明文攻擊。文獻(xiàn)[6]提出了一種二維 Chebyshev-Sine 映射,通過分析軌跡圖發(fā)現(xiàn)新二維混沌映射比一維混沌映射擁有更寬廣的混沌范圍和良好的遍歷性,對初始條件和系統(tǒng)參數(shù)具有高度敏感性,實現(xiàn)成本相對較低?;诖?,提出一種線性混合層圖像加密算法:通過行移位和列混合有效改變圖像像素空間位置和像素頻域中的值。文獻(xiàn)[7]提出一種混沌系統(tǒng)和脫氧核糖核酸 (Deoxyribonucleic Acid,DNA)編碼結(jié)合的圖像加密方法,但混沌系統(tǒng)的初始值與明文無關(guān),算法難以抵抗明文攻擊。文獻(xiàn)[8]提出了將超混沌映射和自編碼技術(shù)結(jié)合起來的圖像加密算法,該算法加密效果較好,但過于復(fù)雜,不利于實現(xiàn)。
本文提出一種與明文關(guān)聯(lián)的二維Logistic-Sine混沌系統(tǒng)(Two-Dimensional Logistic-Sine Chaotic System,2D-LSCS)加密算法。設(shè)計思想是利用HMAC-SHA256算法產(chǎn)生的256bit的消息認(rèn)證碼(Message Authentication Coad,MAC),一方面用來監(jiān)測圖像在加密傳輸過程中是否被篡改,另一方面,用來控制2D-LSCS混沌映射的初始值和參數(shù),利用2D-LSCS混沌映射產(chǎn)生4個偽隨機序列,分別應(yīng)用于前向擴散、置亂和后向擴散模塊。通過仿真,從信息熵、像素變化率(the Number of Pixels Change Rate,NPCR)、統(tǒng)一平均變化強度(Unified Average Change Intensify,UACI)和像素相關(guān)性、密鑰空間等因素來看,該方案加密效果比較理想。
哈希消息認(rèn)證碼[9](Hash-based Message Authentication Code,HMAC)是一種基于數(shù)據(jù)摘要算法和共享密鑰的消息認(rèn)證協(xié)議,它可以有效地防止數(shù)據(jù)在傳輸過程中被篡改,維護了數(shù)據(jù)的完整性、可靠性和安全性。HMAC算法除了需要數(shù)據(jù)摘要算法外,還需要一個密鑰。HMAC的密鑰可以是任何長度,如果密鑰的長度超過了摘要算法信息分組的長度,則首先使用摘要算法計算密鑰的摘要作為新的密鑰。密鑰的長度與安全強度是相關(guān)的,通常選取密鑰長度不小于所選用摘要算法輸出的信息摘要的長度。在本文中使用了單向散列函數(shù)SHA-256[10],輸入明文圖像和100字節(jié)的十六進(jìn)制外部密鑰可生成由64位十六進(jìn)制數(shù)表示的MAC值,此MAC值是一個和輸入的消息以及密鑰都相關(guān)的長度固定的比特序列。數(shù)字圖像和密鑰有任何微小的變化,那么產(chǎn)生的MAC值就會發(fā)生巨大的變化。
具體流程如下:
1)由于輸入密鑰長度大于摘要信息塊長度,因此使用摘要算法計算出一個長度為L的新密鑰。
2)將上一步得到的密鑰字符串與ipad做異或運算,得到序列ipadkey。
3)將需要處理的數(shù)據(jù)流與ipadkey結(jié)合,組成新的序列。
4)利用SHA-256函數(shù)生成64bit散列值n1。
5)將第一步得到的密鑰字符串與opad做異或運算得到序列opadkey。
6)將散列序列n1與opadkey結(jié)合,組成新的序列。
7)再次利用SHA-256函數(shù)生成64bit的散列值,輸出的結(jié)果就是最終的MAC值。
其中ipad和opad分別是輸入輸出助記符,其值0x36和0x5c。
本文采用的是Logistic混沌映射[11]和Sine混沌映射[12]進(jìn)行級聯(lián)得到二維復(fù)合混沌系統(tǒng),Logistic混沌映射的數(shù)學(xué)表達(dá)式如式(1)所示
xi+1=μxi(1-xi)
(1)
由圖1(a)中可以看出,當(dāng)控制參數(shù)3.569945627<μ≤4時,系統(tǒng)處于混沌狀態(tài)。
Sine混沌映射的數(shù)學(xué)表達(dá)式如式(2)所示
xi+1=βsin(πxi)
(2)
式中,β為Sine混沌映射的控制參數(shù),0<β<1,x為Sine混沌映射的狀態(tài)變量,0 圖1 三種混沌系統(tǒng)的分岔圖 本算法中使用了兩個一維混沌映射,由于一維混沌映射范圍小,結(jié)構(gòu)簡單,使用一維混沌映射對圖像加密效果不好,所以本算法將兩個經(jīng)典的一維混沌映射進(jìn)行級聯(lián),將Logistic映射的輸出作為Sine映射的輸入,構(gòu)造出二維復(fù)合混沌映射,可以擴大混沌映射的范圍,混沌效果更好。2D-LSCS的數(shù)學(xué)表達(dá)式如式(3)所示 (3) 其中k為級聯(lián)參數(shù)。圖1為三種混沌系統(tǒng)的分岔圖,可見2D-LSCS混沌參數(shù)β處于混沌區(qū)間的范圍比Logistic映射和Sine映射更寬,并且沒有空白窗,分布更加均勻,隨機性更強,能夠很好地抵御統(tǒng)計特性分析。因此新的二維復(fù)合混沌映射比一維混沌映射有更好的統(tǒng)計性能,加密效果更好。 混沌密碼發(fā)生器用于產(chǎn)生和明文圖像大小相同的4個偽隨機矩陣,記為X,Y,R,W。由明文圖像Baboo和100字節(jié)的外部密鑰生成的64位十六進(jìn)制的MAC值如下: [B23225CDFBC13E4FA838E4333B8E2CA284BAB7A83EAD29 E25D05B57FB66EDC84] 由明文圖像Lena和100字節(jié)的外部密鑰生成的64位十六進(jìn)制的MAC值如下 [A509E4FA8C228AD2CEF04DB1C5AA7F9586C93F8A1E1A40 F895B7648649F1E061] 可見,明文圖像不同,那么產(chǎn)生的MAC值不一樣。一方面,將接收方的消息認(rèn)證碼與發(fā)送方的消息認(rèn)證碼進(jìn)行對比,可監(jiān)測圖像在加密傳輸過程中是否被篡改。如果沒有差異,則傳輸過程安全。另一方面,利用該256 bit的MAC值,將十六進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù),分為8組,表示為S=[s1,s2,s3,s4,s5,s6,s7,s8],根據(jù)式(4)生成2D-LSCS混沌映射的初始值和控制參數(shù)。 (4) 步驟1:將x0,y0作為2D-LSCS新的初始值,迭代二維復(fù)合混沌序列r1+r2次跳過過渡態(tài),然后繼續(xù)迭代MN次,得到長度為MN的狀態(tài)變量序列,分別記為 {xi},i=1,2,…,MN,{yi},i=1,2,…,MN. 步驟2:由序列{xi}和{yi},i=1,2,…,MN。按照式(5)得到矩陣X,Y,R和W (5) 其中u=1,2,…,M,v=1,2,…,N,L=max(M,N),r1,r2,r3,r4為初始密鑰。 通過上述步驟得到四個隨機矩陣,X隨機矩陣用于前向擴散,R,W用于置亂模塊,Y用于后向擴散模塊。 圖像的擴散操作主要是改變像素點的像素值,通過前向擴散模塊將明文P轉(zhuǎn)化為矩陣A,通過式(6)完成前向擴散操作: (6) 通過上述擴散操作得到矩陣A。 圖像的置亂操作不會改變圖像的像素值,只改變圖像像素點的位置。將像素點A(i,j),i=1,2,…,M;j=1,2,…,N與A(m,n)置換位置,具體操作為: 通過式(7)先計算出矩陣A(i,j)所在行所在列的全部元素(不含A(i,j))之和,分別記為rowi和colj。 (7) 通過混沌序列產(chǎn)生的偽隨機序列R和W,通過式(8)計算出置換位置的坐標(biāo),即 (8) 如果m=i,n=j,則A(i,j)與A(m,n)的位置保持不變。否則A(i,j)與A(m,n)互換位置,同時根據(jù)A(m,n)的低三位的值,將A(i,j)進(jìn)行循環(huán)移位,即式(9)所示。 A(i,j)=A(i,j)<<<(A(m,n)&0x7) (9) 其中,x<< 按照上述方法,先置亂矩陣A的第M行A(M,1toN-1),然后再置亂矩陣A的第N列A(1toM-1,N),接著按從左向右再從上向下的掃描順序依次置亂矩陣A的元素A(1toM-1,1toN-1),最后調(diào)整矩陣A中元素A(M,N)的位置。最終得到置亂圖像B。 通過后向擴散模塊將矩陣B轉(zhuǎn)化為矩陣C,經(jīng)過前向擴散和后向擴散兩次擴散,圖像的加密效果會更好。后向擴散的具體操作如式(10)所示 (10) 通過正向擴散-置亂-反向擴散方法最終得到密文圖像。整個的加密流程如圖2所示。 圖2 加密流程圖 選擇大小為256×256的Lena和Baboo灰度圖,在Matlab2016a上完成仿真。輸入?yún)?shù)為K=[0.7895,0.4487,69,138,91,105]。結(jié)果如圖3所示。 圖3 原圖像和加密后的圖像 直方圖可以反映一幅圖像里全部灰度值的分布情況,從圖4可以直觀地看出,Lena和Baboo明文的直方圖顯示灰度值分布很不均勻,而加密之后的密文圖像的直方圖分布比較均勻,兩圖直方圖相差巨大,可以很好地隱藏明文信息[13]。說明加密之后的圖像可以更好地抵抗統(tǒng)計分析的攻擊。 圖4 Lena和 Baboo原圖直方圖和密文直方圖 另一個度量統(tǒng)計信息的尺度是相關(guān)系數(shù)[14]。通過隨機選擇2000對相鄰像素點和計算結(jié)果,在密文圖像中從水平、垂直垂直和正對角線、反對角線四個方向進(jìn)行分析,根據(jù)式(11)~(14)計算相關(guān)系數(shù),以Baboo灰度圖像為例,結(jié)果如圖5所示。結(jié)果表明,所提出的加密方案與原始圖像相比具有較低的相關(guān)性。 (11) (12) (13) (14) 表1顯示了Baboo的明文和相應(yīng)加密圖像的四個方向上相鄰像素的相關(guān)系數(shù)結(jié)果,并且和文獻(xiàn)[15]進(jìn)行了對比。由表1可知,本算法加密圖像的相關(guān)性明顯較低(接近于零)。 表1 相關(guān)系數(shù) 圖5 Baboo明文和密文各個方向上的相關(guān)性 信息熵可以衡量信息的不確定性程度,它測量每個強度級別的像素分布。均勻分布越好,密碼抵抗統(tǒng)計攻擊的能力就越強。對于強度為0-255的灰度圖像,真正隨機加密消息的理想值為8,或者換句話說,該值越大,不確定性越大,可視信息越少,均勻分布就越高。信息熵在數(shù)學(xué)上定義如式(15)所示。 (15) 這里,L為圖像的灰度等級數(shù),表示灰度值 出現(xiàn)的概率。對于L=256的灰度圖像,信息熵H的理論值為8。表2列出了Baboo,Lena兩幅圖像的信息熵,及其相應(yīng)密文的信息熵,同時給出了文獻(xiàn)[16]、[17]對應(yīng)圖像的信息熵。 表2 信息熵 從表中可以看到這個結(jié)果非常接近8。表明本算法能夠較好地抵抗統(tǒng)計攻擊。 為測試本文所提出的圖像加密方案對差分攻擊的安全性能,使用了兩個額外的分析,像素數(shù)變化率(NPCR)和統(tǒng)一平均變化強度(UACI)[18]。NPCR測試是在C1和C2兩個密文圖像之間的測試,它們的普通圖像略有不同。UACI測量C1和C2兩個密文圖像之間的關(guān)系。這兩種測試的區(qū)別在于,NPCR關(guān)注的是不同攻擊中變化像素值的絕對數(shù)量,而UACI集中于C1和C2這兩種密文圖像之間的平均差異[18]。按照式(16)~(18)計算NPCR和UACI。 (16) (17) (18) 其中D(i,j)是差分函數(shù),表示來自兩個密文圖像C1和C2在同一位置的像素是否相等。L是允許的最大像素強度(即8位像素值中的255)。一個好的圖像加密方案應(yīng)該對普通圖像(即使是1位)的任何變化都很敏感,并且應(yīng)該達(dá)到大約99%的NPCR值和15%以上的UACI值。對于8位灰度圖像,NPCR和UACI的理論值分別為NPCR=99.6094%,UACI=33.4635%。 表3列出了提出方案的加密測試的NPCR和UACI的值,從表3中可以看出,文中的方案滿足這兩個性能指標(biāo),可以很好地抵抗差分攻擊。 表3 NPCR和UACI測試結(jié)果 圖像加密系統(tǒng)的密鑰空間應(yīng)該足夠大,這樣可以有效地對抗窮舉攻擊。該算法在對圖像加密前使用了100字節(jié)的外部密鑰,產(chǎn)生了256bit的MAC值。給定的初始值為K={x0,y0,r1,r2,r3,r4},其中,x0,y0∈(0,1),計算精度為10-14,r1~r4為[0 255]中的整數(shù),因此可提供約1.2433×10114大小的密鑰空間,其值足夠大可以抵抗對圖像的窮舉攻擊。 為實現(xiàn)圖像加密算法與明文關(guān)聯(lián),本文提出了一種基于混沌理論和HMAC-SHA256算法的圖像加密方案。Matlab仿真結(jié)果和理論分析表明,所提出的混沌圖像加密方案能夠提供滿足所需安全要求的類隨機復(fù)雜密碼圖像,解決了加密明文圖像的密碼與明文無關(guān)的問題,不僅增大了密鑰空間,而且能抵抗大多數(shù)現(xiàn)有的密碼分析和密碼攻擊,如靜態(tài)攻擊和差分攻擊,保障了數(shù)字圖像的安全傳輸。下一步將在此算法基礎(chǔ)上考慮如何減少圖像加密傳輸所用時間,進(jìn)一步改進(jìn)和完善所提方案。3 圖像加密
3.1 混沌密碼發(fā)生器
3.2 前向擴散
3.3 圖像置亂
3.4 后向擴散
4 實驗與分析
4.1 灰度直方圖分析
4.2 像素相關(guān)性分析
4.3 信息熵計算
4.4 差分攻擊分析
4.5 密鑰空間分析
5 結(jié)語