0% ont trouvé ce document utile (0 vote)
178 vues44 pages

Introduction à la cryptographie symétrique

Transféré par

Aya Rayane Derrouiche
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
178 vues44 pages

Introduction à la cryptographie symétrique

Transféré par

Aya Rayane Derrouiche
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 2

Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

Sommaire
2.1 Cryptosystèmes symétriques (‫ )ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻔﻴﺮ ﺍﻟﻤﺘﻨﺎﻇﺮﺓ‬. . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Chiffre par substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.1 Chiffre de César . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.2 Chiffre affine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.2.1 Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.2.2 Déchiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.2.3 Cryptanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.3 Chiffre de Vigenère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.3.1 Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.3.2 Déchiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.3.3 Cryptanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.4 Autres chiffres par substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Chiffres par transposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.1 Principe général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Chiffre par bloc et chiffre de flux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.1 Architecture des cryptosystèmes symétriques par bloc . . . . . . . . . . . . . . . . . . . . 26
2.4.2 Le chiffrement de flux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5 Modes opératoires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5.1 ECB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5.2 CBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5.3 PCBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5.4 Cipher Feedback Chaining CFB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5.4.1 Forme simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.4.2 Version détaillée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.5 Output Feedback Chaining OFB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5.5.1 Version simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5.5.2 OFB selon FIPS 81 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5.5.3 OFB selon ISO 10116 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.5.6 CTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.5.7 Authenticated encryption modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.5.8 CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.6 Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.6.1 Bit padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.6.2 TBC Padding : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.6.3 Zero padding : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.6.4 ISO 7816‑4 Padding : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.6.5 ANSI X9.23: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.6.6 ISO 10126‑1 et ISO 10126‑2 (1991) : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.6.7 PKCS#5 et PKCS#7: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

19
20 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

2.7 Data Encryption Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42


2.7.1 Histoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.7.2 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.7.3 Dérivation de sous‑clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.7.4 Déchiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.7.5 Clés faibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.7.6 Attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.8 Triple Data Encryption Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.9 Advanced Encryption Standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.9.1 Le vainqueur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.9.2 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.9.3 Déchiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.9.4 Attaques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

FIGURE 2.1 – La machine de Lorenz utilisée par les Allemands durant la Seconde Guerre mondiale..

2.1 Cryptosystèmes symétriques (‫)ﺃﻧﻈﻤﺔ ﺍﻟﺘﺸﻔﻴﺮ ﺍﻟﻤﺘﻨﺎﻇﺮﺓ‬

L a cryptographie symétrique (‫)ﺗﺸﻔﻴﺮ ﻣﺘﻨﺎﻇﺮ ﺃﻭ ﻣﺘﻤﺎﺛﻞ‬, également dite à clé secrète (‫()ﺑﺎﻟﻤﻔﺘﺎﺡ ﺍﻟﺴﺮﻱ‬par opposition
à la cryptographie à clé publique (‫))ﺗﺸﻔﻴﺮ ﺑﺎﻟﻤﻔﺘﺎﺡ ﺍﻟﻌﺎﻡ‬, est la plus ancienne forme de chiffrement. Des
traces de son utilisation par les égyptiens remonte à 2000 av.
J.‑C. Le chiffre de Jules César est plus récent où le « ROT13 » 1 est une variante.
Plus formellement :
Tels que soit k = K, soit la connaissance d’une des deux clés permet d’en déduire facilement l’autre.
Conséquences :
— Dichotomie du monde : les bons et les mauvais
— Multiplication des clés (un secret n’est partagé que par 2 interlocuteurs), donc pourNinterlocuteurs N.(N ´
1)/2 couples
— La qualité d’un cryptosystème symétrique s’analyse par rapport à des propriétés statistiques des textes
chiffrés et la résistance aux classes d’attaques connues.
— En pratique tant qu’un cryptosystème symétrique n’a pas été cassé, il est bon, après il devient mauvais.

1. Une variante du chiffre de César avec un décalage de 13 positions au lieu de 3.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 20
2.2 Chiffre par substitution 21

FIGURE 2.2 – Cryptographie symétrique (à clé secrète).

2.2 Chiffre par substitution


Principe général : A chaque lettre ou groupe de lettres on substitue une autre lettre ou un autre groupe de
lettres.
Substitution mono alphabétique : Pour chaque lettre de l’alphabet de base on se donne une autre lettre
utilisée dans le texte chiffré.

2.2.1 Chiffre de César


C’est un exemple historique où on décale les lettres de 3 positions. C’est un chiffre mono‑alphabétique.

FIGURE 2.3 – Jules cesar 12 ou 13 juillet 100 av. J.‑C. ou 102 av. J.‑C. ‑ 15 mars 44 av. J.‑C.

Indice 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Clair A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
hiffré D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

