我正在准备考试。我想确保我的观点是正确的。
AES不是Feistel密码,因为AES中的运算不是可逆的。
上述说法正确吗?如果不是,为什么不是Feistel密码?
发布于 2013-09-28 05:07:33
发布于 2013-09-28 22:28:51
根据定义,Feistel网络使用一系列的圆圈将输入块分成两面,使用一方改变另一方,然后交换两边。和往常一样,维基百科有一个好图。
AES不会这么做的。执行一轮谈判必然会破坏整个国家的秩序。每一轮由SubBytes
、ShiftRows
、MixColumns
和AddRoundKey
步骤组成,没有一个步骤以类似于Feistel网络的方式运行:
SubBytes
从常量表执行字节级替换,没有任何字节值影响另一个字节的置换值.ShiftRows
一次只使用这4个字节来置换4字节单词,另一个字的字节不会影响它们的置换输出。MixColumns
一次只使用这4个字节来置换4字节单词,另一个字的字节不会影响它们的置换输出。AddRoundKey
是一个使用派生圆键的置换,没有字节的值影响另一个字节的置换值。因此,只有ShiftRows
和MixColumns
步骤甚至允许一个字节在状态下影响任何其他字节的排列,而在这两个步骤中,给定的字节只在其本身也被置换时才会影响其他字节的排列。
所有这些都比不上Feistel网络的“将块分割成A和B,并使用A来改变B”的风格。
发布于 2016-06-09 20:30:49
简单的答案是“因为它是一个SPN密码”。
SPN在一轮中对整个数据进行操作,其中Feistel将数据划分为N个N>=2部分,然后在X个部分上操作0
平衡中,数据分为两部分,即N= 2,不平衡的X=1 (例如茶花密码),数据分为两部分以上,即N> 2,(例如SMS4密码)。
现在谈的是不可逆转的问题。
SPN必须是可逆的,否则解密是不可能的。在Feistel密码中,F函数可以是可逆的,也可以是不可逆的.你仍然可以得到加密和解密。
Feistel密码的另一个优点是,加密和解密的代码是相同的,您只需按反向顺序使用圆形密钥即可。(即使您的F函数是可逆的,也不需要在代码中编写它的反转)
还有一点要注意的是,在Feistel中,F函数可以是一个简单的SPN。
https://crypto.stackexchange.com/questions/10605
复制相似问题