Plutôt que d'utiliser des clés immenses telles que pour un chiffre à usage unique, on utilise le plus souvent des algorithmes qui ont une clé secrète relativement petite (de 80 à 128 bits, mais qui utilisent cette clé d'une façon apparemment si complexe qu'il est impossible à un ennemi d'en trouver la valeur.
Dès lors, puisque la clé est si petite, n'est-il pas aisé d'essayer toutes les possibilités jusqu'à parvenir au décryptement ? En fait, aucun ordinateur ne pourrait y arriver en un temps réaliste. En effet, si la clé était de 128 bits, c'est-à-dire une succession de 128 "0" et "1", il y aurait 2 128 ou 100000000000000000000000000000000000000 clés possibles !!
L'objectif est donc le suivant : élaborer à partir du message M une suite aléatoire de chiffres, ou du moins
qui paraisse aléatoire, que seule la détention de la clé K permet de déchiffrer.
Concrètement, il s'agit de construire une fonction bijective "pseudo-aléatoire" :
La mise au point d'une fonction réunissant ces deux conditions posa problème aux cryptographes jusque dans les années 1950, lorsque Feistel montra qu'une fonction pseudo-aléatoire se transformait, par une méthode simple, en bijection. Actuellement, c'est la méthode de chiffrement à clé secrète la plus utilisée.
Explication :
Soit une fonction f qui prend comme argument un mot de n bits.
L'algorithme de chiffrement va procéder en chiffrant des blocs de 2n bits, qu'on partage en 2 parties de
n bits chacune : les parties gauche (G) et droite (D).
L'image du bloc (G,D) est le bloc (L,R), avec L=D et R = G XOR f(D).
Cette transformation est bijective, car si on a un couple (L,R), on retrouve bien (G,D) par D=L et G=R XOR f(L).
La partie droite n'a pas été transformée (juste envoyée à gauche). Il faut donc répéter le schéma de Feistel
un certain nombre de fois (on parle de tours).
<< Chapitre précédent - Chapitre suivant >>