L'algorithme DES.

Øhistorique :

Le D.E.S. (Data Encryption Standard, c’est-à-dire Standard de Chiffrement de Données) est un standard mondial depuis plus de 15 ans. Bien qu’il soit un peu vieillissant, il résiste toujours très bien à la cryptanalyse et reste très sûr contre les ennemis sauf peut-être les plus puissants.

Au début des années 70, le développement des communications entre ordinateurs a nécessité la mise en place d’un standard de chiffrement de données pour limiter la prolifération d’algorithmes différents ne pouvant pas communiquer entre eux. Pour résoudre ce problème, L’Agence Nationale de Sécurité américaine (N.S.A.) a lancé des appels d’offres.

La société I.B.M. a développé alors un algorithme nommé Lucifer, relativement complexe et sophistiqué. Après quelques années de discussions et de modifications, cet algorithme, devenu alors D.E.S., fut adopté au niveau fédéral le 23 novembre 1976.

C’est, comme son nom l’indique, un standard ; pour cette raison l’algorithme est parfaitement défini et immuable. Toute modification apportée à D.E.S. impose de renommer l’algorithme obtenu.

ØPrincipe de fonctionnement de l’algorithme :

Le D.E.S. est un système de chiffrement par blocs. Cela signifie qu’il découpe virtuellement le texte en clair en blocs de 64 bits qu’il code séparément, puis il les concatène .

C’est un algorithme de cryptage à clef secrète. La clef sert donc à la fois à crypter et à décrypter le message. Cette clef a ici une longueur de 64 bits, soit 8 caractères, mais seulement 56 bits sont utilisés. On peut donc éventuellement imaginer un programme testant l’intégrité de la clef en exploitant ces bits inutilisés comme bits de contrôle de parité.

L’algorithme est assez simple puisqu’il ne combine en fait que des permutations et des substitutions. On parle en cryptologie de techniques de confusion et de diffusion.

L'entière sécurité de l'algorithme repose sur les clefs puisque l'algorithme est parfaitement connu de tous. La clef de 64 bits est utilisée pour générer 16 autres clefs de 48 bits chacune qu'on utilisera lors de chacune des 16 itérations du D.E.S.. Ces clefs sont les mêmes quel que soit le bloc qu'on code dans un message. On les calcule donc une fois pour toute.

ØGénération des clefs :

On commence par effectuer une permutation compressive sur la clef entrée par l'utilisateur qui fait passer le nombre de bits de 64 à 56. On forme donc un bloc de 56 bits que l'on sépare en deux blocs, G0 et D0, de 28 bits chacun. On décale d'un bit vers la gauche chaque bloc G0 et D0. On obtient donc G1 et D1. On forme alors le bloc G1D1 (en concaténant les deux blocs bout à bout) auquel on applique la permutation P2 qui ne retourne que 48 bits, lesquels forment la clef K1.

Ce calcul se généralise pour calculer les 15 autres clefs Ki à partir de Gi-1 et Di-1 à ceci près que le nombre de bits de décalage de Gi et de Di varie en fonction de i de la manière suivante :

nombre de bits de décalage : {1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1}.

On génère donc 16 clefs Ki où iÎ {1;2;3;...;16}.

ØAlgorithme proprement dit

Le bloc de 64 bits issu du message subi une permutation initiale P0 qui renvoie les 64 bits dans un autre ordre. On coupe ensuite le bloc ainsi obtenu en 2 blocs de 32 bits L0 et R0. Le D.E.S. réalise ensuite 16 fois une série d'opérations sur ces 2 blocs : on appelle cela les 16 itération du D.E.S. ou les 16 rondes du D.E.S.. Chacune de ces rondes, nommée parfois fonction f, peut être décrite en 5 étapes ; elle utilise le bloc Li et le bloc Ri, ainsi que la clef Ki précédemment générée.

– Première étape :

Le bloc Ri subie une permutation expansive qui le fait passer de 32 bits à 48 bits en répétant certain bits. On obtient le bloc Ri'.

– Deuxième étape :

On réalise un OU-Exclusif entre les 48 bits de la clef Ki et les 48 bits du bloc Ri' que l'on vient de générer.

– Troisième étape :

Le bloc ainsi obtenu est coupé en 8 blocs de 6 bits chacun. Chaque bloc est substitué de la manière suivante :

