基于混沌序列的數(shù)據(jù)加密算法

混沌由于具有不可預(yù)測(cè)性和對(duì)初值的敏感依賴性,而極具密碼學(xué)的應(yīng)用價(jià)值。那么下面我將給大家介紹一款基于Logistic映射混沌序列的數(shù)據(jù)加密算法。

一、混沌序列加密原理

1、加密方式

加密系統(tǒng)所采用的基本工作方式稱為密碼體制,根據(jù)對(duì)明文數(shù)據(jù)加密的方式,可將信息加密分為分組密碼和序列密碼兩種。

分組密碼體制是將明文分成若干組,每一組長(zhǎng)度固定,然后用同一密鑰進(jìn)行加密。它的重要特征是輸出的每一位數(shù)字與同一組的所有明文數(shù)字有關(guān),如目前應(yīng)用較多的DES和RSA加密算法。

序列密碼體制是先將原始明文轉(zhuǎn)化成明文數(shù)據(jù)序列,然后再將它與密鑰序列進(jìn)行逐位加密生成密文序列發(fā)送給接收端。序列加密不存在數(shù)據(jù)擴(kuò)展和錯(cuò)誤傳播,加、解密容易實(shí)現(xiàn),其安全保密性主要依賴于密鑰序列,若密鑰序列是完全隨機(jī)的,它就是一次一密鑰密碼。Shanon已證明一次一密制是不可破譯的。

混沌序列加密屬于序列密碼加密,其加密原理與序列密碼加密原理相似,不同在于:一般的序列密碼是利用移位寄存器為基礎(chǔ)的電路來(lái)產(chǎn)生偽隨機(jī)序列作為密鑰序列,而混沌序列加密是利用混沌系統(tǒng)迭代產(chǎn)生混沌序列作為密鑰序列,其加密原理如圖所示。

基于混沌序列的數(shù)據(jù)加密算法

2、密鑰流的產(chǎn)生

混沌序列加密的安全保密性主要依賴于混沌密鑰流。在混沌加密系統(tǒng)中。將混沌系統(tǒng)產(chǎn)生的隨機(jī)序列{xi}作為密鑰流{ki}與明文數(shù)據(jù)流{mi}按位運(yùn)算,從而產(chǎn)生密文數(shù)據(jù)流{ci}。明文數(shù)據(jù)流是二進(jìn)制的,而密鑰流{ki}是通過(guò)對(duì)混沌序列{xi}進(jìn)行數(shù)據(jù)處理來(lái)產(chǎn)生。利用計(jì)算機(jī)技術(shù)對(duì)原始混沌數(shù)據(jù){xi}進(jìn)行多種處理,使其在計(jì)算機(jī)有限計(jì)算精度下,實(shí)現(xiàn)混沌序列的準(zhǔn)隨機(jī)性。如,為了克服系統(tǒng)對(duì)初值敏感的過(guò)渡過(guò)程,舍棄前面的數(shù)千個(gè)字節(jié);將混沌序列按一定規(guī)律取值所得的序列{xi’}仍為一隨機(jī)序列;或采用復(fù)合迭代算法;或引入m序列擾動(dòng)。這樣,經(jīng)處理后的序列{x’i}具有良好的自相關(guān)性、均勻分布特性和隨機(jī)統(tǒng)計(jì)特性,又因密碼分析者得不到原始數(shù)據(jù),從而提高了抗破譯能力。

3、密鑰空間

密鑰空間的大小直接關(guān)系到保密系統(tǒng)的安全性能。若混沌加密系統(tǒng)具有足夠大的密鑰選擇空間。即密鑰選取的范圍足夠大,就能抵抗窮舉密碼式的攻擊。由于不同的混沌系統(tǒng)可以產(chǎn)生不同的混沌序列嗎,所以非線性系統(tǒng)方程F可作為密鑰;由于混沌系統(tǒng)對(duì)初值敏感,即兩個(gè)相同的混沌系統(tǒng)對(duì)稍異的初態(tài)會(huì)產(chǎn)生完全不同的序列,故初值{x0}可以作為密鑰;混沌系統(tǒng)參數(shù)不同所對(duì)應(yīng)的混沌序列也不同,故參數(shù){α}也可作為密鑰,對(duì)于具有兩個(gè)以上正的Lyapunov指數(shù)的超混沌系統(tǒng),其可變參數(shù)不止一個(gè),可作密鑰的值更多;再加上計(jì)算機(jī)數(shù)據(jù)處理方式{P}和數(shù)據(jù)編碼方式{C},則密鑰K可由{F,x0,α,P,C}組成.顯然,其密鑰空間大,使用方便,安全性能好。

