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