參數(shù)可變的離散混沌加密系統(tǒng)
近年來,混沌理論被不同的領(lǐng)域廣泛研究,如物理學(xué)、數(shù)學(xué)、經(jīng)濟學(xué)和氣象科學(xué)?;煦缦到y(tǒng)具有對初值和系統(tǒng)參數(shù)的敏感性以及軌道的不確定性,這些特性使得混沌系統(tǒng)對于構(gòu)造密碼系統(tǒng)是一個很好的選擇,并且使離散混沌加密系統(tǒng)抵抗統(tǒng)計分析攻擊具有魯棒性。目前提出了很多基于離散混沌映射的加密系統(tǒng),相應(yīng)地也出現(xiàn)了大量分析混沌密碼系統(tǒng)的方法。混沌密碼系統(tǒng)得到大家的廣泛研究,其中用得比較多的就是基于Logistic映射的混沌密碼系統(tǒng),一般屬于分組加密算法范疇。
Logistic映射被公認為是能體現(xiàn)混沌特點的最簡單的離散混沌系統(tǒng)映射。它來源于對人口增長模型的研究,可表示為:
![]()
其中:xn和μ分別表示迭代映射的初值和系統(tǒng)參數(shù)。圖1是Logistic映射分岔圖。

當(dāng)參數(shù)μ超過3時,其解的軌跡出現(xiàn)分岔,而且一分再分,分岔點出現(xiàn)得越來越快,最后成為混沌的一片,出現(xiàn)混沌的系統(tǒng)參數(shù)μ=3. 569 945 672…。Logistic映射就是通過這種倍周期分岔過程達到混沌的。將Logistic映射用于密碼系統(tǒng)在于它具有三個突出的特性:對初始條件的敏感依賴性、具有伸長和折疊性質(zhì)、具有內(nèi)在隨機性。這些特性與密碼系統(tǒng)的要求是相吻合的。混沌密碼系統(tǒng)一般將Logistic映射的初值和系統(tǒng)參數(shù)以及迭代次數(shù)組合作為密鑰。
Logistic映射用于密碼系統(tǒng)也遇到一個周期窗口問題。當(dāng)μ=1+/8=3. 828--到μ=3. 841 037-時,Logistic映射存在周期3解,緊鄰接有周期6、周期12等窗口,也相當(dāng)子一個倍周期化過程d周期3及其鄰接的系列窗口如圖2所示。關(guān)于n周期點的概念簡述如下。所謂迭代解代數(shù)方程是指:
![]()
是否收斂于不動點。迭代解收斂于不動點指:
![]()
定義n周期點:
![]()
其中:1周期點f(x*)=x*;2周期點f2(x*)=ff(x*)=x*,f(x*)≠x*;3周期點f3(x*)=x*,f2(x*)≠x*,f(x*)≠x*。
當(dāng)然,要得到n周期點對應(yīng)的μ值還要加上穩(wěn)定邊界才能實現(xiàn)。
對于使用周期窗口加密一定要慎重,它有可能泄露用戶的密鑰。例如當(dāng)μ=3.830和μ = 3. 835時,通過對X0進行多次迭代,最后X0都是(0. 504 666--,O.957 416…,0.156 149---)和(0. 494 514--,0.958634…,0.1520749...),后面再進行迭代也只會出現(xiàn)這三個值,這是典型的短周期。特別是μ序列已知時更是危險。為了克服這個問題,本文提出了如下的一種基于參數(shù)動態(tài)變化的新離散混沌密碼算法。
一、本文提出的算法
在本算法中,將最大128 bit的變長密鑰分成以8 bit為單位的塊:
![]()
明文/密文被分成多個以8 bit為單位的塊:
![]()
變長密鑰的每一塊分別與π的小數(shù)部分異或,更新后的密鑰變?yōu)楣潭ǖ?28 bit密鑰,便于后面的計算:

更新后的128 bit的密鑰分成以8 bit為單位的塊和32 bit為單位的塊,分別稱為會話密鑰和子密鑰:
![]()
其中kj≠0,j=1,…,16主要是為了避免弱密鑰。下面是構(gòu)造小數(shù)Xr,它是混沌映射初值的主要部分4為了充分置亂密鑰,保證混沌映射初值有更大的取值空間,把它構(gòu)造成由兩部分組成,分別是Xb1和Xb2,這兩者平均都有2的56次方個取值。模i是為了取得純小數(shù):

考慮到運算速度和取值空間的均衡,混沌映射迭代次數(shù)的主要部分Nb的取值空間構(gòu)造成2的16次方。
式(9)、(10)中的()2和()10分別是數(shù)的二進制和十進制表示法。由隨機數(shù)發(fā)生器來動態(tài)產(chǎn)生混沌映射系統(tǒng)參數(shù)μi、j:

混沌映射初值X和迭代次數(shù)N:
![]()
其中:kj是自由選擇的子密鑰;j決定了它在密鑰中的順序;yo =0。一個8 bit的明文/密文分組被加/解密,用初值X和系統(tǒng)一數(shù)μi使混沌映射迭代N次。迭代后的新值X( Xi)被用于構(gòu)造明文/密文。加/解密過程如下所示:

