淺析RC5算法和RC6算法的安全性

RC5和RC6都是安全、簡單、高效的分組密碼算法,且參數(shù)可以靈活設(shè)置。
淺析RC5算法和RC6算法的安全性

RC5算法的安全性分析
RC5最顯著的兩個特點是算法簡單和數(shù)據(jù)確定移位。從混淆和擴(kuò)散性出發(fā),逐比特異或部件與(mod 2w)加法部件的組合存在明顯漏洞,比如當(dāng)a和b對應(yīng)分量不同時,ab =a+b。移位是算法中惟一的非線性運算,Rivest認(rèn)為,正是這個非線性運算使得對該算法的線性分析和差分分析都很困難。對RC5,目前還沒有特別有效的攻擊法,大部分的研究還只在理論上,一般都基于旋轉(zhuǎn)的次數(shù)與輸入的明文數(shù)無關(guān)。

RC5設(shè)計之初,RSA試驗室曾經(jīng)花費了相當(dāng)?shù)臅r間來分析64位分組的RC5算法,分析結(jié)果表明:在5輪循環(huán)后統(tǒng)計特性看起來非常好。在8輪循環(huán)后,每一個明文位至少影響一個循環(huán)移位。如果進(jìn)行差分分析,對5輪循環(huán)需要224個已知的明文,對10輪循環(huán)需要245個已知的明文,事實上,6輪循環(huán)后差分分析就是安全的了,Rivest推薦至少12輪,甚至可能是16輪。

RC6算法的安全性分析
作為RC5強(qiáng)化版的RC6通過引入乘法運算來決定循環(huán)移位次數(shù)的方法,對RC5進(jìn)行改進(jìn),彌補(bǔ)了RC5在擴(kuò)散速度上的不足,并且RC6中的非線性部分是由多個部件共同實現(xiàn)的,這都大大增強(qiáng)了RC6的安全性。但是,RC6算法的所有安全性都依賴于“數(shù)據(jù)的循環(huán)移位”,而沒有任何其他安全保護(hù),這是RC6的安全隱患,也是它未被采納為AES的原因之一。

攻擊RC6 的最好的方法是窮舉法,窮舉b字節(jié)的用戶密鑰或擴(kuò)展密鑰,但這種窮舉法需要min{286,21024}次操作,理論上需要超過2704 字節(jié)的內(nèi)存。如果對RC6進(jìn)行中間相遇攻擊,則需要2700 次計算,這樣要恢復(fù)擴(kuò)展密鑰最少需要min{286,2704}次操作。另外,RC6的加解密時間都與數(shù)據(jù)無關(guān),這樣可以有效地避免“時間攻擊”。對RC6的差分分析和線性分析只有在迭代輪數(shù)較少時有效,對20輪循環(huán)的RC6,用線性分析法至少需要2155個明文,用差分分析法至少需要2238個明文。

RC5算法和RC6算法的性能比較
此外,與大多數(shù)分組密碼不同,RC6在加密過程中不需要查表,乘法運算也可以用平方代替,所以該算法對內(nèi)存的要求較低,這可以使得RC6可以方便地使用于IC 卡等內(nèi)存空間小的產(chǎn)品中,這一特點還使得RC6很適合用單片機(jī)來實現(xiàn)。

RC5算法和RC6算法是分組密碼算法,它們的字長、迭代次數(shù)、密鑰長度都可以根據(jù)具體情況靈活設(shè)置,運算簡單高效,非常適合軟硬件實現(xiàn)。但它們也有自己各自的優(yōu)缺點,在實際應(yīng)用中應(yīng)根據(jù)實際需要選擇。目前,RC5算法已經(jīng)被RSA公司正式采納并使用,如用在S/MAIL(用于能用s/mime 的產(chǎn)品))、BSAFE(用于c++)、JSAFE(用于java)等軟件中,還有幾大手機(jī)廠家如Nokia,Motorala,Erison等的WAP手機(jī)的首選分組加密算法就是RC5加密算法。RC6算法也被廣泛應(yīng)用,如天網(wǎng)防火墻,Tak-C系列智能卡等。