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

Feistel网络是一种用于构建分组密码的对称结构,由IBM工程师HorstFeistel设计。它通过将数据分为两部分,应用替换-置换轮函数F并交替更新两边,如DES中实现的16轮过程。即使F函数是伪随机置换,只要足够强,4轮理论上就安全,但实际加密常使用更多轮次以增强安全性。Feistel结构被广泛应用于多种密码算法,如DES、GOST28147-89,但AES并未采用此结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 取第一子密钥 K1K_1K1, 第二个 F 取另一个子密钥 K2K_2K2. 在 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、付费专栏及课程。

余额充值