對于加/解密的下一塊明文/密文,上一次的X'和Nb'分別代替式(15)(16)中的Xb和Nb,K'3和K'4分別更新式(14)中的隨機發(fā)生器參數(shù)K3和K4。由于Logistic映射系統(tǒng)參數(shù)雎隨著加/解密過程不斷變化,即使系統(tǒng)參數(shù)地進入周期3窗口以及緊鄰周期3窗口的所有周期窗口都不會出現(xiàn)前述的短周期問題。加/解密過程惟一不同的就是分別使用式(20)(21)得到相應(yīng)密文/明文。
二、加密算法說明
式(12)(14)是用線性同余隨機數(shù)發(fā)生器來產(chǎn)生Logistic混沌映射的系統(tǒng)參數(shù)d,已論證了隨機數(shù)發(fā)生器中乘法器和模的取值問題,由于在式(12) C14)中乘法器是由密鑰分離而來。可以不考慮它的取值問題。在式( 14)中模取231 -1,因為它是一個奇素數(shù),產(chǎn)生的隨機數(shù)具有比較大的周期。由于雙精度占64位(其中第1位是符號位;依次是指數(shù)位,占11位;剩余的52位是尾數(shù)),本文取252作為式(12)的模是恰當(dāng)?shù)?,充分保證了系統(tǒng)參數(shù)以的密鑰取值空間,又不會引入小數(shù)的不確定位。
算法中的輸出反饋是必不可少的,它動態(tài)地改變了混沌映射初值、迭代次數(shù)以及線性同余隨機數(shù)發(fā)生器參數(shù),明文中任意字符均會影響到其后字符對應(yīng)的密文,加強了算法的安全性。
三、實驗結(jié)果和安全性分析
采用以下實驗環(huán)境:CPU是Intel Celeron處理器,主頻450MHz;內(nèi)存192 MB;操作系統(tǒng)Windows 2000;使用VC++編程實現(xiàn)本文的算法。
表1表示使用密鑰“317879323365666761343536377 A7463”對明文“chaotic”進行加密的過程。整數(shù)類型用的是signed—int64,小數(shù)類型用的是long double。如果小數(shù)類型采用single將使密碼空間降低約1倍。算法設(shè)計的目的是使Logistic映射的系統(tǒng)參數(shù)、初值和迭代后的值分別平均約有2的52個取值。

1、統(tǒng)計分析
圖3表示加密過程使用的22 KB文本文件的明文分布。

圖4表示本算法加密后22k文件的密文分布,擴展密鑰用的是”317879323365666761343536377 A7463”。很明顯,明文是一些高頻字符,經(jīng)過加密后密文分布卻是平坦的象Shannon曾說過,統(tǒng)計分析經(jīng)常被用來進行密碼分析和破譯,好的密碼系統(tǒng)不管明文是如何分布的但密文分布應(yīng)該是均勻的。
從圖4的密文分布完全能說明本文的算法能有效防止密碼分析者利用統(tǒng)計分析的方法來擊破整個加密系統(tǒng)。
2、敏感性測試
Shannon指出,一個好的加密系統(tǒng),它的函數(shù)必須是復(fù)雜的,并且一個小的變化必然導(dǎo)致結(jié)果發(fā)生很大的變化。圖6、7表示對圖5明文用僅差一位的密鑰加密后所得的結(jié)果,使用的密鑰分別是“317879323365666761343536377A7463”和“117879323365666761343536377A7463”。從圖中不難看出,雖然密鑰僅僅相差一位,但加密后所得的密文卻完全不同,這也說明本文所設(shè)計的密碼系統(tǒng)對密鑰具有敏感性。圖8是用圖5明文變化一個字符,將其最前面字符“A”變?yōu)椤癮”,密鑰仍然使片“317879323365666761343536377 A7463”得到的密文比較圖6、8的密義,可以看出兩者完全不同,很明顯對明文是敏感的。本文算法表現(xiàn)出的對密鑰和明文的敏感性是與Shannon提倡的好密碼系統(tǒng)相吻合的。

3、抵抗各種攻擊分析
比較典型的窮舉攻擊方法有:
a)惟密文攻擊( ciphertext?only attack)。密碼分析者僅知道一些密文,而對明文一無所知。這種攻擊手段是所需信息最少的,也是難度最高的手段之一。
b)已知明文攻擊( known plaintext attack)。密碼分析者知道一些密文以及對應(yīng)明文,但不知道密鑰。在這種情況下,如果密文和明文具有比較確定的對應(yīng)關(guān)系的話,密碼分析者就很容易通過替換、查找、類推、猜測等手段破譯密文。
c)選擇明文攻擊( choscn plaintext attack)。密碼分析者能夠臨時訪問加密機,因此能夠任意選擇一個明文字符串,并可構(gòu)造相應(yīng)的密文字符串,一個密碼系統(tǒng)比較容易受到這類攻擊。
d)選擇密文攻擊( chosen c:iphertext attack)。密碼分析者能夠臨時訪問解密機,因此能夠任意選擇一個密文字符串,并可構(gòu)造相應(yīng)的明文字符串,一個密碼系統(tǒng)比較容易受到這類攻擊弘很顯然如果密文能夠抵抗選擇明文攻擊,則足以抵抗其他各種攻擊。根據(jù)著名的Kerchoffs準則,本文假定密碼分析者知曉除密鑰以外的所有事情矗在本文提出的算法中,通過輸入反饋的方式,后面輸入的密文都與前面加密的明文相關(guān),密碼分析者不可能得到與明文無關(guān)的密鑰流。加上使用的Logistic映射的系統(tǒng)參數(shù)、初值和迭代后的值分別平均都約有252個取值,迭代次數(shù)取值空間平均約為2的9次方,因此每一步迭代的密鑰空間約為2的9次方;密鑰空間非常大奠在目前的計算條件下,密碼分析者通過選擇一些明文和相應(yīng)密文來窮舉子密鑰是非常閑難的,而在算法中整個密鑰空間為2的128次方,要想恢復(fù)出整個密鑰更是難上加難。
小知識之唯密文攻擊
唯密文攻擊指的是在僅知已加密文字的情況下進行窮舉攻擊,此方案同時用于攻擊對稱密碼體制和非對稱密碼體制。



