薛 偉, 呂 群
(江南大學 物聯網工程學院, 無錫 214122)
隨著計算機技術和網絡技術的發展, 信息安全的問題日益凸顯[1]. 數字圖像具有數據量大、空間有序、相關性強、冗余度高的特點[2], 使用傳統的算法(DES、AES)時加密效率比較低. 混沌系統具有一些良好的特性, 使得其在圖像加密領域越來越受歡迎. 當今有很多基于混沌系統的圖像加密算法被提出.
Xu等人[3]提出一種對圖像分塊置亂以及對像素點動態索引進行擴散的圖像加密算法; Norouzi等人[4]提出一種對行列分塊置亂以及對位平面進行擴散的圖像加密算法; Wang等人[5]根據混沌序列和萬有引力定律提出了一種圖像加密算法; Xu等人[6]根據混沌系統對經過位平面分解后的明文圖像進行置亂與擴散. 這幾種加密算法總體來說加密效果都不錯, 但是混沌序列都與明文圖像無關, 因此不能很好的抵抗選擇明文攻擊. 林等人[7]提出了一種基于位平面自適用參數的圖像加密算法, 該算法產生混沌序列時引入了明文圖像,可以在一定程度上抵御選擇明文攻擊, 但是該算法只是簡單的把圖像灰度值的總和引入到混沌系統的初始值中, 算法的安全性還可以提高. 本文結合當今一些算法存在的安全性問題, 根據混沌系統、格雷碼和SHA-384提出了一種基于置亂-擴散模式的圖像加密算法.實驗結果表明, 該算法具有較好安全性.

Lorenz系統的表達式如(2)所示.

在本文的加密算法中, 通過明文灰度值和SHA-384產生了一個384位的密鑰. 把這384位的密鑰按每8位為一個整數進行劃分, 密鑰可以表示為如下的形式:
混沌系統的初始值計算如下:


擴散部分的初始值計算如下:

3.2.1 圖像全局位置置亂
步驟1. 假設明文圖像和置亂圖像長度都是M×N,把圖像轉換成一維的數組, 選取數組長度的基數為2,會得到M×N=2k.
3.2.2 圖像行列間位置置亂
步驟1. 根據公式(2)、公式(3)、公式(4)和公式(5)產生長度為 M×N 的混沌序列 X, Y, Z. 將序列 X,Y轉換為和矩陣B一樣大小的二維矩陣X′, Y′.
步驟2. 對矩陣X′逐行進行排序, 進而會得到排序以后的位置矩陣IR, 然后用矩陣IR對圖像B逐行進行行置亂, 最后得到行置亂圖像B1.
步驟3. 對矩陣Y′逐列進行排序, 進而會得到相應的位置矩陣IC, 然后用矩陣IC對矩陣B1逐列進行列置亂, 最后得到列置亂矩陣G.
步驟1. 根據公式(6)、公式(7)獲得兩個初始值u0和v0, 同時設置控制參數b和c.
步驟 2. 令 i=0.
步驟3. 用下面的公式得到2個8位的整數值di和ei.

步驟4. 通過公式(10)和公式(11), 更改像素的灰度值:



步驟 6. 令 i=i+1, 重復步驟 3–步驟 5, 直到所有的像素點的灰度值都完成更改.
步驟7. 對3.2.2節步驟1中產生的混沌序列Z作如下的處理, 得到反向擴散序列W(i):

其中, 1≤i≤M×N.
步驟8. 通過下面的公式反向改變像素的灰度值:


圖1是整個加密過程的結構圖. 解密過程與加密過程類似, 對密文圖像實行相反的操作, 就可以恢復出明文圖像.

圖1 圖像加密結構圖
在本文的仿真過程中, 選擇了大小為256×256的Lena灰度圖進行仿真. 在加密系統中設置參數F2=9366. 圖2是實驗仿真圖. 為了評價算法的整體性能, 下面對算法進行安全性分析.

圖2 實驗仿真圖
圖像的直方圖可以用來表示圖像中所有像素點灰度值的分布狀況. 圖3是明密文圖像的直方圖.
從圖3(b)中可以看出密文圖像的直方圖分布的比較均勻, 說明該算法可以很好的掩蓋明文圖像的灰度統計特性.
相鄰像素相關性表示的是圖像中相鄰像素間的相關水平. 如果相關性越低, 那么抵抗統計攻擊的能力越強. 為了檢驗圖像中兩個相鄰像素點之間的相關性, 分別在Lena明密文圖像的水平、垂直以及對角線方向上隨機抽取2000對相鄰的像素點, 并計算相關系數,結果如表1所示.

圖3 圖像直方圖分析

表1 相鄰像素相關系數及比較
表1中的數據, 數值越接近1表示相關性越高, 越接近0表示相關性越低. 通過比較, 本文的算法能有效的降低相鄰像素點間的相關性.
一個好的加密算法應該是有一個足夠大的密鑰空間, 以抵抗窮舉攻擊. 本文的密鑰主要由2部分構成:給定的初始值384位長的哈希值. 對于以上的3個初始參數, 如果數據精度為10–15, 那么密鑰空間至少為足可以抵抗窮舉攻擊.

圖4 密鑰敏感性測試
圖像加密中一般使用NPCR(像素變化率)、UACI(平均改變強度)來評價算法抗差分攻擊的性能.對于一幅256級的灰度圖像, NPCR的值大于99.6094%, UACI的值大于33.4635%時算法才是安全的. 實驗中隨機選取了5個像素點, 其灰度值都改變1,加密輪數為1輪, 計算相應的NPCR和UACI, 結果見表2, 均值見表3. 通過比較可以看出, 本文算法的NPCR和UCAI都能滿足算法安全的要求, 從而可以較強的抵抗差分攻擊.

表2 不同位置的 NPCR 和 UACI(單位: %)

表3 NPCR 和 UACI的均值及比較 (單位: %)
本文算法的中間密鑰可以看作是矩陣IR和IC(置亂部分的中間密鑰)、序列W(擴散部分的中間密鑰),而得到這3個中間密鑰需要迭代混沌系統, 混沌系統的初始值與SHA-384和明文圖像共同產生的散列值有關, 因此可以認為本文算法的中間密鑰和原始圖像有關. 選擇不同的明文圖像得出的中間密鑰是不相同的, 因此以特定明文圖像得出的中間密鑰并不能破解其他的密文圖像, 所以說本文算法可以較好的抵抗選擇明文攻擊.
在本文的算法中由于置亂過程的作用, 使得密文圖像中被剪切掉的那部分相應的錯誤解密圖像會均勻的分布在整個解密圖像中, 因此密文圖像即使受到剪切攻擊后, 在解密圖像中也可以看到明文圖像的內容.圖5(a)為密文圖像被剪切掉四分之一的面積, 圖5(b)是相應的解密圖像, 從圖中可以看出, 即使密文圖像有丟失, 解密圖像中的內容大致也可以被識別, 因此可以認為本算法具有一定的抗剪切攻擊的能力.
本文提出的圖像加密算法有以下三個特點: 首先,使用SHA-384和明文圖像產生加密過程的密鑰, 使混沌序列與明文圖像有關, 能更好的抵抗選擇明文攻擊,同時增大了密鑰空間; 其次, 算法在置亂階段使用了基于格雷碼和混沌序列相結合的置亂方法, 可以更好的實現置亂效果; 最后, 算法中加入了正反向的擴散操作,使得密文圖像中的像素點與前后像素點有關, 能更好的掩蓋圖像的灰度統計特性. 實驗結果表明, 本文的算法具有較好的安全性, 在圖像傳輸領域有一定的潛在應用價值.

圖5 抗剪切測試