# Devising a Feistel cipher in which the subkeys are constructed badly so that a meet in the middle attack will compromise its security

I'm trying to find a Feistel cipher in which the subkeys are constructed badly so that a meet in the middle attack will compromise its security. I thought about trying out a cipher where all the subkeys are equal but that didn't really lead to anything. I know that in general you want ciphers to not be linear in their subkeys so I'm trying to exploit that property, but haven't made much progress.

## 1 Answer

The easiest way to do this for a $$2r$$ round cipher is to divide the key into two halves and base the first $$r$$ subkeys on one half and the second $$r$$ subkeys on the other half.

ETA 20220416: Thus for a block cipher with round function $$F(x,k)$$ and subkeys $$k_1,\ldots, k_{2r}$$, input $$p$$ and out $$c$$ we have $$c=F(F(F(F(\cdots F(F(p,k_1),k_2)\cdots),k_{2r-2}),k_{2r-1}),k_{2r})$$ which rearranges to $$F^{-1}(F^{-1}(F^{-1}(\cdots F^{-1}(c,k_{2r})\cdots,k_{r+2}),k_{r+1})=F(F(F(F(\cdots F(F(p,k_1),k_2)\cdots),k_{r-2}),k_{r-1}),k_{r}).$$ Given a handful of matched $$p$$ and $$c$$ values (one pair is about enough if the key size is the same as the block size), running over all possibilities for the first half of the key is enough to generate all of the possibilities for each right-hand side for each value of $$p$$. We can make a list of these possible right hand sides. Likewise, given $$c$$ running over all possibilities for the second half of the key is enough to generate all of the possibilities for the left hand side and for each possible left-hand side, we check to see if it appears in the right-hand side. If we do find a match, with good probability the corresponding first and second halves of the key all be the actual halves of the required key.

• As I recall one of the AES submissions had a flaw like this, but I don't remember which one Apr 15 at 18:04
• I don't quite understand how this method works - could you elaborate please? Apr 16 at 17:40