La forme générale des chiffres par décalage sur l’alphabet à 26 lettres (Pour le chiffre de César k = 3 :
Ek (x) = x + k mod 26
Dk (y) = y ´ k mod 26
Exemple :
Nous voulons chiffrer le texte « INFORMATIQUE ». Nous pouvons nous servir du tableau suivant afin d’ob‑
tenir le texte chiffré qui est dans ce cas « LQIRUPDWLTXH » :

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 21
22 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

Texte clair I N F O R M A T I Q U E
Indice clair 8 13 5 14 17 12 0 19 8 16 20 4
Indice chiffré 11 16 8 17 20 15 3 22 11 19 23 7
(Indice clair + 3) mod 26
Texte chiffré L Q I R U P D W L T X H

2.2.2 Chiffre affine


Le chiffre affine est une généralisation par rapport à celui de César.

2.2.2.1 Chiffrement
Au lieu de prendre une clé fixe k = 3, il est possible d’utiliser la formule : Ek (x) = (ax + b) mod 26 où
clé= (a, b), a P Z26 et b P Z26 .
Si le coefficient a vaut 1, alors le codage affine correspond au chiffre par décalage.
Exemple : prenons a = 3 et b = 5. Nous avons pour le chiffrement la formule :
Ek (x) = (3x + 5) mod 26
Le texte clair « INFORMATIQUE » aura le texte chiffré correspondant « DSUVEPFKDBNR » comme le montre
le tableau suivant :
Texte clair I N F O R M A T I Q U E
Indice clair 8 13 5 14 17 12 0 19 8 16 20 4
Indice chiffré 3 18 20 21 4 15 5 10 3 1 13 17
(3 ˆ (Indice clair) + 5) mod 26
Texte chiffré D S U V E P F K D B N R

2.2.2.2 Déchiffrement
La fonction de déchiffrement est : Dk (y) = (a´1 y ´ ba´1 ) mod 26, tel que aa´1 = 1 mod 26. D’après le
théorème de Bachet‑Bézout (voir 3.5.3), a´1 existe si a est premier avec 26. Dans notre cas a´1 = 9 dans Z26 , ce
qui donne Dk (y) = (9y ´ 45) mod 26 = (9y + 7) mod 26.
Essayons de vérifier que le déchiffrement de « DSUVEPFKDBNR » avec la clé (3,5) donne bien « INFORMA‑
TIQUE » comme le montre le tableau suivant :
Texte chiffré D S U V E P F K D B N R
Indice chiffré 3 18 20 21 4 15 5 10 3 1 13 17
Indice clair 8 13 5 14 17 12 0 19 8 16 20 4
(9 ˆ(Indice chiffré) + 7) mod 26
Texte chiffré I N F O R M A T I Q U E

2.2.2.3 Cryptanalyse
Il n’existe que 12 entiers compris entre 0 et 26 et premiers avec 26 (1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 et 25). Il n’existe
donc que 12 ˆ 26 = 312 clés de chiffrement possible et non 26 ˆ 26 = 262 = 676. Si l’on sait qu’un code affine a
été utilisé, on peut le casser par force brute en essayant les 312 clés (recherche exhaustive).
Si le cryptogramme est suffisament long, on peut tenter d’identifier les lettres selon leur fréquence d’appa‑
rition dans les messages. En effet une lettre est, par cette méthode, toujours remplacée par la même lettre. La
lettre E, par exemple, étant en français très fréquente, si, dans le message chiffré, la lettre T est très fréquente, on
peut supposer que E est remplacé par T et ne rechercher que les codages affines permettant cette substitution.
Pour plus de détails, voir 10.2.

2.2.3 Chiffre de Vigenère


Le chiffre de Vigenère est un système de chiffrement, élaboré par Blaise de Vigenère (1523‑1596), diplomate
français du XVIe siècle. C’est un système de substitution ou de chiffrement polyalphabétique. Cela signifie
qu’il permet de remplacer une lettre par une autre qui n’est pas toujours la même.
Contrairement au chiffre de César ou à ROT13 qui se contentaient d’utiliser la même lettre de substitution.
C’est donc une méthode relativement plus « solide » que les deux autres. Il résiste ainsi à l’analyse de fréquences,

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 22
2.2 Chiffre par substitution 23

Texte clair t e x t e s e c r e t
indice clair 19 4 23 19 4 18 4 2 17 4 19
indice clé 2 11 4 5 2 11 4 5 2 11 4
indice chiffré 21 15 1 24 6 3 8 7 19 15 23
ECL (xn ) = (xn + CL(n mod 4)) mod 26
Texte chiffre v p b y g d i h t p x

TABLE 2.1 – Chiffrement de Vigenère de « texte secret » avec la clé « clef ».

FIGURE 2.4 – Table de Vigenere.

ce qui est un avantage décisif sur les chiffrements monoalphabétiques. Il a été cassé par le major prussien
Friedrich Kasiski en 1863 et n’offre plus depuis cette époque aucune sécurité.

2.2.3.1 Chiffrement
Pour ce chiffre, une clé se présente généralement sous la forme d’un mot ou d’une phrase. Si la clé est plus
courte que le message clair, elle sera dupliquée autant de fois que nécessaire pour avoir la longueur du texte
clair 2 .
Exemple :
Nous voulons chiffrer le texte clair « texte secret » à l’aide de la clé « clef ». On peut utiliser la formule
ECL (xn ) = (xn + CL(n mod 4)) mod 26 où n est le rang de la lettre x du message clair à chiffrer. CL est
une fonction qui donne l’indice de la lettre de la clé correspondante à xn . Nous avons utilisé (mod 4) dans la
formule de CL parce que la taille de la clé = 4. Le tableau 2.1 illustre le processus de chiffrement.
De la même manière il est possible de se baser sur la fameuse table de Vigenère 2.4. Les colonnes représentent
le texte clair et les lignes le texte chiffré. Pour chiffrer par exemple la lettre claire « t » avec la lettre clé « f » on
obtient la lettre chiffrée « y » qui est la cellule obtenue par l’intersection de la colonne « t » et la ligne « f ».
. 0 1 2 3
. c l e f
CL 2 11 4 5

2. plus la clé sera longue et variée et mieux le texte sera chiffré.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 23
24 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

Texte chiffré v p b y g d i h t p x
indice chiffré 21 15 1 24 6 3 8 7 19 15 23
indice clé 2 11 4 5 2 11 4 5 2 11 4
indice clair 19 4 23 19 4 18 4 2 17 4 19
DCL (yn ) = (yn ´ CL(n mod 4)) mod 26
Texte clair t e x t e s e c r e t

TABLE 2.2 – Déchiffrement de Vigenère de « vpbygdihtpx » avec la clé « clef ».

2.2.3.2 Déchiffrement
On peut utiliser la formule DCL (yn ) = xn = (yn ´ CL(n mod 4)) mod 26. Le processus de déchiffrement est
illustré par le tableau 2.2.
Si nous voulons se baser sur la table de vigenère, alors pour chaque lettre chiffrée y on cherche la lettre de la
clé qui lui correspond. On fixe la ligne de la lettre de la clé et on cherche dans celle‑ci la lettre chiffré. On remonte
dans la colonne pour trouver la lettre claire correspondante. Par exemple, si on veut déchiffrer « g », la lettre
de la clé qui lui correspond est « c ». On cherche dans la ligne « c » la lettre « g » et la colonne correspondante
indique « e » qui est la lettre claire recherchée.

2.2.3.3 Cryptanalyse
Si l’on connait le nombre de symboles que comporte la clé, il devient possible de procéder par analyse de
fréquences sur chacun des sous‑textes déterminés en sélectionnant des lettres du message clair à intervalle
la longueur de la clef (autant de sous‑textes que la longueur de la clef). C’est l’attaque bien connue sur les
chiffrements monoalphabétiques.
Friedrich Wilhelm Kasiski a proposé en 1863 une méthode efficace pour déterminer la taille de la clef (test de
Kasiski) en repérant la répétition de certains motifs dans le message chiffré.
Première 01: Détermination de la longueur de la clé Elle consiste à chercher des répétitions dans le texte
chiffré. Considérons par exemple le mot‑clé « ABCD » qui sert à chiffrer « MESSAGER TRES MESQUIN ME‑
SOPOTAMIEN ».
Clé répétée A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C
Texte en clair M E S S A G E R T R E S M E S Q U I N M E S O P O T A M I E N
Texte chiffré M F U V A H G U T S G V M F U T U J P P E T Q S O U C P I F P

TABLE 2.3 – i

Dans l’exemple ci‑dessus, le trigramme « MES » est chiffré en « MFU » deux fois et « PET » une fois. Babbage et
Kasiski comprirent que des répétitions de cette sorte leur offraient la prise dont ils avaient besoin pour attaquer
Vigenère.

1. soit la même séquence de lettres du texte clair a été chiffrée avec la même partie de la clef.
2. soit deux suites de lettres différentes dans le texte clair auraient (possibilité faible) par pure coïncidence
engendré la même suite dans le texte chiffré.

Le premier cas étant le plus probable, on calcule le nombre de lettres entre deux séquences identiques. Dans
notre cas, il y a 12 lettres entre les deux « MFU », on en déduit que la longueur de la clé est un diviseur de 12 (sinon
la clé et les deux « MES » ne seraient pas alignés). La clé peut donc posséder soit 12, 6, 4, 3 ou 2 lettres (avec une
lettre, nous aurions un chiffrement monoalphabétique facilement cassé avec une analyse fréquentielle). Avec
un texte plus long, on découvrirait d’autres séquences qui permettraient d’affiner le résultat et réduire la taille
de la clé à une ou deux possibilités.

2.2.4 Autres chiffres par substitution


— Les substitutions homophoniques :au lieu d’associer un seul caractère chiffré à un caractère clair, on dis‑
pose d’un ensemble de possibilités de substitution de caractères dans laquelle on choisit aléatoirement.
— Les substitutions de polygrammes : au lieu de substituer des caractères on substitue par exemple des
digrammes (groupes de deux caractères)

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 24
2.3 Chiffres par transposition 25

— Au moyen d’une table (système de Playfair)


— Au moyen d’une transformation mathématique (système de Hill).
— Le masque pseudo aléatoire :Principe du masque jetable 3 mais en utilisant un masque pseudo aléatoire
(le grain est la clé).

FIGURE 2.5 – Substitution homophonique Henri IV 1595.

2.3 Chiffres par transposition


Un chiffrement par transposition (ou chiffrement par permutation) est un chiffre qui consiste à changer l’ordre
des lettres, donc à construire des anagrammes. Cette méthode est connue depuis l’Antiquité, puisque les Spar‑
tiates utilisaient déjà une scytale.

2.3.1 Principe général


On procède à un réarrangement de l’ensemble des caractères (une transposition) qui cache le sens initial. La
technique est très peu résistante aux attaques statistiques. Le plus souvent on utilise deux visions géométri‑
quement différentes du texte.

FIGURE 2.6 – Scytale.

Le chiffrement par transposition demande de découper le texte clair en blocs de taille identique ; la même
permutation est alors utilisée sur chacun des blocs. Le texte doit éventuellement être complété (procédé de
bourrage) pour permettre ce découpage. La clé de chiffrement est la permutation elle‑même.
Le nombre de permutations possibles d’une longueur donnée, qui est la factorielle de cette longueur, aug‑
mente donc rapidement avec celle‑ci. Par exemple un mot de trois lettres ne peut être permuté que dans 6(= 3!)
positions différentes. Ainsi « col » ne peut se transformer qu’en « col », « clo », « ocl », « olc », « lco » ou « loc ».
Lorsque le nombre de lettres croît, le nombre d’arrangements augmente rapidement et il devient plus dif‑
ficile de retrouver le texte original sans connaître la permutation, et sans aucune connaissance sur le texte
clair. Ainsi pour un chiffre par transposition qui utilise des blocs de 20 caractères, il y a 20! possibilités, soit
2432902008176640000 combinaisons.
Exemple de transposition matricielle : Le message en clair est écrit dans une matrice. La clé une permutation
de [1..n] ou n est le nombre de colonne. La technique de transposition consiste à lire la matrice en colonne selon
un ordre donné par la clé.
3. Appelé aussi chiffre de Vernam.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 25
26 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

Le message clair : MESSAGE SECRET A CHIFFRER PAR TRANSPOSITION.


1 6 4 3 2 5
M E S S A G
E S E C R E
T A C H I F
F R E R P A
R T R A N S
P O S I T I
O N
Le message crypté est donc : METFRPO ARIPNT SCHRAI SECERS GEFASI ESARTON.

2.4 Chiffre par bloc et chiffre de flux


Le chiffrement par bloc (‫( )ﺗﺸﻔﻴﺮ ﻛﺘﻞ‬en anglais block cipher) est une des deux grandes catégories de chiffre‑
ments modernes en cryptographie symétrique, l’autre étant le chiffrement par flot. La principale différence
vient du découpage des données en blocs de taille généralement fixe pour les chiffres par bloc. La taille de bloc
est comprise entre 32 et 512 bits, dans le milieu des années 1990 le standard était de 64 bits mais depuis 2000 et
le concours AES le standard est de 128 bits. Les blocs sont ensuite chiffrés les uns après les autres.
Un chiffrement itératif résulte de l’application itérée d’un chiffrement (en général un chiffrement produit).

2.4.1 Architecture des cryptosystèmes symétriques par bloc


L’architecture classique d’un système de chiffrement par bloc est illustrée dans la figure 2.7. Le texte clair
est d’abord découpé en blocs de taille fixe et sont traités l’un après l’autre. Un bloc passe éventuellement une
phase de préttraitement (optionnelle) et entame ensuite une série de phases appelées chacune un tour. Chaque
itération représente un tour ou une ronde (round en anglais) fait intervenir une sous‑clé (clé de tour ouclé
secondaire) qui est dérivée (on dit souvent cadencée) de la clé principale (clé secrète K).
Dans les systèmes actuels, le chiffrement est obtenu en itérant une fonction de tour qui est cryptographique‑
ment faible dans le sens où elle ne constitue pas à elle seule un système suffisamment robuste. Chaque tour
prend en entrée la sortie du tour précédent (ou le bloc de texte clair dans le cas du premier tour) et chiffre cette
entrée grâce à la fonction de tour et la clé secondaire correspondante. Le nombre de tours sera noté n. Si M est
un bloc de texte clair, on calcule successivement :
#
M0 = M
Mi = F (Mi´1 , Ki ) i = 1 . . . n

Et finalement, C = Mn . Tel que F : t0, 1utd ˆ t0, 1utr Ñ t0, 1utd , où td est la taille du bloc clair et tr est celle
de la clé secondaire.
Le calcul est parfois augmenté d’une phase de post‑traitement (optionnel) après la dernière itération.
La clé de tour est obtenue à partir de la clé secrète. Ainsi pour mener à bien le calcul itératif que nous venons
de décrire, on doit donc associer à la clé secrète K, de taille tk, n sous‑clés (ou clés de tour) de taille tr. Le procédé
qui permet de calculer ces sous‑clés est appelé schéma de diversification de la clé ou schéma de production
des sous‑clés ou encore la dérivation de sous clés.

2.4.2 Le chiffrement de flux


Le chiffrement de flux ou chiffrement par flot (‫( )ﺗﺸﻔﻴﺮ ﺗﺪﻓﻘﻲ‬En anglais stream cipher) peut traiter des don‑
nées de longueur quelconque et n’a pas besoin de les découper. Il est largement utilisé dans des systèmes et
des applications temps‑réel (transmission video/audio par exemple). Il est de pratique courante d’utiliser des
« générateurs pseudo‑aléatoires » comme base pour engendrer la clé privée. Plus précisément, le générateur
pseudo‑aléatoire est utilisé pour fournir un flux de bits additionnés (XOR) avec les bits correspondants du
texte clair pour produire des bits du texte chiffré. Autrement dit, la séquence pseudo‑aléatoire générée (dé‑
terminée par une clé secrète partagée à priori) est utilisée comme « masque jetable » 4 au lieu d’une séquence
4. One‑time pad.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 26
2.4 Chiffre par bloc et chiffre de flux 27

FIGURE 2.7 – Architecture classique des cryptosystèmes symétriques par bloc.

véritablement aléatoire, avec l’avantage que la séquence générée peut être beaucoup plus longue que la clé (ce
qui n’est pas possible pour une séquence purement aléatoire).
La figure 2.8 illustre le fonctionnement d’un chiffre par flux. Les bits mi du texte clair sont additionnés (mo‑
dulo 2) avec les bits si du flux de la clé pour obtenir les bits ci du texte chiffré. Le flux si est obtenu d’un géné‑
rateur de nombres pseudo‑aléatoires avec comme germe la clé secrète partagée k. Il est qualifié de synchrone
si le flux de bits si ne dépend que de la clé k et asynchrone s’il dépend également du texte chiffré précédent.
Une liste non‑exhaustive de systèmes de chiffrement par flot est :
1. A5/1, algorithme publié en 1994, utilisé dans les téléphones mobiles de type GSM pour chiffrer la commu‑
nication par radio entre le mobile et l’antenne‑relais la plus proche,
2. RC4, le plus répandu, conçu en 1987 par Ronald Rivest, utilisé notamment par le protocole WEP du WiFi.
3. Py, un algorithme récent d’Eli Biham.
4. E0 utilisé par le protocole Bluetooth.

FIGURE 2.8 – Chiffre par flux synchrone et asynchrone.

Toutefois, le XOR n’est pas la seule opération possible. L’opération d’addition dans un groupe est également
envisageable (par exemple, addition entre deux octets, modulo 256). Un chiffrement par bloc peut être converti

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 27
28 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

en un chiffrement par flot grâce à un mode opératoire qui permet de chaîner plusieurs blocs et traiter des
données de taille quelconque.
Soit ‘ l’opération booléenne XOR :
1. Chiffrement du message M avec la clé K : M ‘ K = C
2. Déchiffrement du message C avec la clé K : C ‘ K = (M ‘ K) ‘ K = M ‘ (K ‘ K) = M
Le projet eStream 5 du réseau ECRYPT 6 a vu le jour en 2004 ayant pour but, après quatre ans, de produire
un portfolio pour promouvoir de nouveaux systèmes de chiffrement par flot. Actuellement, il recommande au
total sept 7 algorithmes dans deux catégories différentes hardware et software (par ordre alphabétique) :

Software Hardware
128‑bit key 80‑bit key
HC‑128 Grain v1
Rabbit MICKEY v2
Salsa20/12 Trivium
Sosemanuk ‑

TABLE 2.4 – Portfolio d’eStream 2012.

2.5 Modes opératoires


Un chiffrement par bloc fournit simplement une méthode de chiffrement d’une seule chaîne de n bits, et non
pas un « MESSAGE » de longueur arbitraire. Par ailleurs, même quand il est seulement nécessaire de chiffrer
une chaîne de n bits, un mode de fonctionnement devrait être employé pour éviter les attaques cryptanalytiques
résultant de la répétition de fragments de « texte clair » (renforcer la sécurité). Il est également possible de
transformer un chiffrement par bloc en un chiffrement par flot en utilisant un mode d’opération.

2.5.1 ECB
D’abord le texte clair M est découpé en r blocs : M = m1 ||m2 || . . . ||mr . Ce mode dit Electronic CodeBook
ou Dictionnaire de codes permet de chiffrer (déchiffrer) chaque bloc indépendamment des autres, voir les fi‑
gures 2.9 et 2.10.
Pour le chiffrement ci = Ek (mi ) et le déchiffrement mi = Dk (ci ).
Le texte clair M est découpé en blocs mi où chacun est chiffré séparément des autres donnant lieu à un bloc
chiffré ci . Ensuite, les blocs chiffrés sont concaténés pour former le message chiffré C.
Il faut noter qu’utilisant la même clé, deux blocs de texte en clair identiques donnent deux blocs chiffrés
également identiques et vice versa.

FIGURE 2.9 – Chiffrement en mode ECB.

Les avantages de ce mode sont les suivants :

5. http://www.ecrypt.eu.org/stream/index.html
6. http://www.ecrypt.eu.org/
7. L’algorithme F‑FCSR‑H v2 proposé en 2008 sous le profile Hardware a été éliminé suite à la publication des résultats d’attaques
cryptanalytiques.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 28
2.5 Modes opératoires 29

FIGURE 2.10 – Déchiffrement en mode ECB.

1. Le travail de chiffrement ou de déchiffrement peut être parallélisé. Plusieurs machines ou processus


peuvent travailler simultanément sur des parties différentes du message.
2. Il permet un accès aléatoire dans le texte chiffré (déchiffrer un bloc cj sans avoir a déchiffrer les blocs
précédents ni suivants).
3. Une erreur de transmission d’un bit affecte uniquement le déchiffrement du bloc courant (pas de propa‑
gation d’erreurs).
4. Rapidité du chiffrement et du déchiffrement.

Par contre, ce mode a les inconvénients suivants :

1. Les textes clairs identiques chiffrés avec la même clé k donnent des textes chiffrés identiques.
2. Les répétitions de séquences binaires (pas forcément des blocs) dans le texte clair ne sont pas masquées
et se retrouvent sous la forme de répétitions de séquences binaires dans le texte chiffré.
3. Des portions complètes du message peuvent être modifiées, répétées ou remplacées sans difficulté (at‑
taque reply).
4. Ne respecte pas l’intégrité des données. Possibilité de remplacer certains blocs chiffrés par d’autres blocs
chiffrés, ou permuter deux blocs, sans que le destinataire s’en aperçoive.
5. Vulnérable aux attaques texte‑clair/texte‑chiffré même en ignorant totalement la clé.
6. La perte de synchronisation (perte ou ajout d’un bit) est irrécupérable.

2.5.2 CBC
(Cipher Block Chaining) inventé par IBM en 1976 où on chaîne le chiffrement (déchiffrement). On effectue un
XOR entre le bloc en clair actuel et le bloc chiffré précédent avant le chiffrement. D’abord le texte clair M est
découpé en r blocs : M = m1 ||m2 || . . . ||mr . Le premier bloc est additionné (XOR) avec un Vecteur Initial (IV)
généré souvent de façon aléatoire. Voir les figures 2.11 et 2.12.
ci = EK (mi ‘ ci´1 ), c1 = EK (m1 ‘ IV )
mi = DK (ci ) ‘ ci´1 , m1 = DK (c1 ) ‘ IV .

FIGURE 2.11 – Chiffrement en mode CBC.

Le déchiffrement avec un IV incorrect donne un premier bloc de texte en clair erroné, mais les blocs de texte
en clair suivants seront valides.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 29
30 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

FIGURE 2.12 – Déchiffrement en mode CBC.

Les avantages de ce mode sont les suivants :


1. Les répétitions de texte en clair sont masquées dans le texte chiffré.
2. La valeur du vecteur d’initialisation IV n’a pas besoin d’être secrète.
3. Accès aléatoire aux texte chiffré.
4. Parallélisation possible du déchiffrement.
Par contre, ce mode a les désavantages suivants :
1. Deux textes en clair commençant pareil auront le même début du texte chiffré (Si le même IV est utilisé).
2. Une erreur de transmission d’un bit affecte uniquement le décodage du bloc courant ainsi que le décodage
du même bit dans le bloc suivant (propagation limitée).
3. La perte de synchronisation (perte ou ajout d’un bit) est irrécupérable.

2.5.3 PCBC
Propagating cipher‑block chaining ou plaintext cipher‑block chaining. Il a été conçu pour produire de petits
changements dans le texte chiffré à propager indéfiniment lors du déchiffrement, ainsi que lors du chiffrement 8 .
Voir les figures 2.13 et 2.14. Les algorithmes de chiffrement et de déchiffrement sont comme suit :
ci = EK (mi ‘ mi´1 ‘ ci´1 ), c1 = EK (IV ‘ m1 )
mi = DK (ci ) ‘ mi´1 ‘ ci´1 , m1 = IV ‘ DK (c1 )

FIGURE 2.13 – Chiffrement en mode PCBC.

2.5.4 Cipher Feedback Chaining CFB


Cipher Feedback Chaining ou chiffrement à rétroaction. Ce mode et les suivants agissent comme un chiffre‑
ment par flux. Ils génèrent un flux de clés qui est ensuite appliqué au document original. Dans ce mode, le flux
de clé est obtenu en chiffrant le précédent bloc chiffré. CFB est un chiffrement par flot. Son grand intérêt est
qu’il ne nécessite que la fonction de chiffrement, ce qui le rend moins cher à câbler ou programmer pour les
algorithmes ayant une fonction de chiffrement différente de la fonction de déchiffrement (exemple : AES).
8. PCBC est utilisé dans Kerberos v4 et WASTE

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 30
2.5 Modes opératoires 31

FIGURE 2.14 – Déchiffrement en mode PCBC.

2.5.4.1 Forme simple


Dans sa forme simple, ce mode ressemble à CBC. On chiffre d’abord le bloc chiffré précédent avec la clé secrète
puis l’additionner avec le bloc claire (ou exclusif). Voir les figures 2.18 et 2.16.

FIGURE 2.15 – Chiffrement en mode CFB simple.

FIGURE 2.16 – Déchiffrement en mode CFB.

D’abord le texte clair M est découpé en r blocs : M = m1 ||m2 || . . . ||mr . Les opérations de chiffrement et de
déchiffrement se déroulent comme suit :
ci = EK (ci´1 ) ‘ mi et c1 = EK (IV ) ‘ m1 .
mi = EK (ci´1 ) ‘ ci et m1 = EK (IV ) ‘ c1 .

2.5.4.2 Version détaillée


Dans sa version détaillée (ISO/IEC 10116) appelée CFB‑j ce mode nécessite deux paramètres s : (1 ď s ď n),
la taille de la variable de rétroaction (feedback) et j : (1 ď j ď s) le nombre de bits de texte clair à chiffrer pour
chaque étape (généralement, la taille du bloc clair ici est inférieure à la taille du bloc exigée par le système de
chiffrement).
En pratique, il semblerait judicieux de toujours choisir j = s. En fait, ce qui est recommandé par la deuxième
édition de la norme ISO/IEC 10116 et tout autre choix semble réduire le niveau global de sécurité du schéma.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 31
32 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

De manière détaillée, le texte clair est découpé en blocs mi de taille j où 1 ď j ď n et n la taille d’un bloc 9 . En
plus du texte clair M = m1 m2 . . . mr , on a besoin d’un bloc initial IV de taille n tiré aléatoirement. On calcule
alors successivement :
I1 = IV , Z1 = EK (IV ), c1 = m1 ‘ M SBj (Z1 ),
I2 = LSBn´j (IV )||c1 , Z2 = EK (I2 ), c2 = m2 ‘ M SBj (Z2 ),
I3 = LSBn´j (I2 )||c2 , Z3 = EK (I3 ), c3 = m3 ‘ M SBj (Z3 ),

Ir = LSBn´j (Ir´1 )||cr´1 , Zr = EK (Ir ), cr = mr ‘ M SBj (Zr ).
Tel que B1 ||B2 représente le bloc formé par la concaténation (la juxtaposition) des deux blocs B1 et B2 . M SBu (B)
représente le bloc constitué par les u bits de B les plus à gauche (les u bits les plus significatifs). u est un entier
et 0 ď u ď n et n est la taille de B en bits. LSBu (B) représente le bloc des u bits de B les plus à droite (les u
bits les moins significatifs).
Par exemple : LSB3 (111011010) = 010, M SB4 (111011010) = 1110, et 001||10111 = 00110111.
Le déchiffrement s’effectue en calculant successivement :
I1 = IV , Z1 = EK (I1 ) = EK (IV ), m1 = c1 ‘ M SBj (Z1 )
I2 = LSBn´j (I1 )||c1 , Z2 = EK (I2 ), m2 = c2 ‘ M SBj (Z2 )

Ir = LSBn´j (Ir´1 )||cr´1 , Zr = EK (Ir ), mr = cr ‘ M SBj (Zr )
Si le dernier bloc mr est incomplet (sa taille t ă j), aucun remplissage n’est requis et le chiffrement (ou
déchiffrement) se fait comme suit :
cr = mr ‘ M SBt (Zr ) et mr = cr ‘ M SBt (Zr ).

FIGURE 2.17 – Chiffrement en mode CFB détaillé (j = s).

Il est tout à fait possible de réaliser ce schéma utilisant un registre à décalage.


Les avantages de ce mode sont les suivants :

1. Il est possible de chiffrer un flot de valeurs plus petites que la taille standard du bloc géré par l’algorithme.
2. Les répétitions de texte en clair sont masquées dans le texte chiffré.
3. La valeur du vecteur d’initialisation IV n’a pas besoin d’être secrète.
4. La perte de synchronisation (perte ou ajout d’un bit) est récupérable.
5. Le padding n’est pas nécessaire (facilement évitable).
9. Le mode CFB est couramment utilisé sur des blocs de 8 bits ainsi que sur des blocs entiers.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 32
2.5 Modes opératoires 33

FIGURE 2.18 – Déchiffrement en mode CFB détaillé (j = s).

Par contre, ce mode a les désavantages suivants :


1. Une erreur de transmission d’un bit affecte uniquement le décodage du bloc courant ainsi que le décodage
du même bit dans le bloc suivant (propagation limitée).
Les avantages de ce mode sont :

1. Même fonction pour le chiffrement et le déchiffrement (E).


2. Blocs identiques dans le message clair seront différents dans le message chiffré.
3. Accès aléatoire au texte chiffré.
4. Parallélisation du déchiffrement.
n
5. Propagation limitée d’erreurs. Un bloc chiffré erroné produit j blocs clairs erronés.
6. IV n’est pas secret.
7. Comme CBC, le déchiffrement peut être parallélisé.

Ses inconvénients sont :


1. Comme CBC, les modifications du texte en clair se propagent indéfiniment dans le texte chiffré.
2. Le chiffrement ne peut pas être parallélisé.
n
3. Performances réduites de j par rapport à CBC.

2.5.5 Output Feedback Chaining OFB


Output Feedback Chaining ou chiffrement à rétroaction de sortie. Dans ce mode, le flux de clé est obtenu en
chiffrant le précédent flux de clé. C’est un mode de chiffrement de flot qui possède les mêmes avantages que
CFB. De plus, il est possible de le précalculer en chiffrant successivement le vecteur d’initialisation. Il n’est donc
sûr que si la fonction de chiffrement alliée à la clé forment une bonne suite pseudo‑aléatoire.

2.5.5.1 Version simple


Voir les figures 2.21 et 2.22.
A partir d’un bloc initial O1 = IV tiré aléatoirement, on construit un masque jetable par itération. Dans le sa
version simple, les algorithmes de chiffrement et de déchiffrement sont comme suit :
ci = EK (Oi ) ‘ mi et O1 = IV .
mi = EK (Oi ) ‘ ci et O1 = IV .
Le message chiffré est O1 c1 c2 . . . ck .

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 33
34 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

FIGURE 2.19 – Chiffrement en mode CFB en générale.

FIGURE 2.20 – Déchiffrement en mode CFB en générale.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 34
2.5 Modes opératoires 35

FIGURE 2.21 – Chiffrement en mode OFB simple.

FIGURE 2.22 – Déchiffrement en mode OFB simple.

Le déchiffrement s’effectue en calculant les Oi successifs à partir de O1 comme on l’a fait pour le chiffrement
puis en écrivant mi = ci ‘ Oi.
Dans sa version détaillée, ce mode nécessite un paramètre j : (1 ď j ď n) qui est le nombre de bits du texte
clair à chiffrer pour chaque étape. (La taille du bloc clair est généralement plus petite que la taille du bloc exigée
par le système de chiffrement).

2.5.5.2 OFB selon FIPS 81


Le texte clair est découpé en blocs mi de taille j où 1 ď j ď n et n est la taille d’un bloc. En plus du texte clair
M = m1 m2 . . . mr , on a besoin d’un bloc initial IV de taille n tiré aléatoirement. On calcule alors successive‑
ment :
O1 = IV , Z1 = EK (O1 ) = EK (IV ), c1 = m1 ‘ M SBj (Z1 ),
O2 = LSBn´j (O1 )||M SBj (Z1 ), Z2 = EK (O2 ), c2 = m2 ‘ M SBj (Z2 ),
O3 = LSBn´j (O2 )||M SBj (Z2 ), Z3 = EK (O3 ), c3 = m3 ‘ M SBj (Z3 ),

Or = LSBn´j (Or´1 )||M SBj (Zr´1 ), Zr = EK (Or ), cr = mr ‘ M SBj (Zr ).
Le déchiffrement s’effectue en calculant successivement :
O1 = IV , Z1 = EK (I1 ) = EK (IV ), m1 = c1 ‘ M SBj (Z1 )
O2 = LSBn´j (O1 )||M SBj (Z1 ), Z2 = EK (O2 ), m2 = c2 ‘ M SBj (Z2 )

Or = LSBn´j (Or´1 )||M SBj (Zr´1 ), Zr = EK (Or ), mr = cr ‘ M SBj (Zr )
Le mode simple correspond à j = n et lorsque j = 1 on obtient un chiffre par flux.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 35
36 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

FIGURE 2.23 – Chiffrement en mode OFB détaillé.

FIGURE 2.24 – Déchiffrement en mode OFB détaillé.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 36
2.5 Modes opératoires 37

2.5.5.3 OFB selon ISO 10116


Selon le standard ISO 10116, le mode détaillé est légèrement différent. La séquence binaire à chiffrer Oi est
exactement le résultat de chiffrement précédent sans subir d’autres opérations. Le fonctionnement est illustré
par les figures 2.25 et 2.25.
On calcule alors successivement :
O1 = IV , Z1 = EK (O1 ) = EK (IV ), c1 = m1 ‘ M SBj (Z1 ) The j leftmost bits of Z1 ,
O2 = Z1 , Z2 = EK (O2 ), c2 = m2 ‘ M SBj (Z2 ),
O3 = Z2 , Z3 = EK (O3 ), c3 = m3 ‘ M SBj (Z3 ),

Or = Zr´1 , Zr = EK (Or ), cr = mr ‘ M SBj (Zr ).

FIGURE 2.25 – Chiffrement en mode OFB ISO 10116.

Le déchiffrement s’effectue en calculant successivement :


O1 = IV , Z1 = EK (I1 ) = EK (IV ), m1 = c1 ‘ M SBj (Z1 )
O2 = Z1 , Z2 = EK (O2 ), m2 = c2 ‘ M SBj (Z2 )

Or = Zr´1 , Zr = EK (Or ), mr = cr ‘ M SBj (Zr )

FIGURE 2.26 – Déchiffrement en mode OFB ISO 10116.

Si le dernier bloc mr est incomplet (sa taille t ă j), aucun remplissage n’est requis et le chiffrement (ou
déchiffrement) se fait comme suit :
cr = mr ‘ M SBt (Zr ) et mr = cr ‘ M SBt (Zr )

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 37
38 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

Les avantages de ce mode sont les suivants :


1. Les répétitions de texte en clair sont masquées dans le texte chiffré.
2. La valeur du vecteur d’initialisation IV n’a pas besoin d’être secrète.
3. Ce mode ne propage pas les erreurs. Une erreur de transmission d’un bit affecte uniquement ce bit lors
du décodage.
4. Le chiffrement et le déchiffrement peuvent être parallélisées si le flux de clé est calculé au préalable.
5. Utilisation de l’algorithme de chiffrement E uniquement.
Par contre, ce mode a les désavantages suivants :

1. La perte de synchronisation (perte ou ajout d’un bit) est irrécupérable.

2.5.6 CTR
CounTeR ou Chiffrement basé sur un compteur et connu aussi sous le nom Integer Counter Mode (ICM)
et Segmented Integer Counter (SIC) mode. Dans ce mode, le flux de clé est obtenu en chiffrant les valeurs
successives d’un compteur comme illustré dans les figures 2.27 et 2.28. Il combine de nombreux avantages, car
il permet le chiffrement par flot, est précalculable, permet un accès aléatoire aux données, est parallélisable et
n’utilise que la fonction de chiffrement. Le compteur utilisé peut être une suite pseudo‑aléatoire qu’il sera facile
de retrouver à partir de la graine (vecteur d’initialisation).

FIGURE 2.27 – Chiffrement en mode CTR.

FIGURE 2.28 – Déchiffrement en mode CTR.

Pour le chiffrement, le texte clair M est découpé en blocs de taille j ď n (la taille du bloc clair est inférieure
ou égale à la taille exigée par le système de chiffrement). Dans ce mode on dispose d’un compteur de taille j

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 38
2.5 Modes opératoires 39

et une nonce (valeur aléatoire) de n ´ j bits. On prend une valeur initiale aléatoire CT R1 pour ce compteur 10 .
On calcule alors :
Z1 = EK (CT R1 ), c1 = m1 ‘ Z1 . Puis on incrémente le compteur.
En générale, on calcule successivement :
CT Ri = CT Ri´1 + 1 mod 2n , Zi = EK (CT Ri ), ci = mi ‘ M SBj (Zi ).
Le texte chiffré transmis est constitué de la valeur CT R1 du compteur suivi des blocs c1 c2 . . . ck .
Pour le déchiffrement, Il se fait en calculant succéssivement à partir de la valeur initiale du compteur :
Zi = EK (CT Ri ), mi = ci ‘ M SBj (Zi ), CT Ri+1 = CT Ri + 1 mod 2n ,
Le mode CTR est un mode très simple à implémenter. Il est très sûr et n’utilise pas la fonction de déchiffre‑
ment. Le texte chiffré, qui doit contenir la valeur initiale du compteur, est un peu plus long que le texte clair.
On peut dans ce mode faire des accès aléatoires de manière plus commode que dans le mode OFB puisqu’il
faut seulement chiffrer la valeur du compteur pour le bloc considéré. Ce mode est particulièrement intéressant.
Si le dernier bloc mr est incomplet (sa taille t ă j), aucun remplissage n’est requis et le chiffrement (ou
déchiffrement) se fait comme suit :
cr = mr ‘ M SBt (Zr ) et mr = cr ‘ M SBt (Zr )

2.5.7 Authenticated encryption modes


...............................

2.5.8 CTS
CipherText Stealing ou chiffrement avec vol de texte. Dans ce mode, applicable à un chiffrement par blocs
(ECB, CBC, etc.), les deux derniers blocs sont partiellement combinés de façon à obtenir un message de même
taille. Ici, un exemple de CTS opérant sur un chiffrement en mode CBC sur la figure 2.29. Le dernier bloc est
complété d’abord par des zeros puis combiné (ou exclusif) avec le bloc chiffré précédent avant d’être chiffré.

FIGURE 2.29 – CTS opérant sur un chiffrement en mode CBC.

Les deux derniers blocs sont échangés et combinés en partie, ce qui nécessitera de les obtenir tous les deux
pour en décrypter un. CTS n’est pas un mode de chiffrement par flot, mais permet d’éviter l’utilisation de
bourrage dans les chiffrements par blocs, et donne une taille de message crypté égale à la taille du message
clair. Il est très utilisé dans les protocoles ou formats ne supportant pas une taille quelconque.
Une liste non‑exhaustive de chiffrements par bloc :
1. DES, l’ancêtre conçu dans les années 70, a été passablement étudié
2. AES, le remplaçant de DES
3. Blowfish, Serpent et Twofish, des alternatives à AES

10. Dans la recommandation NIST Recommendation SP 800‑38A, j = n. Ainsi, les blocs clairs ont la taille exigée par le système de
chiffrement.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 39
40 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

FIGURE 2.30 – Comparaison des modes opératoires.

2.6 Padding
En plus, la plupart des modes d’opération nécessitent un texte en clair divisé en une série de blocs d’une
longueur q fixe donnée. Le dernier bloc peut avoir une longueur inférieure à q. Ce phénomène nécessite un
remplissage (bourrage) pour compléter le bloc et obtenir la taille exigée.
Pour résoudre ce problème, l’expéditeur et le destinataire doivent se mettre d’accord sur une méthode de
remplissage. Une méthode de remplissage implique le rajout de bits au texte clair selon une formule convenue.
Pour le chiffrement par bloc, le remplissage permet d’avoir un bloc de la taille adéquate si celui‑ci est trop
court. Pour le chiffrement par flot, il permet d’éviter d’avoir une longueur par flot susceptible d’être attaquée,
cela évite aussi que l’attaquant ne connaisse la taille du flux.
En cryptographie asymétrique, les cryptosystèmes considèrent souvent le message en clair comme un très
grand nombre qui est injecté dans une formule. Ces nombres ont souvent des propriétés qui doivent être respec‑
tées et le remplissage permet de garantir ces caractéristiques. La plupart des fonctions de hachage découpent
les données en blocs de taille fixe et le dernier bloc doit être rempli de manière adéquate.
Le remplissage permet également d’éviter d’avoir une longueur par flot susceptible d’être attaquée, ce qui
évite aussi que l’attaquant ne connaisse la taille réelle du flux ;
Tous les mécanismes de remplissage (sauf occasionnellement le Zero Padding) ajoutent un bloc supplémen‑
taire de remplissage même lorsque le dernier bloc clair est complet. Dans ce cas, le bloc de remplissage supplé‑
mentaire sera une chaîne d’octets égale à la longueur d’octet de la taille de bloc du chiffrement (par exemple 16
pour AES, 8 pour Triple‑DES).
Seulement les deux modes d’opération ECB et CBC nécéssitent un remplissage. Les autres modes (CTR,
OFB, CFB, …) n’ont pas nesoin de remplissage.

2.6.1 Bit padding


Le remplissage de bits est applicable aux messages de n’importe quelle taille. Un seul bit à « 1 » est ajouté au
message, puis autant de bits à « 0 » que nécessaire (éventuellement aucun) sont ajoutés. Le nombre de bits à
« 0 » ajoutés dépendra de la taille de bloc exigée. En termes de bits, c’est « 1000 …0000 ».
Cette méthode peut être utilisée pour remplir des messages d’un nombre quelconque de bits, pas nécessai‑
rement d’un nombre entier d’octets. Par exemple, un message de 41 bits qui est complété par 23 bits afin de

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 40
2.6 Padding 41

remplir un bloc de 64 bits :


∥1101 0101 | 1100 0010 | 0000 0010 | 0011 0101 | 1010 1000 | 1100 0000 | 0000 0000 | 0000 0000 ∥
Ce remplissage est la première étape d’un schéma de bourrage en deux étapes utilisée dans de nombreuses
fonctions de hachage dont MD5 et SHA notamment. Dans ce contexte, il est spécifié par RFC1321 11 . Ce schéma
est défini par la norme ISO/CEI 9797‑1 comme Padding Method 2.

2.6.2 TBC Padding :


Trailing Bit Complement Padding fonctionne comme suit :
Si les données se terminent par un bit à « 0 », tous les bits de remplissage seront des bits à « 1 ». Si les données
se terminent par un bit à « 1 », tous les bits de remplissage seront des bits à « 0 ».
∥1010 0001 1011 1111∥
∥1010 0001 1100 0000∥

2.6.3 Zero padding :


Connu aussi sous le nom null padding ou zero byte padding. Tous les octets de remplissage ont la valeur 0.
Ce schéma n’est pas été normalisé pour le chiffrement, mais il est spécifié pour les fonctions de hachage et les
MACs comme Padding method 1 dans ISO/IEC 10118‑1 et ISO/IEC 9797‑1.
Avec une taille de bloc de 128 bits, un bloc de 8 octets est remplis comme suit :
∥0x3D|0x0A|0x65|0x08|0x74|0x81|0x67|0x5E|0xCA|0x00|0x00|0x00∥
Si le bloc clair se termine par des octets « zero », ce schéma est ambigue si on cherche à retirer le remplissage
car il est impossible de distinguer les données utiles des données de remplissage.

2.6.4 ISO 7816‑4 Padding :


C’est une norme de communication pour les cartes à puce contenant un système de fichier et ressemble au
schéma Bit Padding. Commencer le remplissage par un bit à 1 suivi de bits à 0 ce qui correspond aux valeurs
d’octet (en hexadécimal) 80 00 00 . . ..
L’exemple suivant illustre un remplissage de 4 octets lorsque la taille du bloc exigée est de 8 octets :
∥0x3D|0x0A|0x65|0x08|0x74|0x81|0x67|0x5E∥0x22|0x47|0x39|0x70|0x80|0x00|0x00|0x00∥
L’exemple suivant illustre un remplissage d’un seul octet :
∥0x08|0x04|0x81|0x61|0x50|0x22|0x47|0x39∥0x20|0x51|0x18|0x11|0x01|0x91|0x33|0x80∥

2.6.5 ANSI X9.23:


Les octets remplis de zéros (ou de valeurs aléatoires) sont rajoutés et le dernier octet définit les limites de rem‑
plissage en contenant le nombre d’octets rajoutés. Par exemple, la taille du bloc est de 8 octets, et le remplissage
est nécessaire pour 5 octets :
∥0x27|0x3F|0xEE|0x41|0x9B|0xD8|0x2D|0xDD∥0xAE|0xB5|0xDD|0x3C|0x85|0x00|0x00|0x04∥

2.6.6 ISO 10126‑1 et ISO 10126‑2 (1991) :


Ces normes sont retirées. Des octets de valeurs aléatoires sont rajoutés et le dernier octet définit les limites
de remplissage et contient le nombre d’octets de remplissage (y compris ceui‑ci). Par exemple, la taille du bloc
est de 8 octets, et le remplissage est nécessaire pour 4 octets :
∥0x27|0x3F|0xEE|0x41|0x9B|0xD8|0x2D|0xDD∥0xAE|0xB5|0xDD|0x3C|0x81|0xE8|0x3A|0x04∥

11. http://www.faqs.org/rfcs/rfc1321.html étape 3.1

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 41
42 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

2.6.7 PKCS#5 et PKCS#7:


Ce schéma est Utilisée par PKCS#5, PKCS#7 et RFC 5652 Cryptographic Message Syntax (CMS) Section 6.3
(anciennement RFC 3852 qui a remplacé RFC 3369 et RFC 2630). Le standard PKCS définit des remplissages
qui évitent des attaques potentielles dans le cadre de la cryptographie asymétrique. pour PKCS#5, la chaine de
remplissage (Padding String) est une séquence d’octets identiques qui indique sa taille : P S = 01, si ||M || mod
8 = 7 ; P S = 02 02, si ||M || mod 8 = 6 ; …, P S = 08 08 08 08 08 08 08 08, si |M || mod 8 = 0. Le remplissage
est effectué même si le texte en clair original est d’une taille multiple à celle d’un bloc. PS est constituée de
8 ´ (||M || mod 8) octets tous ayant la valeur 8 ´ (||M || mod 8). Typiquement, PKCS#5 est conçue pour des
blocs de taille 08 octets (64 bits). PKCS#7 est une généralisation dans le sens où la taille du bloc est de 1 à 256
octets. On complète par k ´ (||l|| mod k) octets tous de valeur k ´ (||l|| mod k), où l la taille du bloc en entrée
et k est la taille d’un bloc standard. Par exemple, la taille du bloc est de 8 octets, et le remplissage est nécessaire
pour 4 octets :
∥0x27|0x3F|0xEE|0x41|0x9B|0xD8|0x2D|0xDD∥0xAE|0xB5|0xDD|0x3C|0x04|0x04|0x04|0x04∥

2.7 Data Encryption Standard


Le Data Encryption Standard (DES) est un algorithme de chiffrement par bloc utilisant des clés de 56 bits.
Son emploi n’est plus recommandé aujourd’hui, du fait de sa lenteur à l’exécution et de son espace de clés trop
petit permettant une attaque systématique en un temps raisonnable.
Quand il est encore utilisé c’est généralement en Triple DES, ce qui ne fait rien pour améliorer ses perfor‑
mances. DES a notamment été utilisé dans le système de mots de passe UNIX.
Le premier standard DES est publié par FIPS 12 le 15 janvier 1977 sous le nom FIPS PUB 46. La dernière version
avant l’obsolescence date du 25 octobre 1999 FIPS PUB 46‑3.

2.7.1 Histoire
En mai 1973, le National Bureau of Standards américain demande la création d’un algorithme de chiffrement
utilisable par les entreprises. à cette époque, IBM dispose déjà d’un algorithme appelé Lucifer, conçu en 1971
par Horst Feistel.
En bonne logique, cet algorithme aurait dû être sélectionné par le NBS. En pratique, ce fut presque le cas : la
NSA demanda à ce que Lucifer soit modifié, par ses soins. Ainsi fut créé le DES, qui fut adopté comme standard
en novembre 1976.
Cela suscita des rumeurs selon lesquelles la NSA aurait volontairement affaibli l’algorithme, dans le but de
pouvoir le casser. étrangement, le DES s’est révélé résistant à plusieurs attaques ne devant apparaître dans la
communauté académique que beaucoup plus tard. Encore plus étonnant, Lucifer résistait moins bien.
Ceci permet de penser que la NSA avait connaissance dès cette époque de ces techniques de cryptanalyse et
qu’elle aurait donc, en réalité, rendu DES moins faible.

2.7.2 Fonctionnement
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, du nom de Horst Feistel à l’origine du chiffrement Lucifer.
Dans un schéma de Feistel, comme illustré par la figure 2.32, le clair est de longueur paire et découpé en
une moitié gauche L et une moitié droite R. Le ième tour du schéma prend en entrée un bloc (Li´1 , Ri´1 ) et
le transforme (en faisant intervenir la ième sous‑clé Ki ) en un bloc (Li , Ri ). Le premier tour prend en entrée le
bloc (L, R) et le dernier tour produit le chiffré (L1 , R1 ). La relation entre (Li´1 , Ri´1 ) et (Li , Ri ) est :
Li = Ri´1 , Ri = Li´1 ‘ f (Ri´1 , Ki ) où f est un chiffrement produit.
Un chiffrement de Feistel est inversible, que f soit une bijection ou non. En effet, on a :
12. Federal Information Processing Standard : sont des standards publics développés et annoncés par le gouvernement des états‑Unis
pour l’usage des agences gouvernementales non militaires et entrepreneurs gouvernementaux. Beaucoup de standards FIPS sont des
versions modifiées des standards ANSI, IEEE, ISO, …etc.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 42
2.7 Data Encryption Standard 43

FIGURE 2.31 – La fonction (f ) de DES.

FIGURE 2.32 – Schéma de Feistel.

Ri´1 = Li , Li´1 = Ri ‘ f (Ri´1 , Ki ) = Ri ‘ f (Li , Ki ).


D’une manière générale, on peut dire que DES fonctionne en trois étapes :
Les notations Lj et Rj désignent des blocs de 32 bits : à partir d’un bloc de 64 bits (b1 , b2 , . . . b64 ), Lj est le
sous‑bloc de gauche, (L mis pour « left ») (b1 , b2 , . . . b32 ), tandis que Rj est le sous‑bloc de droite, (R mis pour
« right ») (b33 , b34 , . . . b64 ).

1. Permutation initiale : et fixe d’un bloc, sans aucune incidence sur le niveau de sécurité. La matrice IP du
tableau 2.5 est utilisée.
Par exemple, si m = 0123456789ABCDEF en hexadécimal.
m = 00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111
IP (m) = 11001100 00000000 11001100 11111111 11110000 10101010 11110000 10101010
Alors : L0 = 11001100 00000000 11001100 11111111 et R0 = 11110000 10101010 11110000 10101010
2. Réseau de Feistel : Le résultat est soumis à 16 itérations (chacune est un schéma de Feistel). Une clé
secondaire de 48 bits est requise à chaque tour. Cette clé de ronde intermédiaire est calculée à partir de
la clé initiale de l’utilisateur. A chaque round, le bloc de 64 bits en entrée est découpé en deux sous‑blocs
de 32 bits chacun. Les sous‑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 (application
de la fonction de tour). La fonction de tour illustrée par la figure 2.31 et définie comme suit :

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 43
44 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

f (Ri´1 , Ki ) = P (S(E(Ri´1 ) ‘ Ki ))
où S dénote les Si (boîtes S).
3. Permutation finale : Le dernier résultat (bloc issu de la dernière ronde) est transformé par la fonction
inverse de la permutation initiale IP‑1 du tableau 2.6.

IP IP‑1
58 50 42 34 26 18 10 2 40 8 48 16 56 24 64 32
60 52 44 36 28 20 12 4 39 7 47 15 55 23 63 31
62 54 46 38 30 22 14 6 38 6 46 14 54 22 62 30
64 56 48 40 32 24 16 8 37 5 45 13 53 21 61 29
57 49 41 33 25 17 9 1 36 4 44 12 52 20 60 28
59 51 43 35 27 19 11 3 35 3 43 11 51 19 59 27
61 53 45 37 29 21 13 5 34 2 42 10 50 18 58 26
63 55 47 39 31 23 15 7 33 1 41 9 49 17 57 25

TABLE 2.5 – Permutation initiale (IP). TABLE 2.6 – Permutation finale (IP‑1 ).

Dans un Touri donné :


1. Expansion : Le demi bloc Ri‑1 reçu du tour précédent (ou bien issu de la permutation initiale s’il s’agit
du premier tour) contenant les bits b33 , b34 , . . . b64 que nous allons maintenant renuméroter (b1 , b2 , . . . b32 )
subit d’abord une fonction d’expansion qui produit un nouveau bloc de 48 bits. Cette expansion utilise
la matrice E du tableau 2.7. Pour comprendre son fonctionnement, on prend une matrice M vierge de 8
lignes et 6 colonnes et procéder à son remplissage de telle façon que M (i, j) = bE(i,j) . Ainsi, sa première
case M (1, 1) = bE(1,1) reçoit la valeur du bit b32 et la case M (3, 3) = bE(3,3) reçoit la valeur du bit b10 . Pour
chaque bit de M, on applique la formule précédente et à la fin on prend ligne par ligne pour obtenir le
résultat :
M(1,1) M(1,2) … M(1,6) M(2,1) … M(2,6) M(3,1) … M(3,6) … M(8,1) ... M(8,6)
que nous allons renuméroter (b1 , b2 , . . . b48 ).
2. Addition de la sous‑clé : Le nouveau bloc (b1 , b2 , . . . b48 ) est est mélangé avec la clé secondaire correspon‑
dante de 48 bits par un ou exclusif (XOR).
3. Transformations par S‑Boxes : Les bits du nouveau bloc notés également (b1 , b2 , . . . b48 ) subit une substi‑
tution S. Pour cela, DES utilise 8 boites S (tables de substitution ou S‑Boxes), notés S1 , S2 , …, S8 comme
illustré par les tableaux 2.9 et 2.10. Chaque boite reçoit 6 bits et produit 4 bits. Les bits b1 . . . b6 rentrent
dans S1 , les bits b7 . . . b12 rentrent dans S2 et ainsi de suite.
Exemple : supposant que b25 b26 b27 b28 b29 b30 = 000111. Ces bits sont l’entrée de S5 que nous allons renu‑
méroter comme b1 b2 b3 b4 b5 b6 :
— b1 b6 = numéro de ligne = (01)2 = 1, on lit donc la 2ème ligne.
— b2 b3 b4 b5 = numéro de colonne = (0011)2 = 3, on regarde donc la 4ème colonne et le résultat est
S5 (000111) = 12 = (1100)2 .
4. Transformations par P‑Box : Les boites S produisent un nouveau bloc de 32 bits que nous allons désigner
par (b1 , b2 , . . . b32 ). Celui‑ci va subir une permutation utilisant la matrice P du tableau 2.8. On utilise une
matrice M vierge de 8 lignes et 4 colonnes et procéder à son remplissage guidé par la matrice P de telle
sorte que M (i, j) = bP (i,j) . Ainsi, M (1, 1) = b16 , M (1, 2) = b7 et ainsi de suite. A la fin, on prend cette
matrice ligne par ligne :
M(1,1) M(1,2) … M(1,4) M(2,1) … M(2,4) … M(8,1) … M(8,4)
5. Le résultat (bloc de 32 bits) sera mélangé avec Li´1 par un ou exclusif (XOR) et le résultat devient Ri .
6. Le demi bloc de 32 bits qui représente Ri´1 devient Li .

2.7.3 Dérivation de sous‑clés


Pour la dérivation des 16 clés de ronde de 48 bits à partir de clé principale de 56 bits :
En prenant K = k1 ...k64 une clé de 64‑bit (y compris 8 bits de parité impaire). Définir vi , 1 ď i ď 16 tel
que : vi = 1 pour i P t1, 2, 9, 16u ; vi = 2 autrement comme illustré dans le tableau 2.13. Ce sont les valeurs du
décalage circulaire à gauche pour 28‑bit. L’opération de dérivation de sous clés est illustrée par la figure 2.34

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 44
2.7 Data Encryption Standard 45

E P
32 1 2 3 4 5 16 7 20 21
4 5 6 7 8 9 29 12 28 17
8 9 10 11 12 13 1 15 23 26
12 13 14 15 16 17 5 18 31 10
16 17 18 19 20 21 2 8 24 14
20 21 22 23 24 25 32 27 3 9
24 25 26 27 28 29 19 13 30 6
28 29 30 31 32 1 22 11 4 25

TABLE 2.7 – Expansion (E) au début de chaque ronde. TABLE 2.8 – Permutation (P) au début de chaque ronde.

S1
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S2
15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
S3
10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
S4
7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

TABLE 2.9 – Les boites S (de S1 à S4).

1. Réduction à 56 bits : T = P C1(K) ; Appliquer la matrice PC1 qui est une permutation sélective qui prend
56 bits à partir de K et élimine les 8 bits de parité.
Par exemple si K = 133457799BBCDF F 1 en hexadécimal, alors :
K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001 Alors, on obtient :
T = P C1(K) = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111
2. Division en sous‑clés de 28 bits : représenter T comme deux parties de 28‑bit (C0 , D0 ). (Utiliser P C1 de
la Table 2.11 pour sélectionner les bits à partir de T : C0 = k57 k49 . . . k36 , D0 = k63 k55 . . . k4 .)
En considérant l’exemple précédent :
C0 = 1111000011001100101010101111 et D0 = 0101010101100110011110001111
3. Pour i allant de 1 à 16, calculer Ki comme suit :
(a) Rotation de la clé : Ci = (Ci´1 ö vi ), Di = (Di´1 ö vi ). Chaque sous‑clé de 28 bits subit une rotation
vers la gauche de vi bits. A savoir ö dénote un décalage circulaire à gauche.
(b) Réduction : Ki = P C2 (Ci , Di ). Utiliser P C2 de la Table 2.12 pour sélectionner les 48 bits à partir de la
concaténation b1 b2 . . . b56 de Ci et Di : Ki = b14 b17 . . . b29 b32 .
La table 2.14 illustre la dérivation des 16 clés de rondes à partir de la clé principale de 64 bits suivante :
K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 45
46 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

S5
2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
S6
12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
S7
4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
S8
13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

TABLE 2.10 – Les boites S (de S5 à S8).

PC1
Ci PC2
57 49 41 33 25 17 9 14 17 11 24 1 5
1 58 50 42 34 26 18 3 28 15 6 21 10
10 2 59 51 43 35 27 23 19 12 4 26 8
19 11 3 60 52 44 36 16 7 27 20 13 2
Di 41 52 31 37 47 55
63 55 47 39 31 23 15 30 40 51 45 33 48
7 62 54 46 38 30 22 44 49 39 56 34 53
14 6 61 53 45 37 29 46 42 50 36 29 32
21 13 5 28 20 12 4
TABLE 2.12 – Permutation PC2 .
TABLE 2.11 – Permutation PC1 .

La clé qui est effectivement exploitée dans cette opération est celle obtenue après l’application de P C1 est
donnée par :
T = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111

2.7.4 Déchiffrement
Le déchiffrement est identique au chiffrement sauf que les sous‑clés sont prises dans l’ordre inverse. k16 puis
k15 , …et enfin k1 .
Pour engendrer les sous‑clés dans l’ordre inverse, les décalages à droite à utiliser sont 1, 1, 2, 2, 2, 2, 2, 2, 1, 2,
2, 2, 2, 2, 2, 1.
Nous pouvons observer que C0 = C16 et D0 = D16 . Ainsi, k16 peut être derivé après P C1.
k16 = P C2 (C16 , D16 ) = P C2 (C0 , D0 ) = P C2 (P C1 (k))
Pour engendrer k15 nous avons besoin de variables intermédiaires C15 and D15 , qui peuvent être déduites de
C16 et D16 utilisant les décalages à droite (right shifts (RS)) :

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 46
2.7 Data Encryption Standard 47

TABLE 2.13 – Décalage dans la création des sous‑clés de DES.

Numéro de tour Nombre de bits pour le décalage à gauche


1 1
2 1
3 2
4 2
5 2
6 2
7 2
8 2
9 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

TABLE 2.14 – Exemple de dérivation des 16 sous‑clés.

N° round Ci Di Ki
0 1111000011001100101010101111 0101010101100110011110001111 ‑
1 1110000110011001010101011111 1010101011001100111100011110 00011011 00000010 11101111 11111100 01110000 01110010
2 1100001100110010101010111111 0101010110011001111000111101 01111001 10101110 11011001 11011011 11001001 11100101
3 0000110011001010101011111111 0101011001100111100011110101 01010101 11111100 10001010 01000010 11001111 10011001
4 0011001100101010101111111100 0101100110011110001111010101 01110010 10101101 11010110 11011011 00110101 00011101
5 1100110010101010111111110000 0110011001111000111101010101 01111100 11101100 00000111 11101011 01010011 10101000
6 0011001010101011111111000011 1001100111100011110101010101 01100011 10100101 00111110 01010000 01111011 00101111
7 1100101010101111111100001100 0110011110001111010101010110 11101100 10000100 10110111 11110110 00011000 10111100
8 0010101010111111110000110011 1001111000111101010101011001 11110111 10001010 00111010 11000001 00111011 11111011
9 0101010101111111100001100110 0011110001111010101010110011 11100000 11011011 11101011 11101101 11100111 10000001
10 0101010111111110000110011001 1111000111101010101011001100 10110001 11110011 01000111 10111010 01000110 01001111
11 0101011111111000011001100101 1100011110101010101100110011 00100001 01011111 11010011 11011110 11010011 10000110
12 0101111111100001100110010101 0001111010101010110011001111 01110101 01110001 11110101 10010100 01100111 11101001
13 0111111110000110011001010101 0111101010101011001100111100 10010111 11000101 11010001 11111010 10111010 01000001
14 1111111000011001100101010101 1110101010101100110011110001 01011111 01000011 10110111 11110010 11100111 00111010
15 1111100001100110010101010111 1010101010110011001111000111 10111111 10010001 10001101 00111101 00111111 00001010
16 1111000011001100101010101111 0101010101100110011110001111 11001011 00111101 10001011 00001110 00010111 11110101

k15 = P C2 (C15 , D15 ) = P C2(RS2 (C16 ), RS2 (D16 )) = P C2 (RS2 (C0 ), RS2 (D0 ))
Pour tout message m et clé k nous avons DESk (m) = DESk (m). (complémentarité).
Enfin, pour tester le bon fonctionnement le texte clair « Now is the time for all » représenté par
« P = 4E6F77206973207468652074696D6520666F7220616C6C20 » en hexadécimal (7‑bit ASCII plus parité) et la
clé K = 0123456789ABCDEF donne le texte chiffré
« C = 3FA40E8A984D48156A271787AB8883F9893D51EC4B563B53 ».

2.7.5 Clés faibles


Une clé faible produit un comportement indésirable lorsqu’elle est utilisée dans des opérations de chiffrement.
La définition exacte d’une clé faible varie souvent selon le cryptosystème considéré.
Pour DES, il existe des clés faibles ainsi que des clés semi‑faibles.
Une clé faible K est définie par : Ek (Ek (M )) = M
Où E est l’opération de chiffrement et M est un message clair. Chiffrer deux fois un message en clair avec
la même clé produira ce message en clair. Ce surchiffrement agit donc comme la fonction identité ce qui est à

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 47
48 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

FIGURE 2.33 – Schéma général du DES.

éviter.
Le fonctionnement de DES est propice à la présence de clés faibles. En effet, la clé de 56 bits produit 16 sous‑
clés, chacune d’entre elles est utilisée dans le tour correspondant. Les clés faibles de DES sont celles qui pro‑
duisent 16 sous‑clés identiques. Hors clés non impaires, c’est le cas pour les clés suivantes :
0101010101010101, 1F1F1F1F0E0E0E0E, E0E0E0E0F1F1F1F1, FEFEFEFEFEFEFEFE
Comme les sous‑clés sont identiques et que DES est un réseau de Feistel, la fonction de chiffrement est éga‑
lement celle de déchiffrement. On a de facto un double chiffrement équivalent à un chiffrement suivi d’un
déchiffrement. Le message en clair n’est donc pas chiffré et apparaît inchangé à la sortie.
Les clés semi‑faibles de DES sont des clés K1 et K2 distinctes satisfaisant la propriété suivante :
EK1 (EK2 (M )) = M
Où E est l’opération de chiffrement DES. On compte 16 clés de ce type dans DES, dont les 4 clés faibles. Ces
clés sont :
01FE01FE01FE01FE, FE01FE01FE01FE01, 1FE01FE01FE01FE0, E01FE01FE01FE01F
01E001E001E001E0, E001E001E001E001, 1FFE1FFE1FFE1FFE, FE1FFE1FFE1FFE1F
011F011F011F011F, 1F011F011F011F01, E0FEE0FEE0FEE0FE, FEE0FEE0FEE0FEE0
Les clés semi‑faibles sont celles qui une fois les utilisées pour générer les 16 sous‑clés, génèrent seulement
deux sous‑clés au lieu de 16 différents.
De telles clés sont bien sûr à bannir mais leur présence ne rend pas DES moins robuste en théorie. DES a
un espace de clés qui contient 256 possibilités. La probabilité de trouver une clé faible avec un tirage aléatoire

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 48
2.7 Data Encryption Standard 49

FIGURE 2.34 – Génération de sous clé DES.

parfait est de 2456 = 5, 55111512 ˆ 10´17 , c’est un évènement hautement improbable. On peut aussi simplement
tester la clé pour vérifier qu’elle n’est pas faible. DES est un chiffrement qui a été passablement cryptanalysé et
les clés faibles sont un problème qui a été relégué au deuxième plan puisqu’il est désormais possible de mener
une recherche exhaustive des clés de DES.
La liste est incomplète mais plusieurs chiffrements par bloc possèdent des clés faibles :
— IDEA, les clés faibles sont identifiables avec une attaque par texte clair choisi, la relation entre les bits
du texte clair et ceux du texte chiffré devient prévisible. Des publications de Joan Daemen en 1993 ont
confirmé les risques d’avoir des clés avec de longues séquences de bits nuls (plus de 14 bits nuls consécu‑
tifs). Daemen a montré que la classe de clés faibles comptait 251 clés, un nombre qui peut paraître énorme
mais insignifiant par rapport aux 2128 clés possibles. La probabilité d’obtenir une clé faible dans IDEA est
alors de 2´76 ce qui est inférieur à la probabilité d’une clé faible dans DES. Les clés faibles étant faciles à
détecter, cette découverte ne pose pas un problème majeur en pratique.
— Blowfish, les clés faibles produisent de mauvaises S‑Boxes puisque ces substitutions dépendent de la clé. Il
existe une attaque par texte clair choisi sur une version réduite de Blowfish qui est facilitée par l’utilisation
des clés faibles.
— RC4, un chiffrement par flot n’est pas à l’abri non plus des clés faibles. Les clés qui commencent par 000F D
ont 14% de chance de produire une sortie qui commence par 0000.

2.7.6 Attaques
Plusieurs attaques ont été découvertes sur DES. Elles permettent de diminuer les coûts d’une recherche ex‑
haustive des clés qui se monte à 255 opérations en moyenne. Certaines de ces méthodes ne sont plus efficaces
avec des algorithmes de chiffrement plus récents du fait de l’introduction d’un effet avalanche.

1. Avant 1990, attaques contre des versions réduites (t ă 16 tours).


2. La cryptanalyse différentielle découverte par Eli Biham et Adi Shamir en 1991 permet de trouver la clé
en utilisant 247 textes clairs choisis.
3. L’attaque‑T (Tickling attack) est une variante de la cryptanalyse différentielle découverte en 1974 lors de
la conception de DES par les chercheurs d’IBM. Pendant une vingtaine d’années, le silence a été complet
sur cette découverte. C’est Don Coppersmith qui révélera le secret en 1994. à l’époque, elle avait incité

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 49
50 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

les concepteurs de DES à renforcer le contenu des tables de substitution (au lieu de l’affaiblir comme la
rumeur le laissait entendre).
4. La cryptanalyse linéaire inventée par Mitsuru Matsui en 1993.
5. Le compromis temps‑mémoire est un concept inventé par Martin Hellman au début des années 1980.
En partant du principe que le même message va être chiffré plusieurs fois avec des clés différentes, on
pourrait calculer une immense table qui contient toutes les versions chiffrées de ce message. Lorsque l’on
intercepte un message chiffré, on peut le retrouver dans la table et obtenir la clé qui avait été utilisée pour
le coder.Cette attaque n’est bien sûr pas faisable car nous avons besoin d’une table de l’ordre du milliard
de GB. Le génie d’Hellman a été de trouver un moyen pour réduire cette table à environ 1 téraoctet (soit 1
million de fois moins que la table compète), ce qui est faisable de nos jours.
6. D’autres attaques sont spécifiques à des implémentations et ne sont pas forcément spécifiques à DES.
Dans le cas d’un DES implémenté dans du matériel, on pourrait analyser la consommation électrique et
déduire certaines informations sur la clé (une consommation accrue indique des bits actifs). Le même
style d’attaque peut aussi être employé sur un ordinateur en calculant le temps mis pour chiffrer avec des
textes différents ou en analysant la mémoire utilisée.
7. Toutes les autres attaques sur DES visent à réduire le temps de calcul d’une recherche exhaustive en utili‑
sant des machines spécifiquement conçues pour la tâche (grâce à des FPGA en parallèle par exemple). Une
telle machine a été construite en 1998. Deep Crack a coûté environ 200 000 dollars et pouvait casser la clé
en moins d’une semaine. Le calcul distribué en utilisant les ordinateurs des particuliers (distributed.net)
a prouvé son efficacité en cassant une clé en moins de 24 heures.

2.8 Triple Data Encryption Standard


Le Triple DES (aussi appelé 3DES, Triple DES, TDES, Triple DEA, ou TDEA) est un algorithme de chiffre‑
ment symétrique enchainant 3 applications successives de l’algorithme DES sur le même bloc de données de
64 bits, avec 2 ou 3 clés DES différentes. Cette utilisation de trois chiffrements DES a été développée par Walter
Tuchman (chef du projet DES chez IBM) 13 . Il existe en effet d’autres manières d’employer trois fois DES mais
elles ne sont pas forcément sûres.
La version de Tuchman utilise un chiffrement, suivi d’un déchiffrement pour se conclure à nouveau par un
chiffrement. Le Triple DES est généralement utilisé avec seulement deux clés différentes. Le mode d’usage
standard est de l’utiliser en mode EDE (Encryption, Decryption, Encryption, c’est‑à‑dire Chiffrement, Déchif‑
frement, Chiffrement) ce qui le rend compatible avec DES quand on utilise trois fois la même clé. Dans le cas
d’une implémentation matérielle cela permet d’utiliser le même composant pour respecter le standard DES et
le standard Triple DES. Dans le mode proposé par Tuchman, voir la Figure 2.35, 3DES s’écrit plus formellement
de cette manière :

  
k3 k2 k1
C= EDES DDES EDES (M )

Une autre variante de Triple DES est celle de Carl Ellison, mais elle ne fait pas partie du standard défini pour
3DES :

    
k3 k2 k1
C = EDES T EDES T EDES (M )

où T est une fonction de transposition destinée à augmenter la diffusion. Cette fonction prend en entrée un
bloc de 8192 octets, remplit la graine d’un générateur de nombres pseudo‑aléatoires avec l’histogramme des
octets, et mélange les octets du bloc grâce à la sortie du générateur. L’histogramme n’est pas changé par les
permutations et donc l’opération inverse est possible. David Wagner a proposé une attaque sur le schéma
d’Ellison en 1997.
Même quand 3 clés de 56 bits différentes sont utilisées, la force effective de l’algorithme n’est que de 112 bits
(si k3 = k1 et non 168 bits (cas où toutes les clés sont indépendantes), à cause d’une attaque rencontre au milieu.
Cette attaque reste cependant peu praticable, en effet elle nécessite un stockage de données de l’ordre de 256
13. ANSI X9.52

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 50
2.9 Advanced Encryption Standard 51

FIGURE 2.35 – Triple DES.

mots de 64 bits, de plus ce stockage doit être « interrogeable » en un temps très court. C’est pour éviter ce genre
d’attaque que le Double DES est simplement proscrit et que l’on passe directement à du Triple DES. Le Double
DES n’assure en effet qu’une force effective moyenne de 57 bits.
Bien que normalisé (par exemple par le NIST), bien connu, et assez simple à implémenter, il est assez lent,
et appelé à être remplacé par des algorithmes plus modernes tels qu’AES, également reconnu via le NIST aux
états‑unis comme sûr pour tout échange d’information.

2.9 Advanced Encryption Standard


Le process Advanced Encryption Standard est un processus de standardisation lancé par le NIST en 1997
pour demander aux cryptologues de concevoir un nouvel algorithme de chiffrement par bloc destiné au gou‑
vernement des états‑Unis. Le but était de remplacer Triple DES, lui‑même un remplaçant temporaire de Data
Encryption Standard (DES). Ce dernier étant vulnérable à un grand nombre d’attaques cryptanalytiques et
utilisant une clé de seulement 56 bits, la sécurité n’était plus garantie puisque une recherche exhaustive était
désormais envisageable.
Comme la spécification de AES n’est pas secrète et qu’elle ne se limite pas aux états‑unis (cela était également
le cas pour DES et 3DES), ce chiffrement est destiné à diverses utilisations, entre autres :
— Applications militaires/gouvernementales.
— Produits commerciaux.
— Logiciels libres.
— Matériel dédié au chiffrement (routeurs, etc.)
Les exigences sur le nouveau standard étaient élevées car il est destiné à une utilisation intensive jusqu’en
2050, date à laquelle on estime que sa sécurité sera limitée de par les avancées technologiques et les recherches en
cryptanalyse. On peut toutefois émettre des doutes quant à cette longévité optimiste en matière d’informatique.
Un bloc de données de 128 bits a été exigé. Des clés de 192 et 256 bits devaient également être supportées.
Le chiffrement devait bien sûr être robuste à toutes les attaques connues comme la cryptanalyse linéaire ou
différentielle. La rapidité des opérations de chiffrement/déchiffrement était primordiale, AES n’étant pas res‑
treint à une utilisation logicielle mais également matérielle avec des contraintes liées aux ressources disponibles
(taille de la mémoire RAM ou ROM).
15 candidats furent proposés pour la première étape du concours :
CAST‑256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, Rijndael, SAFER+,
Serpent et Twofish.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 51
52 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

Après une première sélection suite à la découverte de plusieurs failles dans un certain nombre d’entre eux,
la liste fut réduite à 5 candidats. Les concepteurs ont mutuellement « cryptanalysés » leurs chiffrements et ont
« joué le jeu » du concours. Certains chiffrements, trop lents, ont été rapidement écartés. D’autres ont nécessité
une cryptanalyse plus intensive.
Les cinq finalistes étaient :
— MARS
— RC6
— Rijndael
— Serpent
— Twofish

2.9.1 Le vainqueur
Le 2o ctobre 2000, le NIST annonce que Rijndael de Vincent Rijmen et Joan Daemen a remporté le concours
AES et entrait dans un processus de standardisation officielle. Le 26 novembre 2001, le NIST annonce que AES
a été approuvé dans le standard FIPS PUB 197.
Advanced Encryption Standard ou AES (soit « standard de chiffrement avancé » en français), aussi connu
sous le nom de Rijndael, est un algorithme de chiffrement symétrique, choisi en octobre 2000 par le NIST pour
être le nouveau standard de chiffrement pour les organisations du gouvernement des états‑Unis.

2.9.2 Fonctionnement
L’algorithme prend en entrée un bloc de 128 bits (16 octets). Les clés secrètes ont au choix suivant la version du
système 128 bits (16 octets), 192 bits (24 octets) ou 256 bits (32 octets). Les données et les clés sont découpées en
octets et placées dans des tableaux. Les données comportent td = 16 octets p0 , p1 , . . . , p15 qui sont classés dans
un tableau ayant 4 lignes et 4 colonnes. Le tableau est rempli colonne par colonne. De même la clé est découpée
en octets (tk = 16, tk = 24 ou tk = 32 octets) k0 , k1 , . . . , ktk´1 . Ces octets sont aussi classés dans un tableau de
4 lignes et Nk colonnes (Nk = 4, Nk = 6 ou Nk = 8).

FIGURE 2.36 – Données et clés AES (cas Nk = 8).

Suivant la version (la taille de la clé), le nombre de tours noté nr est différent. Le nombre nr est donné dans
le tableau suivant.
Nk 4 6 8
nr 10 12 14
Le système crée nr + 1 clés de tour ayant chacune 16 octets à partir de la clé initiale K. Ces clés sont stockées
dans un tableau unidimensionnel T K et sont notées T K[0], T K[1], . . . T K[nr].
La procédure suivante de la Figure 2.37 décrit le fonctionnement global du système AES. Elle prend en entrée
un tableau de données St (texte clair) qui est modifié par la procédure et renvoyé en sortie (texte chiffré).
Les procédures appelées Round, Figure 2.38, et FinalRound, Figure 2.39, sont elles‑mêmes composées :
La procédure SubBytes, Figure 2.40, est la seule transformation qui ne soit pas linéaire. C’est donc grâce à
celle‑ci que le système est résistant. Elle utilise une opération sur le corps fini à 256 éléments.
Le corps fini à 256 éléments : Considérons le polynôme P (X) = X 8 + X 4 + X 3 + X + 1 (qui est utilisé comme
modulo).

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 52
2.9 Advanced Encryption Standard 53

FIGURE 2.37 – Algorithm 1 ‑ AES(St, K).

FIGURE 2.38 – Algorithm 2 ‑ Round(St, T).

FIGURE 2.39 – Algorithm 3 ‑ FinalRound(St, T).

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 53
54 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

Ce polynôme à coefficients dans le corps à 2 éléments F2 = t0, 1u est irréductible sur ce corps.

FIGURE 2.40 – La procédure SubBytes.

Les éléments du corps à 256 éléments seront les octets b7 b6 b5 b4 b3 b2 b1 b0 considérés comme des polynômes
b(X) = b7 X 7 + b6 X 6 + b5 X 5 + b4 X 4 + b3 X 3 + b2 X 2 + b1 X + b0 , ce qui nous permet de définir les deux
opérations suivantes :
Addition : a7 a6 a5 a4 a3 a2 a1 a0 + b7 b6 b5 b4 b3 b2 b1 b0 = c7 c6 c5 c4 c3 c2 c1 c0 , avec c(x) = a(x) + b(x), ce qui donne
aussi ci = ai ‘ bi .
Multiplication : (a7 a6 a5 a4 a3 a2 a1 a0 )‚(b7 b6 b5 b4 b3 b2 b1 b0 ) = c7 c6 c5 c4 c3 c2 c1 c0 , avec c(x) = a(x)ˆb(x) mod P (x).
Par exemple :
(X 6 + X 4 + X 2 + X + 1) ‚ (X 7 + X + 1) = X 13 + X 11 + X 9 + X 8 + X 7 + X 7 + X 5
+X 3 + X 2 + X + X 6 + X 4 + X 2 + X + 1
= X 13 + X 11 + X 9 + X 8 + X 7 + X 6 + X 5 + X 4 + X 3 + 1
= X 7 + X 6 + 1 mod X 8 + X 4 + X 3 + X + 1

On a ainsi une structure de corps et donc tout élément non nul est inversible. Nous noterons g l’application
de F256 dans F256 définie par :

#
0 si x = 0
g(x) =
x´1 sinon

L’inverse d’un élément b(x) se trouve par l’algorithme d’Euclide étendu :


b(x)a(x) + m(x)c(x) = 1 et b(x) ‚ a(x) mod m(x) = 1.
Alors : b(x)´1 = a(x) mod m(x).
La fonction affine f :
Définissons b = f (a) grâce à une matrice

      
b7 1 1 1 1 1 0 0 0 a7 0
b6  0 1 1 1 1 1 0 0 a6  1
      
b5  0 0 1 1 1 1 1 0    
    a5  1
b4  0 0 0 1 1 1 1 1    
 =  a4  ‘ 0
b3  1 0 0 0 1 1 1 1    
    a3  0
b2  1 1 0 0 0 1 1 1    
    a2  0
b1  1 1 1 0 0 0 1 1 a1  1
b0 1 1 1 1 0 0 0 1 a0 1

La matrice carrée qui intervient est une matrice circulante, elle correspond donc à une multiplication de
polynômes modulo x8 ´ 1.
Ce qui correspond à b(x) = ((x4 + x3 + x2 + x + 1)a(x) mod (x8 + 1)) ‘ (x6 + x5 + x + 1). On remarque que
g = g et que f ´1 est définie par :
´1

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 54
2.9 Advanced Encryption Standard 55

      
b7 0 1 0 1 0 0 1 0 a7 0
b6  0 0 1 0 1 0 0 1 a6  0
      
b5  1 0 0 1 0 1 0 0    
    a5  0
b4  0 1 0 0 1 0 1 0    
 =  a4  ‘ 0
b3  0 0 1 0 0 1 0 1    
    a3  0
b2  1 0 0 1 0 0 1 0    
    a2  1
b1  0 1 0 0 1 0 0 1 a1  0
b0 1 0 1 0 0 1 0 0 a0 1

La procédure SubByte :
On définit alors : s(a) = f (g(a)) qui est réalisée en appliquant la transformation affine f dans GF (2) à l’inverse
de a dans GF (28 ).
On a donc aussi : s´1 (b) = g(f ´1 (b)).
Il est donc possible de se servir de la S‑Box de la Figure 2.41 dont les valeurs sont en hexadécimal pour réaliser
cette transformation.
Par exemple, si ai = 53 en hexadécimal, alors bi = ED ce qui correspond à la ligne 5 et la colonne 3.
De même, si ai = CF en hexadécimal, alors bi = 8A ce qui correpond à la ligne c et la colonne f .
La procédure SubByte, la Figure 2.42, applique s à chaque octet de l’entrée St.

FIGURE 2.41 – AES‑S‑Box.

La procédure ShiftRows
Cette procédure, Figure 2.43, consiste à opérer une rotation à gauche sur chaque ligne du tableau d’entrée. Le
nombre de cases dont on décale la ligne i (0 ď i ď 3) est de i.
La transformation inverse est immédiate à calculer.
La procédure MixColumns :
La transformation MixColums, Figure 2.44, consiste à appliquer à chaque colonne du tableau des données une
même transformation que nous allons décrire.
Considérons une colonne c = (c1 , c2 , c3 , c4 )t .
Les élément ci sont des éléments de F265 . Chaque colonne c est transformée en une colonne d grâce à la
transformation linéaire suivante donnée par sa matrice dont les coefficients sont dans F265 et que nous écrivons
comme des octets en hexadécimal :

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 55
56 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

FIGURE 2.42 – Transformation SubBytes.

     
d0 02 03 01 01 c0
d1  01 02 03 01 c1 
 = ˆ 
d2  01 01 02 03 c2 
d3 03 01 01 02 c3

Là encore la matrice utilisée est circulante. La transformation correspond en fait à une multiplication par un
polynôme fixe : A(x) = 03x3 + 01x2 + 01x + 02, modulo 1 + x4 :

FIGURE 2.43 – TransformationShiftRows.

FIGURE 2.44 – Transformation MixColums.

d(x) = A(x) ˆ c(x) mod x4 + 1



c(x) = c0 + c1 x + c2 x2 + c3 x3 ,
et

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 56
2.9 Advanced Encryption Standard 57

d(x) = d0 + d1 x + d2 x2 + d3 x3 .
Le polynôme A(x) est premier avec x4 + 1, il est donc inversible modulo x4 + 1 est son inverse est B(x) =
0Bx3 + 0Dx2 + 09x + 0E.
On retrouve donc c(x) à partir de d(x) en effectuant le produit
c(x) = B(x) ˆ d(x) mod x4 + 1,
ou en effectuant le produit matriciel

     
c0 0E 0B 0D 09 d0
c1   09 0E 0B 0D d1 
 = ˆ 
c2  0D 09 0E 0B  d2 
c3 0B 0D 09 0E d3

Lors de cette opération, chaque colonne est multipliée par la matrice suivante (pour une clé de 128 bit) :
 
2 3 1 1
1 2 3 1
 
1 1 2 3
3 1 1 2
L’opération de multiplication est définie par : multiplication par 1 signifie aucun changement, la multiplica‑
tion par deux correspond au décalage vers la gauche d’une position, et la multiplication par trois correspond
à un décalage vers la gauche puis addition ‘ ou XOR avec la valeur initiale non décalée. Après déplacement,
un XOR conditionnel avec 0x1B doit être effectuée si la valeur décalée est plus grand que 0xFF.
La procédure AddRoundKey :
La procédure AddRoundKey est très simple. Elle consiste à faire un ou exclusif entre les 128 bits de l’état St et
les 128 bits de la clé de tour T . On obtient une nouvelle valeur de l’état. St := St ‘ T .
La procedure KeyExpansion :
La clé de chiffrement K stockée dans un tableau de 4 lignes et N k colonnes (N k = 4, 6, 8) est étendue en un
tableau W ayant 4 lignes et 4 ˆ nr + 1 colonnes. La clé de tour T K[i] (0 ď i ď nr) est donnée par les 4 colonnes
4 ˆ i, 4 ˆ i + 1, 4 ˆ i + 2, 4 ˆ i + 3 du tableau W .
Il y a deux façons de construire le tableau W suivant que Nk = 4, 6 ou Nk = 8. La procédure de construction
est nommée ExpandedKey.
1) Cas N k = 4 ou N k = 6 est illustré dans la Figure 2.45
La procédure utilise la fonction s sur les octets définie précédemment. Elle utilise aussi des constantes de
F256 ,
données par RC[i] = αi , où α est l’élément de F256 correspondant au polynôme X(α = 02). L’élévation à la
puissance i se fait dans le corps F256 .
2) Cas N k = 8 est illustré dans la Figure 2.46.

