通常,安全性与实现性是设计分组密码体制的2种准则。安全性准则主要对设计安全算法、分组与密钥长度的方式进行研究。对于实用密码的安全性设计原则通常为Shannon所讲的混乱与扩散。对于实现性准则,主要讨论加大算法运行速度的方式。分组密码的实现可借助软、硬件。硬件实现的好处是能取得高速率;而软件实现有灵活性大、代价低的好处。总之,分组密码体制的设计准则通常含下面这些内容。
1.混乱原则
混乱原则指明文与密钥及密文之间的统计关系尽力复杂,使破译者不能推出相互之间的依存联系,因此使得隐蔽性加强了。
尽管敌手可以获取密文的有些统计关系,因明文与密文之间的统计关系复杂化,敌手也不能得到密钥。利用复杂的代换算法能获得预期混乱的效果,而简单的线性代换函数造成的混乱效果却不是很理想。
2.扩散原则
扩散原则是使明文中的每一位对输出密文中的很多位产生影响,或让密文中的每一位被输入明文及密钥中的若干位控制,方便实现使明文的统计特性隐藏,即输入明文分组的每一比特和输入密钥的每一比特,其作用必定要扩散到输出密文分组的每一比特上去。
3.分组长度要足够大
为了让分组代换字母表里面的元素数目2够大,分组越长则安全性越大,可避免明文穷举攻击法,但分组长度也不能过长,因分组长度越长,则加密速度会越慢。分组密码设计中用的最常见的分组大小为64bit。
4.密钥量要足够大且没有弱密钥
若想让密码算法可以抗击对密钥的大力攻击,一定要确保密钥长度要尽量的大。比如,近几年新涌现的全部算法,它的密钥长度均已要求不少于128bit。但密钥又不可以太长,以便于密钥的管理。尽最大能力消除弱密钥或半弱密钥,当它们的数量比较少时,它们对密码体制本身的安全性影响就会很小。
5.子密钥产生的算法要足够复杂
做到明文与密钥的扩展与融合,无简单的联系可遵照,能抗击所有已了解的攻击,如差分攻击与线性攻击;有高的非线性阶数,做到复杂的密码变换;使敌手破译时除借助穷举法外,不存在其他捷径之路可走。
6.加密和解密运算简单
在用软件实现时,应选择用简单的运算,使密码运算通过标准处理器的基本运算实现容易,防止用软件做到的逐比特置换困难。为方便硬件,加、解密尽可能用同一器件实现。设计的算法借助规则的模块结构,来方便软件迅速实现。此外,有误传播和数据护展要尽可能小。