转载地址:http://hi.baidu.com/xiaoheng199110/item/cca9beb342528e482aebe31f
扩散(diffusion)和混淆(confusion)是C.E.shannon提出的设计密码体制的两种基本方法,其目的是为了抵抗对手对密码体制的统计分析。在分组密码的设计中,充分利用扩散和混淆,可以有效地抵抗对手从密文的统计特性推测明文或密钥。扩散和混淆是现代分组密码的设计基础。
所谓扩散就是让明文中的每一位影响密文中的许多位,或者说让密文中的每一位受明文中的许多位的影响,这样可以隐蔽明文的统计特性。当然,理想的情况是让明文中的每一位影响密文中的所有位,或者说让密文中的每一位受明文中的所有位的影响。
所谓混淆就是让密文与密钥之间的统计关系变得尽可能复杂,使得对手即使获取了关于密文的一些统计特性,也无法推测出密钥。使用复杂的非线性代替变换可以达到比较好的混淆效果,而简单的线性代替变换得到的混淆效果则不理想。可以用“揉面团”来形象地比喻扩散和混淆,当然,这个"揉面团"的过程应该是可逆的.乘积和迭代有助于实现扩散和混淆.选择某些较简单的受密钥控制的密码变换,通过乘积和迭代可以取得比较好的扩散和混淆的效果。
现代的分组密码体制主要有两种结构:Feistel网络和SP网络。
Feistel网络的典型代表是DES算法。Feistel网络的主要过程如下:
加密过程:令F为轮函数,另K1,K2,……,Kn 分别为第1,2,……,n 轮的子密钥。那么基本构造过程如下:
- 将明文信息均分为两块:(L0,R0);
- 在每一轮中,进行如下运算(i 为当前轮数):Li+1 = Ri;Ri+1 = Li ⊕F (Ri,Ki)。(其中⊕为异或操作)所得的结果即为:(Rn+1,Ln+1)。
- Ri = Li+1;
- Li = Ri+1⊕F (Li+1,Ki)。(其中⊕为异或操作)
- 所得结果为(L0,R0),即原来的明文信息。
Lai-Massey结构是Lai和Massey设计IDEA算法时候提出的一种结构,另外FOX算法使用的也是这种结构。对于长度为2n的r轮Lai-Massey结构密码,加密流程主要如下描述:
给定2n比特的明文P,首先将其分成左右两个n比特部分,L0R0=P。根据如下规则进行r轮的运算:T=F(L[i-1]⊕R[i-1],Ki);Li=L[i-1]⊕T;Ri=R[i-1]⊕T。Lai-Massey结构加密示意图如下所示: