17個(gè)NESSIE候選分組加密算法簡(jiǎn)析

繼美國推出了AES計(jì)劃以后,歐洲于2000年1月1日啟動(dòng)了NESSIE計(jì)劃,以適應(yīng)21世紀(jì)信息安全發(fā)展的全面需求。和AES相比,NESSIE涉及的范圍更廣,這套標(biāo)準(zhǔn)不但有分組密碼,還包括流密碼,消息認(rèn)證碼(MAC),公鑰密碼、數(shù)字簽名和雜湊函數(shù)。其中分組密碼的征集要求是密鑰長度至少128bit(普通)/256bit(高級(jí)),分組長度至少I28bit;傳統(tǒng)類密碼(Normal-Legacy)分組長度64bit,密鑰長度至少128bit。下面對(duì)其公布的十七個(gè)候選分組加密算法做一簡(jiǎn)析。

一、NESSIE候選分組加密算法簡(jiǎn)介

1、CS-Cipher加密算法

CS-Cipher加密算法是由法國的Pierre-Ala:in Fouque提交的分組密碼。分組長度64bit,密鑰長度128bit,采用8圈SP結(jié)構(gòu)。圈變換中,先將數(shù)據(jù)分組與子密鑰相異或,再進(jìn)行4次非線性變換與一次字節(jié)替換,該運(yùn)算在每一圈變換中各進(jìn)行兩次。

設(shè)計(jì)者已證明了在該密碼中用獨(dú)立的隨機(jī)數(shù)來代替圈密鑰對(duì)于線性及差分分析(Linear andDifferential cryptanalysis)是安全的,因此認(rèn)為圈的CSCipher對(duì)于線性和差分分析攻擊是安全的?,F(xiàn)還未發(fā)現(xiàn)該加密算法有什么弱點(diǎn)。

2、Hierocrypt-L1加密算法

Hierocrypt-L1加密算法是日本東芝公司的Kenji Ohkuma等提交的一個(gè)分組加密算法。分組長度為64bit,密鑰長度為128bit,采用6圈SP結(jié)構(gòu)。每一圈變換中先經(jīng)過兩個(gè)平行的32 bit的XS盒變換,再進(jìn)行線性擴(kuò)散。所謂XS盒變換由子密鑰混合、8bit-8bit的S盒、線性擴(kuò)散組成。

設(shè)計(jì)者聲稱Hierocrypt-L1對(duì)于差分和線性分析攻擊是安全的。對(duì)于4圈的Hierocrypto-L1,其最大差分和線性特征概率為2-48。有密碼分析學(xué)者對(duì)3圈的Hierocrypto-Ll進(jìn)行了改進(jìn)整數(shù)攻擊(lmproved mtegralattack)。在第二次NESSIE專題討論會(huì)上,有分析報(bào)告指出其在主密鑰與幾個(gè)圈密鑰間存在線性關(guān)系,導(dǎo)致該加密算法有缺陷。

3、IDEA加密算法

IDEA加密算法是由瑞士的Richard Straub提交的算法,其分組長度為64bit,密鑰長度為128bit,整體結(jié)構(gòu)采用的是8.5圈半Feistel網(wǎng)絡(luò)。它采用子段結(jié)構(gòu),每個(gè)數(shù)據(jù)分組分成4塊,以16bit字長進(jìn)行處理。圈變換中,4個(gè)16bit字長的子密鑰與四個(gè)16bit子段相乘加,再與兩個(gè)16bit字長的子密鑰異或,完成一次迭代。

IDEA自從1991年問世以來,已得到了廣泛的應(yīng)用及分析,現(xiàn)還未發(fā)現(xiàn)有效攻擊能攻擊5圈及更多圈的IDEA。目前,對(duì)IDEA的安全性分析的主要結(jié)果有:差分密碼分析可以攻擊2.5圈IDEA,截?cái)嗖罘郑═runcated differential)密碼分析可以攻擊3.5圈IDEA,整數(shù)攻擊(lntegral attack)可以攻擊2.5圈IDEA,存在一些弱密鑰(weak key).但隨機(jī)選取密鑰時(shí)弱密鑰被選中的概率只有2-63。

