程?hào)|升,譚 旭,許志良,陳寶文,張運(yùn)生
(深圳信息職業(yè)技術(shù)學(xué)院軟件學(xué)院 廣東 深圳 518172)
隨著互聯(lián)網(wǎng)與通信技術(shù)的不斷發(fā)展,各種數(shù)字信息通過電子設(shè)備不斷傳播。作為一種直觀生動(dòng)的信息,數(shù)字圖像的傳輸安全引起了廣泛的關(guān)注。由于可能涉及國家安全、商業(yè)利益和個(gè)人隱私等,需要對(duì)圖像信息進(jìn)行加密保護(hù), 因此,數(shù)字圖像加密技術(shù)已成為相關(guān)領(lǐng)域的重要研究課題。近年來,混沌學(xué)在圖像加密中的成功應(yīng)用有力地促進(jìn)了數(shù)字圖像加密技術(shù)的發(fā)展?;煦鐒?dòng)力系統(tǒng)的高度敏感性、偽隨機(jī)性、遍歷性和非周期性等性質(zhì)使得其非常符合數(shù)字圖像加密的需求。
混沌圖像加密方法主要有3種,即像素位置置亂[1-2]、置亂聯(lián)合像素值簡單改變[3-4]和置亂聯(lián)合像素值擴(kuò)散[5-6]。前兩種方法已被認(rèn)為是不安全的,不能有效抵御統(tǒng)計(jì)分析和差分分析攻擊,而第3種具有置亂-擴(kuò)散結(jié)構(gòu)的加密方式自文獻(xiàn)[7]提出以來,成為當(dāng)前主流的加密技術(shù)。此外,根據(jù)最小操作單位的不同,圖像加密算法又可以分為像素級(jí)和位級(jí)算法。一般地,像素級(jí)加密方法的優(yōu)勢(shì)是易于實(shí)現(xiàn),而位級(jí)加密方案的優(yōu)勢(shì)是在于可以同時(shí)改變像素位置與像素值。當(dāng)前,相對(duì)于像素級(jí)加密方法,位級(jí)加密方法較少。文獻(xiàn)[8-9]基于Logistics映射提出一種位級(jí)加密方案,該方案只是簡單地實(shí)現(xiàn)位面的置亂,沒有充分利用位分解的特性,同時(shí)也沒有進(jìn)行像素?cái)U(kuò)散,安全性較低。文獻(xiàn)[10]利用P-Fibonacci序列實(shí)現(xiàn)像素的分解,分解后的位面遠(yuǎn)多于8個(gè),由于P-Fibonacci序列有大量的冗余,增加了算法復(fù)雜度和開銷。文獻(xiàn)[11]提出了像素置亂和位替換的混合圖像加密算法,密鑰與明文密切相關(guān),對(duì)于每一個(gè)明文圖像,其加密密鑰都不一樣,雖然安全性較高,但不利于批量圖像加密。
本文提出一種新型置亂-擴(kuò)散結(jié)構(gòu)的位級(jí)圖像加密算法,主要貢獻(xiàn)有以下兩方面。
(1) 利用四維超混度系統(tǒng)[12],提出一種基于混沌序列值分類的二進(jìn)制偽隨機(jī)序列生成方法。高維超混沌系統(tǒng)動(dòng)力學(xué)行為十分復(fù)雜,且初值和參數(shù)較多,非常適合用于圖像加密,但其產(chǎn)生的混沌序列值域較大且局部遍歷性較差,故不宜直接用于圖像加密。為了得到優(yōu)良偽隨機(jī)性能的二進(jìn)制序列,本文提出將超混沌系統(tǒng)產(chǎn)生的混沌序列按值的大小依次進(jìn)行分類,把每個(gè)類減去其中心(均值)后再經(jīng)過符號(hào)函數(shù)處理,得到二進(jìn)制序列。該二進(jìn)制序列很好地通過NIST統(tǒng)計(jì)測試[13],具有優(yōu)良的偽隨機(jī)性能,為本文加密算法提供了安全的密鑰流(移位步長、載體矩陣和擴(kuò)散矩陣)。
(2) 利用圖像位分解后的特殊性質(zhì)(高3位形成的位面占據(jù)了整個(gè)圖像信息的87.84%)來設(shè)計(jì)位級(jí)置亂策略和分存策略。將每一個(gè)高3位(第8、7、6位)形成的位面作為一個(gè)獨(dú)立的操作單元,而將低5位(第5、4、3、2、1位)形成的位面整體作為一個(gè)操作單元,共計(jì)4個(gè)操作單元。在這4個(gè)操作單元上分別獨(dú)立執(zhí)行行列偽隨機(jī)循環(huán)移位,接著把移位置亂后的位面巧妙地分存到4個(gè)由偽隨機(jī)二進(jìn)制序列轉(zhuǎn)化得到的載體圖像中,即用它們分別替換4個(gè)載體圖像對(duì)應(yīng)的位面,且它們?cè)诿總€(gè)載體圖像中分存的位置互不相同。最后,對(duì)4個(gè)載體圖像執(zhí)行按位異或運(yùn)算后得到初步的密文圖像。這里的置亂和分存策略既提升了加密安全,又兼顧了計(jì)算效率。
為進(jìn)一步提升加密安全,最后再對(duì)初步密文圖像的像素值進(jìn)行雙向擴(kuò)散。為此,本文結(jié)合文獻(xiàn)[14]的方法,提出在線性擴(kuò)散遞推式中添加擴(kuò)大因子,以增加明文變化對(duì)密文的影響,其中擴(kuò)散圖像由前述的偽隨機(jī)二進(jìn)制序列轉(zhuǎn)化得到。為顯示算法的有效性,本文進(jìn)行了秘鑰空間、敏感性、統(tǒng)計(jì)、差分和效率分析,結(jié)果表明本算法具有較高的安全性和效率。
以常微分方程自治系統(tǒng)描述的高維超混度系統(tǒng)具有復(fù)雜的混沌動(dòng)力學(xué)行為,相對(duì)低維的離散混沌系統(tǒng),更適合用于圖像加密。目前,高維混沌系統(tǒng)引起了廣泛的研究。本文采用文獻(xiàn)[12]提出的一種具有5個(gè)控制參數(shù)和4個(gè)初值的四維超混沌系統(tǒng),其動(dòng)力學(xué)方程如下:
式中, a , b, c, d,k為控制參數(shù);x, y, z, w為關(guān)于時(shí)間t的未知量。當(dāng)參數(shù) a = 3 6, b = 3 , c =28,d=- 1 6, k ∈[- 0 .7, 0.7]時(shí),式(1)所示的系統(tǒng)進(jìn)入混沌狀態(tài)。此時(shí),式(1)的4個(gè)Lyapunov指數(shù)分別為λ1= 1 .552, λ2= 0 .023, λ3= 0 , λ4=-1 2.573??梢钥闯?,系統(tǒng)有2個(gè)正的Lyapunov指數(shù),因此,其具有更好的不可預(yù)測性、更復(fù)雜的動(dòng)力學(xué)行為以及更大的密鑰空間,這使得其應(yīng)用于數(shù)字圖加密時(shí)具有更大的優(yōu)勢(shì)。
本節(jié)基于式(1)的四維超混沌系統(tǒng),提出一種性能優(yōu)良的偽隨機(jī)二進(jìn)制序列生成方法,為后續(xù)的加密算法提供安全的密鑰流。下面,首先提出一般實(shí)值序列生成二進(jìn)制序列的算法。給定一個(gè)長度為L的實(shí)值序列 S ={s1, s2,s3,… , sL},基于該序列生成等長度二進(jìn)制序列B的算法如下:
算法 1
1) 初始化二進(jìn)制序列B,令B=?。
2) 記smin,smax分別為序列S的最大值和最小值,即序列的值域?yàn)?[smin, smax]。令T為一個(gè)正整數(shù),將序列的值域等分成T個(gè)長度為 h = ( smax-smin)T的子區(qū)間,等分點(diǎn)記為:
其中, r0= smin, rT=smax。以T+1個(gè)等分點(diǎn)rj,j = 0,1,2,… ,T為中心,把序列S的值進(jìn)行分類, 同時(shí)基于該分類對(duì)二進(jìn)制序列B進(jìn)行賦值。
3) 令 j=0,記集合 Sj為:
則完成第一次分類,其中 Sj為原序列S的一個(gè)子集(子序列)。計(jì)算 Sj的平均值(中心)為 mj= m ean(Sj).令 S =S/Sj,即將 Sj從S中去除。設(shè) Sj的長度為Lj,則根據(jù)(2)式對(duì)B進(jìn)行賦值:
4) 令j=j+1,如果 j≤T,轉(zhuǎn)到步驟3繼續(xù)執(zhí)行;否則,算法終止循環(huán),此時(shí)S已完成全部分類,且二進(jìn)制序列B完成賦值。
根據(jù)算法1,結(jié)合第2節(jié)的四維超混沌系統(tǒng),即可得到偽隨機(jī)二進(jìn)制序列,具體算法如下:
算法 2
1) 記將要得到的偽隨機(jī)二進(jìn)制序列為B,長度為4·L, 初始化序列B=?。
2) 給定初值、控制參數(shù)和時(shí)間步長,利用式(1)生成4個(gè)混沌序列,得到4個(gè)長度皆為L的混沌序列
3) 根據(jù)算法1,將 X , Y, Z,W轉(zhuǎn)化為二值序列
4) 令i=1,對(duì)序列B按照式(3)進(jìn)行賦值:
5) 令i=i+1,若i≤L則轉(zhuǎn)步驟4繼續(xù)執(zhí)行;否則算法終止,并得到最終的偽隨機(jī)二進(jìn)制序列B。
對(duì)于算法2得到的偽隨機(jī)二進(jìn)制序列,其偽隨機(jī)性能需要經(jīng)過檢驗(yàn),具有優(yōu)良的偽隨機(jī)性才能提升加密安全。為此,本文采用標(biāo)準(zhǔn)的US NIST統(tǒng)計(jì)測試組對(duì)算法2得到的二進(jìn)制序列B進(jìn)行隨機(jī)性測試。NIST測試組提供了15個(gè)測試,詳細(xì)測試方法可參考文獻(xiàn)[13]。對(duì)于每個(gè)測試,給定顯著水平α,然后由二進(jìn)制序列計(jì)算一個(gè)P值(接受水平)。如果P≥α,則序列通過測試,且其為隨機(jī)序列的置信度為1-α;否則,該序列未能通過測試,序列的隨機(jī)性能較差。令 L = 1 00 000 0, α = 0 .01,表1列出了序列B的NIST統(tǒng)計(jì)測試結(jié)果??梢钥闯?,序列B很好地通過了所有的統(tǒng)計(jì)測試,表明其具有良好的偽隨機(jī)性能。為方便起見,表1用首字母縮寫來表示具體的測試名稱,如FT代表頻率測試(frequency test),TFB 代表塊式頻率測試(test for frequency within A block),其他縮寫的含義以此類推。
表1 二進(jìn)制序列B的NIST統(tǒng)計(jì)測試結(jié)果
本文考慮的待加密明文圖像為8位灰度圖像,灰度級(jí)為 256,因此,每個(gè)像素可以用 8位二進(jìn)制序列表示,進(jìn)而整個(gè)圖像可以分解為8個(gè)位面。
記明文圖像為 I =(Ii,j)M×N,其中M,N分別為圖像的高度和寬度。像素Ii,j的位分解可以表示為:
則8個(gè)二維二進(jìn)制矩陣 Pl(l = 1,2,… ,8 )構(gòu)成明文圖像矩陣I的位面分解。其中, P8為像素最高位對(duì)應(yīng)的位面,而 P1為像素最低位對(duì)應(yīng)的位面。
圖像像素不同位所包含的信息量各不相同,記Info(q)表示第q位所占的信息量比重,則有:
由此得出,最高位包含了50.20%的信息量,最低位只占據(jù)了0.39%的信息量,高3位(第7、6、5)位所包含的信息量高達(dá)87.84%,而低5位所占的信息量只有12.16%。根據(jù)這一特性,本文在設(shè)計(jì)加密方案時(shí),分別單獨(dú)對(duì) P8,P7,P6進(jìn)行操作,而把P1, P2, P3, P4, P5作為一個(gè)整體進(jìn)行操作。最后,各位面按照式(7)計(jì)算,即可恢復(fù)原始圖像:
基于前述的圖像位面分解和算法2,本節(jié)提出一種新的圖像加密算法。
算法 3
1) 按照第3節(jié)的方法,將明文圖像I分解成三維二進(jìn)制矩陣 P =(Pi,j,k)M×N×8,則根據(jù)(5)式定義的8個(gè)二維二進(jìn)制矩陣 Pl(l = 1 ,2,3,… ,8)為I分解后的8個(gè)位面,其中 P8, P7, P6為像素高3位對(duì)應(yīng)的位面,P5, P4, P3, P2, P1為低5位對(duì)應(yīng)的位面。
2) 利用算法2生成4個(gè)長度為L的偽隨機(jī)二進(jìn)制序列 B1, B2, B3, B4,其中 L > M N8。
3) 分別截取B1長度為8M, 8N的子序列,并分別將它們轉(zhuǎn)化為0到255之間的整數(shù)序列 S1,x, S1,y,其中每8個(gè)二進(jìn)制數(shù)轉(zhuǎn)化為一個(gè)整數(shù),序列的長度分別為M, N。分別對(duì) B2, B3, B4執(zhí)行同樣的操作,得到整數(shù)序列 S2,x, S2,y,S3,x, S3,y,S4,x, S4,y。
4) 對(duì) P8先后進(jìn)行行列循環(huán)移位(從左至右,從上至下),行列的移位步長分別為 S1,x, S1,y。對(duì)其余的bit面分別做類似的操作,其中 P7和 P6對(duì)應(yīng)的行列移位步長分別為 S2,x, S2,y和S3,x, S3,y,而P5, P4, P3, P2, P1對(duì)應(yīng)的行列移位步長都為S4,x, S4,y,即把低5位的位面作為一個(gè)整體進(jìn)行行列移位操作。移位后的位面記為, q = 1,2,3,… ,8 。
5) 分別從二進(jìn)制序列 B1, B2, B3, B4中截取長度為MN8的子序列,并重塑為4個(gè)規(guī)模為MN8的三維二進(jìn)制矩陣 D1,D2, D3, D4。根據(jù)(5)式分別定義位面它們按照(7)式形成的二維十進(jìn)制(0到255)矩陣被稱為載體矩陣。
式中,⊕表示按位異或運(yùn)算。將C按照式(7)轉(zhuǎn)化為二維十進(jìn)制矩陣,得到初步密文圖像E。
8) 為進(jìn)一步提高安全性,對(duì)密文圖像E的像素值進(jìn)行正反雙向擴(kuò)散。根據(jù)式(1)和算法2,再次生成一個(gè)長度為MN8的二進(jìn)制序列,并將其進(jìn)一步轉(zhuǎn)化為0到255間的二維十進(jìn)制矩陣F,其被稱為擴(kuò)散矩陣。記正反擴(kuò)散后的圖像分別為G, K,先利F對(duì)E進(jìn)行正向擴(kuò)散,為此,推廣文獻(xiàn)[14]的線性擴(kuò)散方法如下:
式中, i = 1,2,3,… ,M; j = 1,2,3,… ,N;參數(shù)α為新增的擴(kuò)大因子,有利于增加明文變化對(duì)密文的影響;G0,N為給定的初值。反向擴(kuò)散方法如下:
式中, i = M ,M-1;M-2,…,1; j = N,N-1;N-2,… ,1,KM+1,0為給定的初值。經(jīng)雙向擴(kuò)散后,K即為最終的密文圖像。
解密過程與加密過程互逆。已知密文K,利用擴(kuò)散矩陣F和線性擴(kuò)散遞推式(10)解出矩陣G,再利用遞推式(9)得出中間密文E,繼續(xù)將其進(jìn)行bit面分解,得到對(duì)應(yīng)的三維位面矩陣C。然后分別用C與4個(gè)載體矩陣的三維位面矩陣 D1, D2, D3, D4按照(11)式執(zhí)行按位異或運(yùn)算,得到
即它們正是明文圖像I分解并經(jīng)過置亂后的位面。這一步的信息提取可以視為加密過程中分存技術(shù)的逆過程。接著,分別利用步長 Si,x, Si,y(i = 1,2,3,4)對(duì)位面(q =1,2,… ,8 )進(jìn)行逆向列行循環(huán)移位(從下至上,從右至左),得到I分解后的位面Pq, 然后再根據(jù)式(7)的計(jì)算,即可恢復(fù)明文圖像I,解密完成。值得注意的是,和(i = 1 ,2,3,4)并不完全相等,而只是有部分位面相等。此外,步驟7)可以成功解密的一個(gè)重要條件是:在步驟6)中,位面在不同載體矩陣中嵌入的位置互不相同。
秘鑰空間是指加密算法中全部可用的秘鑰數(shù)量。安全的加密算法必須擁有足夠大的秘鑰空間來抵御攻擊者的窮舉暴力攻擊。秘鑰空間的大小主要與秘鑰參數(shù)個(gè)數(shù)和敏感性精度有關(guān)。本文的秘鑰參數(shù)主要有5個(gè),即初值x, y, z, w和參數(shù)k。設(shè)置秘鑰為
下面測試秘鑰的敏感性,先采用式(12)中的秘鑰對(duì)明文圖像Lena進(jìn)行加密,得到密文圖像,接著再分別用兩組秘鑰對(duì)密文圖像進(jìn)行解密。其中,第一組秘鑰為式(12),而第二組為對(duì)式(12)中的x0執(zhí)行一個(gè) 1 0-14級(jí)的微小擾動(dòng)。圖1顯示了Lena圖像分別用第1、2組密鑰進(jìn)行加解密后的圖像??梢?,即使密鑰相差 1 0-14也無法對(duì)密文圖像進(jìn)行正確解密。敏感性測試顯示, 算法對(duì)秘鑰高度敏感,該測試也同時(shí)表明敏感性精度至少為 1 0-14。結(jié)合秘鑰參數(shù),本文的秘鑰空間高達(dá) 1 0-140,可有效應(yīng)對(duì)窮舉暴力攻擊。
圖1 秘鑰敏感性測試
統(tǒng)計(jì)分析是密文竊取者通過統(tǒng)計(jì)的方法來獲取明文圖像的一種有力工具。為了抵御統(tǒng)計(jì)分析,理想的加密算法須通過統(tǒng)計(jì)分析測試。下面對(duì)本算法進(jìn)行3個(gè)方面的統(tǒng)計(jì)分析測試,即直方圖分析、像素相關(guān)性分析和信息熵分析。
1) 直方圖分析。直方圖通過像素值的分布情況反映了圖像的部分統(tǒng)計(jì)特性。為了有效降低通過直方圖來破譯密文圖像的可能性,要求密文圖像的直方圖盡可能均勻化分布,以隱藏明文的統(tǒng)計(jì)特性。圖2a和2b分別給出了明文圖像(圖1a)和密文圖像(圖1b)的直方圖。可以看出,和明文圖像相比,密文圖像的直方圖具有相當(dāng)?shù)囊恢滦?,有效地隱藏了明文的統(tǒng)計(jì)信息。
圖2 明文圖像和密文圖像的直方圖對(duì)比
2) 像素相關(guān)性分析。在有意義的明文圖像中,相鄰像素之間具有很高的相關(guān)性,這給統(tǒng)計(jì)分析攻擊提供了可能。因此,理想的加密算法應(yīng)有效地降低像素之間的相關(guān)性。下面測試兩個(gè)相鄰像素的相關(guān)性,為此,分別從明文圖像和密文圖像中隨機(jī)選擇2 500對(duì)相鄰的像素,然后計(jì)算相鄰像素序列的相關(guān)系數(shù)。表2給出了明文和密文圖像在3個(gè)方向上的相關(guān)系數(shù)??梢姡鄬?duì)于明文圖像,密文圖像的像素相關(guān)性得到了有效的降低,最高降幅達(dá)99.16%.
表2 明文和密文圖像在3個(gè)方向的相關(guān)系數(shù)
3) 信息熵分析。信息熵是系統(tǒng)有序化的一種衡量。在圖像加密中,信息熵用來度量圖像中灰度值的分布情況,灰度分布越均勻(隨機(jī)),信息熵越大,圖像抵抗統(tǒng)計(jì)攻擊的能力越強(qiáng)。一幅256級(jí)的灰度圖像的理想信息熵值為8,如果實(shí)際計(jì)算值非常接近8,表明加密系統(tǒng)有足夠的安全性。圖像I的信息熵H(I)定義為:
式中,L=256為灰度級(jí);Ii表示屬于第i個(gè)灰度級(jí)的像素值; p (Ii)表示像素值Ii在圖像I中出現(xiàn)的概率(頻次)。對(duì)于密文圖5a,根據(jù)(13)式計(jì)算的信息熵為7.998 6??梢?,本文加密算法所得的密文非常接近隨機(jī)密文,有效地提升了加密安全。
差分攻擊是一種常用的選擇明文攻擊方法,其通過分析特定明文差分對(duì)相應(yīng)密文差分的影響來獲得密鑰。抵御差分攻擊要求加密算法對(duì)明文高度敏感。這種明文敏感性通過兩個(gè)指標(biāo)來度量,一個(gè)是像素?cái)?shù)改變率(NPCR),另一個(gè)是歸一化像素值平均改變強(qiáng)度(UACI)。NPCR度量的是密文像素的變化率,其越接近理想期望值99.61%,加密算法對(duì)明文變化越敏感,抵抗明文攻擊的能力越強(qiáng)。UACI度量的是密文像素的平均變化強(qiáng)度,其越接近理想期望值33.46%,加密系統(tǒng)能越有效地抵抗攻擊。對(duì)于256個(gè)灰度級(jí)的灰度圖像,NPCR和UACI的定義如下:
式中,M, N分別為圖像的高度和寬度; C1, C2分別為兩個(gè)僅有一個(gè)bit像素之差的明文圖像對(duì)應(yīng)的密文圖像。當(dāng) C1( i,j) = C2(i,j )時(shí) D (i ,j)=0,否則D (i ,j)=1。表3比較了本文算法與文獻(xiàn)[5]、文獻(xiàn)[15]和文獻(xiàn)[16]算法得到的Lena密文圖像的平均NPCR和UACI??梢钥闯觯疚乃惴芪膱D像的NPCR和UACI均非常接近于理想值,且略優(yōu)于其他幾種算法。
表3 不同算法密文圖像的平均NPCR和UACI
加密算法的效率對(duì)批量加密和實(shí)時(shí)加密具有重要影響。下面對(duì)本文加密算法的效率進(jìn)行分析,并與相關(guān)的算法[16-18]進(jìn)行對(duì)比。為此,對(duì)算法的序列產(chǎn)生、置亂環(huán)節(jié)和擴(kuò)散環(huán)節(jié)進(jìn)行分段計(jì)時(shí)(單位為s,計(jì)算軟件為MATLAB R2017a,PC機(jī)內(nèi)存為8 GB、主頻為3.4 GHZ)。計(jì)算結(jié)果如表4所示,可見,本算法總耗時(shí)1.125 s,其中混沌序列的生成占據(jù)了總耗時(shí)的90%。相較于文獻(xiàn)[16]和文獻(xiàn)[17],本算法具有明顯的效率優(yōu)勢(shì),但稍遜于文獻(xiàn)[18]的算法。由于超混沌系統(tǒng)需要求解常微分方程組,故混沌序列的生成占據(jù)了較多的時(shí)間,如把式(1)換成離散系統(tǒng),則可進(jìn)一步提升加密效率。解密效率和加密效率等同。
表4 本文與文獻(xiàn)[16-18]的算法耗時(shí) s
本文提出一種基于四維超混沌系統(tǒng)的位級(jí)圖像加密算法。首先利用四維超混沌系統(tǒng),提出一種基于混沌序列值分類的二進(jìn)制偽隨機(jī)序列產(chǎn)生方法。接著,基于得到的偽隨機(jī)二進(jìn)制序列,設(shè)計(jì)圖像加密算法。利用圖像位面分解后的特殊性質(zhì),分別對(duì)不同的位面進(jìn)行不同的行列循環(huán)移位置亂,并將置亂后的位面分存在不同的載體矩陣中。把載體矩陣執(zhí)行按位異或運(yùn)算后得到初步密文,再對(duì)其執(zhí)行線性雙向擴(kuò)散后,得到最終的密文。本文加密算法具有較高的安全性和計(jì)算效率,其在秘鑰空間、密文直方圖、相關(guān)性和統(tǒng)計(jì)性方面均接近理想狀態(tài)。
本文的研究工作得到了深圳市科技計(jì)劃項(xiàng)目(JCYJ20160527102119211, JCYJ20160530141956915,JCYJ20130401095947234)和深圳信息職業(yè)技術(shù)學(xué)院科研培育項(xiàng)目(QN201710)的資助,在此表示感謝!
電子科技大學(xué)學(xué)報(bào)2018年6期