王海珍,廉佐政,谷文成
(1.齊齊哈爾大學(xué)計算機(jī)與控制工程學(xué)院,黑龍江 齊齊哈爾 161006;2.齊齊哈爾大學(xué)網(wǎng)絡(luò)信息中心,黑龍江 齊齊哈爾 161006)
伴隨互聯(lián)網(wǎng)、數(shù)字圖像技術(shù)的廣泛應(yīng)用,可以方便地處理數(shù)字圖像,私密的圖像有可能被互聯(lián)網(wǎng)以多種方式竊取、篡改,因此,圖像的安全及加密技術(shù)日益重要[1-3],如何對圖像進(jìn)行安全高效的加密成為人們研究的熱點(diǎn)。是分組密碼研究領(lǐng)域中最熱門的密碼算法之一[4-6],是被廣泛使用的密碼算法[7-10],但輪密鑰之間相關(guān)性較強(qiáng),只要破解了任何一輪的輪密鑰就能推導(dǎo)出前一輪或后一輪的輪密鑰,從而得到全部的輪密鑰?;煦缦到y(tǒng)的特點(diǎn)是初值敏感,具有偽隨機(jī)性、無周期性,經(jīng)常被用于圖像加密中[11-14]。分析文獻(xiàn)[7-14]可知,一維混沌系統(tǒng)速度快、但密鑰空間不夠大、容易破解,高維混沌系統(tǒng)動力學(xué)行為復(fù)雜的、隨機(jī)性好,在一定程度上提高了加密的安全性,但復(fù)雜、實現(xiàn)成本高,很難應(yīng)用。
因此,為了使一維混沌系統(tǒng)具有較高安全性,降低 輪密鑰的相關(guān)性,本文提出了基于Logistic映射、PWLCM映射和AES的圖像加密算法,將混沌映射用于產(chǎn)生算法的初始輪密鑰及密鑰擴(kuò)展操作,降低輪密鑰的相關(guān)性,MATLAB仿真分析,驗證了該算法的有效性和安全性。
基于一維混沌映射和AES.算優(yōu)點(diǎn),本文提出了基于L-P映射和AES.的加/解密方案,如圖1所示。本節(jié)詳細(xì)說明加、解密算法。
圖1 加/解密方案
加密算法主要按以下步驟進(jìn)行,由于使用MATLAB進(jìn)行實驗,下面的步驟中用到了相關(guān)的語句。
1)原始圖像分組
假設(shè)原始圖像A的尺寸為a×b,對應(yīng)矩陣P是a行b列,第i行第j列的像素值為Pij,則
①如果A是灰度圖像,將P以行優(yōu)先方式構(gòu)成向量L,將向量中元素按先后順序,16個元素一組,最后一組不足16個元素,則按AES算法默認(rèn)填充。
②如果A是彩色圖像,將其轉(zhuǎn)換成RGB圖像,并按R、G、B通道順序,將三個矩陣合并成一個,尺寸為3×a×b,分組方法同①。
2)L-P混沌映射控制參數(shù)和初值設(shè)置
①計算圖像A的像素平均值Δ,并取整。以灰度圖像為例,Δ可以用式(1)表示。
(1)
②Logistic混沌映射的控制參數(shù)μ用式(2)表示。
μ=4-×10-3
(2)
③用式(3)產(chǎn)生(0,0.5]之間的隨機(jī)數(shù),作為PWLCM混沌映射的控制參數(shù)η。
η=rand()/2
(3)
④用式(4)、(5)產(chǎn)生兩個(0,1)之間的隨機(jī)數(shù),key0、key1,其中,key0作為Logistic混沌映射迭代的初值,key1作為PWLCM混沌射迭代的初值。
key0=rand()
(4)
key1=rand()
(5)
3)L-P混沌映射迭代至混沌狀態(tài)
①Logistic混沌映射以μ為控制參數(shù)、key0為初值,迭代100次,消除暫態(tài)的影響,處于混沌狀態(tài)。
②PWLCM混沌映射以η為控制參數(shù)、key1為初值,用迭代100次,消除暫態(tài)的影響,處于混沌狀態(tài)。
4)加密方產(chǎn)生數(shù)字簽名
使用MD5函數(shù)對L-P混沌映射控制參數(shù)和初值μ、η、key0、key1、100生成摘要,作為加密方的數(shù)字簽名。
5)產(chǎn)生AES初始輪密鑰
①在前面Logistic混沌映射迭代基礎(chǔ)上,再迭代16次,將這16次Logistic混沌映射迭代的結(jié)果分別保存在PWLCM(i)中,其中i=1,…,16。
②在前面PWLCM混沌映射迭代基礎(chǔ),再迭代16次,將這16次PWLCM混沌映射迭代的結(jié)果分別保存在Logistic(i)中,其中i=1,…,16。
③按式(6)、(7)將PWLCM(i)、Logistic(i)成整數(shù)序列。
y_PWLCM(i)=mod(108×PWLCM(i),256)
(6)
y_PLogistic(i)=mod(108×Logistic(i),256)
(7)
④將整數(shù)序列y_PWLCM(i)、y_PLogistic(i)分別轉(zhuǎn)換成4×4矩陣p_mat、l_mat,然后將兩個矩陣對應(yīng)元素進(jìn)行異或,作為AES加密的初始輪密鑰。
6)狀態(tài)矩陣初始化
取出原始圖像的一組,作為狀態(tài)矩陣,并將其奇數(shù)行各元素與p_mat的對應(yīng)元素進(jìn)行異或,偶數(shù)行各元素l_mat的對應(yīng)元素進(jìn)行異或。
7)AES加密
按AES加密算法加密,直到原始圖像的所有組都加密完成,生成密文圖像。
8)修改加密輪數(shù)
修改AES加密輪數(shù),通過MATLAB實驗,分析加密時間以及密文圖像的安全性,選取合適的輪數(shù)。
解密算法主要步驟如下:
1)L-P混沌映射控制參數(shù)和初值設(shè)置
①將接收到的L-P混沌映射控制參數(shù)和初值,使用MD5函數(shù)生成數(shù)字簽名R。
②接收到的數(shù)字簽名用S表示,判斷R和S是否相等,如果不相等,丟棄接收的信息,否則按順序轉(zhuǎn)加密方案的第3、第5步產(chǎn)生AES解要的初始輪密鑰。
2)使用AES輪密鑰擴(kuò)展算法生成其它輪密鑰。
3)按順序取出密文圖像的每一組,使用AES解密算法解密,得到狀態(tài)矩陣,并轉(zhuǎn)加密方案的第6步,生成明文圖像。
選擇不同尺寸的灰度圖像Lena(256×256)、Peppers(512×384)進(jìn)行實驗驗證。實驗環(huán)境為:內(nèi)存8GB,處理器i7-6700HQ,CPU2.6GHz,操作系統(tǒng)Windows 10,仿真軟件為MATLAB R2014a。按照第2節(jié)提出的加/解密算法,編寫加密、解密程序,并設(shè)置加密輪數(shù)為6,程序運(yùn)行結(jié)果如圖2、3所示,加密算法實現(xiàn)了加密效果,使用解密算法可以完全恢復(fù)加密圖像。
圖2 Lena圖像實驗結(jié)果
圖3 Peppers圖像實驗結(jié)果
3.2.1 密鑰敏感性分析
本文設(shè)置了2組錯誤密鑰,第一組錯誤密鑰保證key0,讓key1=key1+10-16,第二組錯誤密鑰保證key1正確,讓key0=key0+10-16,實驗結(jié)果如圖4、5所示,即錯誤密鑰與正確密鑰的值非常接近,但沒有解密成功??梢姡窘饷芩惴▽γ荑€非常敏感,可以提高圖像的安全性。
圖4 第一組錯誤密鑰實驗結(jié)果
圖5 第二組錯誤密鑰實驗結(jié)果
3.2.2 相鄰像素相關(guān)性分析
相鄰像素相關(guān)性是由相關(guān)系數(shù)系數(shù)來判斷的,它的計算公式,如式(8)-(12)所示。
(8)
(9)
(10)
(11)
(12)
其中,N是相鄰像素對(x,y)數(shù),rxy是相關(guān)系數(shù),rxy∈[-1,1],D(x)為方差,E(x)為均值,cov(x,y)為x和y的協(xié)方差。如果rxy>0,說明相鄰像素之間的相關(guān)性高,如果rxy<0.3,說明相鄰像素之間的相關(guān)性低。
本文從Lena加密圖像中隨機(jī)選取了10000對相鄰像素,分別計算它們在水平方向、垂直方向、對角線方向上的相關(guān)性,并與文獻(xiàn)[15]的加密算法進(jìn)行比較,如表1所示,本文算法運(yùn)行6輪后,圖像在水平、垂直、對角線方向上的相關(guān)系數(shù)均小于文獻(xiàn)[15]加密圖像的,當(dāng)運(yùn)行輪數(shù)與標(biāo)準(zhǔn)AES.相,相關(guān)系數(shù)絕對值均小于標(biāo)準(zhǔn)AES.加像的??梢?,本文加密算法使原始圖像統(tǒng)計特性,較好擴(kuò)散到隨機(jī)密文圖像中,可以有效抵抗統(tǒng)計分析。
表1 Lena圖像加密前后相鄰像素相關(guān)系數(shù)對比
3.2.3 直方圖分析
選擇3.1節(jié)的2幅圖像進(jìn)行實驗,對圖像加密前后的直方圖進(jìn)行比較,如圖6、7所示,原始圖像像素分布落差大、較混亂,可以很容易獲得圖像的信息,加密圖像像素分布比較均勻,較好隱藏了圖像的像素值信息,具備抵御統(tǒng)計方法攻擊的能力。
圖6 Lena圖像直方圖分析
圖7 Peppers圖像直方圖分析
3.2.4 信息熵分析
按式(13)計算信息熵。
(13)
本文選擇3.2節(jié)的Lena圖像進(jìn)行實驗,按式(13)計算圖像加密前后的信息熵,表2顯示了計算結(jié)果,本算法加密圖像的信息熵值高于加密前的,也高于標(biāo)準(zhǔn)AES算法的,和文獻(xiàn)[16]算法的接近,且接近8,表明加密圖像像素隨機(jī)性很好,較安全。
表2 Lena圖像加密前后的信息熵
3.2.5 差分攻擊分析
依據(jù)以下指標(biāo)進(jìn)行差分攻擊分析:像素改變率NPCR、平均像素改變強(qiáng)度UACI。下面分別說明它們的計算方法。
1)NPCR
NPCR計算公式如式(14)所示。
(14)
其中,M、N表示圖像大小,D(i,j)按式(15)計算。
(15)
C1(i,j)、C2(i,j)分別表示圖像改變一個像素值前、后的密文圖像矩陣。NPCR的理想值為100%,此時,加密算法對純圖像的變化較敏感,有較好抵御純明文攻擊的能力。
2)UACI
UACI的計算公式如式(16)所示。
(16)
UACI的理想值為33.33%,當(dāng)其值接近33.33%時,加密算法具備抵御差分攻擊的能力。
采用3.1節(jié)的Lena圖像進(jìn)行實驗,隨機(jī)選擇其明文圖像的一個像素點(diǎn),然后將像素值加1后對256取模,用相同的密鑰對像素值改變前、后的明文圖像分別加密,并計算密文圖像的NPCR、UACI,結(jié)果如表3所示,本算法的NPCR值接近100%,UACI值接近33.33%。因此,明文圖像中像素值發(fā)生微小變化,經(jīng)過本文算法加密后,圖像像素值擴(kuò)散效果較好,具備抵御差分攻擊的能力。
表3 NPCR和UACI值對比
3.2.6 魯棒性分析
密文圖像在傳輸過程中,會受到噪聲干擾,由于椒鹽噪聲對圖像的干擾最嚴(yán)重,因此,本文采用Lena圖像實驗,在其加密圖像中添加0.005dB的椒鹽噪聲,并按解密算法進(jìn)行解密。如圖8所示,解密圖像有明顯斑點(diǎn),但在視覺上可以分辨出原始圖像,算法具有一定的魯棒性。
圖8 加入椒鹽噪聲后的加/解密Lena圖像
3.2.7 抗剪切能力分析
本文對Lena密文圖像圖進(jìn)行25%的截切,即將密文圖像的25%區(qū)域的灰度值設(shè)為0,并按解密方案進(jìn)行解密。如圖9所示,因此,本文加解密算法在圖像信息部分丟失情況下解密效果不夠理想,抗剪切能力有待改進(jìn)。
圖9 密文圖像剪切25%的抗剪切攻擊能力分析
3.2.8 算法運(yùn)行時間分析
本文對3.1節(jié)不同尺寸的圖像,分別計算了標(biāo)準(zhǔn)AES算法加密、本文算法加密的運(yùn)行時間,如表4所示,本文算法運(yùn)行時間均小于標(biāo)準(zhǔn)AES算法,但它們的運(yùn)行時間會隨圖像尺寸變大而變多,因此,本算法不適合大尺寸圖像加密。
表4 算法運(yùn)行時間分析
本文研究了AES圖像加/解密算法、Logistic混沌映射和PWLCM混沌映射,結(jié)合它們的優(yōu)點(diǎn),提出一種圖像加/解密算法,加密算法結(jié)合圖像明文信息,設(shè)置Logistic和PWLCM混沌映射的相關(guān)參數(shù),利用Logistic和PWLCM混沌映射交叉迭代生成不同的混沌序列,進(jìn)行異或擴(kuò)散,生成AES初始輪密鑰,同時結(jié)合明文設(shè)置初始狀態(tài)矩陣,減少AES加密的輪數(shù),最終得到加密圖像。解密算法先通過數(shù)字簽名認(rèn)證接收Logistic和PWLCM混沌映射的相關(guān)參數(shù),再解密。通過實驗比較分析,驗證了本文算法的安全性,但抗剪切能力不足,下一步將優(yōu)化算法,提高算法的抗剪切能力。