4、Khazad加密算法

Khazad加密算法是由巴西的PauloSergio L.M.Barreto和比利時(shí)的Vincent Rijmen共同提交的一個(gè)候選算法。它的分組長度為64bit,密鑰長度為128bit,整體結(jié)構(gòu)是8圈的SP網(wǎng)絡(luò)。每一圈都包含有子密鑰混合,8個(gè)8bit-8bit的S盒和一個(gè)以矩陣形式的線性變換。

設(shè)計(jì)者聲稱Khazad能抵抗現(xiàn)有的所有攻擊,其兩圈Khazad的差分特征概率小于2-45,線性逼近概率小于2-20.7(現(xiàn)已證明其聲稱的線性逼近概率為2-20.7計(jì)算錯(cuò)誤,但設(shè)計(jì)者已重新提交了一個(gè)改正了錯(cuò)誤的報(bào)告),公開報(bào)告中還未發(fā)現(xiàn)有其他什么弱點(diǎn)。

5、MISTY1加密算法

MISTY1加密算法是由日本三菱的Eisaku Tadeda設(shè)計(jì)的,它于1996年首次提出。它的分組長度為64bit,密鑰長度為128bit,采用8圈改進(jìn)的Feistel網(wǎng)絡(luò),每兩圈嵌入一個(gè)線性變換函數(shù)FL。圈變換中,32bit的輸入分成兩個(gè)16bit字長的子段:左邊的子段與一個(gè)子密鑰混合,經(jīng)過16bit-16bit的混淆函數(shù)FI后與右邊的子段相異或,再與輸入的子密鑰相異或。FI函數(shù)的內(nèi)部結(jié)構(gòu)與圈變換的結(jié)構(gòu)相同,只是用S盒代替了FI函數(shù)。

設(shè)計(jì)者聲稱MISTY1對(duì)于差分攻擊及線性攻擊是安全的,對(duì)于不可能差分(lmpossibledifferentiaD攻擊及密鑰相關(guān)攻擊(Related-key attack)也是安全的,5圈以上MISTY1(無FL變換)已能抵抗高階差分(Higher-order differential)攻擊。目前已知最有效的密碼分析可以攻擊4圈MISTYI(帶有FL變換)。

6、Nimbus加密算法

Nimbus加密算法是由巴西的Alexis Warner Machado設(shè)計(jì)的。分組長度為64bit,密鑰長度為128bit,采用5圈變換的迭代分組密碼,每個(gè)圈變換均影響整個(gè)數(shù)據(jù)分組(但不是SP結(jié)構(gòu))。它的結(jié)構(gòu)很簡(jiǎn)單,圈變換中包含與子密鑰相異或、相乘和數(shù)據(jù)分組的倒置。

設(shè)計(jì)者聲稱該算法對(duì)差分和線性分析、篡改攻擊(Interpolation attack)、不可能差分攻擊、飽和攻擊(Saturation attack)和相關(guān)密鑰攻擊是安全的。但已有分析報(bào)告計(jì)算出該密碼中乘法運(yùn)算的迭代差分概率,其一圈的迭代差分特征概率達(dá)到2-1,則5圈Nimbus的差分特征概率為2-5,顯然不能滿足安全要求。

7、Anubis加密算法

Anubis加密算法是由巴西的PauloSergio L.M.Barreto和比利時(shí)的Vincent Rijmen共同設(shè)計(jì)的一個(gè)分組密碼。分組長度為128bit,密鑰長度可變(最低128bit),圈數(shù)可變(依密鑰長度而定,最低12圈)的SP結(jié)構(gòu)。每圈由一個(gè)子密鑰相加,16個(gè)8bit-8bit的S盒變換和一個(gè)線性變換組成。選擇S盒變換能確保加解密除了子密鑰的次序相反外,其它過程完全相同。設(shè)計(jì)者聲稱該算法對(duì)相關(guān)密鑰攻擊、篡改攻擊,不可能差分攻擊是安全的,4圈Anubis的差分特征概率不超過2-125,線性逼近概率小于2-57.5,截?cái)嗖罘止糇疃嘀荒芄?圈的Anubis。

