因此,根据Wikipedia,不平衡的feistel密码可提供更大的可证明安全性。具体来说,它们指出:


Thorp随机播放是不平衡Feistel密码的极端情况,其中一侧是单个比特。与平衡的Feistel密码相比,这种方法具有更好的可证明的安全性,但是需要更多的回合。 “。

原谅我要问的问题的简单性,但是作为一个业余爱好者,对我来说,这似乎与直觉相反。如果对于每个纯文本块,我们有:

$$ L_ {i + 1} = R_i $$



$$ R_ {i +1} = L_i \ oplus F(R_i,K_i)$$

其中F是取整函数,则不会将$ L_i $或$ R_i $约束为一个或更少的位(无论哪一方较小,它们都将在下一轮交换)意味着每个xor都更容易反转,因为一次仅更改单个位(并且由于算法不是秘密,我们可靠地知道了这一点...)?难道这不会使密码更容易受到侧信道攻击,本质上变得更像流操作吗?

那么,实际上是这样吗?是否应该避免不平衡的Feistel密码的任何特定实现-例如,对于大于单个位的数据大小,是否存在最佳大小?

#1 楼

实际上,您链接到的文章并没有说平衡的Feistel密码要比不平衡的密码安全。它说,只要有足够多的回合,不平衡的Feistel密码的安全性就更容易得到证明。

Luby和Rackoff在1988年证明,只有四回合的平衡的Feistel方案“只要”就足够了因为回合函数是“足够随机的”。这值得澄清:Luby和Rackoff使用n位块,它们的结果至少可以容纳$ 2 ^ {n / 4} $个查询(攻击者可以提交多达该数量的块以进行加密或解密,一个知道密钥的黑盒,但他仍然无法以不可忽略的概率预测另一个值的加密或解密)。 Maurer和Pietrzak,然后是Patarin,后来证明,随着更多的回合,人们可以尽可能接近想要的$ 2 ^ {n / 2} $限制(如Patarin所示,只有6个回合)。 (当然,“足够随机”的舍入函数是存在不明确的理想对象;现有的基于Feistel的密码使用更快的函数,这些函数肯定不够“随机”,并通过添加更多舍入来进行补偿。)

通过使n足够大,$ 2 ^ {n / 2} $足够大以实现足够的安全性(例如,使用$ n = 256 $)。

Morris,Rogaway和Stegers研究了加密非常小的块的问题。因此,他们无法使$ n $“足够大”。他们必须应付少量的$ n $。 Feistel方案(平衡与否)的最大理论安全性是$ 2 ^ n-3 $个查询(可能有$ 2 ^ n $个块值;如果攻击者知道所有保存两个的加密,那么他可以猜出其余两个由于Feistel方案始终都是偶数排列,因此具有100%的准确度;这是Feistel密码唯一已知的结构弱点)。作者非常清楚地指出(第4页的末尾),对于具有足够多的回合甚至是小块的Feistel密码,没有已知的实际攻击,因此实际上可以实现$ 2 ^ n-3 $的安全限制。但是他们不仅需要实际的安全性,还需要经过验证的安全性。一个安全证明通过假设舍入函数在信息理论上是安全的,并在此假设下了解整个密码如何站立。平衡的Feistel密码的麻烦在于,这样的证明不能超过$ 2 ^ {n / 2} $。

另一方面,密码不平衡且有很多回合(远远超过6个;数字)在本文中进行约64轮),就有可能获得接近$ 2 ^ n $的安全证明。这并不意味着不平衡的Feistel密码“更安全”,而不仅仅是信息理论工具更容易用于证明不平衡的Feistel密码的安全性。而且,不平衡的一轮肯定不会比平衡的一轮更安全。恰恰相反:在安全方面,单个不平衡的回合糟透了。但是,如果您积累了足够多的此类回合,则可以将安全证明提高到更高的水平。