S-Box

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

S-Box (substitution box), terme anglais désignant une table de substitution utilisée dans un algorithme de chiffrement symétrique. Une S-Box contribue à la « confusion » (terme employé par Claude Shannon) en rendant l'information originale inintelligible. Les S-Boxes permettent de casser la linéarité de la structure de chiffrement et leur nombre varie selon les algorithmes. DES compte par exemple huit tables de 16x4 éléments.

Une table de substitution prend en général une variable de m bits en entrée et produit une sortie de n bits, les entrées et les sorties n'ont pas forcément la même taille. Les tables sont souvent définies à l'avance mais il arrive parfois qu'elles soient générées par l'algorithme (par exemple dans Blowfish). Les valeurs présentes dans les S-Box doivent être choisies de manière à éviter les attaques, par divers moyens comme l'utilisation de fonctions courbes. Dans le cas de DES, il a été prouvé que les tables avaient été conçues de manière à résister à la cryptanalyse différentielle (technique qui ne sera publiée que bien des années plus tard).

Exemple[modifier | modifier le code]

Voici une S-Box (S5) tirée de l'algorithme DES. La sortie de 4 bits est obtenue à partir de l'entrée de 6 bits. On divise ces 6 bits en deux parties : les deux bits aux extrémités et les quatre bits restants (au centre). Les deux bits indiquent la ligne et les bits centraux donnent la colonne correspondante. Par exemple, avec une entrée "011011", on divise en "0 1101 1". Ce qui donne pour la ligne "01" et pour la colonne "1101". La sortie de la table est alors "1001".

S5 4 bits au centre de l'entrée
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Bits externes 00 0010 1100 0100 0001 0111 1010 1011 0110 1000 0101 0011 1111 1101 0000 1110 1001
01 1110 1011 0010 1100 0100 0111 1101 0001 0101 0000 1111 1010 0011 1001 1000 0110
10 0100 0010 0001 1011 1010 1101 0111 1000 1111 1001 1100 0101 0110 0011 0000 1110
11 1011 1000 1100 0111 0001 1110 0010 1101 0110 1111 0000 1001 1010 0100 0101 0011

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]