但其他密碼人士的分析發(fā)現(xiàn)其聲稱的線性逼近的概率是不太準(zhǔn)確的,但這并不影響其安全性,對(duì)該算法的有效攻擊及其他的弱點(diǎn)還未發(fā)現(xiàn)。

8、Camellia加密算法

CameLlia加密算法是由日本NTT公司的Shiho Moriai和三菱公司的Mitsuru Matsui聯(lián)合提交的分組算法。它的分組長度為128bit,密鑰長度為128/192/256bito CameILia的設(shè)計(jì)符合AES的要求,基本采用18圈Feistel結(jié)構(gòu),每隔6圈嵌入可反轉(zhuǎn)函數(shù)FL。由于FL函數(shù)可反轉(zhuǎn),F(xiàn)L的嵌入并不影響Feistel密碼加解密的相似性,且可提供不規(guī)則的Feistel結(jié)構(gòu),希望能抵抗未來的攻擊方法。在每一圈變換中,64bit的輸入分為8個(gè)8bit字長的子段,每個(gè)子段與8bit的子密鑰相異或后經(jīng)過8個(gè)8bit - 8bit的S盒變換。

設(shè)計(jì)者聲稱:12圈CameLlia的差分和線性概率低于2-128,對(duì)于差分和線性密碼分析是安全的;10圈Camellia對(duì)截?cái)嗖罘置艽a分析是安全的Camellia對(duì)不可能差分密碼分析、高階差分攻擊、相關(guān)密鑰攻擊和滑動(dòng)攻擊(Slide attack)都是安全的。

目前對(duì)該算法的研究有:

該算法的3圈迭代特征概率為2-52,據(jù)此可以攻擊沒有嵌入FL函數(shù)的9圈Camellia,沒有嵌入FL的8圈的Camellia的截?cái)嗖罘指怕蕿?-112,加入一個(gè)FL/FL-1,該概率降低到2-120。高階差分攻擊能攻擊10圈(未嵌入FL)的Camellia。截?cái)嗖罘止裟芄? 1圈(未嵌入FL)的CameUia。

9、Grana Cru加密算法

Grand Cru加密算法是由比利時(shí)的Johan Borst設(shè)計(jì)的分組密碼,分組長度為128bit,密鑰長度為128bit,采用10圈SP結(jié)構(gòu)。每一圈變換中先是與圈密鑰相異或,再經(jīng)過16個(gè)平行的8bit-8bit的S盒運(yùn)算。

Grand Cru加密算法是以Rij ndael為基礎(chǔ),運(yùn)用多層安全(multiple layeredsecurity)來設(shè)計(jì)的。多層安全指在一個(gè)密碼算法中包含不同安全強(qiáng)度的子密碼,每個(gè)子密碼的設(shè)計(jì)側(cè)重點(diǎn)不同,每個(gè)子密碼使用不同的子密鑰集,知道部分子密鑰集不能推出其他的子密鑰信息。因?yàn)镚rand Cru可以認(rèn)為是Rij ndael密碼的改進(jìn)版,設(shè)計(jì)者認(rèn)為Rijndael的安全性就代表了該算法的安全性?,F(xiàn)還未有對(duì)該算法的分析與攻擊報(bào)告。

10、 Hlerocrypt-3加密算法

Hierocrypt-3加密算法是日本東芝公司的Kenji Ohkuma等提交的一個(gè)分組密碼,分組長度為128bit,密鑰長度為128/192/256bit,采用6/7/8圈(依密鑰長度而定)SP結(jié)構(gòu)。它的設(shè)計(jì)思想類似于Hierocrypt-L1,每一圈由四個(gè)平行的XS盒,一個(gè)線性擴(kuò)散層組成。一個(gè)XS盒由兩個(gè)子密鑰混合層、兩個(gè)8bit- 8bitS盒運(yùn)算和一個(gè)線性擴(kuò)散層組成。

