首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么AES不是Feistel密码?

为什么AES不是Feistel密码?
EN

Cryptography用户
提问于 2013-09-28 04:20:19
回答 3查看 19.9K关注 0票数 17

我正在准备考试。我想确保我的观点是正确的。

AES不是Feistel密码,因为AES中的运算不是可逆的。

上述说法正确吗?如果不是,为什么不是Feistel密码?

EN

回答 3

Cryptography用户

发布于 2013-09-28 05:07:33

呃,AES不是Feistel密码,因为它是置换-置换网络。如果我参加一个测试,问我为什么AES不是Feistel密码,这就是我的论点:即置换网络的结构与Feistel网络的结构是根本不同的。(在这里,我们可以详细阐述可兑换性和其他差异。)

尽管如此,你的说法是不正确的。在Feistel密码中,圆函数不一定是可逆的(DES的圆函数不是可逆的),但在AES中,与任何替换置换网络一样,圆环是可逆的。这是建筑本身的一项财产。

票数 25
EN

Cryptography用户

发布于 2013-09-28 22:28:51

根据定义,Feistel网络使用一系列的圆圈将输入块分成两面,使用一方改变另一方,然后交换两边。和往常一样,维基百科有一个好图

AES不会这么做的。执行一轮谈判必然会破坏整个国家的秩序。每一轮由SubBytesShiftRowsMixColumnsAddRoundKey步骤组成,没有一个步骤以类似于Feistel网络的方式运行:

  • SubBytes从常量表执行字节级替换,没有任何字节值影响另一个字节的置换值.
  • ShiftRows一次只使用这4个字节来置换4字节单词,另一个字的字节不会影响它们的置换输出。
  • MixColumns一次只使用这4个字节来置换4字节单词,另一个字的字节不会影响它们的置换输出。
  • AddRoundKey是一个使用派生圆键的置换,没有字节的值影响另一个字节的置换值。

因此,只有ShiftRowsMixColumns步骤甚至允许一个字节在状态下影响任何其他字节的排列,而在这两个步骤中,给定的字节只在其本身也被置换时才会影响其他字节的排列。

所有这些都比不上Feistel网络的“将块分割成A和B,并使用A来改变B”的风格。

票数 14
EN

Cryptography用户

发布于 2016-06-09 20:30:49

简单的答案是“因为它是一个SPN密码”。

费斯特和SPN有什么区别?

SPN在一轮中对整个数据进行操作,其中Feistel将数据划分为N个N>=2部分,然后在X个部分上操作0

图片来源:FEISTELSPN

平衡中,数据分为两部分,即N= 2,不平衡的X=1 (例如茶花密码),数据分为两部分以上,即N> 2,(例如SMS4密码)。

现在谈的是不可逆转的问题。

SPN必须是可逆的,否则解密是不可能的。在Feistel密码中,F函数可以是可逆的,也可以是不可逆的.你仍然可以得到加密和解密。

Feistel密码的另一个优点是,加密和解密的代码是相同的,您只需按反向顺序使用圆形密钥即可。(即使您的F函数是可逆的,也不需要在代码中编写它的反转)

还有一点要注意的是,在Feistel中,F函数可以是一个简单的SPN。

票数 8
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/10605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档