參數(shù)可變的多混沌映射加密系統(tǒng)

利用混沌映射具有對(duì)初值和系統(tǒng)參數(shù)的敏感性以及軌道的不確定性,提出一種基于多個(gè)一維混沌映射的加密算法。該加密算法使用線性同余隨機(jī)數(shù)發(fā)生器產(chǎn)生混沌映射的系統(tǒng)參數(shù)和3個(gè)一維混沌映射的使用順序,同時(shí)通過(guò)輸出反饋方式動(dòng)態(tài)改變混沌映射初值、選代次數(shù)以及線性同余隨機(jī)數(shù)發(fā)生器參數(shù)。

一、混沌加密算法

加密算法的描述:

(1)在加密算法中,128位的密鑰被分成多個(gè)8bit為單位的塊,每塊稱作會(huì)話密鑰,進(jìn)一步將密鑰劃分成32bit為單位的子密鑰kμi,i=l,2,…,4和64 bit為單位的子密鑰Ki,i=1,2,它們都是以十六進(jìn)制來(lái)表示的,其劃分情況為:

參數(shù)可變的多混沌映射加密系統(tǒng)

(2)在加密/解密過(guò)程中明文/密文被分成多個(gè)8 bit為單位的塊,其劃分情況分別為:

參數(shù)可變的多混沌映射加密系統(tǒng)

(3)在加密/解密過(guò)程中選取3個(gè)一維混沌映射來(lái)進(jìn)行加密/解密,它們分別是:Logistic映射、帳篷映射、正弦映射,如表1所示。表中第1列為混沌映射名稱,第2列是3個(gè)混沌映射的編號(hào),第3列是3個(gè)混沌映射對(duì)應(yīng)的迭代表達(dá)式,第4列是混沌映射系統(tǒng)參數(shù)取值范圍,該范圍表示相應(yīng)混沌映射處于混沌狀態(tài)。

參數(shù)可變的多混沌映射加密系統(tǒng)

(4)開(kāi)始時(shí)由會(huì)話密鑰和子密鑰構(gòu)造的初始值分別為:

參數(shù)可變的多混沌映射加密系統(tǒng)

參數(shù)可變的多混沌映射加密系統(tǒng)

隨機(jī)數(shù)由線性同余隨機(jī)數(shù)發(fā)生器(LCG)產(chǎn)生:

參數(shù)可變的多混沌映射加密系統(tǒng)

式中Yo=[xb×213]。由寫(xiě)產(chǎn)生的混沌映射號(hào)從使用會(huì)話密鑰的順序號(hào),分別為:

參數(shù)可變的多混沌映射加密系統(tǒng)

(5)混沌映射的迭代次數(shù)N和初值x分別為:

參數(shù)可變的多混沌映射加密系統(tǒng)

根據(jù)混沌映射號(hào)M的不同取值選擇不同的混沌映射系統(tǒng)參數(shù)μi,產(chǎn)生式:

參數(shù)可變的多混沌映射加密系統(tǒng)

(6)明文/密文每一塊被加密/解密,用初值μ1系統(tǒng)參數(shù)肛使混沌映射迭代N次。新值X(x’)被用于構(gòu)造明文/密文以及作為下一步迭代輸出反饋的一部分,如下列等式所示:

參數(shù)可變的多混沌映射加密系統(tǒng)

對(duì)于加密/解密下一塊明文/密文,上一次的Nb'和Xb'分別代替式(9)、式(10)中的Nb和Xb,Kμ3'和Kμ4'分別更新式(6)中的隨機(jī)發(fā)生器參數(shù)Kμ3和Kμ4。

加密/解密過(guò)程基本相同,唯一不同之處在于加密過(guò)程用的是式(17),解密過(guò)程用的是式(18)。解密過(guò)程先用式(18)求Pi,再用式(12)-式(16)求Kμ3',T、Xb'、Kμ4'、Nb'。

已有資料論證了隨機(jī)數(shù)發(fā)生器中乘法器和模的取值問(wèn)題,由于在式(6)中乘法器是由密鑰分離而來(lái),可以不考慮它的取值問(wèn)題。在式(6)中模取231 -1,因?yàn)樗且粋€(gè)奇素?cái)?shù),產(chǎn)生的隨機(jī)數(shù)具有比較大的周期。

由于雙精度占64位,其中第1位是符號(hào)位,依次是指數(shù)位,占11位,剩余的52位是尾數(shù),因此取252作為式(4)、式(11)的模是恰當(dāng)?shù)?,充分保證了系統(tǒng)參數(shù)μ1的密鑰取值空間,又不會(huì)引入小數(shù)的不確定位。

二、實(shí)驗(yàn)及結(jié)果分析

采用以下試驗(yàn)環(huán)境:CPU是Intel Celeron處理器,主頻為450 MHz:內(nèi)存為196 MB;操作系統(tǒng)為Windows 2000;使用VC++編程實(shí)現(xiàn)本文的算法。