設(shè)計(jì)者認(rèn)為Hierocrypt-3對(duì)于差分和線性分析攻擊是安全的,4圈Hierocrypt-3的差分和線性特征概率不超過2-96,但它也存在與Hierocrypt-L1同樣的安全缺陷,即主密鑰與幾個(gè)圈密鑰閭存在線性關(guān)系。

11、Noekeon加密算法

Noekeon加密算法是由比利時(shí)的Joan Daemen、MichaelPeeters. Gilles Van Assche和Vincent Rijmen共同設(shè)計(jì)的一個(gè)分組密碼,它的分組長度為128bit密鑰長度為128bit,采用16圈SP網(wǎng)絡(luò)。每一圈由線性變換、字節(jié)輪換、32個(gè)平行的4bit-4bitS盒組成,該算法的加解密非常相似。

設(shè)計(jì)者聲稱該密碼具有良好的抗線性分析和差分分析的能力,4圈Noekeon的線性特征概率不超過2-24,差分概率不高于2-48。但有研究報(bào)告表明,能對(duì)Noekeon進(jìn)行相關(guān)密鑰攻擊,設(shè)計(jì)者聲稱的該算法能抵御差分和線性分析攻擊的結(jié)果不可信。

12、Q加密算法

Q加密算法是由美國的Leslie McBride設(shè)計(jì)的一個(gè)密鑰長度可變(最多至256bit)的128bit分組密碼,采用8.5圈變換。數(shù)據(jù)分組分成16個(gè)8bit字長的子段,每一圈變換中,有三次與子密鑰相異或,有16次8bit-8bit的S盒變換,有兩輪各32次4bit-4bit的S盒變換,還有一個(gè)字節(jié)置換。設(shè)計(jì)者聲稱其7圈Q密碼的差分特征概率低于2-120,但在NESSIE評(píng)估階段中,已有公開的密碼分析報(bào)告得出了高于其設(shè)計(jì)者聲稱的差分特征概率,并以此攻破了Q密碼算法。

13、SC2000加密算法

SC2000加密算法是日本富士實(shí)驗(yàn)室的Naoya Torii提交的分組密碼,它的分組長度為128bit,密鑰長度為128/192/256bit,采用6.5圈或7.5圈Feistel和SP相結(jié)合的網(wǎng)絡(luò),整體結(jié)構(gòu)是SP網(wǎng)絡(luò),圈函數(shù)中的部分變換采用了Feistel結(jié)構(gòu),圈變換中還包括了S盒運(yùn)算、密鑰加、相乘、線性變換等。設(shè)計(jì)者認(rèn)為5圈以上的SC2000就能抵抗線性和差分攻擊。已有密碼分析學(xué)者對(duì)3.5圈的SC2000進(jìn)行了攻擊,3.5圈SC2000的差分特征概率為2-106。

14、NUSH加密算法

NUSH加密算法是俄羅斯的Anatoly Lebedev設(shè)計(jì)的分組密碼,其分組長度可以為64、128或256bit,密鑰長度分別為128、192或256bit,采用9圈、68圈或132圈變換(依分組長度而定),采用SP結(jié)構(gòu)。每一圈變換由四個(gè)迭代組成,每次迭代中四個(gè)子段中的兩個(gè)與子密鑰混合,另外兩個(gè)經(jīng)過非線性變換。該算法還包括一個(gè)初始白化(pre-whitemng step)和后白化過程(post-whitening step)。

設(shè)計(jì)者未能給出該算法對(duì)各種攻擊的分析結(jié)果,但已有密碼分析人士發(fā)現(xiàn)線性分析攻擊對(duì)NUSH是有效的,比窮舉搜索方法要快。

15、RC6加密算法

