DES“mangler”函数是可逆的吗?

信息安全 加密 密码学 德斯
2021-08-17 02:47:09

DES 对称密码基于 Feistel 网络,在 64 位块的 32 位一半上重复运行。Feistel 的使用意味着使用的“mangler”函数不需要是可逆的。

“mangler”功能通过简单的算法将 32 位字扩展为 48 位。这 48 位与密钥组合,然后通过 S-box 转换回 32 位。S-box 显然是不可逆的,因为它们接受 6 位输入并产生 4 位输出。

但是整个结构是可逆的。假设密钥是固定的,“mangler”函数的每个 32 位输入是否映射到不同的 32 位输出?还是 mangler 函数从未产生一些 32 位输出,因此使其不可逆?

1个回答

不,它不可逆。可以找到两个 32 位输入,当它们被馈送到 DES“mangler”函数时,它们都产生相同的 32 位输出。这是 Feistel 结构的好处之一:“mangler”函数不需要是可逆的,我们最终还是会得到一个可逆的分组密码。

事实上,Biham 和 Shamir 著名的 DES 差分密码分析攻击就是利用了这一事实。它们利用了这样一个事实,即当一对 32 位输入满足某种关系时,它们通常会在应用“mangler”函数后产生相同的输出。这使他们能够以相对较高的概率找到差分特征,从而使他们能够攻击 DES。对 DES 的差分密码分析攻击实际上并不实用,但它是密码分析和分组密码设计科学的巨大进步。

PS 顺便说一句,我从来没有听过密码学家称这个函数为“mangler”函数。我通常听说它称为 Feistel F 函数。所以,如果你走到密码学家面前,向他们询问关于 DES“mangler”功能的问题,他们可能会给你一个有趣的表情;现在你知道如何说他们的语言了。