Feistel 网络 (费斯妥, Feistel 结构, Feistel 密码)

Feistel 网络 (费斯妥, Feistel 结构, Feistel 密码)

Feistel 密码 是用于构造分组密码的对称结构, 以德国 Horst Fistel 命名, 通常也称为 Feistel 网络.

20 世纪 70 年代, IBM 工程师 Horst Feistel 设计了一种分组密码, 称为路西法(Lucifer), 工作原理如下:

  1. 将 64 比特分成两个 32 比特的 L 和 R.
  2. 设 L 为 L ⊕ F ( R ) L \oplus F(R) LF(R), 其中 F 是 替换-置换轮 函数.
  3. 交换 L 和 R 的值.
  4. 转到步骤 2, 重复 15 次.
  5. 合并 L 和 R 形成 64 比特输出分组.

这种构造称为 Feistel 结构, 如下图所示, 左边是刚才描述的方案, 右边是等价的函数表示, 使用轮换操作 L = L ⊕ F ( R ) L = L \oplus F(R) L=LF(R) R = R ⊕ F ( R ) R = R \oplus F(R) R=RF(R) 代替交换 L 和 R.

P L R F F P L R F F

为了简化描述, 上图省略了子密钥, 要注意在实际中, 第一个 F 取第一子密钥 K 1 K_1 K1, 第二个 F 取另一个子密钥 K 2 K_2 K2. 在 DES 中, F 函数采用 48 比特子密钥, 它是从 56 比特的主密钥 K中产生的.

在 Feistel 结构中, F 函数是伪随机置换(PRP)伪随机函数(PRF). PRP 对于不同的输入有不同的输出, 但对于两个不同的输入可能出现相同的输出, 即对于不同输入值 X 和 Y, 可能有 F ( X ) = F ( Y ) F(X) = F(Y) F(X)=F(Y). 但在 Feistel 结构中, 只要 F 密码性强大, 就没有影响.

Feistel 结构应该计算多少轮?

在 DES 中执行 16 轮, 在 GOST 28147-89 执行 32 轮.

如果 F 函数足够强大, 理论上 4 轮就够了, 但是真正的密码使用更多的轮来抵御 F 中的潜在弱点.

应用

许多现代及一些较旧的对称分组密码基于 Feistel 结构, 比如: DES, GOST 28147-89, RC5, RC6, FEAL, MARS, Twofish 等.

注意: AES 加密没有采用 Feistel 结构!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值