翟依依+王光義
摘 要: Tent混沌映射結(jié)構(gòu)簡單但產(chǎn)生的混沌序列隨機性能好,采用NIST測試能權(quán)威地檢測序列的隨機性能。通常運用混沌加密數(shù)字圖像時,都是指定初值和控制參數(shù)。在此使用改進后的混沌序列,把初值的產(chǎn)生和明文圖像聯(lián)系起來,對圖像進行置亂,再改變灰度值。仿真驗證了此算法加解密的有效性和良好的安全性能。
關(guān)鍵詞: Tent混沌映射; 隨機性能; 圖像加密; NIST
中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2014)12?0073?05
Abstract: Tent chaotic mapping structure is simple, but has good chaotic sequence random performance, which can be detected by NIST (National Institute of Standards and Technology). When chaos is applied to the digital image encryption, the initial value and the control parameters of the chaotic systems are always given. The improved chaotic sequence is used in this paper to connect the generation of the initial value with the plaintext image. The random sequences generated by Tent mapping are employed in scrambling the image and changing the pixels of the image. The simulation results show that the algorithm is valid and has perfect safety performance for the encryption and decryption.
Keywords: Tent chaotic mapping; random performance; image encryption; NIST
0 引 言
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,數(shù)字圖像的應(yīng)用越來越廣泛,大量數(shù)字圖像信息的傳輸對圖像加密技術(shù)的要求也越來越迫切。常見的加密對象是文本信息。數(shù)字圖像雖然可以轉(zhuǎn)化成二維序列,但與文本信息相比信息量要大很多;同時,由于人的視覺系統(tǒng)特點,數(shù)字圖像允許圖像的內(nèi)容有所缺損,而文本信息往往要求無損加密[1]。傳統(tǒng)加密算法(如RSA或DES)雖然可以用于數(shù)字圖像加密,但效率不高。一般圖像加密的方法有3種:對圖像像素位置置亂;對圖像的灰度值加密;對像素位置和灰度值均進行加密。單純的像素置亂易采用統(tǒng)計的方法進行破解[2]。可使用偽隨機序列對像素的空間位置置亂和對圖像灰度值進行加密。而偽隨機序列的產(chǎn)生成為關(guān)鍵[2]。由于混沌系統(tǒng)具有良好的偽隨機性,軌道不可預測性及初始狀態(tài)敏感性等特征,不僅算法相對簡單,執(zhí)行效率高,而且加密的圖像安全性好。本文提出了一種基于Tent混沌序列的數(shù)字圖像加密算法,該算法加密時使秘鑰的產(chǎn)生與明文相關(guān),使產(chǎn)生的偽隨機序列與明文也有關(guān),從而增強了破譯加密圖像的難度。
1 混沌系統(tǒng)及序列隨機性分析
1.1 Tent混沌系統(tǒng)
Tent混沌系統(tǒng)的系統(tǒng)方程:
1.2 改進的Tent混沌系統(tǒng)
由于原Tent系統(tǒng)迭代值分布在區(qū)間(0,1)內(nèi),先把迭代值取值范圍擴展到(0,k)內(nèi),其中k>1。以下系統(tǒng)滿足要求:
1.3 改進Tent混沌加密優(yōu)點分析
由于目前混沌系統(tǒng)加密都是用于數(shù)字系統(tǒng),每一個迭代值都會轉(zhuǎn)化成一個有限長的二進制序列,即截取每一迭代值有限長的一段。當兩個數(shù)值非常相近的迭代值不同的部分被忽略時,這兩個截取后的值就完全相等,再進行迭代時后面的數(shù)值就會相等,即混沌序列產(chǎn)生了周期性。這種周期性是我們加解密時不希望看到的。把原本(0,1)上的迭代值經(jīng)過改進拓展到(0,k)([k≥1])上,在概率意義上延遲了周期性在一個序列中的產(chǎn)生。設(shè)d=[xn+1-xn],則:
1.4 序列隨機性分析
為了定量確定改進后的Tent系統(tǒng)產(chǎn)生序列的偽隨機性,對序列迭代值離散化后進行NIST測試,來檢測序列隨機性能。
為了得到混沌數(shù)字序列,采用整數(shù)求余量化。取[x(0)=0.01,μ=1.999],產(chǎn)生2億個迭代值。取每個迭代值小數(shù)點后3位組成一個新的數(shù)字,這個數(shù)字對256求余得到位于[0,255]的整數(shù),再把這個整數(shù)化成8位二進制數(shù),得到混沌二值序列。
再對這個序列進行NIST測試。測試采用的是美國國家技術(shù)與標準局NIST推出的STS(Statistical Test Suite)測試程序包。本次測試采用的是sts2.1.1測試包,包含16項測試,其中15項是對偽隨機序列性能測試的指標。有兩項評定序列性能指標,分別是P?VALUE值和PROPOTION通過率。
(1) P?VALUE值反應(yīng)序列的均勻分布特性,計算公式如下:
[χ2=i=110(Fi-0.1m)20.1m] (4)
式中[Fi]是P?VALUE值在[0.1(i?1),0.1i]的數(shù)目,m是分的組數(shù)。
[P-VALUE=igamc(4.5,χ22)] (5)
若P?VALUE的值大于0.000 1,則可認為序列分布均勻。
(2) PROPOTION通過率
通過率主要是測試序列通過的百分比,測試通過的可信區(qū)間為:
[1-α±3α(1-α)/m] (6)
式中顯著水平[α]=0.01,分組測試[m≥1 000]。
在linux平臺下進行。把數(shù)據(jù)分為5 000組,每組序列[2×104] b。測試結(jié)果如表1所示。
表1:NIST測試結(jié)果
從表1可看出,PROPOTION通過率全部都合格,P?VALUE均勻分布中隨機偏離測試,隨機變量偏離測試,其余均通過。總體來說,序列性能良好,可用于混沌加密。
2 加解密算法
本算法的密鑰設(shè)置成與明文像素值有關(guān)的值,由其來產(chǎn)生混沌迭代的初始值,產(chǎn)生的偽隨機序列與明文有關(guān),從而增加了破譯難度。用產(chǎn)生的序列來進行對數(shù)字圖像的像素置亂和灰度處理。加解密流程如圖5所示。
2.1 產(chǎn)生密鑰
本算法采用Tent混沌系統(tǒng)產(chǎn)生的迭代值。輸入要加密圖像,得圖像大小為[M×N]。該圖像可用二維矩陣[P(M,N)]表示。任取明文圖像的一行(這里取第floor([M2])行,其中floor()是向下取整函數(shù)),對該行像素值求和得到一個整數(shù),再把這個整數(shù)化成[0.099,0.1]之間的數(shù),將其作為迭代初始值:
[x(0)=mod(i=1Nh(i),256)2 560] (7)
式中[x(0)]是迭代初始值;[N]是圖像像素點的列數(shù);[h(i)]是某一點的像素值;[mod(x,y)]是求余函數(shù)。
2.2 置亂算法
(1) 混沌序列的產(chǎn)生。根據(jù)式(7)產(chǎn)生迭代初始值,令[μ=1.99],代入式(2)產(chǎn)生混沌序列[x(n)]。為了增加序列的隨機性,從[x(n)]的start+1位開始(這里取start=200),如式(8)處理,得到[0, [M×N]]的y(n)。
[y(i-start)=mod(floor(x(i)×1010),M×N),start+1≤i≤start+M×N] (8)
(3) 置亂。對于其中任何一個合適的序列,對其進行排序產(chǎn)生一個新的序列[Ej(i)],再用一個長度為M×[N4]的數(shù)組[Fj(i)]存放[Ej(i)]的各個元素在原序列中的位置,也即記錄下了序列元素位置的變化,如圖8所示。把該序列對應(yīng)的圖像像素轉(zhuǎn)化為1行[M×N]的矩陣,令其像素位置按照序列元素位置的變化規(guī)律變化,從而實現(xiàn)置亂。把其余幾塊圖像按同樣方法置亂好,再拼成一幅圖像,即為置亂后的圖像。
2.3 灰度值轉(zhuǎn)換算法
置亂后的圖像進行分塊進行灰度值的處理,每塊圖像加密使用的混沌序列初值是該塊圖像像素之和按照式(7)再轉(zhuǎn)化為[0.099,0.1]上的數(shù)。
再把每塊圖像按原順序拼好后組成加密后的圖像。
2.4 解密算法
根據(jù)兩次異或后得到原數(shù)值的規(guī)律,加密后圖像再與原序列異或一次后得到置亂后的圖像,再按照置亂逆過程就可恢復原圖像。
3 實驗結(jié)果
為了驗證該算法的加密效果,進行如下仿真。按照上述算法在Matlab R2009b平臺上對Lena圖像進行加解密操作。圖像大小為256[×]256,分為4塊。實驗結(jié)果如圖9~圖15所示。
從得到的圖像和灰度直方圖可看出,加密后的圖像無法辨識,而解密后無論原圖還是灰度直方圖,都和原圖基本一致,加解密效果良好。且從加密后的直方圖看不出明顯的統(tǒng)計特征,該算法抗統(tǒng)計攻擊能力也良好。
4 密鑰敏感性分析
為了驗證本算法對密鑰的敏感程度,把置亂的初值和灰度值改變前的初值全部加0.000 02,改成:
[x(0)=mod(i=1Nh(i),256)2 560+0.000 02] (10)
進行解密,得到的解密圖像及其灰度直方圖如圖16,圖17所示。
由以上圖像可知,密鑰發(fā)生很小的變化,即使解密方法一樣,無法正確解密出正確圖像。因此該算法對解密時的密鑰相當敏感。
5 結(jié) 語
通過以上一系列分析驗證,Tent混沌系統(tǒng)雖然僅為一維混沌,復雜度不高,但產(chǎn)生的序列具有良好的隨機性。基于Tent混沌系統(tǒng)的數(shù)字圖像加密算法在密鑰中融入明文信息,復雜度提高,抗破解能力加強。該算法實現(xiàn)簡單,但加解密效果好,抗統(tǒng)計分析能力很強,密鑰敏感性很強。下一步重點工作放在對Tent系統(tǒng)進行改進和對加密算法進行優(yōu)化,進一步提高加解密效果和效率,以及抗各種干擾的能力。
參考文獻
[1] 顧勤龍,姚明海.基于Logistic混沌序列的數(shù)字圖像加密研究[J].計算機工程與應(yīng)用,2003,39(23):114?116.
[2] 鄭凡,田小健,范文華,等.基于Henon映射的數(shù)字圖像加密[J].2008.
[3] 王曉飛.混沌序列及其在加密中的應(yīng)用[D].杭州:杭州電子科技大學,2012:1?4,37?44.
[4] 劉祝華,曾高榮,謝芳森.像素值復合置亂的混沌圖像加密算法[J].計算機工程與應(yīng)用,2012,48(25):122?126.
[5] 陳艷峰,李義方.交叉分段相互置亂的雙混沌序列圖像加密算法[J].華南理工大學學報:自然科學版,2010,38(5):27?33.
[6] 穆秀春,訾鴻.一種基于混沌序列的彩色圖像加密算法J].現(xiàn)代電子技術(shù),2010,33(10):53?55.
[7] 邵偉力,孫奎遠,趙學志.基于混沌序列的CCSDS圖像壓縮算法安全性擴展[J].現(xiàn)代電子技術(shù),2011,34(10):121?123.
[8] 馬文濤,余平安.一種基于Zigzag變換及混沌序列的圖像加密方法研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(5):104?106.
通過率主要是測試序列通過的百分比,測試通過的可信區(qū)間為:
[1-α±3α(1-α)/m] (6)
式中顯著水平[α]=0.01,分組測試[m≥1 000]。
在linux平臺下進行。把數(shù)據(jù)分為5 000組,每組序列[2×104] b。測試結(jié)果如表1所示。
表1:NIST測試結(jié)果
從表1可看出,PROPOTION通過率全部都合格,P?VALUE均勻分布中隨機偏離測試,隨機變量偏離測試,其余均通過。總體來說,序列性能良好,可用于混沌加密。
2 加解密算法
本算法的密鑰設(shè)置成與明文像素值有關(guān)的值,由其來產(chǎn)生混沌迭代的初始值,產(chǎn)生的偽隨機序列與明文有關(guān),從而增加了破譯難度。用產(chǎn)生的序列來進行對數(shù)字圖像的像素置亂和灰度處理。加解密流程如圖5所示。
2.1 產(chǎn)生密鑰
本算法采用Tent混沌系統(tǒng)產(chǎn)生的迭代值。輸入要加密圖像,得圖像大小為[M×N]。該圖像可用二維矩陣[P(M,N)]表示。任取明文圖像的一行(這里取第floor([M2])行,其中floor()是向下取整函數(shù)),對該行像素值求和得到一個整數(shù),再把這個整數(shù)化成[0.099,0.1]之間的數(shù),將其作為迭代初始值:
[x(0)=mod(i=1Nh(i),256)2 560] (7)
式中[x(0)]是迭代初始值;[N]是圖像像素點的列數(shù);[h(i)]是某一點的像素值;[mod(x,y)]是求余函數(shù)。
2.2 置亂算法
(1) 混沌序列的產(chǎn)生。根據(jù)式(7)產(chǎn)生迭代初始值,令[μ=1.99],代入式(2)產(chǎn)生混沌序列[x(n)]。為了增加序列的隨機性,從[x(n)]的start+1位開始(這里取start=200),如式(8)處理,得到[0, [M×N]]的y(n)。
[y(i-start)=mod(floor(x(i)×1010),M×N),start+1≤i≤start+M×N] (8)
(3) 置亂。對于其中任何一個合適的序列,對其進行排序產(chǎn)生一個新的序列[Ej(i)],再用一個長度為M×[N4]的數(shù)組[Fj(i)]存放[Ej(i)]的各個元素在原序列中的位置,也即記錄下了序列元素位置的變化,如圖8所示。把該序列對應(yīng)的圖像像素轉(zhuǎn)化為1行[M×N]的矩陣,令其像素位置按照序列元素位置的變化規(guī)律變化,從而實現(xiàn)置亂。把其余幾塊圖像按同樣方法置亂好,再拼成一幅圖像,即為置亂后的圖像。
2.3 灰度值轉(zhuǎn)換算法
置亂后的圖像進行分塊進行灰度值的處理,每塊圖像加密使用的混沌序列初值是該塊圖像像素之和按照式(7)再轉(zhuǎn)化為[0.099,0.1]上的數(shù)。
再把每塊圖像按原順序拼好后組成加密后的圖像。
2.4 解密算法
根據(jù)兩次異或后得到原數(shù)值的規(guī)律,加密后圖像再與原序列異或一次后得到置亂后的圖像,再按照置亂逆過程就可恢復原圖像。
3 實驗結(jié)果
為了驗證該算法的加密效果,進行如下仿真。按照上述算法在Matlab R2009b平臺上對Lena圖像進行加解密操作。圖像大小為256[×]256,分為4塊。實驗結(jié)果如圖9~圖15所示。
從得到的圖像和灰度直方圖可看出,加密后的圖像無法辨識,而解密后無論原圖還是灰度直方圖,都和原圖基本一致,加解密效果良好。且從加密后的直方圖看不出明顯的統(tǒng)計特征,該算法抗統(tǒng)計攻擊能力也良好。
4 密鑰敏感性分析
為了驗證本算法對密鑰的敏感程度,把置亂的初值和灰度值改變前的初值全部加0.000 02,改成:
[x(0)=mod(i=1Nh(i),256)2 560+0.000 02] (10)
進行解密,得到的解密圖像及其灰度直方圖如圖16,圖17所示。
由以上圖像可知,密鑰發(fā)生很小的變化,即使解密方法一樣,無法正確解密出正確圖像。因此該算法對解密時的密鑰相當敏感。
5 結(jié) 語
通過以上一系列分析驗證,Tent混沌系統(tǒng)雖然僅為一維混沌,復雜度不高,但產(chǎn)生的序列具有良好的隨機性。基于Tent混沌系統(tǒng)的數(shù)字圖像加密算法在密鑰中融入明文信息,復雜度提高,抗破解能力加強。該算法實現(xiàn)簡單,但加解密效果好,抗統(tǒng)計分析能力很強,密鑰敏感性很強。下一步重點工作放在對Tent系統(tǒng)進行改進和對加密算法進行優(yōu)化,進一步提高加解密效果和效率,以及抗各種干擾的能力。
參考文獻
[1] 顧勤龍,姚明海.基于Logistic混沌序列的數(shù)字圖像加密研究[J].計算機工程與應(yīng)用,2003,39(23):114?116.
[2] 鄭凡,田小健,范文華,等.基于Henon映射的數(shù)字圖像加密[J].2008.
[3] 王曉飛.混沌序列及其在加密中的應(yīng)用[D].杭州:杭州電子科技大學,2012:1?4,37?44.
[4] 劉祝華,曾高榮,謝芳森.像素值復合置亂的混沌圖像加密算法[J].計算機工程與應(yīng)用,2012,48(25):122?126.
[5] 陳艷峰,李義方.交叉分段相互置亂的雙混沌序列圖像加密算法[J].華南理工大學學報:自然科學版,2010,38(5):27?33.
[6] 穆秀春,訾鴻.一種基于混沌序列的彩色圖像加密算法J].現(xiàn)代電子技術(shù),2010,33(10):53?55.
[7] 邵偉力,孫奎遠,趙學志.基于混沌序列的CCSDS圖像壓縮算法安全性擴展[J].現(xiàn)代電子技術(shù),2011,34(10):121?123.
[8] 馬文濤,余平安.一種基于Zigzag變換及混沌序列的圖像加密方法研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(5):104?106.
通過率主要是測試序列通過的百分比,測試通過的可信區(qū)間為:
[1-α±3α(1-α)/m] (6)
式中顯著水平[α]=0.01,分組測試[m≥1 000]。
在linux平臺下進行。把數(shù)據(jù)分為5 000組,每組序列[2×104] b。測試結(jié)果如表1所示。
表1:NIST測試結(jié)果
從表1可看出,PROPOTION通過率全部都合格,P?VALUE均勻分布中隨機偏離測試,隨機變量偏離測試,其余均通過。總體來說,序列性能良好,可用于混沌加密。
2 加解密算法
本算法的密鑰設(shè)置成與明文像素值有關(guān)的值,由其來產(chǎn)生混沌迭代的初始值,產(chǎn)生的偽隨機序列與明文有關(guān),從而增加了破譯難度。用產(chǎn)生的序列來進行對數(shù)字圖像的像素置亂和灰度處理。加解密流程如圖5所示。
2.1 產(chǎn)生密鑰
本算法采用Tent混沌系統(tǒng)產(chǎn)生的迭代值。輸入要加密圖像,得圖像大小為[M×N]。該圖像可用二維矩陣[P(M,N)]表示。任取明文圖像的一行(這里取第floor([M2])行,其中floor()是向下取整函數(shù)),對該行像素值求和得到一個整數(shù),再把這個整數(shù)化成[0.099,0.1]之間的數(shù),將其作為迭代初始值:
[x(0)=mod(i=1Nh(i),256)2 560] (7)
式中[x(0)]是迭代初始值;[N]是圖像像素點的列數(shù);[h(i)]是某一點的像素值;[mod(x,y)]是求余函數(shù)。
2.2 置亂算法
(1) 混沌序列的產(chǎn)生。根據(jù)式(7)產(chǎn)生迭代初始值,令[μ=1.99],代入式(2)產(chǎn)生混沌序列[x(n)]。為了增加序列的隨機性,從[x(n)]的start+1位開始(這里取start=200),如式(8)處理,得到[0, [M×N]]的y(n)。
[y(i-start)=mod(floor(x(i)×1010),M×N),start+1≤i≤start+M×N] (8)
(3) 置亂。對于其中任何一個合適的序列,對其進行排序產(chǎn)生一個新的序列[Ej(i)],再用一個長度為M×[N4]的數(shù)組[Fj(i)]存放[Ej(i)]的各個元素在原序列中的位置,也即記錄下了序列元素位置的變化,如圖8所示。把該序列對應(yīng)的圖像像素轉(zhuǎn)化為1行[M×N]的矩陣,令其像素位置按照序列元素位置的變化規(guī)律變化,從而實現(xiàn)置亂。把其余幾塊圖像按同樣方法置亂好,再拼成一幅圖像,即為置亂后的圖像。
2.3 灰度值轉(zhuǎn)換算法
置亂后的圖像進行分塊進行灰度值的處理,每塊圖像加密使用的混沌序列初值是該塊圖像像素之和按照式(7)再轉(zhuǎn)化為[0.099,0.1]上的數(shù)。
再把每塊圖像按原順序拼好后組成加密后的圖像。
2.4 解密算法
根據(jù)兩次異或后得到原數(shù)值的規(guī)律,加密后圖像再與原序列異或一次后得到置亂后的圖像,再按照置亂逆過程就可恢復原圖像。
3 實驗結(jié)果
為了驗證該算法的加密效果,進行如下仿真。按照上述算法在Matlab R2009b平臺上對Lena圖像進行加解密操作。圖像大小為256[×]256,分為4塊。實驗結(jié)果如圖9~圖15所示。
從得到的圖像和灰度直方圖可看出,加密后的圖像無法辨識,而解密后無論原圖還是灰度直方圖,都和原圖基本一致,加解密效果良好。且從加密后的直方圖看不出明顯的統(tǒng)計特征,該算法抗統(tǒng)計攻擊能力也良好。
4 密鑰敏感性分析
為了驗證本算法對密鑰的敏感程度,把置亂的初值和灰度值改變前的初值全部加0.000 02,改成:
[x(0)=mod(i=1Nh(i),256)2 560+0.000 02] (10)
進行解密,得到的解密圖像及其灰度直方圖如圖16,圖17所示。
由以上圖像可知,密鑰發(fā)生很小的變化,即使解密方法一樣,無法正確解密出正確圖像。因此該算法對解密時的密鑰相當敏感。
5 結(jié) 語
通過以上一系列分析驗證,Tent混沌系統(tǒng)雖然僅為一維混沌,復雜度不高,但產(chǎn)生的序列具有良好的隨機性。基于Tent混沌系統(tǒng)的數(shù)字圖像加密算法在密鑰中融入明文信息,復雜度提高,抗破解能力加強。該算法實現(xiàn)簡單,但加解密效果好,抗統(tǒng)計分析能力很強,密鑰敏感性很強。下一步重點工作放在對Tent系統(tǒng)進行改進和對加密算法進行優(yōu)化,進一步提高加解密效果和效率,以及抗各種干擾的能力。
參考文獻
[1] 顧勤龍,姚明海.基于Logistic混沌序列的數(shù)字圖像加密研究[J].計算機工程與應(yīng)用,2003,39(23):114?116.
[2] 鄭凡,田小健,范文華,等.基于Henon映射的數(shù)字圖像加密[J].2008.
[3] 王曉飛.混沌序列及其在加密中的應(yīng)用[D].杭州:杭州電子科技大學,2012:1?4,37?44.
[4] 劉祝華,曾高榮,謝芳森.像素值復合置亂的混沌圖像加密算法[J].計算機工程與應(yīng)用,2012,48(25):122?126.
[5] 陳艷峰,李義方.交叉分段相互置亂的雙混沌序列圖像加密算法[J].華南理工大學學報:自然科學版,2010,38(5):27?33.
[6] 穆秀春,訾鴻.一種基于混沌序列的彩色圖像加密算法J].現(xiàn)代電子技術(shù),2010,33(10):53?55.
[7] 邵偉力,孫奎遠,趙學志.基于混沌序列的CCSDS圖像壓縮算法安全性擴展[J].現(xiàn)代電子技術(shù),2011,34(10):121?123.
[8] 馬文濤,余平安.一種基于Zigzag變換及混沌序列的圖像加密方法研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(5):104?106.