RC6加密算法是由RSA實(shí)驗(yàn)室瑞典的Jakob Jonsson和美國的Burt Kaliski提交的。分組長度為128bit,密鑰長度為128/1927256bit,采用廣義的20圈Feistel結(jié)構(gòu)。RC6是AES的5個(gè)決賽算法之一。RC6是在RC5的基礎(chǔ)上設(shè)計(jì)的,主要依賴可變的循環(huán)移位作為非線性的主要根源,循環(huán)移位由數(shù)據(jù)的二次函數(shù)來控制。RC6使用了4個(gè)寄存器代替RC5中的兩個(gè),每圈也包含32bit模數(shù)乘法、加法、異或以及密鑰加法。設(shè)計(jì)者聲稱RC6能抵抗12圈以上的差分攻擊和最多16圈的線性攻擊。

RC6的各種性能已得到充分的分析與測(cè)試,現(xiàn)尚無已知的安全性方面的攻擊,似乎具有足夠的安全性。

16、SAFER++加密算法

SAFER++加密算法是由美國的Gurgen Khachatrian,Melsik Kuregian和瑞士的James Massey共同提交的。它有兩個(gè)版本,一個(gè)分組長度為64bit,密鑰長度為128bit,采用8圈SP結(jié)構(gòu)。另一個(gè)分組長度為128bit,密鑰長度為128/256bit,采用7/10圈SP結(jié)構(gòu)(依密鑰長度而定)。每一圈變換中都包括兩個(gè)子密鑰混合層,一個(gè)S盒變換,兩個(gè)擴(kuò)散層。子密鑰混合層部分運(yùn)算采用模256的加法,部分采用2bit模數(shù)加法,采用了兩個(gè)不同的8bit-8bit的S盒,擴(kuò)散層運(yùn)用了多維4點(diǎn)變換擴(kuò)散器。

設(shè)計(jì)者聲稱6圈SAFER++對(duì)于差分分析攻擊就能保證安全性,2.5圈SAFER++對(duì)于線性分析攻擊是安全的?,F(xiàn)有分析表明能對(duì)4圈SAFER++進(jìn)行線性分析攻擊,但這還不能威脅到該算法的安全性。

17、SHACAL加密算法

SHACAL加密算法是法國Gemplus公司的HelenaHandschuh和David Naccache設(shè)計(jì)的分組密碼,它的分組長度為160bit,密鑰長度為512bit(可以縮短,最短至128bit)。SHACAL的設(shè)計(jì)基于雜湊函數(shù)SHA-1,密鑰作為消息,而明文作為初始值,結(jié)構(gòu)分為4圈,各有20次變換。在每一次變換中,用擴(kuò)展密鑰更新五個(gè)變量中的一個(gè),其余四個(gè)變量各經(jīng)過一個(gè)非線性變換(不同圈的非線性變換函數(shù)均不同)后,再進(jìn)行一次輪換。每一圈變換中,五個(gè)變量各要更新四次。

設(shè)計(jì)者已分析過其抗差分和線性分析的能力,認(rèn)為至少要獲得280個(gè)明文才可進(jìn)行線性攻擊,至少要得到2116個(gè)選擇明文才可進(jìn)行差分攻擊,這都比窮舉搜索密鑰的計(jì)算量要小。目前還未發(fā)現(xiàn)該算法有明顯弱點(diǎn)。

二、分組密碼的性能指標(biāo)

下面列出了各算法的密鑰建立時(shí)間及加解密的速度(均是在PC機(jī)上,CPU采用850MHz的PentiumⅢ,RAM為256MB,Windows 2000操作系統(tǒng),Visual C++;(因Nimbus和Q的安全性不過關(guān),所以沒有列出其性能指標(biāo))。

17個(gè)NESSIE候選分組加密算法簡(jiǎn)析

小知識(shí)之分組密碼

分組密碼是將明文消息編碼表示后的數(shù)字(簡(jiǎn)稱明文數(shù)字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分別在密鑰的控制下變換成等長的輸出數(shù)字(簡(jiǎn)稱密文數(shù)字)序列。