|
Page 4 sur 6 3.3 Fonctionnement
Tout d’abord il faut noter que D.E.S. en lui-même est de moins en moins utilisé, devenant vulnérable aux attaques par brute force, il est plus sûr d’utiliser le Triple D.E.S. Le Triple D.E.S. n’est autre qu’une « boucle » de chiffrement qui répète 3 fois un chiffrement D.E.S.
Voici les principales étapes requises pour un chiffrement D.E.S.
- Fractionnement des données en blocs de 64 bits soit 8 octets.
- Permutation initiale des blocs.
- Découpage des blocs en deux parties: gauche et droite, nommées G et D.
- Etapes de permutation et de substitution répétées 16 fois (appelées rondes ou itérations).
- Concaténation des parties gauche et droite puis permutation initiale inverse.
Le schéma suivant montre le mécanisme principal dans son ensemble.

Permutation initiale :
Voici la matrice servant à la permutation P initiale des 64 bits du bloc donné.
|
58 |
50 |
42 |
34 |
26 |
18 |
10 |
2 |
|
60 |
52 |
44 |
36 |
28 |
20 |
12 |
4 |
|
62 |
54 |
46 |
38 |
30 |
22 |
14 |
6 |
|
64 |
56 |
48 |
40 |
32 |
24 |
16 |
8 |
|
57 |
49 |
41 |
33 |
25 |
17 |
9 |
1 |
|
59 |
51 |
43 |
35 |
27 |
19 |
11 |
3 |
|
61 |
53 |
45 |
37 |
29 |
21 |
13 |
5 |
|
63 |
55 |
47 |
39 |
31 |
23 |
15 |
7 |
Ainsi, le premier bit du bloc de 64 bit donné devient le 58ème, le deuxième bit devient le 50ème, et pareillement pour tous les autres bits.
Séparation du bloc initial permuté en deux blocs de 32 bits :
Une fois la permutation opérée, le bloc est divisé en deux parties égales. Elles sont appelées G et D, pour gauche et droite. L’indice qui précède cette notation est indique le numéro de l’itération (les itérations sont au nombre de 16).
Le bloc G contient les bits pairs, le bloc D les bits impairs.
Le calcul médian :
Les seize itérations suivantes sont définies par les règles de calcul suivantes.
Gn = Dn-1
Dn = Gn-1 xor F(Dn-1, Kn-1)
La fonction intermédiaire F :
Comme indiqué sur le schéma la fonction F prend D et K en entrée. L’origine de D est expliquée ci-dessus et l’origine de K est expliquée ci-dessous.
K est en fait la clé de chiffrement, il existe donc une clé par itération, soit 16 clés.
Voici un schéma expliquant comment est générée une clé Kn.

