混沌隨機(jī)全排列置換加密算法及應(yīng)用

混沌系統(tǒng)被越來(lái)越多的應(yīng)用,為此,我們利用混沌系統(tǒng)具有的確定性、對(duì)初始條件的敏感性、長(zhǎng)期不可預(yù)測(cè)性和偽隨機(jī)性,設(shè)計(jì)了—種確定性隨機(jī)全排列的生成方法——混沌隨機(jī)全排列置換加密算法,該加密算法可以作為一個(gè)通用模塊加入到其他密碼系統(tǒng)中,以提高密碼系統(tǒng)的強(qiáng)度和安全性,并應(yīng)用到圖像和文本文件加密中。

一、置換密碼技術(shù)與混沌動(dòng)力系統(tǒng)

置換密碼是密碼學(xué)中一種最基本的加密算法,在早期的加密算法中是以字母為單位進(jìn)行某種映射,實(shí)現(xiàn)比較簡(jiǎn)單,且很容易破譯,還有一些較復(fù)雜的置換密碼算法如列換位加密法,它是將明文按行寫到一個(gè)矩陣中,再按一定的順序讀取列以生成密文。這些經(jīng)典的加密算法雖然現(xiàn)在易于破解,但是其優(yōu)點(diǎn)仍然值得利用。置換密碼算法的優(yōu)點(diǎn)有:

(1)置換寂寞算法有巨大的密鑰空間,即使當(dāng)m比較小時(shí),如n=128或者256時(shí),變換的模式達(dá)到n!,這是一個(gè)巨大的數(shù)目。

(2)換位變換容易快速實(shí)現(xiàn),由于換位不進(jìn)行一些數(shù)學(xué)運(yùn)算,只是位置的改變,因此實(shí)現(xiàn)速度極快。

(3)可以抵抗—些特殊的攻擊和破壞。如裁剪、隨機(jī)噪聲等,如果對(duì)密文進(jìn)行破壞,還是可以恢復(fù)大部分甚至所有的明文信息。在一些特殊的領(lǐng)域如圖像文件加密應(yīng)用中,基本上都添加了置換單元。

由于置換后的密文可以看做是加密前明文的一個(gè)全排列,因此置換加密的密鑰本質(zhì)上是此置換全排列模版,傳統(tǒng)的置換加密的置換模式固定是其容易破解的原因之一,而且產(chǎn)生的全排列如果過(guò)長(zhǎng),則該置換模式就不宜作為密鑰手動(dòng)輸入,這也是傳統(tǒng)置換密碼采用的密鑰較短的原因之一。如果可以用較短的密鑰來(lái)控制生成不同長(zhǎng)度的全排列置換模版,而且在一次加密中,可以快速地產(chǎn)生多個(gè)不同模版置換明文,則置換加密的強(qiáng)度將大大提高。

混沌是一種貌似無(wú)規(guī)則、在確定性系統(tǒng)中出現(xiàn)的一種對(duì)初值非常敏感的類似隨機(jī)過(guò)程,混沌系統(tǒng)可以提供具有良好的隨機(jī)性、復(fù)雜性的長(zhǎng)周期確定性偽隨機(jī)序列,因此具有很高的密碼學(xué)價(jià)值。自Matthews在1989年首次將混沌用于密碼學(xué)研究以來(lái),混沌理論已經(jīng)開始逐漸地應(yīng)用到信息安全各個(gè)領(lǐng)域。理論上,混沌系統(tǒng)提供了構(gòu)造真隨機(jī)序列的可能性,可以提供一個(gè)可重復(fù)的隨機(jī)數(shù)序列,且其序列僅與系統(tǒng)參數(shù)和初值有關(guān)。這樣,就可以利用混沌序列用于安全加密系統(tǒng)中,混沌系統(tǒng)的系統(tǒng)參數(shù)和初值構(gòu)成密鑰空間。最常見的混沌系統(tǒng)有Logistic、二維Henon混沌等??紤]以下常見的Logistlc混沌系統(tǒng):

混沌隨機(jī)全排列置換加密算法及應(yīng)用

