In cryptography, the so-called product ciphers are a certain kind of cipher, where the (de-)ciphering of data is done in "rounds". The general setup of each round is the same, except for some hard-coded parameters and a part of the cipher key, called a subkey. A key schedule is an algorithm that, given the key, calculates the subkeys for these rounds.
Some types of key schedules
- Some ciphers have simple key schedules. For example, the block cipher TEA simply splits the 128-bit key into four 32-bit pieces and uses them repeatedly in successive rounds.
- DES uses a key schedule where the 56-bit key is divided into two 28-bit halves; each half is thereafter treated separately. In successive rounds, both halves are rotated left by one or two bits (specified for each round), and then 48 subkey bits are selected by Permuted Choice 2 (PC-2) — 24 bits from the left half, and 24 from the right. The rotations mean that a different set of bits is used in each subkey; each bit is used in approximately 14 out of the 16 subkeys.
- In an effort to avoid simple relationships between the cipher key and the subkeys, to resist such forms of cryptanalysis as related-key attacks and slide attacks, many modern ciphers use much more elaborate key schedules, algorithms that use a one-way function to generate an "expanded key" from which subkeys are drawn. Some ciphers, such as Rijndael (AES) and Blowfish, use parts of the cipher algorithm itself for this key expansion, sometimes initialized with some "nothing-up-my-sleeve numbers". Other ciphers, such as RC5, expand keys with functions that are somewhat or completely different from the encryption functions.
Knudsen and Mathiassen (2004) give some experimental evidence that indicate that the key schedule plays a part in providing strength against linear and differential cryptanalysis. For toy Feistel ciphers, it was observed that those with complex and well-designed key schedules can reach a uniform distribution for the probabilities of differentials and linear hulls faster than those with poorly designed key schedules.