2.9.3 Déchiffrement
Le déchiffrement consiste à appliquer les opérations inverses, dans l’ordre inverse et avec des sous‑clés éga‑
lement dans l’ordre inverse.
En commençan par le dernier bloc chiffré. L’opération InvShiftRows est l’inverse de ShiftRows. Les octets des
03 dernières lignes sont décalés à droite de façon cyclique selon l’indice de la ligne.
La première ligne demeure inchangée. La dexième est décalée par 1. La troisième par 2 et la dernière par 3.
L’opération InvSubBytes est l’inverse de SubBytes, dans laquelle la S‑box inverse est appliquée (inverse de la
transformation affine suivie de la multiplication inverse dans GF (2)).
La Fgure 2.47 illustre la boite S‑Box inverse utilisée par AES.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 57
58 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

FIGURE 2.45 – Algorithm 4 ‑ ExpandedKey(K,W) Cas 01.

FIGURE 2.46 – Algorithm 5 ‑ ExpandedKey(K,W) Cas 02.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 58
2.9 Advanced Encryption Standard 59

L’opération InvMixColumns est l’inverse de MixColumns. Elle opère sur les données colonne par colonne Tel
1
que : a ��1 (x) = 0bx3 + 0dx2 + 09x + 0e.

FIGURE 2.47 – S‑Box inverse d’AES.