當(dāng)3.569 945 68≤μn≤4時(shí),系統(tǒng)處于混沌狀態(tài)。當(dāng)μn=4時(shí),為滿映射,系統(tǒng)的隨機(jī)性最好。在μn越接近4的地方,x取值范圍越是接近平均分布在整介0到1的區(qū)域。因此可以考慮利用混沌系統(tǒng)的優(yōu)點(diǎn),來(lái)生成置換密碼中所需要的全排列。

二、隨機(jī)全排列生成算法

生成全排列的方法—般有鄰間置換、洗牌算法等,但這些方法不符合密碼學(xué)的使用要求,因此不能使用。為此推薦大家使用一種樹形結(jié)構(gòu)的全排列生成算法,但該方法空間代價(jià)極高,并對(duì)其進(jìn)行了改進(jìn),提出了一種基于混沌的快速生成混沌的方法。本文首先設(shè)計(jì)了一種確定性隨機(jī)全排列生成算法,以利用混沌的密碼學(xué)特性來(lái)生成置換加密中所需要的全排列。

定義將m個(gè)不同元素按照一定的順序排列起來(lái),叫做這m個(gè)不同元素的一個(gè)全排列。顯然,m個(gè)元素的全排列總共排列方式有m!組。

加密算法說(shuō)明:

(1)設(shè)要生成的全排列元素在0到m-1之間,元素?cái)?shù)目為m;令{0,1,…,m-1}中所有元素的—個(gè)全排列為{ao,a1,,…,am-1},當(dāng)i≠j時(shí)有ai≠aj,如果要生成{1,2,…,m}的一個(gè)全排列,可在上述{ao,ai,…,am-1}中將元素0改為m即可。

(2)全排列初始值系數(shù)ko:令n= [ko ×m],n與初始生成全排列中元素的個(gè)數(shù)有關(guān),若太小,則產(chǎn)生的初始全排列隨機(jī)性差,若太大,則重復(fù)數(shù)據(jù)多,會(huì)增加系統(tǒng)的迭代次數(shù),—般取
k0=(0.5~0.7)即可。

(3)設(shè)所使用的混沌系統(tǒng)為xn=f(xn-1),可以選擇不同的混沌系統(tǒng)。xn為當(dāng)前的混沌序列,每次使用后都要進(jìn)行迭代,以產(chǎn)生新的混沌序列。

(4)采用整數(shù)求余量化從混沌獲取所需要的隨機(jī)數(shù)。設(shè)混沌序列小數(shù)點(diǎn)后的位數(shù)露,定義一個(gè)抽取位數(shù)的序列Wt={w1,W2,…,wt},一般3≤t≤7,且滿足wi≤t≤7,m<10t。令
G(xn,wi)代表xn小數(shù)點(diǎn)后的第wi位數(shù)字,則可以定義下列量化函數(shù)獲取—個(gè)0~m -1內(nèi)的隨機(jī)數(shù):

混沌隨機(jī)全排列置換加密算法及應(yīng)用

(5)將生成全排列存儲(chǔ)在數(shù)組A中,最初始為空,最大長(zhǎng)度為m,采用依次添加的方式生成。每次在上一次的位置后增加—個(gè)元素。

加密算法描述如下:

(1)迭代混沌系統(tǒng),利用量化函數(shù)產(chǎn)生n個(gè)0~m -1內(nèi)的隨機(jī)數(shù),依次存儲(chǔ)在數(shù)組T中。

(2)對(duì)a中的每個(gè)元素,若么中還不存在,則添加到么末尾,否則丟棄。

(3)步驟(2)完成后,么中元素的數(shù)目最多為n個(gè),然后將{0,1,…,m-1}中元素在么中不存在的,依次添加到么末尾,形成初始全排列A。

(4)對(duì)初始全排列么進(jìn)行若干輪下列全變換,以增強(qiáng)全排列的隨機(jī)性。輪數(shù)r可以作為密鑰確定。根據(jù)m的大小,考慮系統(tǒng)的速度,可取1<r<5:

//一輪全變換

for i=1→m

temp= F(xn);

//迭混沌漂彭莎錐副揚(yáng)陳列—個(gè)(0,m-1)內(nèi)的整數(shù)

A[i]_A[temp];

//2個(gè)對(duì)應(yīng)位置元素交換

end

(5)將步驟(4)中的全變換執(zhí)行,輪后就生成了所需的隨機(jī)金排列。

