熊競達

摘 要 混沌加密是將混沌系統(tǒng)產(chǎn)生的混沌序列作為密鑰序列,利用該序列對明文進行加密。密文經(jīng)信道傳輸,接收方可以利用混沌同步的方法將明文信息提取出來實現(xiàn)解密。通過將具有強大矩陣運算與繪圖功能的MATLAB與具有大規(guī)模數(shù)值計算能力的Fortran相結(jié)合,以數(shù)據(jù)共享的方式來實現(xiàn)圖像的混沌加密,不僅能夠使MATLAB與Fortran相互之間彌補彼此的不足,節(jié)省加密過程中大量的時間與精力,而且能夠使加密后的序列更難以破解,具有運算速度快,保真度高,密鑰量大,安全性好的特點,將是加密領(lǐng)域的一種新方法,有著廣闊的應用前景。
【關(guān)鍵詞】非線性混沌 MATLAB與Fortran共享數(shù)據(jù) 灰度圖像 流加密
近年來,隨著通信和Internet網(wǎng)絡的發(fā)展,網(wǎng)上信息被竊聽,泄露等信息安全問題層出不窮。目前國際上廣泛使用的加密算法主要有兩種:DES和RSA。DES算法運算速度快,但是秘鑰的分發(fā)和管理存在很大的困難;RSA算法的安全性高,但是存在秘鑰空間小,運算速度慢的缺陷。要實現(xiàn)圖像流加密的前提是完成圖像與數(shù)據(jù)之間的相互轉(zhuǎn)化以及對數(shù)據(jù)的多層嵌套處理。1949年Shannon證明了一次一密的密碼體制才是絕對安全的,為流加密算法的發(fā)展研究提供了理論支持。在本文中,我們就是利用非線性混沌產(chǎn)生的偽隨機數(shù)列作為流密碼,在MATLAB與Fortran數(shù)據(jù)共享中,實現(xiàn)對圖像流加密的。
1 生成混沌序列的步驟
首先我們把MATLAB中數(shù)據(jù)復制到Excel中,然后將Excel另存為"ANSI編碼"的txt文件以實現(xiàn)MATLAB向Fortran的數(shù)據(jù)傳遞;在Excel中"打開"txt文件,然后將數(shù)據(jù)復制到MATLAB的"新建變量"中以實現(xiàn)Fortran向MATLAB的數(shù)據(jù)傳遞。緊接著我們利用密鑰交換生成混沌序列初值,先將密鑰交換得到的混沌序列初值X0進行Logistic映射,從第M個數(shù)開始截取,一直截取到第M+S-1個數(shù),再將這截取的S個數(shù)每個均作為正弦平方映射的初值進行迭代N次,最后得到的S個數(shù)便組成我們所需要的混沌序列。
2 圖像加密算法
第一步:在MATLAB中將原始圖像轉(zhuǎn)化為二維灰度值矩陣,并將其導入到Fortran中作為明文序列矩陣。
第二步:通過密鑰交換,獲得混沌序列初值后,經(jīng)Logistic映射與正弦平方映射,生成混沌序列,并將其轉(zhuǎn)化為二維矩陣的形式。
第三步:將混沌序列矩陣作用在明文序列矩陣上,生成加密序列矩陣(1)。
第四步:將加密序列矩陣(1)的奇數(shù)行與偶數(shù)行互換,奇數(shù)列與偶數(shù)列互換,生成加密序列矩陣(2)。
第五步:將加密序列矩陣(2)的每10行奇偶互換,每10列奇偶互換,生成加密序列矩陣(3)。
第六步:將加密序列矩陣(3)導入到MATLAB中作為灰度值矩陣,轉(zhuǎn)化為加密圖像進行發(fā)送。
3 圖像解密算法
第一步:在MATLAB中將加密圖像轉(zhuǎn)化為二維灰度值圖像,并將其導入到Fortran中作為加密序列矩陣(3)。
第二步:將加密序列矩陣(3)的每10行奇偶互換,每10列奇偶互換,生成加密序列矩陣(2)。
第三步:將加密序列矩陣(2)的奇數(shù)行與偶數(shù)行互換,奇數(shù)列與偶數(shù)列互換,生成加密序列矩陣(1)。
第四步:通過密鑰交換獲得混沌序列初值后,同樣經(jīng)Logistic映射與正弦平方映射,生成混沌序列,并將其轉(zhuǎn)化為二維矩陣形式。
第五步:將混沌序列矩陣逆作用在加密序列矩陣(1)上,得到明文序列矩陣。
第六步:將明文序列矩陣導入到MATLAB中作為灰度值矩陣,便可轉(zhuǎn)化得到原始圖像。
4 仿真結(jié)果及分析
在本文中,我們假設(shè)發(fā)送方與接收方已提前約定:Logistic映射系數(shù)μ=3.99,正弦平方映射系數(shù)b=2,經(jīng)秘鑰交換獲得混沌映射初值X0后,從第200位起取Logistic映射數(shù)列,隨后將這一數(shù)列進行正弦平方映射迭代500次,最后輸出得到混沌序列。
若雙方經(jīng)密鑰交換得到的混沌映射初值為0.6,則對一個jpg格式的圖像進行加密和解密,結(jié)果如圖1所示。其中左圖為原始圖像;中間為加密圖像;右邊為解密圖像。
若解密方的混沌映射初值X0取值錯誤,解密后將得不到原始圖像,如將X0取為0.61進行解密,結(jié)果如圖2所示。其中左圖為原始圖像;中間為加密圖像;右邊為解密圖像。
上述仿真結(jié)果表明,基于非線性混沌與數(shù)據(jù)共享的圖像流加密算法具有很好的保密性,較難破譯。
5 結(jié)論
本文提出的算法吸收了密鑰交換的思想,同時利用Logistic映射與正弦平方映射產(chǎn)生隨機性很好的偽隨機序列作為混沌序列,通過MATLAB與Fortran數(shù)據(jù)共享的方式,對圖像進行流加密。密鑰交換確定初始密鑰的方法提高了密鑰分發(fā)與管理的安全性。利用Logistic映射與正弦平方映射相互作用產(chǎn)生的混沌序列,能得到復雜度更高的密文。而將MATLAB與Fortran數(shù)據(jù)共享來實現(xiàn)圖像加密,節(jié)省了大量的時間與精力。結(jié)果顯示,該算法具有很高的運算速度,同時加密圖像具有很高的復雜度。在不知道初始密鑰的情況下,進行窮舉法破譯是非常困難的。下一步作者將改進該算法進行彩色圖像加密的研究。
參考文獻
[1]Richanrd Spillman.經(jīng)典密碼學與現(xiàn)代密碼學[M].北京:清華大學出版社,2005.
作者單位
1.河南大學物理與電子學院 河南省開封市 475000
2.山西大學計算機與信息技術(shù)學院 山西省太原市 030006