
通常,安全性與實現性是設計分組密碼體制的2種準則。安全性準則主要對設計安全算法、分組與密鑰長度的方式進行研究。對於實用密碼的安全性設計原則通常為Shannon所講的混亂與擴散。對於實現性準則,主要討論加大算法運行速度的方式。分組密碼的實現可藉助軟、硬件。硬件實現的好處是能取得高速率;而軟件實現有靈活性大、代價低的好處。總之,分組密碼體制的設計準則通常含下面這些內容。
1.混亂原則
混亂原則指明文與密鑰及密文之間的統計關係盡力複雜,使破譯者不能推出相互之間的依存聯繫,因此使得隱蔽性加強了。
儘管敵手可以獲取密文的有些統計關係,因明文與密文之間的統計關係複雜化,敵手也不能得到密鑰。利用複雜的代換算法能取得預期混亂的效果,而簡單的線性代換函數造成的混亂效果卻不是很理想。
2.擴散原則
擴散原則是使明文中的每一位對輸出密文中的很多位產生影響,或讓密文中的每一位被輸入明文及密鑰中的若干位控制,方便實現使明文的統計特性隱藏,即輸入明文分組的每一比特和輸入密鑰的每一比特,其作用必定要擴散到輸出密文分組的每一比特上去。
3.分組長度要足夠大
為了讓分組代換字母表裏面的元素數目2夠大,分組越長則安全性越大,可避免明文窮舉攻擊法,但分組長度也不能過長,因分組長度越長,則加密速度會越慢。分組密碼設計中用的最常見的分組大小為64bit。
4.密鑰量要足夠大且沒有弱密鑰
若想讓密碼算法可以抗擊對密鑰的大力攻擊,一定要確保密鑰長度要儘量的大。比如,近幾年新湧現的全部算法,它的密鑰長度均已要求不少於128bit。但密鑰又不可以太長,以便於密鑰的管理。盡最大能力消除弱密鑰或半弱密鑰,當它們的數量比較少時,它們對密碼體制本身的安全性影響就會很小。
5.子密鑰產生的算法要足夠複雜
做到明文與密鑰的擴展與融合,無簡單的聯繫可遵照,能抗擊所有已分析的攻擊,如差分攻擊與線性攻擊;有高的非線性階數,做到複雜的密碼變換;使敵手破譯時除藉助窮舉法外,不存在其他捷徑之路可走。
6.加密和解密運算簡單
在用軟件實現時,應選擇用簡單的運算,使密碼運算顺利获得標準處理器的基本運算實現容易,防止用軟件做到的逐比特置換困難。為方便硬件,加、解密儘可能用同一器件實現。設計的算法藉助規則的模塊結構,來方便軟件迅速實現。此外,有誤傳播和數據護展要儘可能小。