La première étape est de choisir une clé de 64 bits. A cette clé est enlevé les bits de parités ce qui ramène la clé à 56 bits.
Secondement les 56 bits restants sont permutés (permutation P_1) puis groupé selon les matrices suivantes :
Partie gauche (G) :
|
57 |
49 |
41 |
33 |
25 |
17 |
9 |
|
1 |
58 |
50 |
42 |
34 |
26 |
18 |
|
10 |
2 |
59 |
51 |
43 |
35 |
27 |
|
19 |
11 |
3 |
60 |
52 |
44 |
36 |
Partie droite (D) :
|
63 |
55 |
47 |
39 |
31 |
23 |
15 |
|
7 |
62 |
54 |
46 |
38 |
30 |
22 |
|
14 |
6 |
61 |
53 |
45 |
37 |
29 |
|
21 |
13 |
5 |
28 |
20 |
12 |
4 |
A la troisième étape intervient le décalage à gauche. A cette étape les bits sont donc décalés d’une seule « place » vers la gauche. Ainsi les deuxièmes bits deviennent les premiers, etc. Les premiers bits deviennent donc les derniers.
La quatrième opération est la seconde permutation, à son issue les deux parties G te D sont concaténées pour donner un bloc de 48 bits. Ces 48 bits donneront la clé Kn.
Voici la matrice de la permutation P_2.
|
14 |
17 |
11 |
24 |
1 |
5 |
3 |
28 |
15 |
6 |
21 |
10 |
|
23 |
19 |
12 |
4 |
26 |
8 |
16 |
7 |
27 |
20 |
13 |
2 |
|
41 |
52 |
31 |
37 |
47 |
55 |
30 |
40 |
51 |
45 |
33 |
48 |
|
44 |
49 |
39 |
56 |
34 |
53 |
46 |
42 |
50 |
36 |
29 |
32 |
Nous en avons donc fini pour ce qui est de la création des clés.
Comme dit plus haut, la fonction F prend en entrée D et K. Mais avant d’effectuer le moindre calcul, D est modifié par une fonction d’expansion E.
Les 32 bits du bloc Dn sont étendus pour avoir en sortie un bloc de 48 bits. A l’expansion est ajouté une fonction de permutation. Cette expansion/permutation est définie par la matrice suivante.
|
32 |
1 |
2 |
3 |
4 |
5 |
|
4 |
5 |
6 |
7 |
8 |
9 |
|
8 |
9 |
10 |
11 |
12 |
13 |
|
12 |
13 |
14 |
15 |
16 |
17 |
|
16 |
17 |
18 |
19 |
20 |
21 |
|
20 |
21 |
22 |
23 |
24 |
25 |
|
24 |
25 |
26 |
27 |
28 |
29 |
|
28 |
29 |
30 |
31 |
32 |
1 |
On voit donc bien que les bits sont permutés et que seize d’entre eux sont dupliqués pour arriver aux 48 bits voulus.
L’algorithme ayant modifié D et généré K, la fonction F peut être utilisée.
Voici donc enfin le mécanisme de la fonction F.
La fonction F utilise 8 sous-fonctions de sélection, appelées S-Boxes dans le langage de la cryptologie. Chacune de ses huit S-Boxes prennent un bloc de 6 bits en entrée et donne un bloc de 4 bits en sortie.
Voici comment est traité un bloc de 6 bits entrant par la première S-Boxe (S1).
Le premier et le dernier bit sont concaténé pour former un nombre binaire nommé By allant de 0 à 3. Les 4 bits restant forment quant à eux un nombre binaire nommé Bx allant de 0 à 15.
Chaque S-Boxe possède une matrice de 4 lignes (de 0 à 1) et de 15 colonnes (de 0 à 14). Le nombre Bx renseigne donc sur le numéro de la colonne et le nombre By renseigne sur le numéro de la ligne. A ces deux indices correspond une valeur dans la matrice.
Chacune des 8 S-Boxes traitent chacun des 8 blocs de 6 bits.
La liste exhaustive des 8 matrices S est disponible à cette adresse : http://www.abisoft.net/des.html
Le résultat de ses 8 sous-fonctions (S-Boxes) est un bloc de 32 bits (concaténation des 8 blocs) qui est ensuite permuté selon la matrice suivante :
|
16 |
7 |
20 |
21 |
|
29 |
12 |
28 |
17 |
|
1 |
15 |
23 |
26 |
|
5 |
18 |
31 |
10 |
|
2 |
8 |
24 |
14 |
|
32 |
27 |
3 |
9 |
|
19 |
13 |
30 |
6 |
|
22 |
11 |
4 |
25 |
Le résultat est donc aussi un bloc de 32 bits.
Le mécanisme de la fonction F a donc été démontré. Cette fonction est ainsi appelée à chaque itération, comme le montre le schéma principal.
La fonction XOR :
La fonction XOR (ou exclusif) est appliqué au bloc de 32 bits qui est donné à la fonction F avec G (la partie de gauche).
Voici la table de vérité de cette fonction :
|
A |
B |
R |
|
0 |
0 |
0 |
|
0 |
1 |
1 |
|
1 |
0 |
1 |
|
1 |
1 |
0 |
La permutation finale :
Juste après avoir fini la seizième itération, l’algorithme effectue une ultime permutation, la permutation P-1.
P-1 est donc la permutation inverse de P. Voici sa matrice.
|
40 |
8 |
48 |
16 |
56 |
24 |
64 |
32 |
|
39 |
7 |
47 |
15 |
55 |
23 |
63 |
31 |
|
38 |
6 |
46 |
14 |
54 |
22 |
62 |
30 |
|
37 |
5 |
45 |
13 |
53 |
21 |
61 |
29 |
|
36 |
4 |
44 |
12 |
52 |
20 |
60 |
28 |
|
35 |
3 |
43 |
11 |
51 |
19 |
59 |
27 |
|
34 |
2 |
42 |
10 |
50 |
18 |
58 |
26 |
|
33 |
1 |
41 |
9 |
49 |
17 |
57 |
25 |
En sortie nous avons donc notre bloc de 64 bits crypté. L’algorithme passe alors au bloc suivant.
Pour le déchiffrement du cryptogramme, il suffit juste d’applique la réciproque du mécanisme expliqué ci-dessus, en prenant soin de prendre G16 et D16 comme bloc d’entrée pour G0 et D0.
|