香农在设计Feistel密码系统的过程中,提出了两种基本操作,可以防御对密码系统的各种统计分析攻击:扩散和混淆。扩散的目的是尽可能地使明文和密文之间存在统计关系复杂;混淆的目的是使密文和密钥之间的统计关系尽可能复杂。为了防止攻击者获取密钥,在扩散过程中,将明文统计信息扩展到密文的较长统计信息,使每个密文号与许多明文数字相关,从而使密文统计的统计关系明文与明文之间的关系尽可能复杂,因此攻击者无法利用密文统计信息;在混淆过程中,密文统计信息与加密密钥值之间的关系尽可能复杂。因此攻击者很难推断出加密密钥。扩散和混淆给出了分组密码的基本特征,并成为分组密码设计的基础。
Feistel分组密码安全性包括:
(1)明文消息和密文消息的包大小。在相同条件下,每轮加密数据包的长度越大,加密算法的安全性越高,但是加密速度会越慢。当前使用的分组加密算法的分组长度是64位。
(2)子项的大小。子密钥长度增加,算法安全性也会相应的增加,但加密速度降低,因此,分组密码的设计需要平衡安全性和加密效率。在实际应用中,通常认为为了确保分组加密算法满足计算安全性,子密钥的长度最少需要是128位。
(3)循环次数。循环次数对密码的安全性有影响,即循环次数越多,安全性会越高,加密效率越低。
(4)子密钥生成算法。在给出初始密钥的情况下,用于生成子密钥的算法越复杂,加密算法的安全性越高。
(5)圆函数F。关于圆函数的讨论比较复杂。通常认为,圆函数F越复杂,相应加密算法的安全性越高。
Feistel分组密码的解密过程与加密过程相同。