張 斌
(寶雞文理學(xué)院計(jì)算機(jī)學(xué)院,陜西 寶雞 721016)
陳剛等人在論文[1]中提出了一種新的自適應(yīng)圖像加密算法,并證明了加密后的圖像可以有效防止已知明文攻擊。與此同時(shí),算法還具有良好的完整性保護(hù)功能,可以用于圖像驗(yàn)證。然而加密算法最重要的指標(biāo)是算法的安全性,即算法應(yīng)該不僅能夠抵抗已知明文攻擊,還應(yīng)該能抵抗其他攻擊方式。周慶等學(xué)者在論文[2]中針對(duì)自適應(yīng)圖像加密算法提出了兩種選擇明文攻擊和統(tǒng)計(jì)學(xué)攻擊。本文針對(duì)自適應(yīng)圖像加密算法所面臨的威脅提出了一種改進(jìn)算法,改進(jìn)算法在原算法每一輪加密后增加了一個(gè)S變換的步驟。理論分析和實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法可以有效地提高原算法的安全性。
我們將數(shù)字圖像每64比特長(zhǎng)度即8個(gè)像素點(diǎn)分成一組,最后行數(shù)和列數(shù)不足的部分用0填充補(bǔ)足。圖1給出了組內(nèi)一輪S變換的內(nèi)部結(jié)構(gòu)。
圖1 一輪S變換處理過(guò)程
每組8個(gè)像素點(diǎn)被分成左右兩個(gè)部分,邏輯關(guān)系如下:
Li=Ri-1
Li=Li-1⊕S(Ri)
擴(kuò)展變換的原理與DES擴(kuò)展變換的原理相同。自適應(yīng)圖像加密算法描述:
①生成密鑰序列。
獲取用戶口令并且把它轉(zhuǎn)化成二進(jìn)制序列的形式S,例如“1010110…”。
②圖像分割
IfS[i]=0
分割圖像為上下兩部分;
Else if S[i]=1
分割圖像為左右兩部分;
③互換加密
首先,我們把后部Ir標(biāo)準(zhǔn)化為RIr,然后用RIr混亂前部Ih為 Ih'。然后,我們標(biāo)準(zhǔn)化Ih'為,接著使用混亂后部Ir為Ir'。最后,我們把Ih'和Ir'結(jié)合起來(lái)構(gòu)成I'。
④循環(huán)
迭代加密直到密鑰序列S[i]結(jié)束。改進(jìn)算法描述:
①生成密鑰序列。
②圖像分割
③互換加密
④S變換
把數(shù)字圖像I′輸入S盒,進(jìn)行S變換。
⑤循環(huán)
密鑰首位為0時(shí),第一輪自適應(yīng)換位操作過(guò)后,該數(shù)字圖像保持不變。當(dāng)算法運(yùn)行到第④步時(shí),把數(shù)字圖像I′分組進(jìn)行S變換。此時(shí),像素i(N+1,1)可能的分組有4種情況,像素i(2N,2N)可能分組有兩種情況,如圖2(a,b)。
圖2(a)像素i(N+1,1)可能的分組
密鑰首位為1時(shí),第一輪自適應(yīng)換位操作過(guò)后,數(shù)字圖像右下1/4部分的1元素循環(huán)左移一個(gè)位置到i(2N,2N-1)。當(dāng)算法運(yùn)行到第④步時(shí),把數(shù)字圖像I′分組進(jìn)行S變換。此時(shí),像素i(N+1,1)可能的分組有4種情況,同圖2(a),像素i(2N,2N-1)可能的分組有兩種情況,如圖2(c)。圖3(a-c)為這8種情況分別通過(guò)S變換后的結(jié)果。圖4(a,b)給出了其余分組及通過(guò)S變換后的結(jié)果。
圖2(b)像素i(N+1,1)可能的分組
圖2(c) 像素i(2N,2N-1)可能的分組
圖3(a)像素i(N+1,1)通過(guò)S變換后的結(jié)果
圖3(b)像素i(2N,2N)通過(guò)S變換后的結(jié)果
圖3(c)像素i(2N,2N-1)通過(guò)S變換后的結(jié)果
圖4(a) 其余像素分組情況圖
圖4(b) 其余像素通過(guò)S變換后的結(jié)果
通過(guò)分析結(jié)果我們發(fā)現(xiàn)從改進(jìn)算法運(yùn)行的第一輪開(kāi)始就破壞了第一種選擇明文攻擊所需的條件,密文中的元素不再是有規(guī)律的排列,而是一種貌似雜亂無(wú)章的變化。我們可以得出結(jié)論,改進(jìn)的算法方案可以有效地抵抗通過(guò)第一種選擇明文攻擊來(lái)破譯原算法。
同理,采用第二種選擇明文攻擊方式對(duì)改進(jìn)算法攻擊。不管密鑰序列k當(dāng)前的值為0還是為1,一輪自適應(yīng)換位操作過(guò)后,右上角的元素2右移一個(gè)位置,左下角的元素0左移一個(gè)位置。當(dāng)算法運(yùn)行到第④步時(shí)把數(shù)字圖像I′分組進(jìn)行S變換。此時(shí),元素值0可能的分組有兩種情況,元素值2可能分組有兩種情況,如圖5(a,b)。圖6(a,b)為這四種情況,分別通過(guò)S變換后的結(jié)果。
圖5(a) 元素值0可能的分組情況
圖5(b) 元素值2可能的分組情況
圖6(a) 元素值0通過(guò)S變換后的結(jié)果
圖6(b) 元素值2通過(guò)S變換后的結(jié)果
通過(guò)分析結(jié)果我們可以看出從改進(jìn)算法運(yùn)行的第一輪開(kāi)始同樣破壞了第二種選擇明文攻擊所需的條件,密文中的元素不再是有規(guī)律的改變,而是一種貌似雜亂無(wú)章的變化。我們可以得出結(jié)論,改進(jìn)的算法方案可以有效地抵抗通過(guò)第二種選擇明文攻擊來(lái)破譯自適應(yīng)圖像加密算法的密鑰。
改進(jìn)算法在每輪自適應(yīng)換位加密過(guò)后,增加了一個(gè)非線性操作——S盒變換。通過(guò)S盒變換可以實(shí)現(xiàn)代替操作,是明文中的像素值被其他像素值所取代的一種處理方法。每輪加密有一半的像素點(diǎn)實(shí)現(xiàn)了代替操作,具體來(lái)說(shuō)每組8個(gè)像素點(diǎn)中,對(duì)4個(gè)像素點(diǎn)進(jìn)行了S變換。所以基于DES密碼S盒改進(jìn)的自適應(yīng)圖像加密算法能夠改變圖像像素值分布的統(tǒng)計(jì)信息。對(duì)Lenna.jpg使用基于DES密碼S盒改進(jìn)算法密鑰序列為“10110”時(shí)加密的結(jié)果和圖像的像素值分布直方圖,如圖7所示。
圖7 改進(jìn)算法明文、密文及其像素值分布直方圖
在明文圖像中,相鄰像素的相關(guān)性通常很高,一個(gè)實(shí)用的圖像加密算法應(yīng)去除相鄰像素的相關(guān)性。我們使用改進(jìn)算法加密lenna.jpg圖像,從明文和密文圖像隨機(jī)地選取500對(duì)相鄰像素位置計(jì)算對(duì)應(yīng)的相關(guān)系數(shù)。實(shí)驗(yàn)證明,改進(jìn)算法加密后的圖像相鄰像素位置相關(guān)系數(shù)趨近于0。
圖8 lenna.jpg明文圖像和密文圖像
表1 明文和密文相鄰像素位置
本文提出了基于DES密碼S盒的改進(jìn)自適應(yīng)圖像加密算法。這種方法解決了原算法面臨的幾種安全性威脅。同時(shí),實(shí)驗(yàn)表明密文圖像的相鄰像素相關(guān)性幾乎為0。
[1]Chen G,Zhao X Y,LiJ L.Self-adaptive algorithm on image encryption[J].Ruan Jian Xue Bao(Journal of Software),2005,16(11):1975-1982.
[2]周慶,胡月,廖曉峰.一種自適應(yīng)的圖像加密算法的分析及改進(jìn)[J]. 電子學(xué)報(bào),2009(12):2730-2734.