第十九讲 Feistel密码结构

1 Feistel密码设计思想

乘积密码指顺序地执行两个或多个基本密码系统,使得最后结果的密码强度高于每个基本密码系统产生的结果.

Feistel还提出了实现代换和置换的方法。其思想实际上是Shannon提出的利用乘积密码实现混淆和扩散思想的具体应用。

Feistel密码实现的参数

Feistel网络的实现与以下参数和特性有关:

① 分组大小: 分组越大则安全性越高,但加密速度就越慢。

② **大小:**越长则安全性越高,但加密速度就越慢。

③ 轮数:单轮结构远不足以保证安全性,但多轮结构可提供足够的安全性。 典型地,轮数取为16。

④ 子**产生算法:该算法的复杂性越大,则密码分析的困难性就越大。

⑤ 轮函数:轮函数的复杂性越大,密码分析的困难性也越大。

设计Feistel密码的两个要求

在设计Feistel网络时,还有以下两个方面需要考虑:

① 快速的软件实现:在很多情况中,算法是被镶嵌在应用程序中,因而无法用硬件实现。此时算法的执行速度是考虑的关键。

② 算法容易分析:如果算法能被无疑义地解释清楚,就可容易地分析算法抵抗攻击的能力,有助于设计高强度的算法。

2 Feistel密码加解密结构

Feistel加密结构

输入是分组长为2w的明文和一个**K。将每组明文分成左右两半第十九讲 Feistel密码结构第十九讲 Feistel密码结构,在进行完n轮迭代后,左右两半再合并到一起以产生密文分组。第 i 轮迭代的输入为前一轮输出的函数:

第十九讲 Feistel密码结构

其中第十九讲 Feistel密码结构是第i轮用的子**,由加***K得到。一般地,各***彼此不同而且与K也不同。

Feistel解密结构

Feistel解密过程本质上和加密过程是一样的,算法使用密文作为输入

但使用子**第十九讲 Feistel密码结构的次序与加密过程相反,即第1轮使用第十九讲 Feistel密码结构,第2轮使用第十九讲 Feistel密码结构,……,最后一轮使用第十九讲 Feistel密码结构。这一特性保证了解密和加密可采用同一算法。

第十九讲 Feistel密码结构
Feistel加解密过程

Feistel密码解密的正确性

第十九讲 Feistel密码结构

第十九讲 Feistel密码结构