0x01 概述
分组密码(block cipher)的数学模型是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。
设明文序列为x0,x1,…,xn-1,…,分组长度为n,密文分组长度为m,通常取m=n,当n<m时,则为有数据扩展的分组密码。若n>m,则为有数据压缩的分组密码。
这种密码实质上是字长为n的数字序列的代换密码。
0x02 设计原则
扩散(diffusion)和混淆(confusion)是影响密码安全的主要因素。
扩散的目的是让明文中的单个数字影响密文中的多个数字,从而使明文的统计特征在密文中消失,相当于明文的统计结构被扩散。
混淆原则就是将密文、明文、密钥三者之间的统计关系和代数关系变得尽可能复杂,使得敌手即使获得了密文和明文,也无法求出密钥的任何信息;即使获得了密文和明文的统计规律,也无法求出明文的新的信息。