二、混沌加密算法

1、 加密算法模型與設(shè)計(jì)

一個(gè)一維離散時(shí)間非線性動(dòng)力系統(tǒng)定義如下:

Xn+1=T(Xn) ? ? (1)

其中,Xn∈V,n=0,1,2,3…,稱之為狀態(tài);而T:V→V是一個(gè)映射,將當(dāng)前狀態(tài)xn映射到下一個(gè)狀態(tài)Xn+1。如果從初值X0開(kāi)始,反復(fù)應(yīng)用T,就得到一個(gè)序列{Xn,n=0,1,2,3,…}。這一序列稱為該離散時(shí)間動(dòng)力系統(tǒng)的一條軌跡。

一類非常簡(jiǎn)單卻被廣泛研究的動(dòng)力學(xué)系統(tǒng)是Logistic映射,其定義如下:

xn+1=μ×xn×(1-xn) ? ? ?(2)

其中μ∈(0,4),xn∈(0,1)。當(dāng)μ∈(3.5699456…,4)時(shí),Logistic映射呈現(xiàn)混沌態(tài)。也就是說(shuō),由初始條件X0在Logistic映射的作用下所產(chǎn)生的序列{xn,n=0,1,2,3,…}是非周期的、不收斂的,對(duì)初始值非常敏感。

式(2)形式的Logistic映射混沌系統(tǒng),其生成的序列的概率分布函數(shù)PDF(ProbabilityDensityFunction)為:

基于混沌序列的數(shù)據(jù)加密算法

通過(guò) (x),可以很容易地計(jì)算得到Logistic映射所產(chǎn)生的混沌序列的一些很有意義的統(tǒng)計(jì)特性。如,x的時(shí)間平均,即混沌序列軌跡點(diǎn)的均值為:

基于混沌序列的數(shù)據(jù)加密算法

對(duì)于互相關(guān)函數(shù),獨(dú)立選取兩個(gè)初始值X0和Y0,則序列的互相關(guān)函數(shù)為:

基于混沌序列的數(shù)據(jù)加密算法

而序列的自相關(guān)函數(shù)ACF(Auto-correlationFunctions)則等于delta函數(shù)。

通過(guò)以上分析可知,混沌動(dòng)力系統(tǒng)不僅具有確定性,而且具有形式簡(jiǎn)單,對(duì)初始條件敏感,具備白噪聲的統(tǒng)計(jì)特性,因而,可以應(yīng)用于包括數(shù)字通信和多媒體數(shù)據(jù)安全等在內(nèi)的眾多應(yīng)用領(lǐng)域。

由于加密的是數(shù)字量,所以將這個(gè)由實(shí)數(shù)構(gòu)成的序列{xk}映射成由整數(shù)構(gòu)成的偽隨機(jī)序列來(lái)充當(dāng)加密密鑰。常用的一種映射方法是選取xk小數(shù)點(diǎn)后的幾位有效數(shù)字構(gòu)成整數(shù)。由此提出一個(gè)基于Logistic混沌映射的加密/解密模型。

基于混沌序列的數(shù)據(jù)加密算法

并設(shè)計(jì)了一個(gè)完整的加/解密算法如圖,為了兼顧序列的隨機(jī)性和加密速度,隨機(jī)數(shù)選取的間隔M取5是合適的,而Yk則選取Xk小數(shù)點(diǎn)后第4,5,6位,有利于提高抗選擇明文攻擊的能力;實(shí)踐證明,為了克服過(guò)渡過(guò)程的有害作用,采用舍棄前面2000個(gè)數(shù)是合適的;另外,考慮到要求用戶記憶兩個(gè)浮點(diǎn)數(shù)作為密碼是相當(dāng)困難的,所以實(shí)際上步驟1中還包括一個(gè)將用戶記憶的字符串映射到X0和α的過(guò)程。

基于混沌序列的數(shù)據(jù)加密算法

2、算法抗破譯能力分析

該算法具有抗窮舉攻擊的能力,密碼分析的關(guān)鍵在于獲得用戶設(shè)定的初值X0或參數(shù)μ。將這兩個(gè)值取作浮點(diǎn)數(shù),假設(shè)一臺(tái)計(jì)算機(jī)浮點(diǎn)數(shù)的有效值位數(shù)為16位,那么這兩個(gè)數(shù)加起來(lái)共有15+15=30位數(shù)是不確定的,其可能的組合為1030。而現(xiàn)有的56bitDES加密算法,具有的密鑰組合為256。對(duì)它們?nèi)∫?0為底的對(duì)數(shù)可得30>56log2。所以該加密算法對(duì)抗密鑰窮舉的攻擊非常有效,即具有窮舉破譯安全性。

該算法具有抗選擇明文攻擊的能力。這一點(diǎn)主要是基于許多密碼分析者往往能夠通過(guò)各種各樣的途徑預(yù)先得到一定的明文和密文對(duì)。尤其是對(duì)于網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)更是如此,人們很容易推測(cè)出一個(gè)幾百個(gè)字節(jié)大小的經(jīng)過(guò)加密的TCP數(shù)據(jù)包,該數(shù)據(jù)包包含了用戶名和密碼。由于該數(shù)據(jù)包的前面幾個(gè)字節(jié)的內(nèi)容又經(jīng)常是固定的,所以要求加密算法在密碼分析者得到一定數(shù)量的明文/密文對(duì)后,仍然難以分析出余下的明文數(shù)據(jù)和密鑰。即加密算法應(yīng)具有較強(qiáng)的抗選擇明文攻擊的能力。

為了提高對(duì)選擇明文攻擊的適應(yīng)性,簡(jiǎn)單的做法就是對(duì)Xn進(jìn)行數(shù)據(jù)處理后,使Xn與Xn+1之間的關(guān)系復(fù)雜化,從而避免攻擊者通過(guò)簡(jiǎn)單的運(yùn)算解出μ值,如何使其關(guān)系復(fù)雜化呢?我們采用間隔取數(shù)的方法,若在Xn與Xn+1之間隔一個(gè)數(shù),則Xn與Xn+1的關(guān)系變成:

基于混沌序列的數(shù)據(jù)加密算法

上式是一個(gè)一元二次方程。若Xn與Xn+1之間相隔N個(gè)數(shù),則Xn與Xn+1的關(guān)系就變成一個(gè)一元N次方程組,由Newton逐步逼近法可以近似求出N個(gè)μ的解。同時(shí),在N足夠大時(shí),Xn的微小變化也將使得Xn+1發(fā)生足以影響到Xn′的變化。另外將Xn′的取法盡可能靠后的三位數(shù),因?yàn)閄n在發(fā)生微小變化時(shí)對(duì)Yn+1將產(chǎn)生很大的影響。

3、密文數(shù)據(jù)的統(tǒng)計(jì)分布

為了隱藏明文信息的冗余度,Shannon提出了混亂與散布的概念,加密體制要求充分且均勻地利用密文空間,混沌序列也是如此。加密后密文數(shù)據(jù)的統(tǒng)計(jì)分布是否均勻,即明文數(shù)據(jù)能否被完全掩蓋,是衡量加密算法好壞的重要指標(biāo)。若密鑰序列是完全隨機(jī)的,則加密后密文數(shù)據(jù)服從均勻分布。把明文和密鑰序列看成是一個(gè)字節(jié)的數(shù)據(jù)流。從中任取一字節(jié)的明文m和密鑰k,設(shè)m取值是不等的,即某一位出現(xiàn)0或1的概率是不等的,且設(shè)數(shù)據(jù)位出現(xiàn)0或1為相互獨(dú)立的事件。設(shè)明文第i位出現(xiàn)1的概率為p,而密鑰序列在理想狀態(tài)下滿足白噪聲性,即每一位出現(xiàn)0或1的概率相等,均為0.5。則加密后密文c的第i位出現(xiàn)1的概率為:

基于混沌序列的數(shù)據(jù)加密算法

基于混沌序列的加密方法,回避了構(gòu)造物理同步混沌系統(tǒng)時(shí)所面臨的技術(shù)難題。通過(guò)計(jì)算機(jī)軟件實(shí)現(xiàn)了文本、語(yǔ)音、圖像數(shù)據(jù)文件加密,取得了滿意的結(jié)果。

小知識(shí)之迭代:

迭代算法是用計(jì)算機(jī)解決問(wèn)題的一種基本方法。它利用計(jì)算機(jī)運(yùn)算速度快、適合做重復(fù)性操作的特點(diǎn),讓計(jì)算機(jī)對(duì)一組指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時(shí),都從變量的原值推出它的一個(gè)新值。