專利名稱:一種面向字的密鑰流生成方法及加密方法
技術(shù)領(lǐng)域:
本發(fā)明主要應(yīng)用于信息安全傳輸領(lǐng)域,具體涉及一種用于產(chǎn)生加密用密鑰流序列的密鑰流生成方法及加密方法。
背景技術(shù):
密碼技術(shù)歷史悠久,最初用于保護(hù)軍事和外交通信安全。但是,隨著通信網(wǎng)絡(luò)和計(jì) 算機(jī)網(wǎng)絡(luò)的普及,現(xiàn)代密碼學(xué)的應(yīng)用不再局限于政治、軍事和外交,其商業(yè)價值和社會價值 得到了廣泛的認(rèn)同。保密是密碼學(xué)的核心,而加密是獲得信息保密的實(shí)用工具?,F(xiàn)代加密 技術(shù)就是一些數(shù)學(xué)變換(算法),在加密者擁有的秘密信息(加密密鑰)控制下,將要加密 的信息(明文)變換成難于理解和與隨機(jī)信息難于區(qū)分的信息(密文),通過不安全的信道 傳送給接收者。而解密操作,就是在接收者擁有的秘密信息(解密密鑰)的控制下,將密文 恢復(fù)成明文。根據(jù)加、解密者擁有的密鑰是否相同,可以把加密算法分為公鑰密碼算法和私 鑰密碼算法。公鑰密碼算法的加、解密密鑰不同,加密密鑰一般是公開的,解密密鑰為消息 接收者私有。私鑰密碼算法的加、解密密鑰一般是相同的,均是保密的。而且加、解密的變 換一般也是相同或相似的。私鑰密碼算法又分為分組密碼算法和流密碼算法。分組密碼算法一般對消息進(jìn)行 分塊加密,算法運(yùn)行一次加密一個較大的消息塊。流密碼算法一般用一個短的密鑰,用特定 的密鑰流生成算法,生成與要加密的消息長度相當(dāng)?shù)拿荑€流序列,將密鑰流序列與明文按 位異或達(dá)到加密的目的。而解密方生成同樣的密鑰流序列,與密文異或,即可得到明文。所 以,流密碼算法的關(guān)鍵是設(shè)計(jì)安全快速的密鑰流生成算法。傳統(tǒng)的密鑰流生成算法每運(yùn)行 一次,只產(chǎn)生一個比特的密鑰流。流密碼一直是各國爭相研究的熱門課題。因?yàn)樗哂袑?shí)現(xiàn)簡單,加密速度快(比 分組密碼快5到10倍)、無或只有有限的錯誤傳播等特點(diǎn)。隨著通信網(wǎng)絡(luò)和計(jì)算機(jī)網(wǎng)絡(luò)的 高速發(fā)展,傳統(tǒng)的運(yùn)行一次生成一個比特的密鑰流生成方法已經(jīng)不能滿足實(shí)現(xiàn)速度上的需 要,尤其是軟件實(shí)現(xiàn)方面。一些面向字的密鑰流生成方法逐漸被設(shè)計(jì)出來。即運(yùn)行一次生 成若干比特的密鑰字,由密鑰字組成密鑰流序列。例如SNOW 3G算法、Rabbit算法。在此背景下,需要一種面向字的密鑰流生成方法及加密的方法,適合軟硬件實(shí)現(xiàn) 并且安全性高。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種面向字的密鑰流生成方法。以初始密鑰和初始向量作 為輸入,產(chǎn)生一定長度的密鑰流序列。本方法能夠在軟、硬件上快速實(shí)現(xiàn),生成的密鑰流序 列有良好的隨機(jī)性和非線性性。本發(fā)明的另一目的在于提供一種加密方法,利用本發(fā)明提 供的密鑰流生成方法產(chǎn)生的密鑰流序列對消息進(jìn)行加密。為了達(dá)到上述發(fā)明目的,本發(fā)明的技術(shù)方案概述如下一種面向字的密鑰流生成方法,包括以下步驟,
1)生成步驟,利用線性反饋移位寄存器生成一個源序列;2)選擇步驟,從源序列讀取若干位,重新排列組合后,為混淆步驟和輸出步驟提供 輸入,其中為混淆步驟提供的輸入分為三個部分;3)混淆步驟,采用兩個寄存器單元實(shí)現(xiàn),具體包括A、將兩個寄存器單元的值和一部分輸入,進(jìn)行非線性壓縮運(yùn)算,生成混淆步驟的 輸出;B、對兩個寄存器的值,分別用選擇步驟剩余兩部分輸入進(jìn)行運(yùn)算生成兩個中間結(jié) 果;C、將兩個中間結(jié)果進(jìn)行線性混合,得到兩個新的中間結(jié)果;D、兩個新的中間結(jié)果分別輸入兩個非線性變換單元,兩個非線性變換單元的輸出分別更新兩個寄存器單元的值;4)輸出步驟,將混淆步驟的輸出和選擇步驟提供的輸入按位異或得到密鑰流。所述生成步驟采用素域巧1,上的本原多項(xiàng)式作為線性反饋移位寄存器的反饋多 項(xiàng)式,并且限制元素的取值在[1,…,231-1]。所述選擇步驟從源序列讀取若干位,重新組合成4個32比特的字。所述混淆步驟采用線性的按位異或運(yùn)算,或者非線性的進(jìn)位加法運(yùn)算生成兩個中 間結(jié)果。所述兩個非線性變換單元均為兩層結(jié)構(gòu),包括線性變換層和非線性變換層。所述非線性變換層由4個小s盒并列組成,對輸入進(jìn)行分組并對每一個組內(nèi)的比 特進(jìn)行非線性變換;非線性變換層可置于線性變換層之前或之后。為了達(dá)到上述另一發(fā)明目的,本發(fā)明的技術(shù)方案概述如下一種加密方法,其步驟包括1)將密鑰和初始向量利用密鑰擴(kuò)展算法裝入線性反饋移位寄存器,并進(jìn)行初始化 操作;2)生成密鑰流,方法如下2-1)選擇步驟,從線性反饋移位寄存器讀取若干位,重新排列組合后,為混淆步驟 和輸出步驟提供輸入;2-2)混淆步驟,采用兩個寄存器單元實(shí)現(xiàn),具體包括A、將兩個寄存器單元的值和一部分輸入,進(jìn)行非線性壓縮運(yùn)算,生成混淆步驟的 輸出;B、對兩個寄存器的值,分別用選擇步驟剩余兩部分輸入進(jìn)行運(yùn)算生成兩個中間結(jié) 果;C、將兩個中間結(jié)果進(jìn)行線性混合,得到兩個新的中間結(jié)果;D、兩個新的中間結(jié)果分別輸入兩個非線性變換單元,兩個非線性變換單元的輸出 分別更新兩個寄存器單元的值;2-3)輸出步驟,將混淆步驟的輸出和選擇步驟提供的輸入按位異或得到一個字的 密鑰流;2-4)對線性反饋移位寄存器狀態(tài)進(jìn)行更新。3)產(chǎn)生的密鑰流與要加密的消息的一個字按位異或,實(shí)現(xiàn)對這個消息字的加密;
4)重復(fù)步驟2)、3)實(shí)現(xiàn)對所有原始消息的加密,并將加密消息發(fā)送到消息接收 方;5)消息接收方擁有與加密密鑰相同的解密密鑰和初始向量,利用步驟1)對所有 寄存器賦初值。6)利用步驟2)生成密鑰流的方法,得到一個字的密鑰流;7)產(chǎn)生的密鑰流與加密消息的一個字按位異或,實(shí)現(xiàn)對這個加密消息字的解密;8)重復(fù)步驟6)、7)實(shí)現(xiàn)對加密消息的解密,得到原始消息。所述步驟1)利用密鑰擴(kuò)展算法將加密密鑰和初始向量裝入線性反饋移位寄存
器ο生成密鑰流之前初始化操作為重復(fù)執(zhí)行以下步驟若干次步驟2-1),步驟2-2),將混淆步驟的輸出參與線性反饋移位寄存器的更新;初始化之后運(yùn)行一次步驟2),并丟棄輸出。本發(fā)明的有益效果本發(fā)明生成的密鑰流序列,具有良好的隨機(jī)性和非線性性,并 且適合軟硬件快速實(shí)現(xiàn)。利用本發(fā)明生成的密鑰流進(jìn)行加密的方法具有更好的安全性。
圖1為本發(fā)明密鑰流生成方法基本步驟示意圖。圖2為本發(fā)明密鑰流生成方法詳細(xì)步驟示意圖。圖3為本發(fā)明密鑰流生成方法具體實(shí)施框圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)描述圖1是本發(fā)明密鑰流生成方法的基本步驟示意圖,包括各個步驟及各步驟間的輸 入輸出關(guān)系。其中,生成步驟產(chǎn)生隨機(jī)性好、周期長的源序列,輸入到選擇步驟。選擇步驟 選擇源序列中的一些位組成四個輸出。其中三個輸入到混淆步驟,另外一個輸入到輸出步 驟?;煜襟E將三個輸入進(jìn)行非線性壓縮變換,產(chǎn)生一個輸出。輸出步驟接收選擇步驟的 一個輸出和混淆步驟的輸出,組合壓縮得到密鑰流輸出。圖2是本發(fā)明密鑰流生成方法的詳細(xì)步驟的示意圖?;煜襟E將從選擇步驟接收 到的輸入進(jìn)行壓縮和置亂,是本密鑰流生成方法最主要的步驟。此步驟的輸出,將作為輸出 步驟的一個輸入?;煜襟E包含兩個寄存器單元。生成步驟為混淆步驟提供的輸入,可以 分為三部分?;煜襟E的基本步驟包括(1)將兩個寄存器單元的值和第一部分輸入,進(jìn)行非線性的變換和壓縮,生成混淆 步驟的輸出。(2)對兩個寄存器的值,分別用混淆步驟的剩余兩部分輸入進(jìn)行線性或非線性運(yùn) 算生成兩個中間結(jié)果。(3)將兩個中間結(jié)果進(jìn)行線性混合,得到兩個新的中間結(jié)果。(4)兩個新的中間結(jié)果分別輸入兩個非線性變換,兩個非線性變換的輸出分別更 新兩個寄存單元的值。
其中,兩個非線性變換均為兩層結(jié)構(gòu),線性變換層L將輸入的比特進(jìn)行線性置亂,非線性變換層S將輸入的比特分塊進(jìn)行非線性變換。本發(fā)明密鑰流生成方法的實(shí)施由密鑰流生成器完成,密鑰流生成器主要由以下四 個模塊構(gòu)成(1)生成模塊,密鑰流生成器的驅(qū)動部分。(2)選擇模塊,也可以稱為比特重組模塊。(3)混淆模塊,即非線性模塊F。(4)輸出模塊,組合變換輸出密鑰流。為了更好的理解本發(fā)明,下面結(jié)合具體實(shí)施方式
對本發(fā)明進(jìn)行更為詳細(xì)的描述。 圖3為本發(fā)明密鑰流生成方法具體實(shí)施框圖。此實(shí)施方式即為一個密鑰流生成器。首先,對本發(fā)明中出現(xiàn)的符號做如下約定+整數(shù)的普通加法運(yùn)算ab整數(shù)a和b的普通乘法運(yùn)算=整數(shù)的賦值mod整數(shù)取余運(yùn)算 按位異或運(yùn)算田模232加法運(yùn)算a I I b子串a(chǎn)和b的連接運(yùn)算aH取整數(shù)a的最左邊16比特子串a(chǎn)L取整數(shù)a的最右邊16比特子串a(chǎn)>> 1 舍棄32比特整數(shù)a的最末位比特a <<< c 將a循環(huán)左移c位a — b賦值,表示將a的值賦給b下面,依次介紹密鑰流生成器的4個模塊與密鑰流序列生成流程。如圖3所示(1)生成模塊執(zhí)行生成步驟,此模塊是密鑰流生成器的驅(qū)動部分。目的是提供周期 長、隨機(jī)性質(zhì)良好的源序列。在此,由素域&L1上的線性反饋移位寄存器(LFSR)構(gòu)成。對 應(yīng)的生成多項(xiàng)式為(在具體實(shí)施時也可以采用其他的多項(xiàng)式)f(x) = X16+215x15+217X13+221X10+220X4+28+1。故此LFSR有16級,每一級由31位構(gòu)成。此多項(xiàng)式為本原多項(xiàng)式,故產(chǎn)生的序列 為m序列,周期為2496-1。LFSR在某個時刻的狀態(tài)可以用(S(1,S1,. . .,S15)表示。每個寄存 器Si(0彡i彡15)都限制在集合{1,2,3,...,231-1}中取值。LFSR的運(yùn)行模式有2種初 始化模式和工作模式。在初始化模式下,LFSR接收一個31比特的輸入字U,其是由函數(shù)F的32比特輸出 W通過舍棄最低位比特得到,即u = W >> 1。其計(jì)算過程如下ν = 215s15+217s13+221s10+220 s4+ (1+28) S0 mod 231_1S16 = ν Θ u如果S16 = 0,則置 S16 = 231-1(S1, S2 · · · S15,S16) → (So,S1, · · · S
14,S15)在工作模式下,LFSR不接收任何輸入。其計(jì)算過程如下
s16 = 215s15+217s13+221s10+220s4+ (1+28) S0 mod 231_1(Sl, S2 ? · · · j S^j S]_6 乂 \Sq j · · · j S
14,S15/注上述兩種模式下整數(shù)模231-1取余的結(jié)果都限制在集合{1,2,3,...,231_1} 中。(2)選擇模塊執(zhí)行選擇步驟,其主要作用是將上層LFSR的狀態(tài)字重組成32比特的 字,以供下層非線性函數(shù)F調(diào)用。設(shè)sQ、S2, s5, s7, s8, S12, s14, S15為LFSR的8個對應(yīng)的寄存器,如圖3所示。比特重 組將上述寄存器內(nèi)容重組成4個32比特的字\、&、&、&。具體計(jì)算過程如下 X0 一 S15h I I S14l X1 一 S12l I I S811J X2 一 S7H I I S5l,X3 一 S2L I I S011O(3)非線性函數(shù)F非線性函數(shù)F有2個32比特的記憶單元R1和&。設(shè)F的輸入為Xc^X1J2,其為比 特重組的輸出,輸出為W。則F輸出的計(jì)算和記憶單元的更新過程如下
W = Xf^R1 EB R2
W, =Ri a XiW2 = R2 十 X2R1 = S (L1 (ff1L I |ff2H))R2 = S (L2(ff2L| |ff1H))其中,L1和L2為32比特的線性變換L1(X) = X 十(X < 2)十(X < 10)十(X < 18)十(X < 24),
L2(X) 二 X 十(X < 8) Θ (X < 14) θ (Χ < 22) θ (Χ < 30)。S盒由4個小的8*8的S盒并置而成,即=S = (S0, S1, S2, S3),其中S0 = S2, S1 = S3o S0和S1的定義分別見表1和表2 (其中的內(nèi)容可以更改)。設(shè)S盒的32比特輸入X和32比特輸出Y分別為X = x0| IxJ |x2| |x3,Y = yd Iy1I Iy2I Iy3,其中XjPyi均為8比特字節(jié),i =0,1,2,3。則有Yi = Si(Xi), i = 0,l,2,3o表1 表2 注上述Stl盒和S1盒數(shù)據(jù)均為十六進(jìn)制表示。(4)輸出模塊,將比特重組得到的一個字X3和F函數(shù)的輸出W異或,得到密鑰字Z。在生成密鑰流序列之前,首先要將加密密鑰和初始向量裝入寄存器。設(shè)128比特 的初始密鑰k和128比特的初始向量iv分別為k
,k[l],k[2],...,k[15]和iv
, iv[l],iv[2],··.,iv[15],其中k[i]和iv[i]均為8比特的字節(jié),i ^ 15。密鑰擴(kuò)展 算法將其擴(kuò)展成16個31比特的整數(shù)作為LFSR的初態(tài)。設(shè)LFSR的初態(tài)為S(1,S1, s2,..., S15,則有(1)取長為240的比特串D,按照長度15將其分割成16個15比特的子串D = d
I |d[l] I |d[15],其中d
= 1000100110101112,d[l] = 0 1 00110 1 01111002,d[2] = 1100010011010112,d[3] = 00 1 00110 1 0111102,d[4] = 1010111100010012,d[5] = 0110 1 01111000 1 02,d[6] = 1110001001101012,d[7] = 0001001101011112,d[8] = 100110 1 011110002,d[9] = 0101111000100112,d[10] = 110 1 01111000 1 002,d[ll] = 0011010111100012,d[12] = 101111000 1 001102,d[13] = 0111100010011012,d[14] = 1111000100110102,d[15] = 1000111101011002。(2)對 O ≤ i ≤ 15,有& = k[i] |d[i]| iv[i]。算法運(yùn)行分為兩個階段,初始化階段和密鑰流序列生成階段。在算法的初始化階段,首先把128比特的初始密鑰k和128比特的初始向量iv經(jīng) 過密鑰裝入算法擴(kuò)展后填入到LFSR的寄存器中,作為LFSR的初態(tài),并置32比特記憶單元 R1和R2為全O。然后執(zhí)行下述操作重復(fù)執(zhí)行下述過程32次(1)比特重組部分從LFSR讀取8個16比特字,組合成4個32位字,輸出。(2)運(yùn)行F函數(shù)部分,得到輸出并更新寄存器值。(3)以F的輸出的高31位作為輸入,初始化方式運(yùn)行LFSR—次(即對線性反饋移位寄存器狀態(tài)進(jìn)行更新)。算法經(jīng)過初始化后,將進(jìn)入工作階段。在工作階段,算法首先執(zhí)行下列過程一次(1)比特重組部分從LFSR讀取8個16比特字,組合成4個32位字,輸出。(2)運(yùn)行F函數(shù)部分,丟棄輸出。(3)密鑰生成方式運(yùn)行LFSR —次。然后算法進(jìn)入正式的密鑰輸出階段,即在每個時鐘節(jié)拍內(nèi),執(zhí)行下列過程一次,并 輸出一個32比特的密鑰字(1)比特重組部分從LFSR讀取8個16比特字,組合成4個32位字,輸出。(2)運(yùn)行F函數(shù)部分,將輸出與⑴的第四個輸出異或,作為密鑰流輸出。(3)密鑰生成方式運(yùn)行LFSR—次。算法每個節(jié)拍生成一個32位的密鑰字,運(yùn)行若干節(jié)拍,可以得到密鑰流序列。利用本發(fā)明的密鑰流生成方法對消息進(jìn)行加密,消息發(fā)送方根據(jù)加密密鑰和初始 向量,運(yùn)用本發(fā)明的密鑰流生成方法,將所得的密鑰流序列與消息序列按位異或,即可實(shí)現(xiàn) 對原始消息進(jìn)行加密的目的。消息接收方擁有與加密密鑰相同的解密密鑰和初始向量,運(yùn) 用本發(fā)明的密鑰流生成方法,將所得的密鑰流序列與接收到的加密消息按位異或,即可實(shí) 現(xiàn)對消息進(jìn)行解密的目的,得到原始消息。具體的方法如下1、密鑰裝入將密鑰和初始向量按照實(shí)施例中的方法或者其它方法裝入LFSR,兩 個寄存器單元置0或者其它值。2、初始化初始化方式運(yùn)行算法若干輪。所謂的初始化方式,即在密鑰流生成方法 中,把混淆步驟的輸出參與到寄存器的反饋,不進(jìn)行輸出步驟。3、加密階段1)按照密鑰流生成方法運(yùn)行一次,丟棄輸出。2)運(yùn)行密鑰流生成方法一次,產(chǎn)生一個字的密鑰流。3)將步驟2)產(chǎn)生的密鑰流與要加密的消息的一個字按位異或,實(shí)現(xiàn)對這個消息 字的加密。4)重復(fù)步驟2)3)實(shí)現(xiàn)對所有消息的加密。4、解密階段消息接收方擁有與加密密鑰相同的解密密鑰和初始向量,1)按照密鑰流生成方法運(yùn)行一次,丟棄輸出。2)運(yùn)行密鑰流生成方法一次,產(chǎn)生一個字的密鑰流。3)產(chǎn)生的密鑰流與要加密消息的一個字按位異或,實(shí)現(xiàn)對這個加密消息字的解 密;4)重復(fù)步驟2)3)實(shí)現(xiàn)對加密消息的解密,得到原始消息。
權(quán)利要求
一種面向字的密鑰流生成方法,包括以下步驟,1)生成步驟,利用線性反饋移位寄存器生成一個源序列;2)選擇步驟,從源序列讀取若干位,重新排列組合后,為混淆步驟和輸出步驟提供輸入;3)混淆步驟,采用兩個寄存器單元實(shí)現(xiàn),具體包括A、將兩個寄存器單元的值和選擇步驟提供的輸入,進(jìn)行非線性壓縮運(yùn)算,生成混淆步驟的輸出;B、對兩個寄存器的值,分別用選擇步驟提供的輸入進(jìn)行運(yùn)算生成兩個中間結(jié)果;C、將兩個中間結(jié)果進(jìn)行線性混合,得到兩個新的中間結(jié)果;D、兩個新的中間結(jié)果分別輸入兩個非線性變換單元,兩個非線性變換單元的輸出分別更新兩個寄存器單元的值;4)輸出步驟,將混淆步驟的輸出和選擇步驟提供的輸入按位異或得到密鑰流。2、如權(quán)利要求1所述的方法,其特征在于,所述生成步驟采用素域上的本原多項(xiàng)式作為線性反饋移位寄存器的反饋多項(xiàng)式,并且限制元素的取值在[1,…,231-1]。3、如權(quán)利要求1所述的方法,其特征在于,所述選擇步驟從源序列讀取若干位,重新組合成4個32比特的字。4、如權(quán)利要求1所述的方法,其特征在于,采用線性的按位異或運(yùn)算,或者非線性的進(jìn)位加法運(yùn)算生成兩個中間結(jié)果。5、如權(quán)利要求1所述的方法,其特征在于,所述兩個非線性變換單元均為兩層結(jié)構(gòu),包括線性變換層和非線性變換層。6、如權(quán)利要求5所述的方法,其特征在于,所述非線性變換層由4個小s盒并列組成,對輸入進(jìn)行分組并對每一個組內(nèi)的比特進(jìn)行非線性變換。7、如權(quán)利要求5所述的方法,其特征在于,非線性變換層可置于線性變換層之前或之后。8、一種加密方法,利用權(quán)利要求1所述的其步驟包括1)將密鑰和初始向量裝入線性反饋移位寄存器,并進(jìn)行初始化操作;2)生成密鑰流,方法如下2.1)選擇步驟,從線性反饋移位寄存器讀取若干位,重新排列組合后,為混淆步驟和輸出步驟提供輸入;2-2)混淆步驟,采用兩個寄存器單元實(shí)現(xiàn),具體包括A、將兩個寄存器單元的值和一部分輸入,進(jìn)行非線性壓縮運(yùn)算,生成混淆步驟的輸出;B、對兩個寄存器的值,分別用選擇步驟剩余兩部分輸入進(jìn)行運(yùn)算生成兩個中間結(jié)果;C、將兩個中間結(jié)果進(jìn)行線性混合,得到兩個新的中間結(jié)果;D、兩個新的中間結(jié)果分別輸入兩個非線性變換單元,兩個非線性變換單元的輸出分別更新兩個寄存器單元的值;2-3)輸出步驟,將混淆步驟的輸出和選擇步驟提供的輸入按位異或得到一個字的密鑰流;2-4)對線性反饋移位寄存器狀態(tài)進(jìn)行更新。3)產(chǎn)生的密鑰流與要加密的消息的一個字按位異或,實(shí)現(xiàn)對這個消息字的加密;4)重復(fù)步驟2)、3)實(shí)現(xiàn)對所有原始消息的加密,并將加密消息發(fā)送到消息接收方;5)消息接收方擁有與加密密鑰相同的解密密鑰和初始向量,利用步驟1)對所有寄存器賦初值。6)利用2)生成密鑰流的方法,得到一個字的密鑰流;7)產(chǎn)生的密鑰流與加密消息的一個字按位異或,實(shí)現(xiàn)對這個加密消息字的解密;8)重復(fù)步驟6)、7)實(shí)現(xiàn)對加密消息的解密,得到原始消息。F2009102432583C00011.tif
2、如權(quán)利要求1所述的方法,其特征在于,所述生成步驟采用素域巧 上的本原多項(xiàng)式 作為線性反饋移位寄存器的反饋多項(xiàng)式,并且限制元素的取值在[1,…,231-1]。
3、如權(quán)利要求1所述的方法,其特征在于,所述選擇步驟從源序列讀取若干位,重新組 合成4個32比特的字。
4、如權(quán)利要求1所述的方法,其特征在于,采用線性的按位異或運(yùn)算,或者非線性的進(jìn) 位加法運(yùn)算生成兩個中間結(jié)果。
5、如權(quán)利要求1所述的方法,其特征在于,所述兩個非線性變換單元均為兩層結(jié)構(gòu),包 括線性變換層和非線性變換層。
6、如權(quán)利要求5所述的方法,其特征在于,所述非線性變換層由4個小s盒并列組成, 對輸入進(jìn)行分組并對每一個組內(nèi)的比特進(jìn)行非線性變換。
7、如權(quán)利要求5所述的方法,其特征在于,非線性變換層可置于線性變換層之前或之后。
8、一種加密方法,利用權(quán)利要求1所述的其步驟包括1)將密鑰和初始向量裝入線性反饋移位寄存器,并進(jìn)行初始化操作;2)生成密鑰流,方法如下,2. 1)選擇步驟,從線性反饋移位寄存器讀取若干位,重新排列組合后,為混淆步驟和輸 出步驟提供輸入;2-2)混淆步驟,采用兩個寄存器單元實(shí)現(xiàn),具體包括A、將兩個寄存器單元的值和一部分輸入,進(jìn)行非線性壓縮運(yùn)算,生成混淆步驟的輸出;B、對兩個寄存器的值,分別用選擇步驟剩余兩部分輸入進(jìn)行運(yùn)算生成兩個中間結(jié)果; C、將兩個中間結(jié)果進(jìn)行線性混合,得到兩個新的中間結(jié)果;D、兩個新的中間結(jié)果分別輸入兩個非線性變換單元,兩個非線性變換單元的輸出分別 更新兩個寄存器單元的值;2-3)輸出步驟,將混淆步驟的輸出和選擇步驟提供的輸入按位異或得到一個字的密鑰流;2-4)對線性反饋移位寄存器狀態(tài)進(jìn)行更新。3)產(chǎn)生的密鑰流與要加密的消息的一個字按位異或,實(shí)現(xiàn)對這個消息字的加密;4)重復(fù)步驟2)、3)實(shí)現(xiàn)對所有原始消息的加密,并將加密消息發(fā)送到消息接收方;5)消息接收方擁有與加密密鑰相同的解密密鑰和初始向量,利用步驟1)對所有寄存 器賦初值。6)利用2)生成密鑰流的方法,得到一個字的密鑰流; 7)產(chǎn)生的密鑰流與加密消息的一個字按位異或,實(shí)現(xiàn)對這個加密消息字的解密;8)重復(fù)步驟6)、7)實(shí)現(xiàn)對加密消息的解密,得到原始消息。
9.如權(quán)利要求8所述的方法,其特征在于,所述步驟1)利用密鑰擴(kuò)展算法將加密密鑰 和初始向量裝入線性反饋移位寄存器。
10.如權(quán)利要求8所述的方法,其特征在于,生成密鑰流之前進(jìn)行 初始化操作為重復(fù)執(zhí)行以下步驟若干次步驟2-1),步驟2-2),將混淆步驟的輸出參與線性反饋移位寄存器的更新; 初始化之后運(yùn)行一次步驟2),并丟棄輸出。
全文摘要
本發(fā)明公開了一種面向字的密鑰流生成方法及加密方法,密鑰流生成方法包括生成步驟,用于產(chǎn)生源序列,輸入到選擇步驟;選擇步驟選擇源序列中的一些位組成四個輸出。其中三個輸入到混淆步驟,另外一個輸入到輸出步驟;混淆步驟將三個輸入進(jìn)行非線性壓縮變換,產(chǎn)生一個輸出;輸出步驟接收選擇步驟的一個輸出和混淆步驟的輸出,組合壓縮得到密鑰流輸出。本發(fā)明生成的密鑰流序列,具有良好的隨機(jī)性和非線性性,并且適合軟硬件快速實(shí)現(xiàn);利用本發(fā)明生成的密鑰流進(jìn)行加密的方法具有更好的安全性。
文檔編號H04L9/06GK101841415SQ200910243258
公開日2010年9月22日 申請日期2009年12月29日 優(yōu)先權(quán)日2009年12月29日
發(fā)明者馮登國, 戚文峰, 胡予濮 申請人:中國科學(xué)院軟件研究所