①分组要足够长。假设n为分组长度,则要使分组代换字母表中的元素个数2n足够大,以防止明文穷举攻击。
②密钥长度要足够长,以防止密钥穷举攻击。但密钥又不能过长,这不利于密钥的管理且影响加解密的速度。
③由密钥确定的置换算法要足够复杂,足以抵抗各种已知的攻击,如查分攻击和线性攻击等,使攻击者除了利用穷举攻击外,无其他更好的攻击方法。
④加密解密运算简单,易于软件和硬件的快速实现。为了便于软件编程和通过逻辑电路实现,算法中的运算应尽量简单,如二进制加法或移位运算,参与运算的参数长度也应选择在8的整数倍,可以充分发挥计算机中字节运算的优势。
⑤一般无数据扩展,即明文和密文长度相同。在采用同态置换和随机话加密技术时可引入数据扩展。
⑥差错传播尽可能的小。
设计密码时,①②③的安全性为必要条件,同时还需考虑④⑤⑥。
归纳起来,一个分组密码在实际应用中需要在安全性和实用性之间寻求一种平衡,使算法在足够安全的同时,又具有尽可能短的密钥,尽可能小的存储空间以及尽可能快的运行速度。