Un bloc est représenté par les 6 bits le constituant : (b1, b2, b3, b4, b5, b6). A l'aide de ces bits on forme 2 nombres représentant une colonne et une ligne de la matrice de substitution du D.E.S. qui est parfaitement connue et définie. Ainsi, en regroupant b1 et b6 on forme le nombre (b1b6) compris entre 0 et 3 qui donne l'indice de ligne ; le regroupement des autres bits forment le nombre (b2b3b4b5) compris entre 0 et 15 qui indique le numéro de colonne. Ces 2 indices fournissent la valeur correspondante dans la matrice de substitution. C'est un nombre compris entre 0 et 15 c’est-à-dire codé sur 4 bits. On substitue donc 4 bits à 6 bits. Pour améliorer un peu l'algorithme, chaque bloc utilise une matrice de substitution différente. Il y a donc 8 matrices de substitutions pour chacun des 8 blocs de 6 bits. En revanche les mêmes matrices sont utilisée dans 2 itérations différentes du D.E.S. sinon sa programmation serait délicate. Les 8 blocs de 4 bits ainsi obtenus sont ensuite concaténés.

Le résultat de la troisième étape est donc la substitution d'un bloc de 48 bits par un bloc de 32 bits obtenu grâce au tables de substitution.

– Quatrième étape :

Les 32 bits renvoyés par l'étape 3 sont permutés par la permutation P qui renvoie 32 bits. On obtient le bloc Ri".

– Cinquième étape :

On réalise un OU-Exclusif entre le bloc Li et le bloc Ri" qui ont bien tous les deux 32 bits. On obtient alors le bloc Ri+1. Le bloc Li+1 est pris égal au bloc Ri du début de la première étape. Cette dernière étape renvoie donc les blocs Li+1 et Ri+1 qui seront utilisés pour la ronde suivante.

On a donc Li+1 = Ri et Ri+1 = f(Li, Ri, Ki).

Après les 16 rondes, on concatène les blocs R16 et L16 pour former le bloc (R16, L16) – notons que les blocs sont échangés : on ne forme pas le bloc (L16, R16) comme il aurait été logique de le faire ; ceci assure le caractère involutif de l'algorithme – auquel on applique la permutation P0-1 qui est la réciproque de la permutation initiale. On obtient – enfin ! – le bloc chiffré qui fait donc 64 bits.

ØDéchiffrement du D.E.S.

Bien que toutes les opération réalisées semblent à sens unique, il n'en est rien en fait puisque toutes les opérations effectuées sont bijectives. Le même algorithme pourra donc être utilisé pour le déchiffrement la seule différence étant l'ordre d'utilisation des clefs : il faut prendre les clefs dans l'autre sens c'est-à-dire en commençant par K16. En revanche l'algorithme sera lu dans le même sens que lors du chiffrement.

ØAvantages et inconvénients du D.E.S. :

Le D.E.S. possède 2 avantages de taille qui font de lui le système cryptographique le plus utilisé à l'heure actuelle qui sont sa sécurité et sa relative vitesse de chiffrement par des puces spécialisées.

En effet la sécurité du D.E.S. avec ses 16 rondes est grande et résiste à l'heure actuelle à toutes les attaques linéaires, différentielles ou par clefs corrélées, effectuées avec des moyens financiers et temporels raisonnables (i.e. moins de 10 millions de dollars et moins d'un mois). La grande sécurité repose sur ses tables de substitutions non linéaires très efficaces pour diluer les informations. De plus le nombre de clefs est élevé (256=7,2*1016) et peut être facilement augmenté en changeant le nombre de bits pris en compte. D'autres avantages plus techniques au niveau cryptanalyse existent.

De plus, cet algorithme est relativement facile à réaliser matériellement et certaines puces chiffrent jusqu'à 1 Go de données par seconde ce qui est énorme :c'est plus que ce qu'est capable de lire un disque dur normal. Pour les industriels c'est un point important notamment face à R.S.A..

Il existe quand même quelques défauts. Le principal est le sentiment de frustration de beaucoup sur sa réelle sécurité. La N.S.A. a-t-elle inséré une brèche secrète dans l'algorithme pour pouvoir contrôler les messages chiffrés ? Mais les nombreuses études développées depuis n'ont jamais rien prouvé. De plus on a constaté l'existence de certaines clefs dites faibles c'est-à-dire dont l'utilisation peut permettre un décodage plus facile qu'avec d'autres clefs. Il faut donc bien choisir sa clef si on veut une réelle efficacité. Enfin la polémique sur la longueur de la clef se poursuit afin de déterminer si une clef de 56 bits est assez longue.

Toujours est-il que le D.E.S. (ou une de ses nombreuses variantes qui existent) a encore une belle perspective de vie avant que soit trouvé quelque chose de vraiment plus performant.