Chapitre 3 : Cryptographie moderne à clé secrète
a) Fonctionnement de DES
L'algorithme DES transforme un bloc de 64 bits en un autre bloc de 64 bits. Il manipule des
clés individuelles de 56 bits, représentées par 64 bits (avec un bit de chaque octet servant pour
le contrôle de parité). Ce système de chiffrement symétrique fait partie de la famille des
chiffrements itératifs par blocs, plus particulièrement il s'agit d'un schéma de Feistel. D'une
manière générale, on peut dire que DES fonctionne en trois étapes :
Permutation initiale et fixe d'un bloc (sans aucune incidence sur le niveau de sécurité)
Le résultat est soumis à 16 itérations d'une transformation, ces itérations dépendent à
chaque tour d'une autre clé partielle de 48 bits. Cette clé de tour intermédiaire est
calculée à partir de la clé initiale de l'utilisateur (grâce à un réseau de tables de
substitution et d'opérateurs XOR). Lors de chaque tour, le bloc de 64 bits est découpé
en deux blocs de 32 bits, et ces blocs sont échangés l'un avec l'autre selon un schéma
de Feistel. Le bloc de 32 bits ayant le poids le plus fort (celui qui s'étend du bit 32 au
bit 64) subira une transformation.
Le résultat du dernier tour est transformé par la fonction inverse de la permutation
initiale.
Figure 3.8 Chiffrement DES
Rappelons ci-dessous la table de permutation initiale, elle est représentée par la matrice PI
27
Chapitre 3 : Cryptographie moderne à clé secrète
Figure 3.9 Matrice initiale de permutation
Cette matrice de permutation indique que le 58 ème bit du bloc du texte de 64 bits se retrouve
en première position, le 50ème en seconde position, etc.
Une fois la permutation initiale appliquée, le bloc de 64 bits est divisé en deux blocs de 32
bits, notés respectivement G et D (pour gauche et droite). On note G0 et D0 l’état initial de ces
deux blocs.
Les blocs Gn et Dn sont soumis à un ensemble de transformations itératives appelés rondes ou
itérations appelées aussi tours.
Figure 3.10 Architecture d’une ronde de DES
28
Chapitre 3 : Cryptographie moderne à clé secrète
Les 32 bits du bloc D sont étendus à 48 bits grâce à une table (matrice) appelé table
d’expansion (notée E), dans laquelle les 32 bits sont mélangés et 16 d’entre eux sont
dupliqués.
Figure 3.11 Fonction d’expansion du DES
Ainsi, le dernier bit de D0 devient le premier, le premier devient le second, etc.
La matrice résultante de 48 bits est appelée E(D0).
L’algorithme DES procède un OU exclusif entre la première clé K1 et le résultat de
l’application de la fonction d’expansion E sur D0 à savoir E(D0). Le résultat obtenu est une
matrice de 48 bits que nous appellerons aussi D0
Chaque bloc de 48 bits est découpé en 8 blocs de 6 bits. Le principe consiste à transformer 6
bits en 4 bits par l’application de la substitution via les 8 fonctions de sélection appelées aussi
des SBOX notées généralement Si. Ces SBOX sont représentées sous formes de matrices
fixes. Les premiers et derniers bits de chaque sous bloc détermine (en binaire) la ligne de la
fonction de sélection, les autres bits déterminent la colonne.
La sélection de la ligne se fait sur deux bits et la sélection de la colonne se fait sur 4 bits. Elle
s’applique sur des blocs de 6 bits pour obtenir en sortie une valeur codée sur 4 bits.
La première fonction de sélection ou SBOX est représentée par la matrice notée ci-dessous
par S1.
Figure 3.12 Matrice de la première fonction de sélection ou sbox.
Expliquons maintenant à travers un exemple la transformation de 6 bits données en 4 bits par
la fonction S1.
Etant donné un sous bloc égale à 110101. Le premier et le dernier bit donnent 11, soit 3 en
décimal. Il indique la ligne numéro 3 dans S 1. Les 4 bits du milieu soient 1010 correspondent
29
Chapitre 3 : Cryptographie moderne à clé secrète
à 10 en décimal, ils déterminent le numéro de la colonne qui est 10. A, l'intersection de la
ligne et colonne, on trouve 3 qui correspond à 0011en binaire, c'est-à-dire les 4 bits de sortie.
Cette opération est répétée pour les autres sous blocs de 6 bits faisant appeler dans l’ordre les
fonctions de sélection SBOX. Tous les résultats sont regroupés pour former un bloc de 32
bits. A ce nouveau bloc, on additionne le bloc de gauche et de l’itération précédente.
A la fin des itérations, les deux blocs G16 et D16 sont recollés, puis soumis à la permutation
initiale inverse.
b) Construction des sous-clés
On fabrique à partir de la clé principale K de 64 bits, 16 sous-clés K1,...,K16 à 48 bits, pris
dans un certain ordre.
Dans un premier temps, les bits de parité de la clé sont éliminés afin d’obtenir une clé d’une
longueur de 56 bits. Les bits de la clé initiale sont d’abord stockés dans une matrice. La
première étape consiste en une permutation notée CP-1 dont la matrice est présentée ci-
dessous.
Figure 3.13 Matrice de permutation PC-1
Cette matrice peut s’écrire sous la forme de deux matrices Gi et Di où Gi est constitué des
premiers 28 bits et Di des derniers 28 bits. Notons G0 et D0 le résultat de cette première
permutation. Ces deux blocs subissent ensuite une rotation à gauche de telle sorte que les bits
en seconde position prennent la première position, ceux en troisième position prennent la
seconde, etc. Les bits en première position passent en dernière position. Les deux blocs de 28
bits sont ensuite regroupés en un bloc de 56 bits. Celui-ci passe à travers une permutation,
notée CP-2, fournissant en sortie un bloc de 48 bits, représentant la clé Ki.
30