由Nr轮组成,在每一轮(最后一轮稍有不同),先用异或操作混入该轮的轮密钥,再用∏s进行m次代换,然后用∏p进行一次置换。
密码体制 3.1 代换-置换网络
算法 3.1
① 对密钥编排方案适当修改并用S盒的逆代替S盒,该算法也能用于解密。
② 第一个和最后一个异或轮密钥(白化)使得一个不知道密钥的攻击者,无法开始进行一个加密或解密操作。
非线性替换S一般称为混乱层,主要起混乱的作用;线性置换P一般称为扩散层,主要起扩散的作用。
Fristel体制
① 单轮Feistel
Feistel模型将输入(2w位)分成相同长度的两部分Li和Ri,按如下方式进行变换。
② Feistel模型的特点
(1)每轮的输入(明文分组或上轮的输出)被分成左右两半;
(2)右边一半数据直接作为输出的左边一半;
(3)输出的右边一半由输入的左边一半异或右边一半输入在一个函数F作用下的结果而得到的;
(4)F函数是轮变换的核心,它被称为轮函数。轮函数F有两个输入:本轮的右边一半输入和本轮的轮(子)密钥;
(5)轮函数F得到结构式固定不变的,这是各轮的输入不断变化;
(6)轮函数中包含了代换、置换以及换入子密钥的操作;
(7)加解密算法的结构相同,只是子密钥的使用出相反。
③ Feistel模型的设计要求
分组大小:
分组越大,安全性越高,但速度也就越慢。
密钥大小:
密钥越长,安全性越高,但速度也就越慢。
循环次数:
循环越多,安全性越高。
圈函数:
复杂性越高则抗击密码分析的能力就越强。
子密钥产生算法:
复杂性越高,则密码分析的难度就越大。
此外还要考虑算法的执行速度,设计算法便于分析。