周衍慶, 葛 斌, 李 涵
(安徽理工大學計算機科學與工程學院,安徽 淮南 232001)
圖像加密技術可以保證圖像在網絡中傳輸時重要信息不被泄露,是解決圖像安全問題最有效的策略。在眾多圖像加密算法中,混沌系統因其具有偽隨機性、初值敏感性、不可預測性等顯著的特點,被普遍應用在圖像加密算法中,用于密鑰序列的產生,從而提高圖像加密算法的安全性。文獻[1,2]采用的傳統映射迭代產生的混沌序列的隨機性較低,容易被預測。文獻[3,4]利用改進Sine映射生成的混沌序列的隨機性得到提高,但生成的混沌序列與明文圖像無關。文獻[5]提出了一種比特置亂算法,導致全為0或全為1的像素點不發(fā)生改變,使得加密系統的安全性較低。文獻[6]提出的基于比特位的置亂算法較為復雜,從而導致圖像加密的效率較低。針對上述文獻提到的密鑰序列隨機性低、密鑰與明文無關和比特置亂限制等問題,提出了TLS混沌系統,通過復合Tent,Logistic和Sine映射,削弱混沌映射的周期性,有效提高混沌序列的隨機性。利用TLS映射產生的混沌序列對明文圖像的二進制序列進行比特置亂、比特位拼接和提取操作,在改變像素值的同時,實現像素位置的置亂;并通過與混沌序列進行按列異或,以及相鄰像素異或的方法,實現像素的擴散,得到加密圖像。
TLS映射是在Tent映射的基礎上,耦合了Logistic映射和Sine映射,提出的一個新的混沌映射。其定義如式(1):
(1)
式(1)中,控制參數μ∈(0,5],x0為序列的初始值;xi是通過該映射輸出的混沌序列,xi∈(0,1]。由公式(1)可知,僅耦合Logistic映射與Sine映射時,生成的序列中出現負值,且控制參數的范圍較??;再與Tent映射復合后,使參數范圍擴大到(0,5],且產生的隨機序列均為正值。TLS映射的分岔圖如圖1。
Lyapunov指數(LE)是用來判斷混沌系統中,有微小差別的兩個初始值隨時間變化所產生的兩個運動軌跡間的離散程度的指標。一維系統xi+1=f(xi),當f(xi)可微時的LE定義為[11]式(2):
(2)
對于一維系統,只存在一個Lyapunov指數,若為正值則該系統為混沌系統。且該值越大,混沌系統的性能也越好。TLS混沌映射的Lyapunov指數,如圖2。
NIST SP800-22測試的提出,能較為準確的確定一個二進制序列是否具有隨機性。NIST SP800-22測試包括15個子測試,每個子測試都能輸出一個值,若每個輸出的值均大于0.01,表明該序列具有較高的隨機性。表1顯示了每個測試獲得的結果,表明TLS混沌映射生成的序列高度隨機。
提出的加密算法具體步驟如下:
Step1:設灰度明文圖像I,其大小為M×N,用二維矩陣C表示。將C中的像素均轉換為八位二進制數,得到大小為M×8N的新矩陣C′。
Step2:對TLS混沌映射,根據等式(3)確定初始值x0,將初始值x0和控制參數μ代入公式(4),迭代M×N+1000次,生成長度為M×N+1000的序列l(wèi)。為了消除初始迭代對序列隨機性的影響,去掉l的前1000個值,得到序列l(wèi)″,長度為M×N。
x0=floor(sum(I)/(255×M×N)×104)/104
(3)
l(i+1)=4μ(0.5l(i)-l(i)2)+
(1-μ)sin(π(1-l(i)))+2μl(i)
(4)
l′(i)=l(1001:length(l(i)))
(5)
Step3:根據等式(6)對序列l(wèi)′處理,得到長度為M×N的序列s。其中round為四舍五入函數。
s(i)=mod(round(l′(i)×100),8)
(6)
Step4:利用比特置亂規(guī)則,對矩陣C′進行比特位重組:對每個二進制序列,取其3到6位移動到前四位上,組成新的二進制序列,從而得到矩陣G。
Step5:根據序列s,對二進制序列矩陣G的每個序列,向右進行循環(huán)移位得到二進制序列矩陣G′。
Step6:根據等式(7)得到序列l(wèi)″,將序列l(wèi)″轉換成M×8N的矩陣Q,與G′進行矩陣拼接,得到十六位二進制序列矩陣Q′。再將其轉換為十進制矩陣Q″,并利用混沌序列l(wèi)′,對按列排序后的矩陣Q″進行全局置亂得到矩陣R。
l″=mod(ceil(l′(i)×103),256)
(7)
Step7:將矩陣R再次轉換為二進制矩陣,提取每個二進制序列的前八位,并轉換為十進制數,構成新的像素矩陣。
Step8:將參數μ1,μ2,初值x1,x2,代入公式(4)中,分別獲得混沌序列l(wèi)1和l2
Step9:對Step7中的得到像素矩陣,取其奇數列與序列k1對應值進行異或,偶數列與序列k2對應值進行異或得到矩陣R′,然后將二維矩陣R′轉換為一維矩陣R″,按等式(9)進行相鄰像素異或的二次擴散操作,得到一維矩陣V,異或后將一維矩陣V轉換為M×N的二維矩陣,得到二次擴散后的密文矩陣V′。
(8)
V(j)=
(9)
解密過程使用的密鑰與加密過程的密鑰相同,是加密過程的逆過程。圖像的解密過程,是先通過異或解密擴散過程;再進行像素位置置亂、循環(huán)移位和比特重組的逆操作,即可無失真的從密文中恢復明文圖像。
測試圖像為大小512×512的Lena圖像,評估測試使用以下密鑰來實現:第一階段,TLS混沌系統的控制參數μ0=3.7,初始值x0=0.3711;第二階段,TLS混沌系統的兩個控制參數和初始值分別為:μ1=4.0,x1=0.1;μ2=3.99,x2=0.8。Lean原圖、加密圖像和解密圖像分別如圖7(a)-7(c)。
直方圖可以反映像素的分布情況。若圖像灰度值分布較均勻,表明該加密算法能很好的隱藏明文信息,有效抵抗統計攻擊。Lena圖像加密前后的直方圖如圖8所示,其中,密文圖像的直方圖分布均勻,因此所提出的圖像加密能很好的抵抗統計攻擊,攻擊者幾乎無法從直方圖中獲得有效信息。
差分攻擊是指攻擊者對明文進行微小改變后,采用相同的加密系統進行加密,分析得到的相應密文之間的差別。通常采用像素變化率(NPCR)和歸一化平均變化強度(UACI)兩個指標,評估加密算法是否能抵抗差分攻擊,定義如下:
(10)
(11)
其中M×N為圖像大小。O1表示密文,O2表示對只改變一個像素點的明文,加密所產生的密文。O1(i,j)、O2(i,j)表示密文圖像在(i,j)處的像素值。若O1(i,j)=O2(i,j),則O(i,j)=0;否則O(i,j)=1。重復多次改變一個像素值,并按相同的方法進行加密,獲得得到多組NPCR和UACI,計算其平均值見表2。
由表2可知,通過提出的加密算法,得到的值與理論值相接近,且明顯優(yōu)于其他文獻中提出的算法,表明該算法的抵抗差分攻擊的能力得到有效提高。
明文圖像相鄰的像素之間具有很強的關聯性,彼此的灰度值相差較小,攻擊者很容易通過分析相關性來攻擊圖像。因此需要提出有效的方法,降低圖像相鄰像素間的相關性,來防止攻擊者通過這種攻擊獲取圖像信息。相鄰像素相關性系數定義為:
(12)
(13)
(14)
(15)
其中,U個相鄰像素對是隨機選擇的;z和w分別表示兩個相鄰像素的灰度值;cov(z,w)表示這兩個像素灰度值的協方差;D(z)和D(w)分別為z和w的方差。
如表3所示,對比其他文獻中的加密算法,提出的加密算法得到的密文圖像,各方向上的相鄰像素的平均相關系數更接近于0,表明該算法的加密效果更好。
表3 明文和密文各方向的相鄰像素間的平均相關系數
提出了一種基于 復 合 Tent映 射 的 比 特 級 圖 像 加 密算法。通過復合Tent、Logistic、Sine映射獲得TLS混沌映射,實驗結果表明,TLS混沌映射解決了混沌分布不均勻、混沌參數范圍較小的問題,提高了混沌序列的隨機性。在此基礎上,設計了比特級加密算法。通過比特置亂、比特位拼接、隨機置亂,實現圖像像素的改變和置亂,解決了比特置亂時位數限制的問題;再利用混沌序列分別與不同列的像素進行異或,以及相鄰像素異或,實現擴散,從而得到最終密文。仿真結果表明,該算法能夠抵抗差分分析和統計分析攻擊,具有較好的加密效果。