# How are subkeys, in Feistel block ciphers, derived for each round?

I'm bit confused about the subkeys that are used in Feistel ciphers. I know that all the subkeys ki are derived from the main key K, but how?

Say I have a simplified Feistel block cipher of i rounds, is it then correct to say that each key ki is the K/i part of the key?

So if the key is 4 bytes and there are 4 rounds, then I use the first 1 byte as subkey for the first round, then the second byte as subkey for the 2nd round and so on?

I can't seem to find this information when looking at articles/explanations of the Feistel cipher. I'm trying to solve an exercise and want to make sure that I can make the assumption that the key should be divided by the number of rounds and then use subkeys from this.

Note: It is specified in the exercise that the Feistel cipher uses 8-bit independent round keys ki. I'm not sure if this aligns with my assumption above.

• A Feistel cipher is a generic structure, many block ciphers (but not only block ciphers) are based on it and they use different round functions / key derivation mechanisms. – Aleph Jun 20 '15 at 10:44

## 1 Answer

I know that all the subkeys $k_i$ are derived from the main key $K$, but how?

However the cipher designer feel like. The Feistel design gives guidance as to how the block is processed (and in a way to make inverting the cipher easy), however it gives no guidance as to actually generate the subkeys. The designers can do anything they like, and still call themselves a "Feistel Network".

It is specified in the exercise that the Feistel cipher uses 8-bit independent round keys ki. I'm not sure if this aligns with my assumption above.

The point of that instruction is that you aren't supposed to assume any necessary relationship between different round keys. It might be because they're from independent part of the keys; it also might be because the subkeys are generated via an noninvertable function. How it happens is irrelevant to the exercise.