專利名稱:一種面向字、帶記憶的序列擾動方法及加密方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種信息傳輸與處理的方法,更確切地說是涉及一種面向字、帶記憶 的序列擾動方法及加密方法。采用基于整字操作的混合型帶記憶邏輯,以增強(qiáng)序列密碼算 法的抗分析強(qiáng)度。
背景技術(shù):
密碼技術(shù)歷史悠久,在最初用于保護(hù)軍事和外交通信安全,但是,隨著通信網(wǎng)絡(luò)和 計(jì)算機(jī)網(wǎng)絡(luò)的普及,現(xiàn)代密碼學(xué)的應(yīng)用不再局限于政治、軍事和外交,其商業(yè)價(jià)值和社會價(jià) 值得到了廣泛的認(rèn)同。保密是密碼學(xué)的核心,而加密是獲得信息保密的實(shí)用工具。密碼算法分為公鑰密碼算法和私鑰密碼算法。私鑰密碼算法又分為分組密碼算法 和序列密碼算法。分組密碼算法一般對消息進(jìn)行分塊加密,算法運(yùn)行一次加密一個(gè)較大的 消息塊。序列密碼算法一般用一個(gè)短的密鑰,用特定的密鑰流生成算法,生成與要加密的消 息長度相當(dāng)?shù)拿荑€流序列,將密鑰流序列與明文按位異或達(dá)到加密的目的。而解密方生成 同樣的密鑰流序列,與密文異或,即可得到明文。所以,序列密碼算法的關(guān)鍵是設(shè)計(jì)安全快 速的密鑰流生成算法。傳統(tǒng)的密鑰流生成算法每運(yùn)行一次,只產(chǎn)生一個(gè)比特的密鑰流。目前對序列密碼算法的攻擊,主要是尋找密鑰流序列的安全缺陷,達(dá)到恢復(fù)加密 密鑰,或?qū)⒚荑€流序列與真隨機(jī)序列進(jìn)行區(qū)分,或嘗試生成密鑰流序列的目的。主要的攻擊 方法有代數(shù)攻擊、區(qū)分攻擊、猜測確定攻擊、相關(guān)攻擊、差分攻擊等。從設(shè)計(jì)角度來看,最難 以抵御的是區(qū)分攻擊,對序列密碼算法的這種基于統(tǒng)計(jì)的分析,其成敗在很大程度上依賴 于密鑰流序列生成邏輯的設(shè)計(jì)。本技術(shù)領(lǐng)域普遍認(rèn)為,加密算法中采用帶記憶邏輯是強(qiáng)化密鑰流生成邏輯的一種 基本措施,它可以增強(qiáng)算法抵抗線性區(qū)分攻擊和差分分析的性能,因此帶記憶邏輯的合理 運(yùn)用很可能是抵抗區(qū)分攻擊的最佳選擇。隨著通信網(wǎng)絡(luò)和計(jì)算機(jī)網(wǎng)絡(luò)的高速發(fā)展,傳統(tǒng)的運(yùn)行一次生成一個(gè)比特的密鑰流 生成方法已經(jīng)不能滿足實(shí)現(xiàn)速度上的需要,尤其是軟件實(shí)現(xiàn)方面。一些面向字的密鑰流生 成方法逐漸被設(shè)計(jì)出來。即運(yùn)行一次生成若干比特的密鑰字,由密鑰字組成密鑰流序列。例 如SN0W3G算法、Rabbit算法。在序列密碼算法設(shè)計(jì)中,將整字帶記憶邏輯作為非線性變換組件已經(jīng)成為近年來 的主流設(shè)計(jì)思想??v觀目前已公開的序列密碼算法,整字帶記憶邏輯的應(yīng)用已經(jīng)初具規(guī)模, 而且表現(xiàn)出很多種整字記憶形式。例如RC4算法其實(shí)是一種以攪拌器型整字帶記憶邏輯 為核心的算法。SNOW中所采用的所謂有限自動機(jī)實(shí)質(zhì)上是一種復(fù)雜的累加器型整字帶記憶 邏輯。
專利CN1829142A發(fā)明了一種新的“基于字節(jié)操作、以帶記憶為特征的序列擾亂方 法”。該方法讓密鑰流序列以字節(jié)為單位,通過一個(gè)擾亂器后再以字節(jié)為單位輸出。該擾亂 器是一個(gè)強(qiáng)化字符序列的整字帶記憶非線性邏輯,兼具攪拌器型和累加器型帶記憶邏輯的 特征。其特征在于包括
步驟A,預(yù)置2m個(gè)記憶單元,0,1,2,……,2m_l,每個(gè)記憶單元中存放一個(gè)字節(jié)內(nèi) 容;步驟B,對輸入的字節(jié)序列Z= (x0, X1,…)中的每個(gè)字節(jié)Xi,做如下操作a)取Xi的高m比特的值h,h是小于2m的值;b)在已知h后,用第h個(gè)記憶單元中的內(nèi)容yh與輸入字節(jié)Xi進(jìn)行異或操作,輸出 經(jīng)擾亂后的字節(jié)Zi,即z, 十凡;c)更新記憶單元,取出第h個(gè)記憶單元中的內(nèi)容yh的低m比特的值t,t也是小于 2m的值。在已知t后,將第h個(gè)記憶單元中的內(nèi)容yh更新為凡 SOO,yh — yh S{yt),將 第t個(gè)記憶單元中的內(nèi)容yt更新為Λ 風(fēng)X,),即只—y, S(Xi),其中S表示一個(gè)非線性函 數(shù)變換,是一個(gè)從字節(jié)到字節(jié)的置換。所述m的值為3或4或5或6。該發(fā)明的序列擾亂方法,在設(shè)計(jì)基于單字節(jié)輸入輸出、整字運(yùn)算的帶記憶邏輯時(shí), 合理的加大了記憶單元規(guī)模,增強(qiáng)了該記憶邏輯在抗線性和差分分析方面的性能。但是,上述序列擾動方法生成的序列,平衡性不好,即隨機(jī)序列經(jīng)擾動后生成的序 列中的每一個(gè)元素取值在元素取值空間中分布不均勻。這將使得輸出的序列有很大的安全 缺陷。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種面向字、帶記憶的序列擾動方 法及加密方法。該序列擾動方法基于整字操作、以帶記憶為特征,也就是說讓序列以字為單 位輸入,通過一個(gè)帶記憶的擾亂器后再以字為單位輸出。在序列密碼設(shè)計(jì)中,通過增設(shè)該擾 亂器,提高密鑰流序列的隨機(jī)性和抗分析能力。如無特別說明,本發(fā)明中提到的字均為η比特字。為了達(dá)到上述發(fā)明目的,本方法包括2m個(gè)記憶單元,一個(gè)S盒。輸入字序列,輸出 經(jīng)擾亂后的字序列,其特征在于包括步驟4,預(yù)置2°1個(gè)記憶單元0(),乃,"_,^-1),每個(gè)記憶單元中存放一個(gè)11比特字;m、 η為自然數(shù);步驟B,對輸入的字序列S= (x0, X1,…)中的每個(gè)字Xi,做如下操作a)取Xi的高m比特的值h ;b)在已知h后,用第h個(gè)記憶單元中的內(nèi)容yh與輸入字Xi進(jìn)行異或操作,輸出經(jīng) 擾亂后的字Zi,即6 =X,十凡;c)更新記憶單元,取Xi的低m比特的值t。在已知t后,先計(jì)算乃=只十風(fēng)Α),即 用只 更新第t個(gè)記憶單元的值。再計(jì)算凡=凡 SOO,即用已被更新過的yt經(jīng)S盒 作用后與yh異或,更新第h個(gè)記憶單元的值。其中S表示一個(gè)從字到字的正形置換。S(Xi)、 S(yt)分別以Xi、yt為輸入,計(jì)算S的函數(shù)值,該非線性函數(shù)的輸入輸出均為一個(gè)η比特字。所述步驟A、B中,η通常取8,也可以為6、4。所述步驟A中,用密碼算法的初始密鑰或初始向量或隨機(jī)值或某組常數(shù)初始預(yù)置所述的2m個(gè)記憶單元中每個(gè)記憶單元的內(nèi)容。所述步驟a中,取Xi的高m比特的值h,是對Xi做右移n-m位的操作,即h = Xi >> (n-m);
所述步驟c中,取Xi的低m比特的值t,是對Xi做模2m操作,即t = Xi mod 2m ;所述步驟c中,用Xi經(jīng)過S盒變換的值與yt異或用于更新第t個(gè)記憶單元的內(nèi) 容;所述步驟c中,用已被更新的第t個(gè)記憶單元的內(nèi)容經(jīng)過S盒變換的值與yh異或 用于更新第h個(gè)記憶單元的內(nèi)容;所述步驟c中,除第t、h記憶單元的內(nèi)容被更新,其余記憶單元內(nèi)容不變。每輸出 一個(gè)字后,一般要更新2-個(gè)記憶單元中的兩個(gè),但有時(shí)也會出現(xiàn)對同一個(gè)記憶單元更新兩 次的情況。所述m的值為1到n-1之間的整數(shù);所述S盒要求是正形置換,即函數(shù)S(X)和S(X)十Χ都是置換。本發(fā)明的另一目的在于提供一種加密方法,利用本發(fā)明提供的密鑰流序列,對明 文數(shù)據(jù)流進(jìn)行逐字加密,本發(fā)明的流密碼算法結(jié)構(gòu)示意圖如圖2所示。一種加密方法,其步驟包括1)消息發(fā)送方根據(jù)加密密鑰和初始向量,生成密鑰流,生成密鑰流的方法如下1-1)利用線性反饋移位寄存器生成源序列;1-2)從源序列選取若干字,輸入一個(gè)非線性變換單元,輸出一個(gè)字;1-3)用本發(fā)明的強(qiáng)化亂源序列方法對步驟1-2)生成的字進(jìn)行變換;1-4)將步驟1-3)的輸出與移位寄存器的一個(gè)字異或生成密鑰流字。
重復(fù)上述4步,可以得到密鑰流字序列。2)得到的密鑰流與原始消息按位異或,實(shí)現(xiàn)對原始消息加密,并將加密消息發(fā)送 到消息接收方;3)消息接收方擁有與加密密鑰相同的解密密鑰和初始向量,利用步驟1)生成密 鑰流的方法,得到密鑰流;4)得到的密鑰流與加密消息按位異或,實(shí)現(xiàn)對加密消息的解密,得到原始消息。所述步驟1-2)中的非線性變換單元通常選用有限狀態(tài)機(jī)或不帶記憶的非線性函 數(shù)實(shí)現(xiàn)。記憶單元的規(guī)模對算法安全性具有重要影響,本發(fā)明的序列擾亂方法,改進(jìn)了原 有技術(shù)擾動后的序列平衡性不好的缺陷。該方法在設(shè)計(jì)基于整字輸入、輸出整字運(yùn)算的帶 記憶邏輯時(shí),合理的加大了記憶單元的規(guī)模,增強(qiáng)了該記憶邏輯在抗代數(shù)和差分分析方面 的性能,并且輸出的序列具有良好的平衡性。與單比特帶記憶邏輯相比,基于字的帶記憶邏 輯不但易于加大記憶單元的規(guī)模,而且在應(yīng)用效率上會成倍提高。本發(fā)明的基于整字操作 的混合型帶記憶邏輯的序列擾亂方法,包括變換函數(shù)及S盒,它對輸入的每一個(gè)字利用變 換函數(shù)及S盒進(jìn)行擾亂后再按字輸出。一條抗分析能力比較脆弱的密鑰流序列,經(jīng)過它的 擾亂,序列復(fù)雜度會得到增強(qiáng)。之所以說這類帶記憶邏輯是混合型的,是因?yàn)樗嬗欣奂悠?型帶記憶邏輯盒攪拌器型帶記憶邏輯的雙重特性。該方案可以方便的用于序列密碼算法和 Hash函數(shù)的設(shè)計(jì)。與現(xiàn)有技術(shù)相比,本發(fā)明具有的積極效果為本發(fā)明的序列擾動方法,改進(jìn)了原有技術(shù)擾動后序列不平衡的問題。本發(fā)明的加密方法,對明文消息逐字加密,提高了加密的軟件實(shí)現(xiàn)速度。密鑰流序列經(jīng)擾亂,具有更強(qiáng) 的安全性。
圖1為η = 8,m = 4時(shí)序列擾亂示意圖;圖2為流密碼算法結(jié)構(gòu)示意圖。
具體實(shí)施例方式在實(shí)施本發(fā)明的技術(shù)方案時(shí),首先,要選擇適當(dāng)?shù)膎、m。一般,η為偶數(shù),m取η/2。 其次,要選擇代數(shù)、差分、線性性質(zhì)良好的正形置換作為S盒。S盒可以看作是系統(tǒng)密鑰,也 可以不保密。實(shí)施可分為兩個(gè)基本步驟步驟Α,對2m個(gè)的記憶單元的內(nèi)容(凡,只,…,;^^)賦初值。依據(jù)具體的應(yīng)用方式, 可以由密碼算法的基本密鑰或初始向量提供,也可以由隨隨機(jī)數(shù)或某組常數(shù)預(yù)置。步驟B,對輸入字序列Z= (x0, X1,…)中的每個(gè)字Xi,做如下操作a) h = Xi > > (n_m);b)輸出 ζ,.=x,十凡c)更新記憶單元,令t = Xi mod 2m。依次令^ =乃十風(fēng) ),凡=凡十風(fēng)乃)。下面,結(jié)合附圖1,對η取8,m取值為4時(shí)的具體實(shí)施方式
進(jìn)行舉例說明。此時(shí)輸 入、輸出及記憶單元均為8比特的字節(jié)。設(shè)輸入序列X,輸出序列ζ。S盒選取如下 注表格中數(shù)字均為16進(jìn)制表示。在m = 4時(shí)共有16個(gè)記憶單元,設(shè)16個(gè)記憶單元被隨機(jī)初始化為(Oxea,0x63,0xe6,0x57,0xa8,0xd6,0x54,0x2e,0x17,0x4f,0x98,0x40,0x2b, 0xfd,0xcl,0x9a)。如 ι = (0x4a,0x77,......)。x0 = 0x4a, h = 4,則輸出的第一個(gè)字節(jié)為z。=0x4a十 0xa8=0xe2。t = 10,計(jì)算 ^10 二 只。θ =0x98 十 S(0x4a)=0x91 ,γ4 =γ4Φ 5(^10)=Oxa8 十 S(0x91)=0x23。則第 10 個(gè)
記憶單元被更新為0x91,第4個(gè)記憶單元被更新為0x23。此時(shí),16個(gè)記憶單元被更新為(Oxea,0x63,0xe6,0x57,0x23,0xd6,0x54,0x2e,0x17,0x4f,0x91,0x40,0x2b, 0xfd,0xcl,0x9a)。每輸出一個(gè)字節(jié)后,一般要更新16個(gè)記憶單元中的兩個(gè),但有時(shí)也會出現(xiàn)對同一 個(gè)記憶單元更新兩次的情況。此時(shí)第一次的更新會被第二次更新覆蓋。例如,X1 = 0x77,則h = t = 7。輸出的第二個(gè)字節(jié)為& =0χ77θ 0x2e=0x59。計(jì)算 _y7 = J7 十 S(X1)=OxSe 十 S(0x77)=0x6f,^ = _y7 十 SO7) =0x6f十 S(0x6f)=0x60。則第7個(gè)記憶單元被更新為0x60,此時(shí),16個(gè)記憶單元被更新為(Oxea,0x63,0xe6,0x57,0x23,0xd6,0x54,0x60,0x17,0x4f,0x91,0x40,0x2b, 0xfd,0xcl,0x9a)。
權(quán)利要求
一種面向字、帶記憶的序列擾動方法,其步驟為1)預(yù)置2m個(gè)記憶單元對每個(gè)記憶單元的內(nèi)容賦初值,存儲一n比特字;m、n為自然數(shù);2)對于輸入的密鑰流序列中的每個(gè)字xi依次進(jìn)行如下步驟a)取當(dāng)前字xi的高m比特的值h;其中每個(gè)字均為n比特字;b)利用第h個(gè)記憶單元的內(nèi)容yh與輸入字xi進(jìn)行異或操作,輸出經(jīng)擾亂后的字zi;c)取當(dāng)前字xi的低m比特的值t;d)將當(dāng)前字xi經(jīng)S盒變換的值與第t個(gè)記憶單元的內(nèi)容yt進(jìn)行異或,并用其輸出結(jié)果更新yt;e)將步驟d)所更新過的yt經(jīng)S盒變換的值與所述yh異或,并用其輸出結(jié)果更新yh;3)將依次輸出的字zi作為擾亂后的密鑰流序列。FSA00000138193200011.tif
2.如權(quán)利要求1所述的方法,其特征在于根據(jù)加密算法的初始密鑰或初始向量對每個(gè) 記憶單元的內(nèi)容賦初值。
3.如權(quán)利要求1所述的方法,其特征在于利用隨機(jī)數(shù)對每個(gè)記憶單元的內(nèi)容賦初值。
4.如權(quán)利要求1所述的方法,其特征在于所述m的值為1到n-1之間的整數(shù)。
5.如權(quán)利要求4所述的方法,其特征在于所述步驟a)中,取當(dāng)前字Xi的高m比特的值 h的方法為對Xi做右移n-m位的操作。
6.如權(quán)利要求4所述的方法,其特征在于所述步驟c)中,取當(dāng)前字Xi的低m比特的值 t的方法為對\做模2m運(yùn)算。
7.如權(quán)利要求1所述的方法,其特征在于所述S盒為正形置換。
8.一種加密方法,其步驟為1)消息發(fā)送方根據(jù)初始密鑰和初始向量,生成密鑰流;2)消息發(fā)送方將得到的密鑰流與原始消息按位異或,實(shí)現(xiàn)對原始消息加密,并將加密 消息發(fā)送到消息接收方;3)消息接收方利用初始密鑰和初始向量,生成密鑰流;4)消息接收方將生成的密鑰流與接收到的加密消息按位異或,實(shí)現(xiàn)對加密消息的解 密,得到原始消息;其中,所述生成密鑰流的方法為預(yù)置2m個(gè)記憶單元O。,Mn2^1),對每個(gè)記憶單元的 內(nèi)容賦初值,存儲一η比特字,m、n為自然數(shù);利用線性反饋移位寄存器生成源序列,并從每次 生成的源序列中選取若干字輸入一個(gè)非線性變換單元,輸出一個(gè)字Xi ;然后對每次輸出的字 Xi依次進(jìn)行如下步驟:a)取當(dāng)前字Xi的高m比特的值h ;b)利用第h個(gè)記憶單元的內(nèi)容yh與 輸入Xi進(jìn)行異或操作,輸出經(jīng)擾亂后的字Zi ;c)取當(dāng)前字Xi的低m比特的值t ;d)將當(dāng)前字 Xi經(jīng)S盒變換的值與第t個(gè)記憶單元的內(nèi)容yt進(jìn)行異或,并用其輸出結(jié)果更新yt ;e)將步驟 d)所更新過的yt經(jīng)S盒變換的值與所述yh異或,并用其輸出結(jié)果更新yh;f)將輸出的^與 移位寄存器的一個(gè)字異或生成密鑰流字;最后,根據(jù)依次輸出的密鑰流字得到密鑰流序列。
9.如權(quán)利要求8所述的方法,其特征在于所述非線性變換單元為有限狀態(tài)機(jī)或不帶記 憶的非線性函數(shù)。
10.如權(quán)利要求8所述的方法,其特征在于所述S盒為正形置換;所述m的值為1到 n-1之間的整數(shù)。
全文摘要
本發(fā)明涉及一種面向字、帶記憶的序列擾動方法及加密方法,屬于信息處理與傳輸領(lǐng)域。其擾動方法為1)預(yù)置2m個(gè)記憶單元并賦初值;2)對于輸入的每個(gè)字xi依次進(jìn)行a)取xi高m比特的值h;設(shè)第h單元的內(nèi)容yh,輸出字b)取xi低m比特的值t;將xi經(jīng)S盒變換值與第t單元的內(nèi)容yt異或,結(jié)果更新yt;將更新過的yt經(jīng)S盒變換值與yh異或,結(jié)果更新yh;3)將依次輸出的字zi作為擾亂后的密鑰流序列。本加密方法為1)消息發(fā)送方生成密鑰流;然后將其與原始消息按位異或,加密原始消息并將其發(fā)送到消息接收方;2)消息接收方生成密鑰流;然后其與接收到的加密消息按位異或,解密加密消息,得到原始消息。本發(fā)明提高了加密軟件實(shí)現(xiàn)速度,且安全性更強(qiáng)。
文檔編號H04L9/00GK101848079SQ20101019482
公開日2010年9月29日 申請日期2010年5月28日 優(yōu)先權(quán)日2010年5月28日
發(fā)明者馮登國, 馮秀濤, 周春芳 申請人:中國科學(xué)院軟件研究所