Vous êtes sur la page 1sur 8

18 mai

Attaques sur
Cryptanalyse les modes
opératoires
Algorithme de la cryptanalyse

Réalisé par : Ayoub EDDOURHRI


Sommaire

I. Introduction ..................................................................................................................................... 3
1) La cryptanalyse ................................................................................................................................ 3
2) Modes opératoires de chiffrement : ............................................................................................... 3
II. Les différents modes opératoires :.................................................................................................. 4
III. Exemple illustratif : ...................................................................................................................... 7
I. Introduction

1) La cryptanalyse

La cryptanalyse s'oppose, en quelque sorte, à la cryptographie. En


effet, si déchiffrer consiste à retrouver le clair au moyen d'une clé,
cryptanalyser c'est tenter de se passer de cette dernière.
Même si on décrit les cryptanalystes comme des « briseurs de
codes », il convient de remarquer qu'un algorithme est considéré
comme cassé lorsqu'une attaque permet de retrouver la clé en
effectuant moins d'opérations que via une attaque par force brute.
L'algorithme ainsi cassé ne devient pas inutile pour autant, mais son
degré de sécurité, c'est-à-dire le nombre moyen d'opérations
nécessaires pour le déchiffrer, s'affaiblit.

2) Modes opératoires de chiffrement :

• Tout d’abord : Pourquoi les chiffrements par blocs?


La recherche académique sur les chiffrements par blocs ont
progressé sur une voie différente de la recherche des chiffrements de
flux. Les documents sur les chiffrements par blocs ont
traditionnellement été des conceptions concrètes (avec des
paramètres et des noms spécifiques) ou des conceptions brisées. Les
documents sur les chiffrements de flux sont plus souvent des
conceptions générales ou des techniques d'analyse, avec des
applications et des exemples généraux.
• Définition :
Les modes opératoires découpent un message M en blocs Mi de
longueur n. Si la taille du message M en bits n’est pas un multiple
de la taille du bloc, il faut ajouter des bits de bourrage pour
compléter le dernier bloc. Cette opération s’appelle le padding.
Une méthode simple consiste à toujours « padder » le message
avec un bit à 1 suivi d’autant de bits à zéro que nécessaire pour
obtenir un multiple de n.

II. Les différents modes opératoires :


1) _ Mode ECB

Le mode opératoire le plus simple, appelé ECB (Electronic Code


Book) consiste à chiffrer individuellement chaque bloc par un appel
au block cipher E. Formellement, on peut écrire que pour tout bloc de
clair Mi , le chiffré est Ci = Ek (M ).
Mais ce mode permet-il de construire un schéma de
chiffrement sûr? Supposons que l’on chiffre chaque caractère
individuellement par un appel au block cipher. Même si ce mode
opératoire utilise un bon algorithme de chiffrement par bloc, il n’est
pas sûr en pratique.
En effet, chaque caractère est chiffré par un bloc particulier
de 64 bits mais toujours de la même façon. Une analyse statistique
de la fréquence des blocs permet de retrouver le chiffré des lettres
les plus fréquentes comme dans la cryptanalyse du chiffrement de
César. De la même manière, si on chiffre un texte codé en Unicode,
format permettant de représenter différents alphabets, on ne peut
mettre que 4 octets dans un bloc de 64 bits car chaque octet de clair
est codé par deux octets dont l’un est constant (pour la langue
anglaise par exemple). Ainsi, en analysant la fréquence des
quadrigrammes, on est capable de casser ce mode de chiffrement,
aussi forte la primitive de chiffrement soit-elle. Un autre défaut de
l’ECB est qu’il est déterministe : une attaque sur ce mode permet de
trouver tout clair à partir d’une phase de pré-calcul si la taille des clés
est suffisamment petite pour effectuer une attaque exhaustive. Par
exemple, si l’adversaire sait que le clair est un fichier Word, alors
certains bits de l’en-tête sont connus et sont fixes d’un fichier à
l’autre. Ainsi, on peut supposer que l’adversaire connaît par exemple
le premier bloc du clair M1 et le bloc de chiffré C1.
Il peut alors essayer toutes les clés en testant si Ci = Ek (Mi)
pour toutes les clés possibles ki . Sur un algorithme comme le DES,
cette attaque demande 2exp(256) opérations de chiffrement, soit
environ une journée. On peut aussi pré-calculer et stocker les valeurs,
en triant ces valeurs suivant la première coordonnée.
Ensuite, lorsque l’attaquant voit passer le chiffré C avec comme
premier bloc C1, le temps d’une recherche par dichotomie dans ce
tableau ne demande que 56 comparaisons dans le pire des cas.
Enfin, l’adversaire lit directement la clé ki utilisée et peut
déchiffrer les autres blocs de C. Cette attaque basée essentiellement
sur une phase de précalcul s’appelle une attaque par dictionnaire. Il
est également possible de faire un compromis entre le temps mis
pour casser un chiffré donné et la mémoire utilisée lors de la phase
de précalcul. Remarquons aussi que cette attaque est possible avec
l’AES par exemple, mais sa complexité est beaucoup plus importante
(il faut essayer les 2128 clés possibles) et elle ne peut pas être mise
en oeuvre actuellement en un temps raisonnable.
Notons enfin que ce mode a l’avantage d’être parallélisable, ce
qui signifie qu’une implémentation matérielle ou logicielle (sous
forme de bitslice) pourrait par exemple commencer le chiffrement du
deuxième bloc avant que le premier bloc n’ait été complètement
traité. Cet avantage est essentiel pour atteindre un très haut débit de
chiffrement. De plus, si une erreur de transmission survient sur le
réseau, comme le changement d’un bit du chiffré ou l’effacement
d’un bloc de chiffré, le déchiffrement peut toujours avoir lieu et
seulement un bloc de clair sera erroné.
2) Mode CBC :

