Taille de bloc (cryptographie)

Un article de Wikipédia, l'encyclopédie libre.

En cryptologie moderne, la cryptographie symétrique se divise en deux catégories : le chiffrement par bloc et le chiffrement par flot. Les chiffrements par bloc travaillent sur des blocs de bits dont la longueur est fixe.

La taille de bloc se réfère au nombre de bits présents dans le bloc traité par l'algorithme. Le bloc en clair est transmis à l'algorithme de chiffrement qui va produire un bloc de même taille mais chiffré. La sortie ne peut pas être plus courte que l'entrée puisque le système doit être inversé lors du déchiffrement (contrairement aux fonctions de hachage).

Jusqu'au concours AES, la majorité des chiffrements par bloc utilisaient un bloc de 64 bits (8 octets). Cependant, en accord avec le paradoxe des anniversaires, les risques de collisions devenaient trop grands (il faut 232 blocs distincts pour trouver une collision avec une chance sur deux, ce qui est une porte ouverte pour diverses attaques). Avec un mode opératoire approprié, 32 gigaoctets de données peuvent être transmis avec la même clé avant de trouver une collision. Si à l'époque ce volume paraissait inaccessible, il est désormais tout à fait envisageable. Si le mode opératoire est vulnérable (mauvais aléa), la taille des données nécessaire peut diminuer.

Pour ces raisons, le standard AES est basé sur un bloc de 128 bits (16 bytes). Les collisions se montent maintenant à 264 blocs distincts, soit 256 exaoctets, une valeur qui devrait être suffisante pour la période durant laquelle AES est supposé être sûr (jusqu'aux environs de 2050). Le gagnant, Rijndael, supporte des blocs de 128, 192 et 256 bits mais le standard porte sur le bloc de 128 bits.

D'autres chiffrements acceptent des blocs de taille variable. La construction de Luby-Rackoff et la construction d'Outerbridge peuvent toutes deux augmenter la robustesse effective d'un algorithme. Le chiffrement de Joan Daemen, 3-Way, a une taille inhabituelle de 96 bits. Citons encore Triple DES avec sa clé de 168 bits (112 bits effectifs), en réalité 192 bits mais les 24 bits supplémentaires ne sont utilisés que pour un contrôle de parité.