表2為使用密鑰“1284A54432FF487C4A923D274C172437”對(duì)明文“chaotic"進(jìn)行加密的過(guò)程。整數(shù)類(lèi)型用signcd_int64,小數(shù)類(lèi)型用long double,如果小數(shù)類(lèi)型采用single將使密碼空間降低1倍左右。算法設(shè)計(jì)的目的是使3個(gè)混沌映射的系統(tǒng)參數(shù)、初值和迭代后的值均平均約有252個(gè)取值。

參數(shù)可變的多混沌映射加密系統(tǒng)

1、統(tǒng)計(jì)分析

圖1表示本文算法加密42kB明文后的密文分布,密文也是42kB,擴(kuò)展密鑰用的是“1284A54432FF487C4A923D274C172437”。很明顯,圖2中明文大多是一些高頻字符,經(jīng)過(guò)加密后密文分布卻是平坦的。統(tǒng)計(jì)分析經(jīng)常被用來(lái)進(jìn)行密碼分析和破譯,好的密碼系統(tǒng)不管明文是如何分布的,密文分布應(yīng)該是均勻的。從圖1的密文分布完全能說(shuō)明本文的算法能有效防止密碼分析者利用統(tǒng)計(jì)分析的方法來(lái)?yè)羝普麄€(gè)加密系統(tǒng)。

參數(shù)可變的多混沌映射加密系統(tǒng)

2、敏感性測(cè)試

好的加密系統(tǒng),其函數(shù)必須是復(fù)雜的,并且一個(gè)小的變化必然導(dǎo)致結(jié)果發(fā)生很大的變化。圖3所示為對(duì)明文“chaoticcryptosystemblockcipher"用僅差一位的密鑰加密后所得的結(jié)果,使用的密鑰分別是“1284A54432FF487C4A923D274C172437" 和"1184A 54432FF487C4A923D274C172437"。圖中橫軸表示序號(hào),縱軸表示對(duì)應(yīng)的ASCII碼值,實(shí)線連接的點(diǎn)表示明文ASCII分布,點(diǎn)連接的“*”表示使用“1284A54432FF487C4A923D274C172437"作為密鑰加密后密文ASCII分布,虛線連接的“+”表示使用“IIB4A54432FF487C4A923D274C172437”為密鑰加密后密文ASCII分布。從圖中不難看出,雖然密鑰僅相差—位,但加密后所得的密文卻完全不同,這也說(shuō)明本文所設(shè)計(jì)的密碼系統(tǒng)對(duì)密鑰具有敏感性。

參數(shù)可變的多混沌映射加密系統(tǒng)

圖4是用圖3明文變化一個(gè)字符,將其最前面字符‘c’變?yōu)?a’,密鑰仍然使用“1284A54432FF487C4A923D274C172437”加密后所得的結(jié)果。圖中橫軸表示序號(hào),縱軸表示對(duì)應(yīng)的ASCII碼值,用實(shí)線連接的點(diǎn)表示明文ASCII分布,用點(diǎn)連接的“*”表示使用明文"chaoticcryptosystemblockcipher”加密后密文ASCII分布,用虛線連接的“+"表示明文“ahaoticcry ptosystemblockcipher”加密后密文ASCII分布口比較圖4的密文分布,可以看出兩者完全不同,很明顯對(duì)明文是敏感的。

參數(shù)可變的多混沌映射加密系統(tǒng)

本文的算法表現(xiàn)出的對(duì)密鑰和明文的敏感性和密碼系統(tǒng)相吻合。

3、抵抗各種攻擊分析

比較典型的窮舉攻擊方法有;唯密文攻擊(ciphertext only attack)、已知明文攻擊(knownplain text attack),選擇明文攻擊(chosen plaintext attack)、選擇密文攻擊(chosen ciphertext attack)。很顯然如果密碼系統(tǒng)能夠抵抗選擇明文攻擊,則足以抵抗其他各種攻擊。根據(jù)KerchofPs準(zhǔn)則,假定密碼分析者知曉除密鑰以外的所有事情。在本文的算法中,通過(guò)輸出反饋的方式,后面輸出的密文都與前面加密的明文相關(guān),密碼分析者不可能得到與明文無(wú)關(guān)的密鑰流。加上使用的3個(gè)混沌映射的系統(tǒng)參數(shù)、初值和迭代后的值均平均約有252個(gè)取值,迭代次數(shù)取值空間平均約為29,因此每一步迭代的密鑰空間約為3×22xS2+9≈2115,密鑰空間非常大。在目前的計(jì)算條件下,密碼分析者通過(guò)選擇一些明文和相應(yīng)密文來(lái)窮舉子密鑰是非常困難的,而在算法中整個(gè)密鑰空間為2128,通過(guò)密鑰的擴(kuò)散,其加密強(qiáng)度要遠(yuǎn)大于2128,要想恢復(fù)出整個(gè)密鑰更是難上加難。

小知識(shí)之ASCII

ASCII是基于拉丁字母的一套電腦編碼系統(tǒng)。它主要用于顯示現(xiàn)代英語(yǔ)和其他西歐語(yǔ)言。它是現(xiàn)今最通用的單字節(jié)編碼系統(tǒng),并等同于國(guó)際標(biāo)準(zhǔn)ISO/IEC 646。