魏 旭,陸國平,陳秋瓊
(南通大學a.電子信息學院;b.電氣工程學院,江蘇 南通 226019)
責任編輯:魏雨博
混沌映射用于加密首先是由英國的數(shù)學家Matthews提出的[1]。混沌映射具有非周期性、區(qū)域遍歷性、初值敏感性等特有的性質,所以混沌映射具有天然的密碼學特性。在加密的過程中,將混沌映射產生的序列轉換成二值序列,再與待加密的明文進行加密運算便得到加密后的密文信息,二值序列的轉換方法是對混沌序列值所在的區(qū)間進行區(qū)分的,根據(jù)相應的條件將混沌序列離散化為0或1。目前,很多混沌加密算法都是應用這樣的方法對混沌序列進行二值序列離散化的[2]?;煦缑艽a是一種新型的密碼體制,在理論上講,混沌密碼的安全強度與計算的能力是無關的,這就較如今的DES,RSA等密碼體制有著天生的優(yōu)越性,具有更為廣泛的應用前景和更高的研究價值[3]。
把混沌映射用于數(shù)碼防偽技術是近年來一個新的研究方向,利用混沌映射所特有的一些性質來對商品的生產號進行加密,從而很好地保證了商品在流通過程中不被偽造,保護了消費者權益,使得生產者的利益不被侵犯,維護了商品的市場秩序。
混沌是一種非線性過程,其結構比較復雜,對其產生的序列值很難進行分析和預測?;煦绲能壽E和其控制參數(shù)、初始狀態(tài)都有很大的關聯(lián),當初始狀態(tài)有微小的變化時,其不同初值的兩個混沌系統(tǒng)在較短的時間內就可以產生兩列不同的、互不相關的序列值。目前,很多混沌系統(tǒng)都被大家所熟知,例如:一維的有Logistic映射等,二維的有Henon映射等,三維的有Lorenz映射等。本文中用到兩個一維的混沌映射,分別為Chebyshev映射和正弦迭代混沌映射。
1)Chebyshev映射
Chebyshev映射是一種簡單卻十分有效的一維混沌映射,其表達式為
當參數(shù)q≥2時,該映射產生的序列{x(n)}在[-1,1]上遍歷,且具有正的Lyapunov指數(shù)[4]。隨著混沌映射迭代次數(shù)的增加,其產生的迭代序列值遍歷于整個值域,且呈現(xiàn)無規(guī)律和無周期性。這些特性使得Chebyshev映射生成的混沌序列適用于對密鑰的控制。
2)正弦迭代映射
文獻[5]介紹了一種正弦迭代映射是一種復雜的一維混沌映射,其表達式為
通過計算可知式(2)的Lyapunov指數(shù)是ln z,且當Lyapunov指數(shù)大于0的情況下,映射處于混沌狀態(tài)[6],所以ln z>1,得出參數(shù)z>1時正弦迭代映射處于混沌狀態(tài)。當初值0<y(0)<1,則混沌系統(tǒng)y(n)在[-1,1]之間遍歷取值。
在加密端和解密端是兩個完全相同的混沌系統(tǒng)組合,且又是相互獨立、無關聯(lián)、不存在耦合關系的。明文在通過加密端加密后得到的密文直接送往解密端,在解密的過程中可以根據(jù)要求對其進行解密,例如,解密端可以先接收全部的密文,然后再對其密文進行解密,也可以利用同步技術進行同步解密。在混沌序列密碼的加密過程中,由于混沌系統(tǒng)的靈活多變,且具有對參數(shù)和初值的敏感性,可以根據(jù)要求對密碼系統(tǒng)進行全新的改造,所以混沌序列密碼系統(tǒng)較常規(guī)的密碼系統(tǒng)具有更加靈活的多變方式。
混沌加密的安全性主要是來自混沌系統(tǒng)的多變性、敏感性,這樣產生的密鑰空間比較大,且靈活多變。混沌系統(tǒng)在計算機上實現(xiàn)時,由于所采用的計算機精度會影響到實驗的結果,為此,在本文中為了保持序列最大可能的隨機性,采用以下方法:
1)為了增加破譯的難度,可以適當增加密鑰的空間。在本文中,對Chebyshev映射進行迭代n次,為了既能增加密鑰的空間而又不影響加密的速度,在本文中可以把n取為10000次。
2)將迭代得到的混沌序列按照一定的規(guī)律進行篩選,篩選出加密所要求的密鑰數(shù)量。
3)對篩選出的序列值進行分析,可取序列小數(shù)點后某位的數(shù)值,然后對其數(shù)值與定值進行比較,得到二進制碼,則完成序列的二值化。
在混沌加密系統(tǒng)中,由于混沌系統(tǒng)對初值和參數(shù)具有高度的敏感性,因此混沌系統(tǒng)的參數(shù)和初值可以作為加密系統(tǒng)的密鑰。在本文中,由于要對所產生的混沌序列進行篩選,那么篩選的條件也可以作為加密系統(tǒng)的密鑰。
在加密的過程中必須要對商品賦予其生產號,生產號可以根據(jù)不同廠家的生成方式而定。在本文中,取商品的生產號為12位。首先,要按照一定的規(guī)則對商品的每個生產號進行整合,得到8位的商品身份號,按照一定的方法將生產號的前6位整合成一個2位數(shù),再加上后面的6位數(shù),構成一個8位的商品身份號。
將整合得到的身份號進行置亂,選取正弦混沌映射如式(2),取其參數(shù)z=3,初值y(0)=0.5211,進行迭代10000次,按照式(3)的規(guī)律對其得到的序列值進行取值,式(3)中的初值a(0)和參數(shù)d可以在適當?shù)臈l件下隨機取值。
通過式(3)可對正弦混沌映射產生的序列值進行取值,得到隨機碼,將隨機碼按照一定的順序進行排序,利用排序前和排序后的對應關系對身份號進行置亂,得到置亂碼。
選取Chebyshev映射式如式(1),取其參數(shù)q=4,初值為x(0)=0.6,進行迭代10000次,按照式(3)的規(guī)律對其得到的序列值進行取值,在本文中需要取出32個數(shù)為{x1,x2,…,x32},再取 xi中每個數(shù)的小數(shù)點后的第6位,組成新的數(shù)組 {x′1,x′2,…,x′32} 。
文獻[7]中介紹了一種二進制碼的產生方式。
式中:u為序列{x1,x2,…,xn} 的均值,即u=,在本文中結合文獻[7]的方法,在此基礎上進行改進,可以取u為一個值,并將u作為一個密鑰。
將數(shù)組 { x′1,x′2,…,x′32} 按照式(5)進行變換得到二進制數(shù)組 { x″1,x″2,…,x″32} 。
將商品身份號的每一位都轉化為4位二進制數(shù),可得到32 位的二進制的身份號,用數(shù)組 {x″1,x″2,…,x″32} 與32位二進制的身份號進行按位異或,得到32位的二進制的防偽碼,然后依次將其每4位的二進制數(shù)變?yōu)?位的十六進制數(shù),這樣便可得到8位的十六進制的防偽碼,則加密完成。
解密過程是加密過程的逆過程。其加密和解密的流程圖如圖1。
選取正弦迭代映射的參數(shù)為z=3,初值y(0)=0.5211,式(3)中取 a(0)=4,d=3;Chebyshev映射的參數(shù)為q=4,初值x(0)=0.6,則在計算機中仿真如表1。
圖1 加密與解密流程圖
表1 初值為y(0)=0.5211,x(0)=0.6的加密結果
為了更好地證明加密系統(tǒng)所具有的靈活性,將正弦迭代混沌系統(tǒng)和Chebyshev混沌系統(tǒng)的初值進行細微的變化,各增大0.0001,則可得到如表2所示的仿真結果。
表2 初值為y(0)=0.5212,x(0)=0.6001的加密結果
通過分析比較表1和表2可以發(fā)現(xiàn),在初值變化萬分之一的情況下,就可以對所產生的防偽碼帶來非常大的變化,這符合密碼學上對密鑰的敏感性要求。
混沌之所以具有密碼學特性,是因為混沌具有自身的一些特有的性質,如初值敏感性、隨機性等性質。文中對正弦迭代映射和Chebyshev映射都進行了相應的賦予初值,當初值發(fā)生微小的變化時,可以得到完全不同的迭代結果,圖2、圖3分別是對正弦迭代映射和Chebyshev映射的初值增加0.0001后所得到的圖像。圖2和圖3中,實線表示為文中初值所迭代產生的序列值,虛線表示初值增大0.0001后所迭代產生新的序列值。通過觀察圖2和圖3可以發(fā)現(xiàn),在參數(shù)不變的情況下,當混沌映射的初值發(fā)生微小變化時,混沌映射會迭代產生兩組不同的序列值,滿足混沌的敏感性特性,具備密碼學中對密鑰的要求。
文獻[8]Golomb提出偽隨機序列應該滿足三個隨機性共設,但是,嚴格滿足這3個隨機性公設的偽隨機序列是很少的,因此對密鑰序列通常只要求它們近似或部分滿足這3個隨機性公設就認為序列是隨機的。為了保證生成的序列具有盡可能優(yōu)的隨機性能,可以對Chebyshev混沌序列生成的二值序列做一下檢測:
1)頻數(shù)檢驗:對混沌序列得到的二值序列進行計算
式中:n是生成二值序列的總數(shù);n0是二值序列中0的個數(shù);n1是二值序列中1的個數(shù),且與1自由度的χ2分布比較(隨機性假設檢驗),對應5%的顯著水平,得到的值為3.84,所以只要二值序列的的值不大于3.84,就認為二值序列具有較好的隨機性。
2)序列檢驗:對混沌序列得到的二值序列進行分析,對二值序列中00、01、10、11出現(xiàn)的次數(shù)進行統(tǒng)計,同時計算它們各自的χ2,其計算公式為
式(7)中 ni,j表示二值序列中 i,j的個數(shù),i,j∈ {0,1} ,且與2自由度的χ2分布相比較(隨機性假設檢驗),對應5%的顯著水平,得出χ22的值為5.99,所以得出,只要得到的χ22值不大于5.99,就認為序列具有較好的隨機性,測試結果見表3。
表3 隨機性分析
通過表3的測試結果可以看出,Chebyshev混沌映射具有良好的隨機性,符合序列的偽隨機性,可以用來做加密的密鑰。
本文將混沌映射的產生的二值序列用于數(shù)碼防偽技術中,以一種新的思路和方法來生成商品的防偽碼。利用混沌序列具有的偽隨機性、初值敏感性等獨有的一些性質,滿足數(shù)碼防偽過程中對密鑰敏感性的要求。把混沌序列應用到數(shù)碼防偽技術中,實現(xiàn)了一個快速可靠、安全方便的數(shù)碼防偽系統(tǒng)。在今后的研究中,可通過更多測試不同混沌系統(tǒng)的隨機性、安全性等性能,致力于研究和開發(fā)更加安全實用的數(shù)碼防偽系統(tǒng)。
[1]MATTHEWS R.On the derivation ofa chaotic encryption algorithm[J].Cryptologia,1989(1):29.
[2]PAREEK N K,PATIDAR V,SUD K K.Discrete chaotic cryptography using external key[J].Physics Letters A,2003,309(3):75-82.
[3]KOCAREV L.Chaos-based cryptography:a brief overview[J].IEEE Circuit and Systems Magazine,2001,1(3):6-21.
[4]石紅芹,呂方亮,劉遵雄.基于混沌加密的彩色圖像盲數(shù)字水印算法[J].計算機工程,2011,37(20):105-107.
[5]陸秋琴,馬亮.基于Logistic映射和正弦混沌映射的交替混沌加密算法[J].科技信息:學術版,2008(12):106-108.
[6]廖曉峰,肖迪,陳勇,等.混沌密碼學原理及其應用[M].北京:科學出版社,2009.
[7]張雪峰,范九倫.改進的混沌序列產生方法[J].計算機工程與設計,2007,28(3):600-601.
[8]吳偉陵.信息處理與編碼[M].北京:人民郵電出版社,1997.