專利名稱:應(yīng)用多混沌映射多動(dòng)態(tài)s盒的分組密碼系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息安全領(lǐng)域中的混沌數(shù)字密碼設(shè)計(jì)技術(shù),是一種應(yīng)用多個(gè)離散混沌映射多動(dòng)態(tài)S盒的混沌分組密碼系統(tǒng),具體涉及一種應(yīng)用多混沌映射多動(dòng)態(tài)S盒的分組密碼系統(tǒng)。
背景技術(shù):
隨著Internet技術(shù)的飛速發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)正日益廣泛的應(yīng)用到社會(huì)各個(gè)領(lǐng)域,信息的安全與保密顯得尤其重要。為了保證網(wǎng)絡(luò)信息安全,國(guó)內(nèi)外研究人員設(shè)計(jì)并公布了眾多密碼算法,現(xiàn)行的密碼算法主要包括序列密碼、分組密碼、公鑰密碼、散列函數(shù)等。其中,分組密碼,也稱為塊密碼,它是現(xiàn)代密碼學(xué)中的一個(gè)重要研究分支,主要由加密算法、解密算法和密鑰編排算法三部分組成。分組密碼因具有速度快、易于標(biāo)準(zhǔn)化和便于軟硬件實(shí)現(xiàn)等特點(diǎn)而在計(jì)算機(jī)通信和信息系統(tǒng)安全領(lǐng)域中有著極其廣泛的應(yīng)用。
混沌是非線性確定系統(tǒng)中由于內(nèi)稟隨機(jī)性而產(chǎn)生的外在復(fù)雜表現(xiàn),是一種貌似隨機(jī)的非隨機(jī)運(yùn)動(dòng)。混沌由于其對(duì)初值敏感性、對(duì)參數(shù)敏感性、遍歷性、類隨機(jī)性、弱相關(guān)性等特點(diǎn),非線性科學(xué)界和信息工程界普遍關(guān)注混沌理論在信息安全和保密通信等領(lǐng)域中的應(yīng)用。近年來,研究人員提出了許多基于混沌系統(tǒng)的加密算法。但從密碼分析角度看,大多數(shù)混沌數(shù)字密碼存在著安全性不高、運(yùn)算速度慢、難以在實(shí)際中應(yīng)用等缺陷。本發(fā)明提供了一種利用多個(gè)混沌映射多個(gè)動(dòng)態(tài)S盒的分組加(解)密方法和系統(tǒng),該密碼系統(tǒng)安全性高,運(yùn)算速度快,便于硬件實(shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明目的在于克服目前技術(shù)中混沌數(shù)字密碼系統(tǒng)安全度低、運(yùn)算速度慢、難以硬件實(shí)現(xiàn)等缺陷,提供一種能提高混沌數(shù)字密碼性能的應(yīng)用多混沌映射多動(dòng)態(tài)S盒的分組密碼系統(tǒng)。
技術(shù)方案 一種應(yīng)用多混沌映射多動(dòng)態(tài)S盒的分組密碼系統(tǒng),利用計(jì)算機(jī)技術(shù)、信息編碼理論及數(shù)字混沌技術(shù)實(shí)現(xiàn),包括子密鑰產(chǎn)生模塊、動(dòng)態(tài)S盒生成模塊、加密模塊和解密模塊,具體運(yùn)行步驟如下 (1)在子密鑰產(chǎn)生模塊中,利用t個(gè)混沌系統(tǒng)產(chǎn)生輪循環(huán)子密鑰,t≥2,t為整數(shù); (2)在動(dòng)態(tài)S盒生成模塊中,利用q個(gè)混沌系統(tǒng)生成z個(gè)動(dòng)態(tài)S盒,q≥2,z≥2,q、z均為整數(shù); (3)利用加密模塊對(duì)明文件進(jìn)行加密,將明文文件按64位分成多個(gè)分組,從第一個(gè)分組開始,利用立方映射產(chǎn)生一個(gè)隨機(jī)數(shù)h,根據(jù)該隨機(jī)數(shù)h選擇第h個(gè)S盒并利用第(1)步中子密鑰模塊產(chǎn)生的子密鑰,進(jìn)行輪循環(huán)加密運(yùn)算;在當(dāng)前的明文分組加密完成后,即可對(duì)下一個(gè)明文分組進(jìn)行加密;重復(fù)這一過程,直至處理完所有明文數(shù)據(jù)分組,h≥0,h為整數(shù); (4)在需要解密時(shí)利用解密模塊對(duì)密文件解密,按照與加密過程相逆的順序進(jìn)行運(yùn)算獲得解密密文,即從密文文件的第一個(gè)數(shù)據(jù)塊開始,利用立方映射產(chǎn)生一個(gè)隨機(jī)數(shù)h’,根據(jù)該隨機(jī)數(shù)h’選擇第h’個(gè)S盒并利用第(1)步中子密鑰模塊產(chǎn)生的子密鑰,進(jìn)行輪循環(huán)解密運(yùn)算;在當(dāng)前的密文塊解密完成后,即可對(duì)下一個(gè)密文塊進(jìn)行解密;重復(fù)這一過程,直至處理完所有密文塊,h’≥0,h’為整數(shù)。
步驟(1)的子密鑰產(chǎn)生模塊中使用的混沌系統(tǒng)為四個(gè)系統(tǒng)參數(shù)和初始值均不相同的一維Logistic映射,利用這四個(gè)混沌映射生成兩個(gè)128(16字節(jié))位的序列ρ和η,利用序列ρ和η生成每輪循環(huán)的64位(8字節(jié))子密鑰。
步驟(2)中動(dòng)態(tài)S盒生成模塊,設(shè)計(jì)生成z個(gè)動(dòng)態(tài)S盒所使用的混沌系統(tǒng)分別為二維Logistic映射、Standard映射、二維超混沌映射、Henón映射,生成第m個(gè)S盒的算法步驟如下,其中1≤m≤p,1<p≤90,z≥2,m、p、z均為整數(shù),0≤i≤749,n、k、i為自然數(shù) ST1.將相空間劃分為等長(zhǎng)的n+1=750個(gè)區(qū)間,令0,…,n與每個(gè)區(qū)間一一對(duì)應(yīng);若某點(diǎn)位于區(qū)間k中,則該點(diǎn)的量值記為(k+1)mod 750; ST2.選取750個(gè)初始點(diǎn),用(xi0,yi0)表示第i個(gè)初始點(diǎn)的坐標(biāo)值;所有的縱坐標(biāo)值yi0組成初始點(diǎn)集合U;利用Chebyshev映射產(chǎn)生一個(gè)隨機(jī)數(shù),根據(jù)該隨機(jī)數(shù)選取一個(gè)二維離散混沌映射,對(duì)于任意的初始點(diǎn)(xi0,yi0),迭代Ni次后得到y(tǒng)i0的像yi′;所有初始點(diǎn)yi0對(duì)應(yīng)的像組成像集合V; ST3.從集合U中找出具有唯一像的初始點(diǎn)集合Φ;選擇包含Φ中256個(gè)元素的子集A,從集合V中找出A中元素對(duì)應(yīng)的像的集合B; ST4.對(duì)集合A、B中的元素分別分配新的量值即
之間的整數(shù),但集合A或B中各元素新的量值不能重復(fù);若A中某個(gè)初始點(diǎn)的新量值是a,對(duì)應(yīng)像的新量值是b,則記f(a)=b;據(jù)此求得的映射f一一對(duì)應(yīng),f就是S盒。
步驟ST2中利用Chebyshev映射產(chǎn)生一個(gè)隨機(jī)數(shù),然后根據(jù)該隨機(jī)數(shù)選取二維離散混沌映射。并且,選取的混沌映射不同,進(jìn)行迭代的次數(shù)也不同。
模塊(3)負(fù)責(zé)對(duì)明文文件進(jìn)行加密,首先將明文M劃分成一系列長(zhǎng)度為64位(8字節(jié))的塊,從第一個(gè)數(shù)據(jù)塊開始,利用立方映射產(chǎn)生一個(gè)隨機(jī)數(shù),根據(jù)該隨機(jī)數(shù)選擇一個(gè)S盒進(jìn)行加密運(yùn)算。假設(shè)對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行加密時(shí)循環(huán)輪數(shù)為r輪,加密過程為使用輪變換函數(shù)f和第i輪循環(huán)的子密鑰pi對(duì)數(shù)據(jù)塊的各個(gè)字節(jié)進(jìn)行異或運(yùn)算,第i輪輸出塊是第(i+1)輪的輸入(最后一輪除外)。第r輪的輸出Br=xr,0,xr,1,…,xr,7即為密文塊。密文塊的長(zhǎng)度也是64位,和明文塊的長(zhǎng)度相同,這一結(jié)果在網(wǎng)絡(luò)保密通信中是非常有意義的。這里的輪變換函數(shù)f實(shí)質(zhì)上就是模塊(2)生成的動(dòng)態(tài)S盒。當(dāng)一個(gè)明文塊加密完成后,即可對(duì)下一個(gè)明文塊進(jìn)行加密。重復(fù)上述加密過程,直至把所有的明文數(shù)據(jù)塊全部處理完畢。
模塊(4)負(fù)責(zé)對(duì)密文文件進(jìn)行解密,解密運(yùn)算是加密的逆運(yùn)算,只須按照與加密過程相逆的順序進(jìn)行運(yùn)算即可解密密文。
Jakimoski和Kocarev在文獻(xiàn)“Differential and linear probabilities of ablock-encryption cipher”[IEEE Transactions on Circuits and Systems-I,vol.50,no.1,pp.121-123,2003]中給出了分組加密算法中函數(shù)f的微分近似概率為2-5<DPf=12/256<2-4,線性近似概率為L(zhǎng)Pf≈2-3.825。同時(shí),該文獻(xiàn)證明了分組加密算法循環(huán)輪數(shù)為11輪時(shí),差分(線性)軌跡至少包含17個(gè)動(dòng)態(tài)S盒。本發(fā)明選取適當(dāng)?shù)难h(huán)輪數(shù),例如取循環(huán)輪數(shù)r=500,對(duì)于500輪循環(huán)差分軌跡至少包含(500×17)/11≈773個(gè)動(dòng)態(tài)S盒,則DP≤(2-4.678)773≈2-3615,LP≤(2-3.825)773≈2-2957。據(jù)此可知,攻擊者不可能構(gòu)建分組加密算法的差分(線性)特征,即微分或線性分析不能夠破譯密文信息。此外,本文算法的密鑰長(zhǎng)度是128位,加密強(qiáng)度是2128,如果將該密碼系統(tǒng)所使用的混沌系統(tǒng)的參數(shù)、初始值、迭代次數(shù)、S盒數(shù)目、輪循環(huán)次數(shù)r也計(jì)入密鑰,則密鑰空間將是十分巨大的,足以應(yīng)付窮舉攻擊。
本發(fā)明應(yīng)用多混沌映射多動(dòng)態(tài)S盒的分組密碼系統(tǒng),使用模塊化程序設(shè)計(jì)方法,大大提高了加/解密運(yùn)算速度,同時(shí)便于硬件實(shí)現(xiàn),可廣泛應(yīng)用于政府、電子商務(wù)、軍事、數(shù)字銀行等眾多領(lǐng)域。
四
圖1為本發(fā)明的子密鑰產(chǎn)生流程圖。
圖2為本發(fā)明的加密流程圖。
五具體實(shí)施例方式 實(shí)施例一參見圖1、圖2,圖1中,四個(gè)混沌映射分別迭代1600次后產(chǎn)生兩個(gè)128位的初始序列ρ和η,根據(jù)式(2)生成第i輪子密鑰pi。圖中,Ti,k表示密鑰Ti的第k個(gè)字節(jié),T0=ρ,Ti,16≡Ti,0,Ti,17≡Ti,1,f0=η0,η0為128位初始序列η的第一個(gè)字節(jié)(令η=η0η1η2…η16),⊕表示異或運(yùn)算,函數(shù)
表示將密鑰Ti的右邊64位分配給輪子密鑰pi。
圖2中,明文塊Bi=xi-1,0,xi-1,1,…,xi-1,7,pi-1,0,pi-1,1,…,pi-1,7是第i輪循環(huán)的子密鑰pi-1的8個(gè)字節(jié),第i輪輸出塊Bi′=xi,0,xi,1,…,xi,7(它為第(i+1)輪的輸入)。
本實(shí)施例提供了一種應(yīng)用多個(gè)離散混沌映射多動(dòng)態(tài)S盒的混沌分組密碼系統(tǒng),該密碼系統(tǒng)共包括四個(gè)模塊,下面對(duì)每一模塊的實(shí)施方式作進(jìn)一步的詳細(xì)說明。
子密鑰產(chǎn)生模塊方式 本模塊中使用的混沌系統(tǒng)為下列四個(gè)一維離散Logistic映射 式(1)中,xni(i=1,2,3,4)表示第i個(gè)Logistic映射迭代n次后的值,為消除初始值的影響,將上述各映射分別迭代200次,得到x200i。以x200i作為初始值,將上述各映射分別迭代1600次。設(shè)第i個(gè)映射的第j次迭代值為xji,用二進(jìn)制形式表示為bjni表示xji的第n個(gè)二進(jìn)制位。從xji(i=1,2,3,4)中抽取第4、第5二進(jìn)制位上的數(shù)值,得到一個(gè)8位的序列bj41bj42bj43bj44bj51bj52bj53bj54,以類似的方式總共抽取16次得到兩個(gè)128位的序列 ρ=B100,4B100,5B200,4B200,5B300,4B300,5…B1600,4B1600,5, η=B50,4B50,5B150,4B150,5B250,4B250,5…B1550,4B1550,5, 這里, 本分組密碼系統(tǒng)中,假設(shè)輪循環(huán)次數(shù)為r,執(zhí)行第i輪循環(huán)的函數(shù)f依賴于第i輪子密鑰pi的值,子密鑰長(zhǎng)度是64位。第i輪循環(huán)子密鑰pi的產(chǎn)生方法為
式(2)中,i=1,…,r,k=1,…,16,Ti,k表示密鑰Ti的第k個(gè)字節(jié),T0=ρ,Ti,16≡Ti,0,Ti,17≡Ti,1,f0=η0,η0為128位序列η的第一個(gè)字節(jié)(令η=η0η1η2…η16)。這里,函數(shù)
表示將密鑰Ti的右邊64位分配給輪子密鑰pi。
動(dòng)態(tài)S盒生成模塊方式 模塊(2)中設(shè)計(jì)生成多個(gè)動(dòng)態(tài)S盒所選用的混沌映射如下 二維Logistic映射 Standard映射 二維超混沌映射 Henón映射 生成第m(1≤m≤t,1<t≤90)個(gè)S盒的算法步驟如下 ST1.將相空間劃分為等長(zhǎng)的750個(gè)區(qū)間,令0,1,2,…,749與每個(gè)區(qū)間一一對(duì)應(yīng)。若某點(diǎn)位于區(qū)間k中,則記該點(diǎn)的量值為(k+1)mod 750。
ST2.選取750個(gè)初始點(diǎn),用(xi0,yi0)表示第i(0≤i≤749)個(gè)初始點(diǎn)的坐標(biāo)值,所有的縱坐標(biāo)值yi0(0≤i≤749)構(gòu)成初始點(diǎn)集合U。根據(jù)Chebyshev映射產(chǎn)生一個(gè)隨機(jī)數(shù),Chebyshev映射定義如下 xn+1=cos(σarccos(xn)),σ=2.5,xn∈[-1,1]。
利用Chebyshev映射產(chǎn)生隨機(jī)數(shù)的具體方法是任意選取初始值x0,將Chebyshev映射迭代N次后得到xN,然后計(jì)算Floor(10*|xN|)mod 4的結(jié)果即為所求,函數(shù)Floor(x*)表示取不大于x*的最大整數(shù)。然后根據(jù)該隨機(jī)數(shù)按照如下規(guī)則選擇混沌映射和迭代次數(shù)若隨機(jī)數(shù)為0,選擇二維Logistic映射,迭代1500次;若隨機(jī)數(shù)為1,選擇Standard映射,迭代2000次;若隨機(jī)數(shù)為2,選擇二維超混沌映射,迭代2300次;若隨機(jī)數(shù)為3,選擇Henón映射,迭代2800次。對(duì)于任意的初始點(diǎn)(xi0,yi0),經(jīng)過迭代Ni次后得到y(tǒng)i0的像yi′,將所有初始點(diǎn)yi0(0≤i≤749)對(duì)應(yīng)的像組成像集合V。顯然,集合U,V中的元素個(gè)數(shù)均為750。
ST3.從集合U中找出具有唯一像的初始點(diǎn)集合Φ,選擇包含Φ中256個(gè)不同元素的子集A,從集合V中找出A中元素對(duì)應(yīng)的像的集合B。
ST4.對(duì)集合A、B中的元素分別分配新的量值(
之間的整數(shù)),但集合A(B)中各元素新的量值不能出現(xiàn)相同值。若A中某個(gè)元素的新量值是a,對(duì)應(yīng)像的新量值是b,則記f(a)=b。據(jù)此求得的映射f一一對(duì)應(yīng),f就是S盒。
步驟ST1中選取區(qū)間個(gè)數(shù)的方法為若設(shè)混沌映射具有均勻分布、各態(tài)遍歷的不變測(cè)度,設(shè)步驟ST1中劃分的區(qū)間個(gè)數(shù)為n+1,根據(jù)文獻(xiàn)“Chaos andcryptographyblock encryption ciphers based on chaotic maps”[IEEE Transactionson Circuits and Systems-I,vol.48,no.2,pp.163-168,2001],則給定像Ij剛好是某個(gè)初始點(diǎn)的像的概率為 并有l(wèi)imn→∞P(Ij)=1/e。因此當(dāng)n較大時(shí),對(duì)應(yīng)于某初始點(diǎn)的像的概率為1/e。若要構(gòu)造映射f{0,…,j-1}→{0,…,j-1},對(duì)于較大的n值,區(qū)間的數(shù)量應(yīng)略大于je。當(dāng)j=256時(shí),劃分區(qū)間的數(shù)量應(yīng)略大于256e≈696。在本分組密碼系統(tǒng)中,選取區(qū)間個(gè)數(shù)為750。
按照以上算法,可以生成多個(gè)不同的動(dòng)態(tài)S盒。生成多個(gè)動(dòng)態(tài)S盒的算法源代碼如下 int func[50][256];//動(dòng)態(tài)S盒,這里假設(shè)生成50個(gè)S-box double comp(double startpointx,double startpointy)//計(jì)算迭代N次后的值 { int rndNum; double xx,x,y,z; //利用Chebyshev映射產(chǎn)生隨機(jī)數(shù) z=startpointx; for(i=0;i<1200;i++) { z=cos(2.5*arccos(z)); } rndNum=floor(abs(z))%4; x=startpointx; y=startpointy; Switch(rndNum) { Case 0 for(i=0;i<1500;i++)//選擇二維Logistic映射迭代 { xx=x; x=x+0.65*(x-x*x+y); y=y(tǒng)+0.65*(y-y*y+xx); } break; Case 1 for(i=0;i<2000;i++)//選擇Standard映射迭代 { x=x+3*sin(y); y=y(tǒng)+x; } break; Case 2 for(i=0;i<2300;i++)//選擇二維超混沌映射迭代{ xx=x; x=1.3*y*y; y=-1.05+1.15*xx-0.2*y;}break; Case 3 for(i=0;i<2800;i++)//選擇Henón映射迭代 { xx=x; x=1-1.4*x*x+y; y=0.3*x; } break; } return y; } //生成多動(dòng)態(tài)S盒函數(shù)Sbox() void Sbox() { int i,j,k,sno,min,num,s; int magnitude[750],flag[750],SetA[256],SetB[256],refunc[256]; double d,startpointx,startpointy,image; double startarray[750],imagearray[750]; d=2.56/750; for(sno=0;sno<50;sno++) { startpointx=-(0.02+sno*0.02)*d; startpointy=-(0.05+sno*0.05)*d; s=0; for(i=0;i<750;i++) { flag[i]=0; magnitude[i]=0; startarray[i]=0; imagearray[i]=0; } for(i=0;i<256;i++) { SetA[i]=0; SetB[i]=0; refunc[i]=0; func[sno][i]=0; } /*********選擇初始點(diǎn),并隨機(jī)選擇混沌映射計(jì)算其對(duì)應(yīng)的像值************/ for(i=0;i<750;i++) { Startpointx=startpointx+d; Startpointy=startpointy+2*d; startarray[i]=startpointy; image=comp(startpointx,startpointy); imagearray[i]=image; } /************選擇具有唯一像的初始點(diǎn)集合A,包含元素256個(gè)************/ for(j=0;j<750;j++) { magnitude[j]=floor(imagearray[j]/d); if(flag[magnitude[j]]==0) { if(s<256) { SetA[s]=j(luò); s++; flag[magnitude[j]]=1; } else goto OutputB; } } /************生成與集合A相對(duì)應(yīng)的像集合B,包含元素256個(gè)************/ OutputB for(k=0;k<256;k++) { i=SetA[k]; SetB[k]=magnitude[i]; } for(i=0;i<256;i++) { min=750; for(j=0;j<256;j++) { if(SetB[j]<min) { min=SetB[j]; num=j(luò); } } subsetb[num]=750; refunc[i]=num; } /********對(duì)集合A、B中的元素重新分配量值,構(gòu)造一一對(duì)應(yīng)f,即S盒********/ for(i=0;i<256;i++) { for(j=0;j<256;j++) { if(refunc[j]==i) { func[sno][i]=j(luò); break; } } } } } 加密模塊實(shí)施方式 將明文M劃分成一系列長(zhǎng)度為64位的塊
令xi,0,xi,1,…,xi,7表示塊Bi的8個(gè)字節(jié),即Bi=xi,0,xi,1,…,xi,7。使用輪變換函數(shù)f對(duì)每一數(shù)據(jù)塊依次進(jìn)行加密,假設(shè)每個(gè)數(shù)據(jù)塊加密時(shí)循環(huán)輪數(shù)為r輪,則對(duì)塊Bi的加密過程可用下式描述 式(3)中,i=1,…,r,f0=pi,0,函數(shù)fj(1≤j≤7)定義如下 fj=f[xi-1,1⊕…⊕xi-1,j⊕pi-1,j],(4) 式(4)中,函數(shù)fχ→χ(χ={0,1,2,…,255})就是模塊(2)生成的動(dòng)態(tài)S盒,pi,0,pi,1,…,pi,7是第i輪循環(huán)的子密鑰pi的8個(gè)字節(jié)。從式(3)可知,第i輪輸出塊Bi=xi,0,xi,1,…,xi,7是第(i+1)輪的輸入(最后一輪除外)。因此,第r輪(最后一輪)的輸出Br=xr,0,xr,1,…,xr,7即為密文塊。密文塊的長(zhǎng)度也是64位(8個(gè)字節(jié)),和明文塊的長(zhǎng)度相同。以往很多混沌密碼算法的密文文件大小為明文文件大小的2倍,進(jìn)行網(wǎng)絡(luò)傳輸時(shí)將消耗大量的時(shí)間,這很不利于大文件的網(wǎng)絡(luò)傳輸,而本發(fā)明剛好可克服這一缺點(diǎn)。使用上述加密算法從明文文件的第一個(gè)數(shù)據(jù)塊開始,利用立方映射產(chǎn)生一個(gè)隨機(jī)數(shù),根據(jù)該隨機(jī)數(shù)選擇一個(gè)S盒進(jìn)行加密運(yùn)算。當(dāng)一個(gè)明文塊加密完成后,即可對(duì)下一個(gè)明文塊進(jìn)行加密。重復(fù)上述加密過程,直至把所有的明文數(shù)據(jù)塊全部處理完畢。
立方映射定義如下 假設(shè)共有N個(gè)S盒,利用立方映射產(chǎn)生隨機(jī)數(shù)的具體方法是任意選取初始值x0,迭代k次后得到像xk,然后計(jì)算Ceil(100*|xk|)mod N就是所要求的隨機(jī)數(shù),函數(shù)Ceil(x*)表示取大于x*的最小整數(shù)。
解密模塊實(shí)施方式 解密過程與加密過程類似,只須按照與加密過程相逆的順序進(jìn)行運(yùn)算即可。從密文文件的第一個(gè)數(shù)據(jù)塊開始,利用立方映射產(chǎn)生一個(gè)隨機(jī)數(shù)(隨機(jī)數(shù)產(chǎn)生方式同上),根據(jù)該隨機(jī)數(shù)選擇一個(gè)S盒進(jìn)行解密運(yùn)算。令密文塊Ci=zi,0,zi,1,…,zi,7,zi,0,zi,1,…,zi,7是塊Ci的8個(gè)字節(jié)。對(duì)密文塊Ci的解密過程可用下式描述 zi-1,k=zi,k+1⊕fk-1[zi,1,…,zi,k-1,pi,k-1], (5) 式(5)中,k=1,…,8,f0=pi,0,zi,8≡zi,0,zi,9≡zi,1,函數(shù)fk(1≤k≤7)定義同式(4),pi,0,pi,1,…,pi,7是第i輪循環(huán)的子密鑰pi的8個(gè)字節(jié)。與加密過程類似,第i輪輸出塊Ci=zi,0,zi,1,…,zi,7是第(i+1)輪的輸入,第r輪(最后一輪)的輸出Cr=zr,0,zr,1,…,zr,7即為明文塊。當(dāng)一個(gè)密文塊解密完成后,即可對(duì)下一個(gè)密文塊進(jìn)行解密。重復(fù)上述解密過程,直至把所有的密文數(shù)據(jù)塊全部處理完畢。
權(quán)利要求
1.一種應(yīng)用多混沌映射多動(dòng)態(tài)S盒的分組密碼系統(tǒng),利用計(jì)算機(jī)技術(shù)、信息編碼理論及數(shù)字混沌技術(shù)實(shí)現(xiàn),其特征在于,包括子密鑰產(chǎn)生模塊、動(dòng)態(tài)S盒生成模塊、加密模塊和解密模塊,具體運(yùn)行步驟如下
(1)在子密鑰產(chǎn)生模塊中,利用t個(gè)混沌系統(tǒng)產(chǎn)生輪循環(huán)子密鑰,t≥2,t為整數(shù);
(2)在動(dòng)態(tài)S盒生成模塊中,利用q個(gè)混沌系統(tǒng)生成z個(gè)動(dòng)態(tài)S盒,q≥2,z≥2,q、z均為整數(shù);
(3)利用加密模塊對(duì)明文件進(jìn)行加密,將明文文件按64位分成多個(gè)分組,從第一個(gè)分組開始,利用立方映射產(chǎn)生一個(gè)隨機(jī)數(shù)h,根據(jù)該隨機(jī)數(shù)h選擇第h個(gè)S盒并利用第(1)步中子密鑰模塊產(chǎn)生的子密鑰,進(jìn)行輪循環(huán)加密運(yùn)算;在當(dāng)前的明文分組加密完成后,即可對(duì)下一個(gè)明文分組進(jìn)行加密;重復(fù)這一過程,直至處理完所有明文數(shù)據(jù)分組,h≥0,h為整數(shù);
(4)在需要解密時(shí)利用解密模塊對(duì)密文文件解密,按照與加密過程相逆的順序進(jìn)行運(yùn)算獲得解密密文,即從密文文件的第一個(gè)數(shù)據(jù)塊開始,利用立方映射產(chǎn)生一個(gè)隨機(jī)數(shù)h’,根據(jù)該隨機(jī)數(shù)h’選擇第h’個(gè)S盒并利用第(1)步中子密鑰模塊產(chǎn)生的子密鑰,進(jìn)行輪循環(huán)解密運(yùn)算;在當(dāng)前的密文塊解密完成后,即可對(duì)下一個(gè)密文塊進(jìn)行解密;重復(fù)這一過程,直至處理完所有密文塊,h’≥0,h’為整數(shù)。
2.根據(jù)權(quán)利要求1所述的分組密碼系統(tǒng),其特征在于,步驟(1)的子密鑰產(chǎn)生模塊中使用的混沌系統(tǒng)為四個(gè)系統(tǒng)參數(shù)和初始值均不相同的一維Logistic映射,利用這四個(gè)混沌映射生成兩個(gè)128位的序列ρ和η,利用序列ρ和η生成每輪循環(huán)的64位子密鑰。
3.根據(jù)權(quán)利要求1所述的分組密碼系統(tǒng),其特征在于,步驟(2)中動(dòng)態(tài)S盒生成模塊,設(shè)計(jì)生成z個(gè)動(dòng)態(tài)S盒所使用的混沌系統(tǒng)分別為二維Logistic映射、Standard映射、二維超混沌映射、Henón映射,生成第m個(gè)S盒的算法步驟如下,其中1≤m≤p,1<p≤90,z≥2,m、p、z均為整數(shù),0≤i≤749,n、k、i為自然數(shù)
ST1.將相空間劃分為等長(zhǎng)的n+1=750個(gè)區(qū)間,令0,…,n與每個(gè)區(qū)間一一對(duì)應(yīng);若某點(diǎn)位于區(qū)間k中,則該點(diǎn)的量值記為(k+1)mod 750;
ST2.選取750個(gè)初始點(diǎn),用(xi0,yi0)表示第i個(gè)初始點(diǎn)的坐標(biāo)值;所有的縱坐標(biāo)值yi0組成初始點(diǎn)集合U;利用Chebyshev映射產(chǎn)生一個(gè)隨機(jī)數(shù),根據(jù)該隨機(jī)數(shù)選取一個(gè)二維離散混沌映射,對(duì)于任意的初始點(diǎn)(xi0,yi0),迭代Ni次后得到y(tǒng)i0的像yi′;所有初始點(diǎn)yi0對(duì)應(yīng)的像組成像集合V;
ST3.從集合U中找出具有唯一像的初始點(diǎn)集合Φ;選擇包含Φ中256個(gè)元素的子集A,從集合V中找出A中元素對(duì)應(yīng)的像的集合B;
ST4.對(duì)集合A、B中的元素分別分配新的量值即
之間的整數(shù),但集合A或B中各元素新的量值不能重復(fù);若A中某個(gè)初始點(diǎn)的新量值是a,對(duì)應(yīng)像的新量值是b,則記f(a)=b;據(jù)此求得的映射f一一對(duì)應(yīng),f就是S盒。
全文摘要
本發(fā)明涉及一種應(yīng)用多混沌映射多動(dòng)態(tài)S盒的分組密碼系統(tǒng),包括子密鑰產(chǎn)生模塊、動(dòng)態(tài)S盒生成模塊、加密模塊和解密模塊,首先利用多個(gè)混沌系統(tǒng)產(chǎn)生輪循環(huán)子密鑰,利用多個(gè)混沌系統(tǒng)生成多個(gè)動(dòng)態(tài)S盒;利用加密模塊對(duì)明文件進(jìn)行加密,明文文件被加密后,若需要解密時(shí)利用解密模塊按照與加密過程相逆的順序?qū)γ芪募饷?。本發(fā)明應(yīng)用多混沌映射多動(dòng)態(tài)S盒的分組密碼系統(tǒng),使用模塊化程序設(shè)計(jì)方法,大大提高了加/解密運(yùn)算速度,同時(shí)便于硬件實(shí)現(xiàn),可廣泛應(yīng)用于政府、電子商務(wù)、軍事、數(shù)字銀行等眾多領(lǐng)域。
文檔編號(hào)H04L9/08GK101814985SQ20101909700
公開日2010年8月25日 申請(qǐng)日期2010年2月8日 優(yōu)先權(quán)日2010年2月8日
發(fā)明者武相軍, 路楊, 王紅濤, 王慧, 賈培艷, 張濟(jì)仕 申請(qǐng)人:河南大學(xué)