Le chiffrement en mode CBC (Cipher Block Chaining) est un


mode opératoire probabiliste qui ne souffre pas des problèmes du
mode ECB si l’adversaire a accès à un clair à un instant donné.
C’est le mode le plus utilisé. Le fonctionnement du mode CBC
est le suivant et est décrit sur la figure 5 : tirer aléatoirement un
vecteur d’initialisation C0 ε {0, 1} ⁿ, et pour chaque bloc Mi, Ci = Ek
(Mi + Ci –1). Pour déchiffrer le bloc Ci pour i≥1, on calcule Mi = Ci–1 +
Dk (Ci ). Ce mode n’est cependant pas parallélisable car pour
commencer le chiffrement du deuxième bloc, il faut connaître le
premier bloc de chiffré. Mais il est autosynchronisable, ce qui veut
dire qu’en cas d’erreur de transmission, seuls le bloc de clair
concerné et le suivant seront erronés. En effet, d’après la formule du
déchiffrement, pour déchiffer Cj , il suffit que Cj–1 et Cj soient
correctement transmis.

3) Autres modes opératoires :

Enfin, les trois derniers modes permettent de générer un flux


aléatoire en utilisant un algorithme de chiffrement par bloc. On peut
remarquer que dans ces trois modes, on peut utiliser une fonction
aléatoire au lieu d’une permutation aléatoire.
• Le mode CFB (Cipher FeedBack), décrit figure 6, génère
aléatoirement un bloc C0 ε {0,1}ⁿ, puis pour chaque bloc Mi , on
calcule Ci = Ek (Ci –1) + Mi . Pour obtenir la formule de déchiffrement,
il suffit d’inverser dans la formule précédente Mi et Ci : Mi = Ek (Ci–1)
+ Ci .
• Le mode OFB (Output FeedBack) génère aléatoirement un
bloc V0 = C0 ∈ {0, 1}n, puis pour chaque bloc M i , on calcule
Vi = Ek (Vi–1), et Ci = Vi + Mi . Pour déchiffrer, à partir du germe initial
C0 , on peut recalculer la suite d’aléas Vi et déchiffrer tout bloc Ci
en utilisant la formule Mi = Ci + Vi .
• le mode compteur (CTR) permet de chiffrer en utilisant
un compteur de blocs entre deux équipements. Le compteur, ctr, est
initialisé à 0 et pour chiffrer le i-ème bloc, on calcule Ci=Mi+Ek(ctr) et
on incrémente le compteur.
Pour déchiffer, le correspondant maintient le compteur dans le
même état que l’émetteur et calcule Mi=Ci+Ek(ctr). Le problème du
mode CTR est que lorsque plusieurs personnes veulent communiquer
avec la même clé, le compteur ne peut pas être connu de tous. Une
version randomisée de ce mode est alors possible. La valeur ctr est
tirée aléatoirement dans {0, 1}ⁿ et la machine de chiffrement chiffre
le premier bloc avec cette valeur, le deuxième avec ctr+ 1 et ainsi de
suite.

III. Exemple illustratif :


Construction d’une structure diamant d’ordre k. Pour constituer
le premier étage de la structure en diamant, on part d’une valeur de
chaînage initiale et on calcule 2k fois la fonction de compression en
tirant des blocs de message aléatoires. Puis on calcule les k étages
suivants en cherchant des pseudo-collisions de la fonction de
compression en utilisant pour variable de chaînage les résultats du
calcul de l’étage précédent et blocs de message aléatoire. À chaque
étage, on divise par deux le nombre de valeur présente. La figure 2.4
donne une représentation graphique de ce processus. Chaque flèche
représente l’application de la fonction de compression à un bloc de
message. Après k étages on obtient une variable de chaînage finale.
La construction de cette structure peut-être effectuée par force brute
dans le cas où aucune autre attaque n’est connue contre la fonction
de compression. Elle n’est pas aussi coûteuse qu’il n’y parait de prime
abord, car il n’est pas nécessaire de fixer les positions des valeurs
dans l’arbre construit avant d’effectuer la recherche des collisions
d’un étage donnée. Ainsi, pour construire les valeurs de l’étage i + 1,
on part des 2exp(k-1) valeurs de l’étage i, en indexant l’étage
contenant 2k valeurs par 0. Pour chacune de ces 2(k-i) valeurs, on
calcule la fonction de compression 2n=2+1=2exp(k-i)=2 fois. La
probabilité de collision à l’étage i + 1 en partant de deux valeurs
de l’étage i est . Comme il y a 2k-i
éléments à l’étage i, on s’attend à trouver une collision de chaque
élément avec deux autres. En répétant cette opération pour chaque
étape, on obtient un coût de
calculs de fonctions de compression.

Vous aimerez peut-être aussi