薛 偉, 呂 群
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院, 無(wú)錫 214122)
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展, 信息安全的問(wèn)題日益凸顯[1]. 數(shù)字圖像具有數(shù)據(jù)量大、空間有序、相關(guān)性強(qiáng)、冗余度高的特點(diǎn)[2], 使用傳統(tǒng)的算法(DES、AES)時(shí)加密效率比較低. 混沌系統(tǒng)具有一些良好的特性, 使得其在圖像加密領(lǐng)域越來(lái)越受歡迎. 當(dāng)今有很多基于混沌系統(tǒng)的圖像加密算法被提出.
Xu等人[3]提出一種對(duì)圖像分塊置亂以及對(duì)像素點(diǎn)動(dòng)態(tài)索引進(jìn)行擴(kuò)散的圖像加密算法; Norouzi等人[4]提出一種對(duì)行列分塊置亂以及對(duì)位平面進(jìn)行擴(kuò)散的圖像加密算法; Wang等人[5]根據(jù)混沌序列和萬(wàn)有引力定律提出了一種圖像加密算法; Xu等人[6]根據(jù)混沌系統(tǒng)對(duì)經(jīng)過(guò)位平面分解后的明文圖像進(jìn)行置亂與擴(kuò)散. 這幾種加密算法總體來(lái)說(shuō)加密效果都不錯(cuò), 但是混沌序列都與明文圖像無(wú)關(guān), 因此不能很好的抵抗選擇明文攻擊. 林等人[7]提出了一種基于位平面自適用參數(shù)的圖像加密算法, 該算法產(chǎn)生混沌序列時(shí)引入了明文圖像,可以在一定程度上抵御選擇明文攻擊, 但是該算法只是簡(jiǎn)單的把圖像灰度值的總和引入到混沌系統(tǒng)的初始值中, 算法的安全性還可以提高. 本文結(jié)合當(dāng)今一些算法存在的安全性問(wèn)題, 根據(jù)混沌系統(tǒng)、格雷碼和SHA-384提出了一種基于置亂-擴(kuò)散模式的圖像加密算法.實(shí)驗(yàn)結(jié)果表明, 該算法具有較好安全性.
Lorenz系統(tǒng)的表達(dá)式如(2)所示.
在本文的加密算法中, 通過(guò)明文灰度值和SHA-384產(chǎn)生了一個(gè)384位的密鑰. 把這384位的密鑰按每8位為一個(gè)整數(shù)進(jìn)行劃分, 密鑰可以表示為如下的形式:
混沌系統(tǒng)的初始值計(jì)算如下:
擴(kuò)散部分的初始值計(jì)算如下:
3.2.1 圖像全局位置置亂
步驟1. 假設(shè)明文圖像和置亂圖像長(zhǎng)度都是M×N,把圖像轉(zhuǎn)換成一維的數(shù)組, 選取數(shù)組長(zhǎng)度的基數(shù)為2,會(huì)得到M×N=2k.
3.2.2 圖像行列間位置置亂
步驟1. 根據(jù)公式(2)、公式(3)、公式(4)和公式(5)產(chǎn)生長(zhǎng)度為 M×N 的混沌序列 X, Y, Z. 將序列 X,Y轉(zhuǎn)換為和矩陣B一樣大小的二維矩陣X′, Y′.
步驟2. 對(duì)矩陣X′逐行進(jìn)行排序, 進(jìn)而會(huì)得到排序以后的位置矩陣IR, 然后用矩陣IR對(duì)圖像B逐行進(jìn)行行置亂, 最后得到行置亂圖像B1.
步驟3. 對(duì)矩陣Y′逐列進(jìn)行排序, 進(jìn)而會(huì)得到相應(yīng)的位置矩陣IC, 然后用矩陣IC對(duì)矩陣B1逐列進(jìn)行列置亂, 最后得到列置亂矩陣G.
步驟1. 根據(jù)公式(6)、公式(7)獲得兩個(gè)初始值u0和v0, 同時(shí)設(shè)置控制參數(shù)b和c.
步驟 2. 令 i=0.
步驟3. 用下面的公式得到2個(gè)8位的整數(shù)值di和ei.
步驟4. 通過(guò)公式(10)和公式(11), 更改像素的灰度值:
步驟 6. 令 i=i+1, 重復(fù)步驟 3–步驟 5, 直到所有的像素點(diǎn)的灰度值都完成更改.
步驟7. 對(duì)3.2.2節(jié)步驟1中產(chǎn)生的混沌序列Z作如下的處理, 得到反向擴(kuò)散序列W(i):
其中, 1≤i≤M×N.
步驟8. 通過(guò)下面的公式反向改變像素的灰度值:
圖1是整個(gè)加密過(guò)程的結(jié)構(gòu)圖. 解密過(guò)程與加密過(guò)程類似, 對(duì)密文圖像實(shí)行相反的操作, 就可以恢復(fù)出明文圖像.
圖1 圖像加密結(jié)構(gòu)圖
在本文的仿真過(guò)程中, 選擇了大小為256×256的Lena灰度圖進(jìn)行仿真. 在加密系統(tǒng)中設(shè)置參數(shù)F2=9366. 圖2是實(shí)驗(yàn)仿真圖. 為了評(píng)價(jià)算法的整體性能, 下面對(duì)算法進(jìn)行安全性分析.
圖2 實(shí)驗(yàn)仿真圖
圖像的直方圖可以用來(lái)表示圖像中所有像素點(diǎn)灰度值的分布狀況. 圖3是明密文圖像的直方圖.
從圖3(b)中可以看出密文圖像的直方圖分布的比較均勻, 說(shuō)明該算法可以很好的掩蓋明文圖像的灰度統(tǒng)計(jì)特性.
相鄰像素相關(guān)性表示的是圖像中相鄰像素間的相關(guān)水平. 如果相關(guān)性越低, 那么抵抗統(tǒng)計(jì)攻擊的能力越強(qiáng). 為了檢驗(yàn)圖像中兩個(gè)相鄰像素點(diǎn)之間的相關(guān)性, 分別在Lena明密文圖像的水平、垂直以及對(duì)角線方向上隨機(jī)抽取2000對(duì)相鄰的像素點(diǎn), 并計(jì)算相關(guān)系數(shù),結(jié)果如表1所示.
圖3 圖像直方圖分析
表1 相鄰像素相關(guān)系數(shù)及比較
表1中的數(shù)據(jù), 數(shù)值越接近1表示相關(guān)性越高, 越接近0表示相關(guān)性越低. 通過(guò)比較, 本文的算法能有效的降低相鄰像素點(diǎn)間的相關(guān)性.
一個(gè)好的加密算法應(yīng)該是有一個(gè)足夠大的密鑰空間, 以抵抗窮舉攻擊. 本文的密鑰主要由2部分構(gòu)成:給定的初始值384位長(zhǎng)的哈希值. 對(duì)于以上的3個(gè)初始參數(shù), 如果數(shù)據(jù)精度為10–15, 那么密鑰空間至少為足可以抵抗窮舉攻擊.
圖4 密鑰敏感性測(cè)試
圖像加密中一般使用NPCR(像素變化率)、UACI(平均改變強(qiáng)度)來(lái)評(píng)價(jià)算法抗差分攻擊的性能.對(duì)于一幅256級(jí)的灰度圖像, NPCR的值大于99.6094%, UACI的值大于33.4635%時(shí)算法才是安全的. 實(shí)驗(yàn)中隨機(jī)選取了5個(gè)像素點(diǎn), 其灰度值都改變1,加密輪數(shù)為1輪, 計(jì)算相應(yīng)的NPCR和UACI, 結(jié)果見(jiàn)表2, 均值見(jiàn)表3. 通過(guò)比較可以看出, 本文算法的NPCR和UCAI都能滿足算法安全的要求, 從而可以較強(qiáng)的抵抗差分攻擊.
表2 不同位置的 NPCR 和 UACI(單位: %)
表3 NPCR 和 UACI的均值及比較 (單位: %)
本文算法的中間密鑰可以看作是矩陣IR和IC(置亂部分的中間密鑰)、序列W(擴(kuò)散部分的中間密鑰),而得到這3個(gè)中間密鑰需要迭代混沌系統(tǒng), 混沌系統(tǒng)的初始值與SHA-384和明文圖像共同產(chǎn)生的散列值有關(guān), 因此可以認(rèn)為本文算法的中間密鑰和原始圖像有關(guān). 選擇不同的明文圖像得出的中間密鑰是不相同的, 因此以特定明文圖像得出的中間密鑰并不能破解其他的密文圖像, 所以說(shuō)本文算法可以較好的抵抗選擇明文攻擊.
在本文的算法中由于置亂過(guò)程的作用, 使得密文圖像中被剪切掉的那部分相應(yīng)的錯(cuò)誤解密圖像會(huì)均勻的分布在整個(gè)解密圖像中, 因此密文圖像即使受到剪切攻擊后, 在解密圖像中也可以看到明文圖像的內(nèi)容.圖5(a)為密文圖像被剪切掉四分之一的面積, 圖5(b)是相應(yīng)的解密圖像, 從圖中可以看出, 即使密文圖像有丟失, 解密圖像中的內(nèi)容大致也可以被識(shí)別, 因此可以認(rèn)為本算法具有一定的抗剪切攻擊的能力.
本文提出的圖像加密算法有以下三個(gè)特點(diǎn): 首先,使用SHA-384和明文圖像產(chǎn)生加密過(guò)程的密鑰, 使混沌序列與明文圖像有關(guān), 能更好的抵抗選擇明文攻擊,同時(shí)增大了密鑰空間; 其次, 算法在置亂階段使用了基于格雷碼和混沌序列相結(jié)合的置亂方法, 可以更好的實(shí)現(xiàn)置亂效果; 最后, 算法中加入了正反向的擴(kuò)散操作,使得密文圖像中的像素點(diǎn)與前后像素點(diǎn)有關(guān), 能更好的掩蓋圖像的灰度統(tǒng)計(jì)特性. 實(shí)驗(yàn)結(jié)果表明, 本文的算法具有較好的安全性, 在圖像傳輸領(lǐng)域有一定的潛在應(yīng)用價(jià)值.
圖5 抗剪切測(cè)試