專利名稱:“蕩秋千”式的分組密碼加密方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息加密技術(shù)領(lǐng)域,更確切地說(shuō)是涉及一種利用電子計(jì)算機(jī)技術(shù)及編碼技術(shù),形成動(dòng)態(tài)電子密碼的方法。
分組加密方法是以現(xiàn)代電子密碼形式實(shí)現(xiàn)信息保密的重要技術(shù)方案之一,分組密碼開(kāi)始于(據(jù)公開(kāi)資料)七十年代中期出現(xiàn)的DES。與序列密碼相比,分組密碼的一個(gè)突出優(yōu)點(diǎn)是用戶的密鑰可以重復(fù)使用。分組加密算法的實(shí)現(xiàn)技術(shù)是先將明文數(shù)據(jù)分成若干個(gè)長(zhǎng)度為n比特的明文組,再將每一個(gè)n比特的明文組用別的n比特的符號(hào)來(lái)代替,從而形成n比特的密文(即密文組)。因此分組加密方法的基本特征是一種代替作業(yè)。解密過(guò)程則是將n比特的密文組逆代為原始的n比特的明文組。目前,國(guó)際上公認(rèn)的分組大小n為128和64。
隨著分組密碼技術(shù)的發(fā)展,特別是近年來(lái)開(kāi)展的征集密碼加密標(biāo)準(zhǔn)的活動(dòng),陸續(xù)公開(kāi)了一些分組密碼算法。如1997年4月NIST發(fā)起征集AES(AdvancedEncryption Standard)后,有15個(gè)分組密碼方案獲得了候選資格;2000年1月歐洲開(kāi)始征集歐洲標(biāo)準(zhǔn),共有17個(gè)分組密碼方案參選。目前,韓國(guó)、日本和俄羅斯等國(guó)家都已制定了各自的加密標(biāo)準(zhǔn),中國(guó)制定自已的加密標(biāo)準(zhǔn)已經(jīng)事在必行。
顯然,如果能設(shè)計(jì)出一種優(yōu)良的加密方案,并將其廣泛地服務(wù)于社會(huì),將有利于推動(dòng)國(guó)民經(jīng)濟(jì)各個(gè)重要領(lǐng)域的信息基礎(chǔ)設(shè)施建設(shè),自然是利國(guó)利民之舉,因此,發(fā)明性能優(yōu)良且擁有技術(shù)特色的加密方案成為我們的心愿。
在AES和歐洲加密標(biāo)準(zhǔn)征集中,共征集了30多個(gè)分組密碼方案,如RIJNDAEL、RC6、MARS、TWOFISH、IDEA、SAFER++等等。這些方案基本代表了當(dāng)前國(guó)際分組密碼算法的水平、特點(diǎn)、風(fēng)格和基本方向。當(dāng)然,除了上述30多個(gè)方案外,還有一些其它的方案。
分組密碼算法設(shè)計(jì)的基本前提是確保和提高安全性能。綜觀已有的分組密碼方案,存在的問(wèn)題是加解密速度較慢,而且許多算法的邏輯結(jié)構(gòu)較復(fù)雜,不易程序?qū)崿F(xiàn)或難以在微型電路芯片上實(shí)現(xiàn)。因而,很有必要發(fā)掘這方面的潛力。
另一方面,隨著半個(gè)世紀(jì)以來(lái)移位寄存器理論的逐漸成熟,移位寄存器被廣泛地應(yīng)用于生成偽隨機(jī)序列上,特別是用于生成擁有良好統(tǒng)計(jì)特性的長(zhǎng)周期序列。移位寄存器序列密碼,是將移位寄存器應(yīng)用于現(xiàn)代序列電子密碼設(shè)計(jì)之中,將其作為生成偽隨機(jī)密鑰流序列的基礎(chǔ)。近年來(lái)隨著密碼編碼和分析技術(shù)的不斷深入,在眾多分組密碼方案中有部分方案的明密文變換過(guò)程可以看作是由移位寄存器完成的,不過(guò)或多或少都存在加解密速度較慢和邏輯結(jié)構(gòu)實(shí)現(xiàn)較復(fù)雜的問(wèn)題。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案是這樣的一種“蕩秋千”式的分組密碼加密方法,其特征在于包括以下處理步驟A.將明文數(shù)據(jù)按每組M字節(jié)(M×8比特)分成明文組;B.設(shè)置密鑰K,并由密鑰K形成256元的替換表(S盒);C.設(shè)置一個(gè)Z/(28)環(huán)上的M級(jí)移位寄存器,將M字節(jié)明文組數(shù)據(jù)對(duì)應(yīng)置入M級(jí)移位寄存器中;D.進(jìn)行右移反饋,將M級(jí)移位寄存器的各級(jí)由左到右依次編號(hào)第0級(jí)、第1級(jí)、……、第M-1級(jí),左半邊的移位方式是將原第0級(jí)的內(nèi)容反饋到第1級(jí)、原第1級(jí)的內(nèi)容反饋到第2級(jí)、……、原第M/2-2級(jí)的內(nèi)容反饋到第M/2-1級(jí),原第M/2-1級(jí)的內(nèi)容反饋到第0級(jí),右半邊的移位方式是將原第M/2級(jí)的內(nèi)容反饋到第M/2+1級(jí)、原第M/2+1級(jí)的內(nèi)容反饋到第M/2+2級(jí)、……、原第M-2級(jí)的內(nèi)容反饋到第M-1級(jí),原第M/2級(jí)的內(nèi)容經(jīng)過(guò)S盒后所得的替換值與原第M-1級(jí)的內(nèi)容和原第M/2-1級(jí)的內(nèi)容三者加和并模256后反饋到第M/2級(jí),按設(shè)置的移位幅度j,右移M級(jí)移位寄存器共j拍;E.進(jìn)行左移反饋,將M級(jí)移位寄存器的各級(jí)由左到右依次編號(hào)第0級(jí)、第1級(jí)、……、第M-1級(jí),右半邊的移位方式是將原第M/2+1級(jí)的內(nèi)容反饋到第M/2級(jí)、原第M/2+2級(jí)的內(nèi)容反饋到第M/2+1級(jí)、……、原第M-1級(jí)的內(nèi)容反饋到第M-2級(jí),原第M/2級(jí)的內(nèi)容反饋到第M-1級(jí),左半邊的移位方式是將原第M/2-1級(jí)的內(nèi)容反饋到第M/2-2級(jí)、原第M/2-2級(jí)的內(nèi)容反饋到第M/2-3級(jí)、……、原第1級(jí)的內(nèi)容反饋到第0級(jí),原第M/2-1級(jí)的內(nèi)容經(jīng)過(guò)S盒后所得的替換值與原第0級(jí)的內(nèi)容和原第M/2級(jí)的內(nèi)容三者加和并模256后反饋到第M/2-1級(jí),按設(shè)置的移位幅度j,左移M級(jí)移位寄存器共j拍;F.重復(fù)執(zhí)行步驟D、E,直至達(dá)到預(yù)設(shè)的右移和左移輪數(shù)時(shí)停止;G.將停止移位后的M級(jí)移位寄存器狀態(tài)作為對(duì)該明文組加密所得到的密文組。
所述的M值為8、12、16或20,所對(duì)應(yīng)的分組大小分別為64比特、96比特、128比特和160比特。
所述的步驟B進(jìn)一步包括以下處理步驟b1.在所設(shè)置的密鑰K的長(zhǎng)度小于32字節(jié)時(shí),先將其循環(huán)派生為32字節(jié),標(biāo)記為第0至第31字節(jié);b2.將第0至第31字節(jié)密鑰符自身左循環(huán)串移1位,即將每個(gè)字符的最高比特移到最低位,構(gòu)成第32字節(jié)至第63字節(jié)密鑰,再將第32字節(jié)至第63字節(jié)密鑰符自身左循環(huán)串移1位,構(gòu)成第64字節(jié)至第95字節(jié)密鑰,連續(xù)執(zhí)行本步驟直至形成256字節(jié)長(zhǎng)度的密鑰;b3.建立編號(hào)為0至255的密鑰數(shù)組單元,將256字節(jié)長(zhǎng)度的密鑰按每數(shù)組單元放一個(gè)字節(jié),依次順序放入數(shù)組單元中;b4.建立編號(hào)為0至255的變換數(shù)組單元,并將其數(shù)值分別置為0至255;b5.設(shè)立一個(gè)記憶單元m和一個(gè)計(jì)數(shù)單元i,并約定m的初始值為0,以i計(jì)數(shù)單元中的內(nèi)容為地址查出當(dāng)前密鑰數(shù)組單元中的數(shù)和當(dāng)前變換數(shù)組單元中的數(shù),將它們與記憶單元m的值三者加和,并對(duì)該和數(shù)模256后做為記憶單元m的新值;b6.按編號(hào)為步驟b5中的i及獲得的m的新值,將變換數(shù)組單元中地址為m的單元中的數(shù)值與地址為255-i單元中的數(shù)值交換,將變換數(shù)組單元中地址為i單元中的數(shù)值與地址為255-m的單元中的數(shù)值交換;b7.將步驟b5獲得的記憶單元m的新值左循環(huán)串移一位;b8.重復(fù)執(zhí)行步驟b5、b6、b7,直至使計(jì)數(shù)單元i的值由0計(jì)滿255,最后由變換數(shù)組單元構(gòu)成256元的替換表(S盒)。
所述步驟D、E中的經(jīng)過(guò)S盒,是根據(jù)S盒輸入值查詢以該數(shù)值編號(hào)的變換數(shù)組單元,并將該變換數(shù)組單元中的數(shù)值作為輸出值。
所述步驟D、E中,在所述的各右移和左移變換中,移位幅度j是任意預(yù)置的不少于M/2的自然數(shù)。
所述步驟F中,所述的右移和左移輪數(shù)不小于2。
本發(fā)明的方法,采用先右移反饋固定拍、再左移反饋固定拍,再右移反饋另一固定拍、再左移反饋另一固定拍,…,就象蕩秋千一樣,故稱作“蕩秋千”式的分組密碼加密方法。
象本發(fā)明方法這樣,將移位寄存器運(yùn)用于分組密碼方案中,而且明密文的變換過(guò)程全部由移位寄存器狀態(tài)的演變來(lái)完成,是獨(dú)具匠心的一種技術(shù)方案。
本發(fā)明的方法,是基于移位寄存器狀態(tài)變化實(shí)施的分組加密方法,其明密文變換的全部過(guò)程均由移位寄存器邏輯實(shí)現(xiàn),其主要環(huán)節(jié)包括移位寄存器的反饋邏輯、S盒的設(shè)置、移位寄存器狀態(tài)的移位幅度(拍數(shù))及右移和左移輪數(shù)控制。將明文組作為移位寄存器的初始狀態(tài),經(jīng)過(guò)非線性邏輯的多次反饋遞歸后,再將所得的移位寄存器的狀態(tài)作為密文組輸出。其中明密文間的非線性邏輯關(guān)系是由于反饋?zhàn)兞慷啻谓?jīng)過(guò)S盒構(gòu)成。如果將明密文變換看作是一個(gè)大置換,“蕩秋千”式的分組密碼加密方法則給出了由移位寄存器的多次非線性反饋實(shí)現(xiàn)的既能抗線性攻擊、又能抗差分攻擊的良性大置換。其中S盒是非線性反饋邏輯中的一個(gè)重要組成部分,它是由密鑰決定的。知道密鑰的用戶,可自如地正向或逆向作移位寄存器的狀態(tài)推排,逆向推排移位寄存器狀態(tài)的過(guò)程就是解密的過(guò)程。攻擊者則難以從高度復(fù)雜的多次非線性復(fù)合中分離出非線性反饋邏輯,或者密鑰因素。
本發(fā)明的方法,其安全依據(jù)是當(dāng)攻擊者不占有S盒的情況下,將無(wú)法進(jìn)行移位寄存器狀態(tài)的推排與演變。
本發(fā)明的算法流程容易利用軟件編程實(shí)現(xiàn),且適合在微型電路芯片上實(shí)現(xiàn)。
本發(fā)明的方法是擁有安全、快速、易于實(shí)現(xiàn)等特點(diǎn)的分組密碼加密方法,其主要特點(diǎn)是由非線性移位寄存器狀態(tài)變換完成明密文的混合與擴(kuò)散;采用右移反饋、左移反饋、再右移反饋、再左移反饋這種蕩秋千式的移位方式。具體實(shí)施中,明文數(shù)據(jù)的分組大小除了128比特外還可以有64、96、160等多種選擇。
圖4是選擇8級(jí)移位寄存器時(shí)的左移反饋結(jié)構(gòu)示意圖。
圖中“田”為模256加法, 為S盒,S盒是一個(gè)由密鑰預(yù)置的由256個(gè)元素構(gòu)成的替換表。
其加密流程是將16字節(jié)明文數(shù)據(jù)依次放入移存器Q的第0至15級(jí)。應(yīng)用者可以根據(jù)自已的意愿規(guī)定輪數(shù)和每輪反饋拍數(shù)(即回蕩幅度),如設(shè)定輪數(shù)為3,每輪反饋拍數(shù)依次為10、9、8,則按
圖1邏輯將Q右移反饋10拍,再按圖2邏輯將Q左移反饋10拍,再按圖1邏輯右移反饋9拍,再按圖2邏輯左移反饋9拍,再按圖1邏輯右移反饋8拍,再按圖2邏輯左移反饋8拍,然后將得到的16級(jí)移位寄存器的16字節(jié)狀態(tài)作為密文組輸出。
右移反饋時(shí),左半邊的移位方式是將原第0級(jí)的內(nèi)容反饋到第1級(jí)、原第1級(jí)的內(nèi)容反饋到第2級(jí)、……、原第6級(jí)的內(nèi)容反饋到第7級(jí),原第7級(jí)的內(nèi)容反饋到第0級(jí)。右半邊的移位方式是將原第8級(jí)的內(nèi)容反饋到第9級(jí)、原第9級(jí)的內(nèi)容反饋到第10級(jí)、……、原第14級(jí)的內(nèi)容反饋到第15級(jí)。原第8級(jí)的內(nèi)容經(jīng)過(guò)S盒后所得的替換值與原第15級(jí)的內(nèi)容和原第7級(jí)的內(nèi)容三者加和并模256后反饋到第8級(jí)。
左移反饋時(shí),右半邊的移位方式是原第9級(jí)的內(nèi)容反饋到第8級(jí)、原第10級(jí)的內(nèi)容反饋到第9級(jí)、……、原第15級(jí)的內(nèi)容反饋到第14級(jí),原第8級(jí)的內(nèi)容反饋到第15級(jí)。左半邊的移位方式是原第7級(jí)的內(nèi)容反饋到第6級(jí)、原第6級(jí)的內(nèi)容反饋到第5級(jí)、……、原第1級(jí)的內(nèi)容反饋到第0級(jí),原第7級(jí)的內(nèi)容經(jīng)過(guò)S盒后所得的替換值與原第0級(jí)的內(nèi)容和原第8級(jí)的內(nèi)容三者加和并模256后反饋到第7級(jí)。
實(shí)施時(shí)使用者可以自已設(shè)定輪數(shù)和移位反饋拍數(shù)。輪數(shù)越大或拍數(shù)越大,則安全性越高、運(yùn)算速度越慢。
又如當(dāng)分組為64比特(8個(gè)字節(jié))時(shí),參見(jiàn)圖3、圖4,Q’是環(huán)Z/(28)上的8級(jí)移位寄存器。從左到右各級(jí)編號(hào)為第0至第7級(jí)。加密過(guò)程包括如圖3結(jié)構(gòu)所示的右移反饋和如圖4結(jié)構(gòu)所示的左移反饋兩種反饋方式。
應(yīng)用者可根據(jù)自已的意愿規(guī)定輪數(shù)和每輪反饋拍數(shù)(即回蕩幅度),比如規(guī)定輪數(shù)為4和每輪反饋拍數(shù)依次為7、5、6、5。其加密流程是將8字節(jié)明文數(shù)據(jù)依次放入移存器Q’的第0至7級(jí),按圖3邏輯將Q’先右移反饋7拍,再按圖4邏輯將Q’左移反饋7拍,再按圖3邏輯將Q’右移反饋5拍,再按圖4邏輯將Q’左移反饋5拍,再分別按圖3、圖4邏輯右移反饋6拍、左移反饋6拍,再分別按圖3、圖4邏輯右移反饋5拍、左移反饋5拍,然后將得到的移位寄存器Q’的8字節(jié)狀態(tài)做為密文輸出。
同理,還可設(shè)計(jì)出分組塊為96比特或160比特時(shí)的“蕩秋千”式的分組加密情形。
本發(fā)明方法中,S盒的預(yù)置是極其重要的組成部分,因其操作是按一字節(jié)進(jìn)行的,即8比特進(jìn)8比特出,因此S盒是由密鑰預(yù)置的256元置換表(28=256)。其預(yù)置步驟如下1).如果密鑰長(zhǎng)度少于32字節(jié),先將其經(jīng)循環(huán)填充派生為32字節(jié),并將這32字節(jié)編號(hào)為第0至31;2).將第0至31字節(jié)密鑰符自身左循環(huán)串移1位構(gòu)成第32至第63字節(jié)密鑰,將第32至63字節(jié)密鑰符自身左循環(huán)串移1位構(gòu)成第64至第95字節(jié)密鑰,……,依此類推,直至派生出第224至255字節(jié)密鑰,并將這256字節(jié)密鑰對(duì)應(yīng)放入密鑰數(shù)組單元Key
-Key[255]中,設(shè)其中的任一個(gè)密鑰數(shù)組單元為Key[i];3).設(shè)置變換數(shù)組S
-S[255],并對(duì)它們分別初始預(yù)置為數(shù)值0-255,設(shè)其中的任一個(gè)變換數(shù)組為S[i],令m為一個(gè)記憶單元,并初始預(yù)置m=0,然后,對(duì)i=0到255做以下操作
{給m賦新值m←(m+Key[i]+s[i])mod 256;交換S[m]與S[255-i];交換S[i]與S[255-m];m左循環(huán)串移一位;}經(jīng)上述操作所得到的S
-S[255]即為該密鑰裝置所設(shè)置的S盒,顯然S
-S[255]是一個(gè)可逆的替換表。
下面以密鑰為16進(jìn)制符號(hào)“61 62 63 64 65 66 67 68 69 6a”為例,即鍵盤輸入八單位ASC II字符a b c d e f g h i j,給出按128比特分組情況下加密一組明文的基本過(guò)程及中間結(jié)果。
首先生成S盒。
將10字節(jié)密鑰循環(huán)派生為32字節(jié),即“61 62 63 64 65 66 67 68 69 6a61 62 63 64 65 66 67 68 69 6a 61 62 63 64 65 66 67 68 69 6a 61 62”;然后對(duì)S盒作2×256=512次換位,每換位64次,將32字節(jié)密鑰左循環(huán)串移一位,即每個(gè)字節(jié)的最高位反饋移位到該字節(jié)的最低位,最后生成的S
-S[255]是e5 a7 eb a0 63 7e c2 e4 d0 4e f5 e1 41 0e 73 1cc1 a6 99 c7 fe 03 4f 5a da ce 64 71 45 d6 00 6aee f7 e9 c6 52 d4 7b bc 48 2d 56 6d a8 a4 93 206f 36 85 46 9d 67 96 c5 22 1d 19 ef c8 27 b5 979f 82 ae 75 3f bf b2 d7 87 ac 76 42 0f 2e e7 7950 3c 7f 0d b6 fd 21 13 e8 8b a3 b4 f6 dc fa b391 06 26 8f 30 5e f3 54 2c 3b 61 65 cc 15 2a 3583 5d 6b 8d aa f4 bb ed 77 cb f8 47 32 04 e0 24db 1f fb cd b8 07 34 88 12 44 0b 55 72 94 a2 7cca d5 ea 33 9a 9e c4 d3 ab 0c a1 cf 70 d9 f9 6e4c 05 23 09 4b 5c 74 17 ec de 02 49 f2 80 c3 af86 18 d1 f0 bd 89 53 78 28 4d 40 c0 8a 51 7d 6068 4a d8 37 10 e6 e2 dd 3a 69 98 62 b9 7a c9 90df 6c 5b 57 92 a9 d2 b7 43 84 2b ad 39 16 08 1195 ff 29 ba 8e 9b 31 25 a5 b0 fc 01 38 66 59 3e
e3 8c f1 be 1e 0a b1 2f 1b 3d 81 9c 5f 14 58 1a。
用P表示明文,用T和U表示移位寄存器的中間結(jié)果,用C表示密文。當(dāng)用16進(jìn)制表示的明文為“61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70”時(shí),由明文到密文的變化過(guò)程是明文P=(61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70);按圖1結(jié)構(gòu)右移反饋10拍P,=(67 68 61 62 63 64 65 66 5f d2 d3 a3 47 4f 52 ad);按圖2結(jié)構(gòu)左移反饋10拍T=(bc 8f 26 2e 4a 89 5c 4f d3 a3 47 4f 52 ad 5f d2);按圖1結(jié)構(gòu)右移反饋9拍T’=(4f bc 8f 26 2e 4a 89 5c eb 7f b3 fa 73 5c bb 32);按圖2結(jié)構(gòu)左移反饋9拍U=(aa 44 5f 54 5c 3a a7 32 7f b3 fa 73 5c bb 32 eb);按圖1結(jié)構(gòu)右移反饋8拍C’=(aa 44 5f 54 5c 3a a7 32 69 ba ae 8b 96 a9 5b 41);按圖2結(jié)構(gòu)左移反饋8拍,得密文C=(98 a9 eb e0 87 6b 67 c7 69 ba ae 8b 96 a9 5b 41)。
本發(fā)明的“蕩秋千”式的分組加密生成過(guò)程,很容易用軟件編程實(shí)現(xiàn),例如用C語(yǔ)言編程時(shí),當(dāng)設(shè)定輪數(shù)為3,各輪的右移和左移拍數(shù)分別為10、9、8的情況下,在PIII500微機(jī)上加解密速度可達(dá)230Mb/s,所需的存儲(chǔ)單元量不足300字節(jié),即S盒占用256字節(jié),密鑰符實(shí)際占用32字節(jié),而且生成S盒后這32個(gè)字節(jié)空間還可用于移位寄存器狀態(tài)及中間結(jié)果存儲(chǔ)。
本發(fā)明方法,通過(guò)對(duì)密鑰雪崩效應(yīng)和明文雪崩效應(yīng)的基本分析,說(shuō)明其有良好的抵抗密鑰相關(guān)攻擊、線性攻擊和差分攻擊的性能,除了具有安全、快速、易于實(shí)現(xiàn)等特點(diǎn)外,其最突出的特點(diǎn)是算法邏輯結(jié)構(gòu)簡(jiǎn)潔、嚴(yán)謹(jǐn),可有效地實(shí)施明文的混合與擴(kuò)散。
本發(fā)明的“蕩秋千”式的分組密碼加密方法,在加解密速度方面快于RIJNDAEL、MARS、TWOFISH等著名算法,算法的邏輯結(jié)構(gòu)比它們簡(jiǎn)潔,且易于程序?qū)崿F(xiàn),也很適合在微型芯片上實(shí)現(xiàn)。
權(quán)利要求
1.一種“蕩秋千”式的分組密碼加密方法,其特征在于包括以下處理步驟A.將明文數(shù)據(jù)按每組M字節(jié)(M×8比特)分成明文組;B.設(shè)置密鑰K,并由密鑰K形成256元的替換表(S盒);C.設(shè)置一個(gè)Z/(28)環(huán)上的M級(jí)移位寄存器,將M字節(jié)明文組數(shù)據(jù)對(duì)應(yīng)置入M級(jí)移位寄存器中;D.進(jìn)行右移反饋,將M級(jí)移位寄存器的各級(jí)由左到右依次編號(hào)第0級(jí)、第1級(jí)、……、第M-1級(jí),左半邊的移位方式是將原第0級(jí)的內(nèi)容反饋到第1級(jí)、原第1級(jí)的內(nèi)容反饋到第2級(jí)、……、原第M/2-2級(jí)的內(nèi)容反饋到第M/2-1級(jí),原第M/2-1級(jí)的內(nèi)容反饋到第0級(jí),右半邊的移位方式是將原第M/2級(jí)的內(nèi)容反饋到第M/2+1級(jí)、原第M/2+1級(jí)的內(nèi)容反饋到第M/2+2級(jí)、……、原第M-2級(jí)的內(nèi)容反饋到第M-1級(jí),原第M/2級(jí)的內(nèi)容經(jīng)過(guò)S盒后所得的替換值與原第M-1級(jí)的內(nèi)容和原第M/2-1級(jí)的內(nèi)容三者加和并模256后反饋到第M/2級(jí),按設(shè)置的移位幅度j,右移M級(jí)移位寄存器共j拍;E.進(jìn)行左移反饋,將M級(jí)移位寄存器的各級(jí)由左到右依次編號(hào)第0級(jí)、第1級(jí)、……、第M-1級(jí),右半邊的移位方式是將原第M/2+1級(jí)的內(nèi)容反饋到第M/2級(jí)、原第M/2+2級(jí)的內(nèi)容反饋到第M/2+1級(jí)、……、原第M-1級(jí)的內(nèi)容反饋到第M-2級(jí),原第M/2級(jí)的內(nèi)容反饋到第M-1級(jí),左半邊的移位方式是將原第M/2-1級(jí)的內(nèi)容反饋到第M/2-2級(jí)、原第M/2-2級(jí)的內(nèi)容反饋到第M/2-3級(jí)、……、原第1級(jí)的內(nèi)容反饋到第0級(jí),原第M/2-1級(jí)的內(nèi)容經(jīng)過(guò)S盒后所得的替換值與原第0級(jí)的內(nèi)容和原第M/2級(jí)的內(nèi)容三者加和并模256后反饋到第M/2-1級(jí),按設(shè)置的移位幅度j,左移M級(jí)移位寄存器共j拍;F.重復(fù)執(zhí)行步驟D、E,直至達(dá)到預(yù)設(shè)的右移和左移輪數(shù)時(shí)停止;G.將停止移位后的M級(jí)移位寄存器狀態(tài)作為對(duì)該明文組加密所得到的密文組。
2.根據(jù)權(quán)利要求1所述的一種“蕩秋千”式的分組密碼加密方法,其特征在于所述的M值為8、12、16或20,所對(duì)應(yīng)的分組大小分別為64比特、96比特、128比特和160比特。
3.根據(jù)權(quán)利要求1所述的一種“蕩秋千”式的分組密碼加密方法,其特征在于所述的步驟B進(jìn)一步包括以下處理步驟b1.在所設(shè)置的密鑰N的長(zhǎng)度小于32字節(jié)時(shí),先將其循環(huán)派生為32字節(jié),標(biāo)記為第0至第31字節(jié);b2.將第0至第31字節(jié)密鑰符自身左循環(huán)串移1位,即將每個(gè)字符的最高比特移到最低位,構(gòu)成第32字節(jié)至第63字節(jié)密鑰,再將第32字節(jié)至第63字節(jié)密鑰符自身左循環(huán)串移1位,構(gòu)成第64字節(jié)至第95字節(jié)密鑰,連續(xù)執(zhí)行本步驟直至形成256字節(jié)長(zhǎng)度的密鑰;b3.建立編號(hào)為0至255的密鑰數(shù)組單元,將256字節(jié)長(zhǎng)度的密鑰按每數(shù)組單元放一個(gè)字節(jié),依次順序放入數(shù)組單元中;b4.建立編號(hào)為0至255的變換數(shù)組單元,并將其數(shù)值分別置為0至255;b5.設(shè)立一個(gè)記憶單元m和一個(gè)計(jì)數(shù)單元i,并約定m的初始值為0,以i計(jì)數(shù)單元中的內(nèi)容為地址查出當(dāng)前密鑰數(shù)組單元中的數(shù)和當(dāng)前變換數(shù)組單元中的數(shù),將它們與記憶單元m的值三者加和,并對(duì)該和數(shù)模256后做為記憶單元m的新值;b6.按編號(hào)為步驟b5中的i及獲得的m的新值,將變換數(shù)組單元中地址為m的單元中的數(shù)值與地址為255-i單元中的數(shù)值交換,將變換數(shù)組單元中地址為i單元中的數(shù)值與地址為255-m的單元中的數(shù)值交換;b7.將步驟b5獲得的記憶單元m的新值左循環(huán)串移一位;b8.重復(fù)執(zhí)行步驟b5、b6、b7,直至使計(jì)數(shù)單元i的值由0計(jì)滿255,最后由變換數(shù)組單元構(gòu)成256元的替換表(S盒)。
4.根據(jù)權(quán)利要求1所述的一種“蕩秋千”式的分組密碼加密方法,其特征在于所述步驟D、E中的經(jīng)過(guò)S盒,是根據(jù)S盒輸入值查詢以該數(shù)值編號(hào)的變換數(shù)組單元,并將該變換數(shù)組單元中的數(shù)值作為輸出值。
5.根據(jù)權(quán)利要求1所述的一種“蕩秋千”式的分組密碼加密方法,其特征在于所述步驟D、E中,在所述的各右移和左移變換中,移位幅度j是任意預(yù)置的不少于M/2的自然數(shù)。
6.根據(jù)權(quán)利要求1所述的一種“蕩秋千”式的分組密碼加密方法,其特征在于所述步驟F中,所述的右移和左移輪數(shù)不小于2。
全文摘要
本發(fā)明涉及一種“蕩秋千”式的分組密碼加密方法,包括將明文數(shù)據(jù)按某固定長(zhǎng)度分組成各明文組數(shù)據(jù);設(shè)置密鑰,并由密鑰形成一個(gè)由256個(gè)元素構(gòu)成的S盒(替換表);將明文組數(shù)據(jù)作為移位寄存器的初態(tài);按第一種非線性邏輯右移一定拍數(shù),再按第二種非線性邏輯左移一定拍數(shù),再右移再左移象蕩秋千一樣重復(fù)執(zhí)行至預(yù)設(shè)的輪數(shù)時(shí)停止;將得到的移位寄存器狀態(tài)輸出,作為與明文組對(duì)應(yīng)的密文組。明、密文組間的非線性邏輯關(guān)系由反饋?zhàn)兞慷啻谓?jīng)過(guò)S盒構(gòu)成。移位寄存器的狀態(tài)變化,巧妙地實(shí)施明文的混合與擴(kuò)散。本方法擁有良好的抵抗密鑰相關(guān)攻擊、線性攻擊和差分攻擊的性能,有安全、快速、易實(shí)現(xiàn)、邏輯結(jié)構(gòu)簡(jiǎn)潔、嚴(yán)謹(jǐn)?shù)奶攸c(diǎn)。
文檔編號(hào)H04L9/00GK1426191SQ0114047
公開(kāi)日2003年6月25日 申請(qǐng)日期2001年12月10日 優(yōu)先權(quán)日2001年12月10日
發(fā)明者張玉安, 馮登國(guó) 申請(qǐng)人:中國(guó)科學(xué)院軟件研究所