該加密算法生成的全排列對(duì)混沌系統(tǒng)的初值敏感,因此密鑰的細(xì)微差別都將產(chǎn)生不一樣的全排列。生成的全排列的密鑰不僅可以由混沌系統(tǒng)初始參數(shù)控制,而且上述過(guò)程中的相關(guān)參數(shù)如ko、t、r等都可以作為密鑰,因此密鑰空間足夠大。利用該加密算法可以生成任意多所需長(zhǎng)度的全排列,在置換加密中就可以更靈活地改變置換模式,大大地提高置換加密的強(qiáng)度。

三、基于隨機(jī)全排列的置換加密算法

傳統(tǒng)的置換加密中由于使用相同的置換模式和采用的置換模式敲短的原因,使其很脆弱。利用上述基于混沌的隨機(jī)全排列生成方法,設(shè)計(jì)了—種通用的全排列置換加密算法,該加密算法將
明文分塊,并將每塊組合成矩陣形式,分別進(jìn)行行置換和列置換,且每次行置換和列置換的置換模式都重新由本文設(shè)計(jì)的隨機(jī)全排列生成算法生成,因此置換密碼的安全性大大提高。
首先定義下列加密和解密變換。設(shè)明文序列為M=mom1…mn-1,,長(zhǎng)度為n,利用上述加密算法生成的置換全排列為A=aoa1...an-1;置換后的名孜為C=coc1...cn-1,定義下列加密變換:

混沌隨機(jī)全排列置換加密算法及應(yīng)用

定義下列解密變換:

混沌隨機(jī)全排列置換加密算法及應(yīng)用

(1)首先將明文分成若干mxn大小的塊,并將明文組成mxn大小的明文矩陣。如果明文為圖片,則可以直接將圖片的像素矩陣作為塊。設(shè)當(dāng)前的明文矩陣為Mi,記:Mi1.為Mi的第i行;Mi2為Mi的第i列;密文塊為Ci,記:Ci1為Ci的第行;Ci2為Ci的第f列;對(duì)于明文分塊的大小,建議m>64,n>64。

(2)塊加密:利用上述全排列生成算法生成置換集合模版。為了增強(qiáng)置換效果和隨機(jī)性,分別對(duì)明文矩陣塊進(jìn)行行置換和列置換。產(chǎn)生m個(gè){0,1,…,n-1)的全排列,組成行置換集合H={H1,H2,…,Hm);產(chǎn)生n個(gè){0,1,…,m-1)的全排列,組成列置換集合V={V1,V2,…,Vm},分別對(duì)明文矩陣進(jìn)行下列行置換加密和列置換解密:

混沌隨機(jī)全排列置換加密算法及應(yīng)用

(3)塊解密:解密是加密的逆過(guò)程,加密過(guò)程是先行置換后列置換,且都是從第一行和第一列開始,而解密過(guò)程則是先列置換后行置換,且都是從最后一列和最后一行開始進(jìn)行相應(yīng)置換。產(chǎn)生m個(gè){0,1,…,n-1)的全排列,組成行置換集合H={Hi,H2,…,H0};產(chǎn)生n個(gè){0,1,…,m-1}的全排列,組成列置換集合V= {V1,V2,…,Vn},首先對(duì)明文矩陣進(jìn)行列置換解密,再進(jìn)行置換解密:

混沌隨機(jī)全排列置換加密算法及應(yīng)用

(4)利用上述的塊加密和解密方法對(duì)每一明文塊進(jìn)行操作,就完成了整個(gè)明文或密文的加密解密操作。需要說(shuō)明的是,對(duì)于最后一塊的處理,如果不能組合成明文矩陣,也可以直接進(jìn)行一次行加密或行解密變換操作即可。

從上述置換加密和解密過(guò)程可以看到,每一塊明文所使用的置換矩陣都利用基于混沌的隨機(jī)全排列生成算法產(chǎn)生,每塊明文的每一行每一列都進(jìn)行了置換,且每一次生成的隨機(jī)全排列都不相同,因此其置換關(guān)系極為復(fù)雜,而所有的參數(shù)和過(guò)程都可以由混沌系統(tǒng)參數(shù)控制,混沌系統(tǒng)的使用又具有很大的靈活性,使得密鑰可以很容易地根據(jù)需要擴(kuò)大,因此置換加密算法的安全性較傳統(tǒng)的置換加密算法更好。

