正如最近对这个问题的回答所解释的那样,AES竞赛的获胜者具有不符合Feistel密码的结构。

但是,大多数AES候选人中,有三分之四如果我们将Feistel密码定义为使用多个回合来变换数据块的密码,则每个入围者也可以称为Feistel密码:


split all将块$ B_j $的位分成两个不相交的部分$ L_j $和$ R_j $(通常大小相等);
计算$ R_j $的一些(通常与循环相关的)函数,并输出$ F_j $具有与$ L_j $相同的宽度;
计算$ L_j'= L_j \ oplus F_j $其中$ \ oplus $是二进制加法并去除了一些进位(例如,异或,其中所有进位都被去除);
将$ L_j'$位和未修改的$ R_j $位重新组合到新的块$ B_ {j + 1} $中。

注意:蛇和RC6不能放在此框架中(感谢@Reid和@JD指出这一点)。 Rijndael / AES也不行。

在AES竞赛之时,Feistel密码早已享有广为人知的理论。尤其是DES,其中包括DES,除了密钥和块大小小以外,在实践中基本上没有中断。似乎提出除Feistel密码之外的任何其他方法都是艰巨的战斗。

但是,Rijndael赢得了AES竞赛,并且不属于上述定义。尽管使用相对未经测试的结构存在明显的缺点,Rijndael的理想特性是否使其比其他候选者更受青睐?如果Feistel密码无法匹配该特征,为什么?

评论

评论不作进一步讨论;此对话已移至聊天。

#1 楼

DES实际上证明了Feistel结构并不是对攻击的保证。用“学术”术语,DES被差分和线性密码分析所破坏,因为它们分别需要$ 2 ^ {47} $个选择的明文和$ 2 ^ {43} $个已知的明文,而DES密钥(有效)为56位。当然,对于实际攻击,我们将蛮力地破解密钥:计算函数$ 2 ^ k $次要比获得$ 2 ^ k $已知的明文/密文对(甚至更糟的是选择的明文/密文对)要容易得多。但是在通常的“学术性”安全性评估中,线性和差分密码分析都被视为中断。安全。但是,该证明有两个实际问题:


它与舍入函数的输出大小有关,即64位块密码的32位。对于128位安全性,块必须为256位宽才能实际应用证明。但是AES对候选人的号召要求使用128位块的256位安全性,而不是相反。
DES充分证明了不能认为具体的舍入功能是完美的。

因此,尽管当时Feistel结构提供的安全性已经被充分了解(大约在1997年,当设计AES候选对象时),但在以下方面,它也被称为“次优”:充分利用在现有的安全证明上,您必须使用不切实际的块大小或发数。的确,许多研究人员对Feistel结构不满意,并渴望探索新结构。 AES竞赛恰逢其时成为此类新颖设计的试验台,并且积累的研究表明,置换排列网络(由Rijndael使用)是Feistel结构的有效竞争对手。

评论


$ \ begingroup $
使用Luby&Rackoff证明的另一个“实用”问题是,该构造需要从$ \ {0,1 \} ^ {\ frac {b}中的所有函数集中随机选择4个不同的舍入函数{2}} $到$ \ {0,1 \} ^ {\ frac {b} {2}} $-对于可用大小的块,需要大量荒谬的密钥材料。更糟糕的是,将大密钥用作可证明安全的一个时间垫,而不是可证明安全的分组密码,效率会更高(因为您实际上可以加密更多文本)。
$ \ endgroup $
– J.D.
2013年9月29日在18:54

$ \ begingroup $
@ J.D。如果无法与随机预言之类的东西区分开,伪随机函数也不会在那里工作吗?
$ \ endgroup $
–PaŭloEbermann
13年9月29日在21:26

$ \ begingroup $
@PaŭloEbermann-是的,伪随机函数会起作用(尽管不是针对信息理论上的对手,而仅针对计算界的对手)。可悲的是,效率点仍然存在-如果您具有加密安全的PRNG,则仅使用它直接加密数据会更有效。如果它不是加密安全的(例如DES舍入函数),则证明不适用,您必须依靠试探性论证和许多其他的舍入方法。
$ \ endgroup $
– J.D.
13年9月29日在21:54

#2 楼

正如ibm.com上的页面所表明的那样,由于DES看到了Feistel密码的安全性方面的第一个突破,所以对Feistel密码可能会有一些“相反”的态度。

Feistel结构的下降!
在大多数密码中,圆形变换具有众所周知的Feistel结构。在这种结构中,通常将中间状态的部分位简单地原封不动地移至另一个位置。 (这种线性类型的结构的一个例子是我们在DES讨论中讨论过的那些表,这些表通过固定的表格方式代替了位。)Rijndael的圆形变换没有这种古老的Feistel结构。取而代之的是,舍入变换由三个不同的可逆统一变换组成,称为层。 (这里的“统一”意味着对状态的每一位都以类似的方式对待。)
线性混合层保证了多轮的高度扩散。非线性层使用具有期望的(因此是最佳的)最坏情况非线性特性的S盒并行应用。 S盒是非线性的。这就是DES和Rijndael之间的关键概念区别。

所以,我想他们选择非Feistel密码的原因之一很可能是他们希望通过更高的扩散性来保证更高的安全性。希望万一Feistel密码崩溃得比预期的更快,他们将要推荐的下一个加密货币也不会自动加入并崩溃。
例如,Serpent的设计目的是使所有操作都可以并行执行,使用32个1位分片。虽然这可以最大程度地提高并行度,但也可以立即使用在DES上进行的大量密码分析工作。一个很好的理由是不让Serpent最终选择而喜欢“别的东西”(很可能是因为Serpent的起源与理论上断定的Feistel DES太接近了。)
这也与@ thomas-pornin在他的出色回答的第一行中提到的内容格格不入。