馬英杰 陳櫝峣 趙 耿 曾 萍 郭 超
(北京電子科技學院 北京 100070)
圖像因其自身的一些固有特性導致部分傳統(tǒng)的加密算法不再適用?;煦鐖D像加密可行性好,具有廣闊的應用前景。文獻[1]使用分數(shù)階Chen超混沌在頻域上置亂,再設計超混沌S盒進行代換,最后用雙向異或循環(huán)左移擴散,從而達到了結(jié)合頻域與空域,置亂、代換、擴散相統(tǒng)一的加密算法。文獻[2]提出了基于混沌系統(tǒng)以及Arnold變換的圖像加密算法,密鑰采用SHA- 256算法。文獻[3]提出基于分數(shù)階Rossler混沌系統(tǒng)的圖像加密算法,密鑰選取基于混沌系統(tǒng)的階數(shù)以及參數(shù)。文獻[4]提出基于分數(shù)階Lorenz混沌系統(tǒng)的圖像加密算法,置亂后對圖像進行擴散,采取基于整數(shù)階和分數(shù)階混沌系統(tǒng)相結(jié)合的擴散方法。文獻[5]提出基于分數(shù)階混沌系統(tǒng)與DNA編碼相結(jié)合的彩色圖像加密算法,利用分數(shù)階混沌系統(tǒng)和DNA序列加法運算法則,對置亂后的DNA序列矩陣進行加密處理。文獻[6]提出了一種基于分數(shù)階Chen超混沌系統(tǒng)和DNA的壓縮感知圖像加密算法,利用四維分數(shù)階Chen超混沌系統(tǒng)生成測量矩陣,通過全局置亂降低相鄰比特之間的相關(guān)性,對加擾后的二進制序列和超混沌序列進行DNA操作,提高了算法的效率。文獻[7]提出基于分數(shù)階傅里葉變換的雙混沌圖像加密算法,混沌系統(tǒng)結(jié)合傅里葉變換進行明文隱藏,在空域和頻域完成置亂。文獻[8]提出了一種基于三維Arnold-cat映射和Fisher-Yates洗牌算法的圖像加密方案,將一幅平面圖像分割成大小相等的多個切片,然后用三維混沌映射對圖像進行三維表示,利用分數(shù)階非線性微分方程組實現(xiàn)了混洗圖像像素強度值的擴散。文獻[9]提出了一個量子三維Baker映射來擾亂圖像的三維量子表示,在置換圖像上實現(xiàn)廣義灰度碼,然后使用分數(shù)階Chen混沌系統(tǒng)生成的偽隨機序列進行選擇位內(nèi)異或。文獻[10]針對Zhao提出的圖像加密算法進行分析,僅對一幅圖像進行選擇明文攻擊,就可以很容易地恢復出原始圖像和密鑰流,數(shù)學分析和實驗結(jié)果都證實了這種攻擊的可行性。
本文提出基于變形分數(shù)階Lorenz混沌系統(tǒng)的圖像加密算法,密鑰生成采用明文圖像輸入以及SHA- 256算法,基于混沌序列的初始值和Arnold置亂的參數(shù)值的確立。加密階段分為頻域上的像素位置置亂和空域上的像素值替代。置亂過程使用非等長的帶參數(shù)的Arnold置亂,一方面解決了圖像長寬比例受限的問題,另一方面也避免了Arnold系統(tǒng)周期性帶來的影響。在圖像頻域上對低頻和高頻分量分別置亂增強了圖像的加密效果。基于混沌序列的擴散方法采用異或運算,置亂圖像的像素值以及預處理過的混沌序列相混合從而生成最終的加密圖像。
分數(shù)階Lorenz混沌系統(tǒng)是目前常用的一種混沌系統(tǒng),其系統(tǒng)方程如式(1)所示。
(1)
式中:D表示分數(shù)階微分;a、b、c為系統(tǒng)的控制參數(shù);q1、q2、q3為分數(shù)階的階次。當a=10,b=45,c=8/3時,系統(tǒng)達到混沌態(tài)。
本文提出一種基于符號函數(shù)的變形分數(shù)階Lorenz混沌系統(tǒng),其系統(tǒng)方程如式(2)所示。
(2)
式中:a、b、c、d是系統(tǒng)參數(shù),當a=15、b=0.5、c=27、d=3時,系統(tǒng)達到混沌態(tài)。初始值為[0.1,0.1,0.1],系統(tǒng)的相圖如圖1所示。其中(a)-(d)分別為x-y、x-z、y-z、x-y-z方向上的相圖。
(a) (b)
(c) (d)圖1 變形分數(shù)階Lorenz混沌系統(tǒng)相圖
經(jīng)典的二維Arnold映射如式(3)所示。
(3)
通常經(jīng)過一次Arnold變換的圖像其安全性還不夠高,因此一般采用多次置亂方法。然而傳統(tǒng)Arnold映射具有周期性特點,本文選擇的是有參數(shù)的Arnold映射,從而克服其周期性問題,如式(4)所示。
(4)
非等長Arnold變換可以針對任意尺寸的圖像進行處理,如式(5)所示。
(5)
為了克服Arnold映射的周期性問題,對參數(shù)a、b、c、d進行一定條件的約束:
a=1,b>0,c=kN(gcd(M,N))-1,d=1+bc
式中:b、k均可設置為密鑰,通過計算獲得c、d的值。則以上公式等價于:
(6)
其逆變換公式為:
(7)
本文的密鑰生成采用明文圖像作為輸入,通過SHA- 256算法產(chǎn)生相應的摘要信息。對生成的初始密鑰進行分組處理,產(chǎn)生有利于后續(xù)不同階段加密的密鑰。因此將256位的密鑰流進行分組,每組8位,產(chǎn)生32個分段密鑰,如式(8)所示。
K=k1,k2,…,k32
(8)
對密鑰流K進行如下處理,通過式(9)產(chǎn)生置亂階段Arnold映射的參數(shù)值b1、k1、b2、k2,通過式(10)產(chǎn)生擴散階段的混沌系統(tǒng)的初始值x0、y0、z0用于混沌序列的產(chǎn)生,通過式(11)對密鑰流的32位信息求和,用于后續(xù)混沌序列組合的選擇。
b1={(k1⊕k2)+(k2⊕k3)+(k3⊕k4)+(k4⊕k5)}mod 10
b2={(k6⊕k7)+(k7⊕k8)+(k8⊕k9)+(k9⊕k10)}mod 10
k1={(k11⊕k12)+(k12⊕k13)+(k13⊕k14)+(k14⊕k15)}mod 10
k2={(k16⊕k17)+(k17⊕k18)+(k18⊕k19)+(k19⊕k20)}mod 10
(9)
(10)
s=sum(k)
(11)
本文算法首先將明文圖像作為輸入,通過密鑰生成器產(chǎn)生了后續(xù)置亂和擴散階段的密鑰。然后將明文圖像進行兩次離散小波變換,使用不同參數(shù)的非等長Arnold映射在頻域上分別置亂各分量,像素位置打亂后再進行小波的逆變換,在圖像的空域上進行像素值的替換,對圖像進一步擴散,從而得到最終的密文圖像,圖2展示了加密算法的功能流程。
圖2 加密算法功能流程
加密算法的步驟如下:
(1) 將M×N的彩色圖像進行灰度處理得到原始圖像I。
(2) 將圖像I作為密鑰生成器的輸入,基于SHA- 256運算生成64位的摘要值,轉(zhuǎn)化為256位的二進制數(shù),每8位分成一組,得到32位的密鑰流K=k1,k2,…,k32。根據(jù)式(9)進行運算,產(chǎn)生置亂階段的密鑰,根據(jù)式(10)和式(11)計算產(chǎn)生擴散階段的密鑰。
(3) 將原圖像I進行兩次DWT變換,得到低頻分量、水平分量、垂直分量、對角分量,如圖3所示。
(a) 低頻分量 (b) 水平分量
(c) 垂直分量 (d) 對角分量圖3 小波變換后得到的四種分量
(4) 將x0、y0、z0作為輸入,設置好混沌系統(tǒng)的參數(shù)值,取混沌系統(tǒng)的階次為0.995進行迭代,舍棄前1 000項使產(chǎn)生的加密序列x、y、z達到混沌,最終得到三個長度為M×N/3的加密序列,通過式(12)對x、y、z進行預處理,得到用于擴散階段的三個混沌序列t1、t2、t3:
t1=mod(1 000×x,256)
t2=mod(1 000×y,256)
t3=mod(1 000×z,256)
(12)
變形分數(shù)階混沌序列的生成及預處理的核心編程如下:
%變形分數(shù)階混沌系統(tǒng)生成混沌序列
parameters=[15,0.5,27,3];
orders=[0.995,0.995,0.995];
Y0=[x0,y0,z0];
[T,Y]=xFOLorenz(parameters,orders,0.005*(ceil(M*N/3)+1 000),Y0);
x=Y(:,1);y=Y(:,2);z=Y(:,3);
%混沌序列預處理
tY=Y(1 001:ceil(M*N/3)+1 000,1:3);
t1=tY(:,1);t2=tY(:,2);t3=tY(:,3);
t1=mod(1 000*t1,256);
t1=uint8(t1);
t2=mod(1 000*t2,256);
t2=uint8(t2);
t3=mod(1 000*t3,256);
t3=uint8(t3);
(5) 使用b1、k1、b2、k2作為非等長Arnold的參數(shù)值對圖像像素位置置亂。使用b1、k1分別對第一層分解所得三個高頻分量進行非等長Arnold置亂,使用b2、k2分別對第二層分解所得四個分量(包含低頻分量)進行置亂。設置置亂迭代次數(shù)為10。通過式(13)計算得參數(shù)c:
c=kN(gcd(M,N))-1
(13)
(6) 置亂后的各分量均做DWT逆變換,產(chǎn)生置亂圖像A1。
(7) 擴散階段混沌序列的選擇。不重復組合t1、t2、t3,存在6種情況:[t1,t2,t3]、[t1,t3,t2]、[t2,t1,t3]、[t2,t3,t1]、[t3,t1,t2]、[t3,t2,t1],將它們從0-5進行有序編號,使用步驟1中獲得的s進行如下運算,得到的值,將tk的值作為目標編號,選取對應組合的混沌序列。
tk=mod(s,6)
(14)
像素值替代的核心編程如下:
[m,n]=size(A1);
A1=uint8(round(A1));
tk=mod(s,6);
switch tk
case 0
t=[t1,t2,t3];
case 1
t=[t2,t3,t1];
case 2
t=[t3,t1,t2];
case 3
t=[t1,t3,t2];
case 4
t=[t3,t2,t1];
case 5
t=[t2,t1,t3];
end
(8) 使用以上產(chǎn)生的混沌序列,與置亂圖像A1進行按位異或運算,得到最終的加密圖像A。
解密過程實質(zhì)上是加密的逆過程。具體步驟如下:
(1) 利用混沌系統(tǒng)產(chǎn)生混沌序列,進行正確的排列組合形成解密序列,將解密序列與加密圖像A進行按位異或運算,得到圖像B1。
(2) 將圖像B1進行兩次DWT變換,產(chǎn)生圖像的低頻分量、水平分量、垂直分量和對角分量。
(3) 輸入非等長Arnold映射的參數(shù)值b1、k1、b2、k2,分別對四種分量進行非等長Arnold逆運算,逆變換公式如式(7)所示,設置迭代次數(shù)為10。
(4) 將置亂恢復后的各分量進行DWT逆變換,得到最終解密圖像B。
在MATLAB R2014b平臺編程實現(xiàn)提出算法的加密和解密,并進行了性能仿真。實驗采用大小為320×240的灰度圖像“test”作為原始圖像,如圖4(a)所示。加密時,改進分數(shù)階Lorenz混沌系統(tǒng)的階數(shù)均設置為0.995,參數(shù)a=15、b=0.5、c=27、d=3,初始值為[0.1,0.1,0.1],Arnold映射的參數(shù)b1=0、b2=0、k1=0、k2=0,置亂迭代次數(shù)為10,圖4(b)展示的是加密圖像??梢钥吹?,原始圖像與加密圖像之間看不出任何聯(lián)系,具有較好的視覺效果。
(a) 原圖 (b) 加密圖圖4 實驗結(jié)果
密鑰空間由提出的圖像加密方案中所有可能的密碼密鑰組成。理論證明,密鑰空間至少應大于2100才具有較高的安全級別[1]。對于本文提出的加密算法,密鑰由明文圖像的256位二進制摘要值產(chǎn)生,因此能提供的密鑰空間為2256,遠遠大于應該滿足的最小值。因此,本文算法具有能夠有效抵御暴力攻擊的能力。
直方圖通過繪制每個灰度級別的像素數(shù)來顯示圖像中不同像素值的分布。對明文圖像使用本文算法進行加密,加密前和加密后圖像的直方圖如圖5所示。
圖5 明文圖像和密文圖像的直方圖
為了比較明文圖像和密文圖像中相鄰像素的相關(guān)性,分別抽取了5 000對像素,計算所選對的水平、垂直和對角方向上的相鄰像素的相關(guān)系數(shù),如表1所示。
表1 明文圖像和密文圖像相鄰像素相關(guān)性比較
可以看出,使用改進分數(shù)階Lorenz混沌系統(tǒng)加密所得出的相關(guān)性系數(shù)比使用傳統(tǒng)分數(shù)階Lorenz混沌系統(tǒng)的更接近于0。
對于有效的加密方案,明文圖像的細微差異都將導致密文圖像的巨大變化。在差分攻擊階段,采用NPCR和UACI兩個指標用于分析抵御選擇明文攻擊能力。NPCR和UACI的計算公式如下:
(15)
(16)
(17)
式中:W、H是圖像的寬度和高度;C1、C2為兩幅待比較的密文圖像。理想狀態(tài)下,RNPC=99.609%,IUAC=33.463%。首先使用本文的加密方案對原始明文圖像進行加密,并獲得一個標準的密文圖像C1。然后將隨機抽取明文圖像的一個像素值加1處理得到一個新的明文圖像,不改變加密系統(tǒng)的任何參數(shù)值進行加密得到新的密文圖像C2。最后將新的密文圖像C2與原有的密文圖像C1進行比較,計算它們的NPCR和UACI值。重復以上操作四次,抽取四對像素值計算結(jié)果,結(jié)果如表2所示,在表3中將本文的仿真結(jié)果與其他幾篇文獻進行了比較。
表2 加密圖像間不同像素點的NPCR和UACI(%)
表3 不同算法的NPCR和UACI比較(%)
本文提出一種基于變形分數(shù)階Lorenz混沌系統(tǒng)的圖像加密算法,設計一個密鑰生成器,采用Hash算法將密鑰與明文圖像的摘要值緊密地關(guān)聯(lián)起來,優(yōu)化了算法抵御選擇明文攻擊的能力。在置亂階段,對明文進行離散小波變換,將高頻與低頻分量的圖像使用不同的參數(shù)分別置亂。本文引入了非等長的帶參數(shù)的Arnold映射,一方面解除了加密對明文圖像的尺寸要求,另一方面避免了傳統(tǒng)Arnold映射的周期性影響導致的加密不成功。仿真結(jié)果表明,本文算法密鑰空間大、密鑰敏感性高、密文統(tǒng)計直方圖分布均勻、相鄰像素相關(guān)性低、信息熵接近于理想值、抗差分攻擊能力強,具有較高的安全性。