四、混沌隨機(jī)全排列置換加密算法分析與應(yīng)用

提出的基于隨機(jī)全排列的置換密碼可以作為—個(gè)密碼模塊集成到其他密碼系統(tǒng),可以推廣和應(yīng)用到普通文件數(shù)據(jù),圖像、音頻等各種數(shù)據(jù)文件加密。下面是將上述加密模塊應(yīng)用到普通文本數(shù)據(jù)文件加密和圖像文件加密的實(shí)例。

1、普通文本文件加密實(shí)例

對(duì)于大量的文本文件加密,可以將明文進(jìn)行分組,而后采用上述的置換加密算法,對(duì)每塊文本進(jìn)行置換,而對(duì)于末尾塊,可能不能組合成上述矩陣,可以直接將其作為一行,進(jìn)行一次單
獨(dú)的行置換即可。選取了一段20x20的文字,采用上述加密算法進(jìn)行置換加密,并將密文中間剪切(剪切過(guò)的字符用“*”代替),效果如圖1所示。

混沌隨機(jī)全排列置換加密算法及應(yīng)用
可以看到在將密文剪切25%后解密仍然可以了解各明文的大致情況,而且密文集中剪切出的點(diǎn)都分散到了明文的不同位置,置換效果很好。

2、圖像文件加密實(shí)例

由于上述加密算法適合矩陣形式,對(duì)于圖像加密則更加方便,可以直接將圖像的像素矩陣進(jìn)行置換即可。下面是采用常見的256 x256像素的lena灰度圖像進(jìn)行置換加密實(shí)驗(yàn),并進(jìn)行剪切和密鑰的敏感性測(cè)試。圖2是實(shí)驗(yàn)和測(cè)試效果。采用的混沌系統(tǒng)是Logistic混沌映射,也可以采用其他的混沌系統(tǒng)。取x0=0.777 928 986 796 433,μo=4.0,敏感性測(cè)試中將初值x0最后—位改變?yōu)閤0=0.777 928 986 796 434。

混沌隨機(jī)全排列置換加密算法及應(yīng)用

從上述測(cè)試中可以發(fā)現(xiàn),對(duì)密鑰細(xì)微的改動(dòng)都會(huì)影響到最終的解密效果,而且在對(duì)密文進(jìn)行剪切干擾后進(jìn)行恢復(fù),恢復(fù)后的圖像也很能清楚地反應(yīng)愿耠圖像的一些特征。因此完全可以將本文的置換加密模塊應(yīng)用到現(xiàn)有的密碼系統(tǒng)中,以提高系統(tǒng)的安全性。

3、測(cè)試分析

為了獲取上述加密置換效果,本文采用的幾項(xiàng)測(cè)試指標(biāo)測(cè)試試置換的程度,并做對(duì)比,結(jié)果顯示,本文采用的全排列生成方法和置換加密算法都取得了很好的效果。

(1)不動(dòng)點(diǎn)

若置換后,明文矩陣中位置沒有改變的點(diǎn)稱為不動(dòng)點(diǎn)。對(duì)經(jīng)過(guò)置亂圖像,要求置亂后圖像的像素盡可能都改變位置,即不動(dòng)點(diǎn)的數(shù)目越少越好,這樣才說(shuō)明置亂效果好。對(duì)不同大小的圖像進(jìn)行置亂,并進(jìn)行統(tǒng)計(jì),取不動(dòng)點(diǎn)與所有像素的比值作為指標(biāo)。

(2)自然序

如果在明文中相鄰的2個(gè)點(diǎn)置換后位置仍然相鄰,則稱為自然序。置亂后圖像相鄰的像素應(yīng)該盡可能不再相鄰,即排列后的坐標(biāo)中自然序?qū)?yīng)盡可能少,這樣置亂的效果才好,取所有自然序與所有像素的比值作為指標(biāo)。

小知識(shí)之全排列

從n個(gè)不同元素中任取m(m≤n)個(gè)元素,按照一定的順序排列起來(lái),叫做從n個(gè)不同元素中取出m個(gè)元素的一個(gè)排列。當(dāng)m=n時(shí)所有的排列情況叫全排列。