title: Key schedule
text: # Key schedule
  
  En cryptographie, le key schedule (préparation des clés) consiste à créer des sous-clés à partir de la clé principale pour un algorithme de chiffrement par bloc. Le terme est également employé dans le cadre des fonctions de hachage cryptographiques même si la notion de clé est ici différente (la clé provenant en général du message à hacher).
  
  ## Différents types de key schedule
  
  Certains chiffrements ont des algorithmes de préparation relativement simples. L'algorithme TEA se contente de découper la clé de 128 bits en quatre morceaux de 32 bits qui sont utilisés dans les différentes rondes.
  
  DES utilise sa clé de 56 bits qui est coupée en deux. Chaque partie de 28 bits est traitée séparément. À chaque tour, les deux sous-clés subissent une rotation vers la gauche par un ou deux bits (selon le tour). Des sous-clés de 48 bits sont ensuite extraites en prenant 24 bits dans chaque clé de 28 bits. Les 24 bits retenus varient selon les tours de telle façon que chaque bit soit utilisé dans approximativement 14 des 16 sous-clés employées dans les 16 tours.
  
  Les chiffrements apparus par la suite, comme RC5, Rijndael ou Blowfish génèrent des sous-clés avec des procédures plus complexes.
  
  ## Résistance à la cryptanalyse
  
  Lars Knudsen et Mathiassen ont montré en 2004 que le key schedule joue un rôle primordial dans la résistance aux cryptanalyses de type linéaire ou différentielle. Les générations de sous-clés, lorsqu'elles sont bien conçues, permettent d'arriver rapidement à l'absence de biais statistiques potentiellement exploitables par la cryptanalyse.
  
  