c(x) = a´1 (x)d(x) mod X 4 + 1, ou en effectuant le produit matriciel

     
c0 0E 0B 0D 09 d0
c1   09 0E 0B 0D d1 
 = ˆ 
c2  0D 09 0E 0B  d2 
c3 0B 0D 09 0E d3

L’opération AddRoundKey, est l’inverse d’elle même puisqu’elle n’effectue qu’un XOR.

1
��1
FIGURE 2.48 – Algorithm 6 ‑ AES (St,K).

2.9.4 Attaques
Il n’existe pas de clés faibles ni semi‑faibles dans ce cryptosystème.
L’AES n’a pour l’instant pas été cassé et la recherche exhaustive (à force brute à) demeure la seule solution.
Rijndael a été conçu de telle manière à rendre des méthodes classiques comme la cryptanalyse linéaire ou
différentielle très difficiles.
Attaques sur des versions simplifiées :

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 59
60 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

FIGURE 2.49 – Algorithm 7 ‑ InvRound(St, T).

FIGURE 2.50 – Algorithm 8 ‑ InvFinalRound(St, T).

Des attaques existent sur des versions simplifiées d’AES. Niels Ferguson et son équipe ont proposé en 2000
une attaque sur une version à 7 tours de l’AES 128 bits. Une attaque similaire casse un AES de 192 ou 256 bits
contenant 8 tours. Un AES de 256 bits peut être cassé s’il est réduit à 9 tours avec une contrainte supplémentaire.
En effet, cette dernière attaque repose sur le principe des à related‑keys à (clés apparentées).
Dans une telle attaque, la clé demeure secrète mais l’attaquant peut spécifier des transformations sur la clé et
chiffrer des textes à sa guise. Il peut donc légèrement modi ?er la clé et regarder comment la sortie de l’AES se
comporte.
Attaques sur la version compète :
Certains groupes ont affirmé avoir cassé AES complet mais après vérification par la communauté scientifique,
il s’avérait que toutes ces méthodes étaient erronées. Cependant, plusieurs chercheurs ont mis en évidence des
possibilités d’attaques algébriques, notamment l’attaque XL et une version améliorée, la XSL. Ces attaques ont
été le sujet de nombreuses controverses et leur efficacité n’a pas encore été pleinement démontrée, le XSL fai‑
tappel à une analyse heuristique dont la réussite n’est pas systématique. Deplus, elles sont impraticables car le
XSL demande au moins 287 opérations voire 2100 dans certains cas. Le principe est d’établir les équations (qua‑
dratiques / booléennes) qui lient les entrées aux sorties et de résoudre ce système qui ne comporte pas moins
de 8000 inconnues et 1600 équations pour 128 bits. La solution de ce système reste pour l’instant impossible
à déterminer. En l’absence d’une preuve formelle sur l’efficacité d’attaques similaires au XSL, l’AES est donc
considéré comme sûr. On peut toutefois parier que dans les années à venir, les avancées en cryptanalyse et la
relative simplicité de la structure d’AES devraient ouvrir des brèches dans l’algorithme. Si pareille découverte
venait à se produire, des méthodes similaires à AES comme Camellia pourraient rapidement devenir obsolètes.
Recommandations de la NSA :
La NSA a annoncé que tous les finalistes qui avaient participé au concours AES pouvaient être considérés
comme sûrs et qu’ils étaient suffisamment robustes pour chiffrer les données non‑classifiées du gouvernement
américain. En juin 2003, le gouvernement américain a en effet annoncé :
« L’architecture et la longueur de toutes les tailles de clés de l’algorithme AES (128, 192 et 256) sont suffisantes
pour protéger des documents classi ?és jusqu’au niveau »SECRET« . Le niveau »TOP SECRET« nécessite des
clés de 192 ou 256 bits. L’implémentation de l’AES dans des produits destinés à la protection des systèmes et/ou

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 60
2.9 Advanced Encryption Standard 61

documents liés à la sécurité nationale doit faire l’objet d’une analyse et d’une certification par la NSA avant leur
acquisition et leur utilisation »
Autres attaques :
Cette dernière phrase prend tout son sens lorsqu’on sait que des attaques sont possibles sur des systèmes
défaillants. On peut en effet analyser la consommation électrique (des pics de consommation indiqueraient
des calculs lourds) ou encore le temps nécessaire au chiffrement. Ce genre d’attaque vise surtout des systèmes
à boites noires à dans lesquels une clé secrète constante est codée dans le matériel et utilisée pour chiffrer
plusieurs messages, par exemple des cartes à puce.
On peut toutefois se demander pourquoi aucun concours officiel n’a été lancé pour promouvoir la recherche
d’attaques sur AES. Dans ce domaine, la méthode de chiffrement asymétrique RSA remporte la palme avec
plusieurs concours dotés de gains élevés.

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 61
62 CHAPITRE ₂ : Cryptographie symétrique ‫ﺗﺸﻔﻴﺮ ﻣﺘﻤﺎﺛﻞ‬

Responsable : Dr. BOUROUIS Abdelhabib SÉCURITÉ INFORMATIQUE


:::::::::::::::::
2021‑2022 62

Vous aimerez peut-être aussi