Académique Documents
Professionnel Documents
Culture Documents
(INF422)
Cours et Travaux dirigés
Préface i
1 Introduction à la cryptographie 1
1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1 Cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Cryptanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3 Challenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Services de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Sécurité prouvée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Modèle de l’oracle aléatoire . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Modèle standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Mécanismes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Complexité de problèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6.1 Notions de complexité . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6.2 Classes de complexité . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Cryptologie traditionnelle 8
1.7 Cryptographie conventionnelle . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7.1 Chiffrement et déchiffrement . . . . . . . . . . . . . . . . . . . . . . 8
1.7.2 Objectifs des chiffrements actuels . . . . . . . . . . . . . . . . . . . 9
1.7.3 Sécurité d’un cryptosystème . . . . . . . . . . . . . . . . . . . . . . 9
1.7.4 Décryptement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.8 Procédés traditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.8.1 Transpositions ou Permutions . . . . . . . . . . . . . . . . . . . . . 12
1.8.2 Substitutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Machines en Cryptographie 26
1.10 Le cylindre chiffrant de Jefferson . . . . . . . . . . . . . . . . . . . . . . . 26
1.11 la machine Enigma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.11.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.11.2 Chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.11.3 Déchiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.11.4 Cryptanalyse : décryptement . . . . . . . . . . . . . . . . . . . . . . 30
1.12 Colossus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Introduction à la cryptographie
Sommaire
1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1 Cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Cryptanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.3 Challenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Services de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Sécurité prouvée . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Modèle de l’oracle aléatoire . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Modèle standard . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Mécanismes de sécurité . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Complexité de problèmes . . . . . . . . . . . . . . . . . . . . . . 6
1.6.1 Notions de complexité . . . . . . . . . . . . . . . . . . . . . . . 6
1.6.2 Classes de complexité . . . . . . . . . . . . . . . . . . . . . . . 6
1.1 Définition
La cryptologie est la science des messages secrets. Cette branche est née du besoin de
transmettre des messages au seul destinataire autorisé, et dont le message reste caché au
messager et à quiconque pourrait l’intercepter. De nos jours, la cryptologie tend vers un
ensemble de méthodes destinées à protéger toute information contre un observateur quel-
conque ou une intrusion malveillante. En raison de la sensibilité des informations échan-
gées, les milieux diplomatiques, gouvernementaux et militaires sont longtemps intéressés
1.2 Terminologie
La cryptologie, étymologiquement science du secret c’est -à-dire de la science qui étu-
die les communications secrètes. Elle est composée de deux domaines d’étude complémen-
taires :
– la cryptographie,
– la cryptanalyse.
Pendant que les cryptographes élabore des systèmes permettant d’assurer certains fon-
dements sécuritaires, les cryptanalystes étudient leur robusteses en essayant de casser les
algorithme proposés par ces derniers.
1.2.1 Cryptographie
– La cryptographie traditionnelle est l’étude des méthodes permettant de transmette
des données de manière confidentielle.
– La cryptographie est en somme l’ensemble des méthodes qui permettent de chiffrer
et de déchiffrer un texte en clair afin de le rendre incompréhensible pour quiconque
n’est pas en possession de la clé à utiliser pour le déchiffrer.
Afin de protéger un message, on lui applique une transformation qui le rends incom-
préhensible appellée :
– le chiffrement qui, à partir d’un texte en clair, donne un texte chiffré appelé cryp-
togramme,
– le déchiffrement est l’action qui permet de reconstruire le texte clair à partir du
texte chiffré.
Dans la cryptographie moderne, les transformations en question sont des fonctions ma-
thématiques, appelées algorithmes cryptographiques, qui dépendent d’un paramètre appelé
clé.
– Clé est le secret partagé utilisé pour chiffrer le texte en clair en texte chiffré et
pour déchiffrer le texte chiffré en texte en clair. On peut parfaitement concevoir
un algorithme qui n’utilise pas de clé, dans ce cas c’est l’algorithme lui-même qui
constitue la clé, et son principe ne doit donc en aucun cas être dévoilé.
De plus,
– le texte en clair est le message à protéger.
– le texte chiffré est le résultat du chiffrement du texte en clair.
– Coder, décoder sont des méthodes ou des algorithmes permettant de modifier la
mise en forme d’un message sans introduire d’élément secret.
1.2.2 Cryptanalyse
La cryptanalyse à l’inverse est l’étude des procédés cryptographiques dans le but d’at-
taquer, de briser et de trouver des faiblesses et, en particulier, de pouvoir décrypter des
textes des messages chffrées, ou pour faire passer un faux message pour un vrai. C’est en
somme l’art de révéler les textes en clair qui ont fait l’objet d’un chiffrement sans connaître
la clé utilisée pour chiffrer le texte en clair. Le décryptement est l’action consistant à re-
trouver le texte en clair sans connaitre la clé du déchiffrement. Ce sont ces attaques qui
fournissent au cryptographe les critères de conception qui rendront ses procédés plus sûr.
1.2.3 Challenge
Les utilisateurs d’un système cryptographique disposent de :
– un paramètre secret,
– une clé détenue d’eux seuls,
et sur lequel repose toute la sécurité. Si cette clé venait à être connue, tout le système
s’effondrerait.
Remarque 1.2.1. Le cryptanalyse, lui, ne dispose pas de cette clé, et cherche à pénétrer
les messages.
L’activité cryptologique est encore présentée comme une course sans fin entre le cryp-
tographe (codeur) et le cryptanaliste (briseur de code).
– l’authenticification,
– l’intégrité,
– non répudiation
dans un système d’information et de communication.
Un service d’intégrité guarantit que le contenu d’une communication ou d’un fichier
n’a pas été modifié. Par exemple, on peut souhaiter vérifier qu’aucun changement du
contenu de l’ordre des généraux aux aide de camps n’ été modifié.
Un service d’authenticité garantit l’identité d’une entité donnée ou l’origine d’une
communication d’un d’un fichier. Ainsi, l’information ne doit être accessible qu’à celui ou
celle à qui l’information est destiné.
Un service de confidentialité garantit que le contenu d’une communication ou d’un
fichier n’est pas accessible aux tiers. Des services de confidentialité sont offert dans de
nombreux contextes :
– en téléphonie mobile, pour protéger les communications
– les réseaux sociaux,
– en télévision à péage pour réserver la réception des données aux abonnés...
La non-répudiation/ signature permet à un individu de prendre part à un contrat avec
impossibilité de renier ensuite ses engagements.
L’authentification n’est pas seulement pris en charge par des techniques cryptogra-
phiques. Il existe plusieurs variantes et niveaux d’authentification. En général, plusieurs
types d’authentifications sont couplés pour la sécurité avec plusieurs niveaux : on parle
d’authentification forte ou multifacteurs dont 3 sont fondamentaux à savoir :
– ce que l’on sait (mot de passe, phrase secrète,...)
– ce que l’on a (clé, usb, carte magnétique, carte à puce)
– ce que l’on est (biométrie).
De plus, on peut aussi citer :
– certification : c’est une entité digne de confiance qui valide une information donnée
(généralement l’authenticité d’une clé publique) ;
– contrôle d’accès : l’accès à certaines ressources est limitée aux personnes autorisées ;
– gestion des clés : en général, les systèms de cryptographie utilisent des clés secrètes,
privées et / ou publiques. La gestion de ces clés (intégrité, stockage, distribution,...)
est un problème difficile appelé gestion de Clés ;
– preuve de reconnaissance : une entité appelée prouveur souhaitedémontrer à une
autre entité appelée vérificateur qu’elle détient un secret (mot de passe, clé secrète,
clé privé,...)
comme outils d’authentification secondaires, mais qui serait d’une importance capitale.
considérées comme plus fortes. En effet, certains travaux ont souligné que la sécurité dans
le ROM pouvait conduire ‘a des instanciations non sécurisées dans le modèle standard.
La factorisation et le calcul du logarithme discret sont des problèmes considérés comme
standards puisque largement éprouvés par la communauté, notamment depuis leur usages
respectifs dans la conception des célèbres cryptosystèmes RSA et ElGamal. Ces problèmes
sont donc considérés comme résistants aux technologies actuelles (Shorr a montré que ces
deux problèmes pouvaient résolus en temps polynomial par l’ordinateur quantique). Ainsi,
proposer un cryptosystème dont la sécurité se réduirait à un tel problème reviendrait à
prouver sa sécurité dans le modèle standard.
Principes de KercKhoffs
Autrement dit, il exprime que la méthode de chiffrement utilisée doit pouvoir tomber sans
inconvénient aux mains de l’ennemi : la sécurité d’un chiffrement doit reposer uniquement
sur la protection de la clé.
Ce principe possède plusieurs justifications. Principalement :
– La confidentialité d’un algorithme est difficile à garantir. Il est en général connu de
plusieurs personnes et il est souvent diffusé dans des logiciels ou dispositifs hardware
à des utilisateurs non habilités au secret. La confidentialité de l’algorithme peut
succomber à la corruption ou au reverse engineering.
– La sécurité d’un algorithme secret est difficile à évaluer : le nombre d’algorithmes
à l’origine du secret se sont révélés extrêmement faibles. Il est généralement admis
que la meilleure garantie de sécurité d’un algorithme est apportée par une longue
période d’évaluation par la communauté de cryptographie.
– Un algorithme secret peut dissimuler des propriétés indésirables pour l’utilisateur
final : existence de clés faibles. Il n’est donc pas adapté si la confiance envers le
concepteur n’est pas établie.
– Pour le théoricien, c’est une hypothèse de travail sans laquelle il est impossible
d’obtenir des résultat rigoureux de sécurité.
Par exemple dans un cryptosystème basé sur des régistres à décalage, on suppose que
l’attaquant connait la forme des récurrences linéaires ainsi que la fonction de combinaison
mais pas les conditions initiales de récurrences qui constituent la clé du code.
1.7.4 Décryptement
Décrypter un message consiste à retrouver le texte en clair correspondant à un texte
chiffré sans posséder la clé qui a servit au chiffrement.
L’opération du décryptement consiste à calculer le texte clair m à partir du chiffré
c = Ek (m), mais sans la connaissance de la clé k.
La confidentialité es assurée si cette opération est impossible.
Un attaquant est une personne qui tente de décrypter des messages, c’est-à-dire de
retrouver des clairs à partir des chiffrés sans connaître la clé. On réserve généralement
le mot déchiffrer à l’action du destinataire légitime qui affecte l’opération inverse du
chiffrement.
La cryptanalyse d’un système cryptographique peut-être :
– une cryptanalyse partielle. Ici, l’attaquant découvre alors le texte clair correspondant
à un ou plusieurs messages chiffrés interceptés.
– une cryptanalyse totale. Dans ce cas, l’attaquant découvre un moyen de déchiffrer
tous les messages, aussi bien ceux qu’il a interceptés que ceux à venir, par exemple
en découvrant la clé utilisée.
Selon les moyens dont dispose l’attaquant, on distingues divers scénarios possibles
d’attaque :
– les attaques à messages chiffré seul, où l’adversaire a seulement la possibilité d’in-
tercepter un ou plusieurs messages de chiffrés Ek (mi ) ;
– les attaques à messages clairs , où l’adversaire dispose d’un certain nombre de
chiffrés Ek (mi ) et des clairs correspondants mi .
– les attaques à messages des clairs de son choisis mi . L’attaquant a la possibilité
d’obtenir la version chiffrée de messages clairs de son choix. On distingue alors deux
sous-types d’attaquue, suivant que l’attaquant est contraint de choisir les clairs en
une seule fois, ou au contraire peut faire évoluer ses choix au fûrû et à mesure des
résultats obtenus. Dans ce cas, on parle d’attaque adaptativeà message clairs choisis.
– Attaque à message chiffré choisis. L’attaquant a temporairement l’opportunité de
déchiffrer les messages de son choix (en ayant accè par exemple à une machine
déchiffrante). Il tente alors d’en profiter pour obtenir des informations lui permettant
de décrypter ensuite d’autre messages par ses propres moyens. Ici, on distingue aussi
deux sous-type : attaque adaptative ou non
Le but de l’attaque est la découverte de la clé ou le décryptement d’un cryptogramme c,
correspondant à un clair dont on ne dispose pas. Les attaques à chiffré seul sont les plus
c = m × Aσ .
les n clairs en matrice carré Mn×n et les n chiffrés correspondants en une matrice C. On
a
C = M × A.
A = M −1 × C
Exemple 1.8.1. Le chiffrement de Rail fence a été ainsi utilisé pendant la guerre de
Sécession. Il consiste en la transposition obtenue en écrivant un texte dans un tableau par
colonnes, éventuellement en descendant et en montant successivement. Le cryptogramme
est donc constitué en écrivant le texte suivant les lignes.
Remarque 1.8.1. La grille tournante qui est un procédé selon lequel le cryptogramme
est disposé dans un carréé, et en plaçant sur celui ci une grille ajourée comprenant des
trous convenablement placés, les premières lettres du message en clair apparaissent. La
suite du cryptogramme est lue de manière similaire en tournant successivement la grille
d’un quart de tour.
1.8.2 Substitutions
Le chiffrement par substitution consite à remplacer les lettres ou les mots par d’autres.
Il existe quatre types de substitutions :
Substitutions monoalphabétique
Le procédé consiste à brouiller un texte écrit dans une langue à alphabet, ceci en
remplaçant chaque lettre par une autre selon une règle convenue.
Ici, A est l’alphabet romain et P = E = A. Soit k une permutation (i.e.une bijection)
sur A. L’oprération de chiffrement d’un message m = m1 ...mn est :
La clé secrète est k et l’espace des clés est l’ensemble des permutations de K = Z26 .
Connaissant cette clé, on peut déchiffreré :
Chiffre de César Jules César utilisait ainsi le chiffrement par décalage comme méca-
nisme de confidentialité.
Le principe est le suivant : chacune des 26 lettres de l’alphabet française est représenté par
un nombre entier compris entre 0 et 25 et P = E = K = Z26 on a Ek (x) = x + k(mod26)
(k = 3 dans le cas du chiffrement de César). Pour retrouver le sens de message en clair, il
suffit d’opérer le même décalage dans l’autre sens c’est-à-dire Dk (y) = y − k(mod26). Le
texte clair cryptographie est chiffré en F U BSW RJU DSKLH lorsque k = 3. Ce procédé
subsiste encore aujourd’hui sous le nom de ROT13 qui opère un décalage de treize posi-
tions dans l’alphabet moderne. Il est utilisé pour brouiller un texte dans le réseau usenet
qui sert encore à l’échange d’informations au sein de la communauté.
Toutefois, les substitutions simples sont sensibles à l’analyse des fréquences, qui consiste
à compter les occurrences des caractères et à comparer le résultat avec la distribution du
texte en clair. Pour le rendre plus résistance, l’on a imaginé coder les lettres les plus
féquentes (comme a ou e) de façon différente en alternant le choix du codage.
def cesar_chiffre_nb(x,k) :
return (x+k)mod26
Pour le décryptage, c’est aussi simple :
Code 2 (cesar.py (2)).
def cesar_dechiffre_nb(x,k) :
return (x-k)mod26
Pour chiffrer un mot ou un phrase, il n’y a pas de problèmes théoriques, mais seulement
des difficultés techniques :
– Un mot ou une phrase est une chaîne de caractères, qui en fait se comporte comme
une liste. Si mot est une chaîne alors mot[0] est la première lettre, mot[1] la deuxième
lettre... et la boucle for lettre in mot : permet de parcourir chacune des lettres.
– Pour transformer une lettre en un nombre, on utilise le code Ascii qui à chaque
caractère associe un nombre, ord(A) vaut 65, ord(B) vaut 66... Ainsi (ord(lettre)-
65) renvoie le rang de la lettre entre 0 et 25 comme nous l’avons fixé dès le départ.
– La transformation inverse se fait par la fonction chr : chr(65) renvoie le caractère
A, chr(66) renvoie B...
– Pour ajouter une lettre à une liste, faites maliste.append(lettre). Enfin pour trans-
former une liste de caractères en une chaîne, faites "".join(maliste). Ce qui donne :
Code 3 (cesar.py (3)). def cesar_chiffre_mot(mot,k) :
message_code=[] ]Liste vide
for lettre in mot : ] Pour chaque lettre
nb = ord(lettre)-65 ] Lettre devient nb de 0 à 25
nb_crypte = cesar_chiffre_nb(nb,k) ] Chiffrement de César
lettre_crypte = chr(nb_crypte+65) ] Retour aux lettres
message_code.append(lettre_crypte) ] Ajoute lettre au message
message_code = "".join(message_code) ] Revient à chaine ?caractères
return(message_code)
Pour l’attaque on parcourt l’intégralité de l’espace des clés. Noter que pour décrypter
les messages on utilise ici simplement la fonction de César avec la clé k.
Code 4 (cesar.py (4)).
def cesar_attaque(mot) :
for k in range(26) :
print(cesar_chiffre_mot(mot,-k))
return None
Remarque 1.8.2. En contrepartie, les lettres qui peuvent être remplacées par une autre
sans inconvénient pour la compréhension sont supprimées. En français, on peut par
exemple remplacer les i par des j, les v par des u. Ce type de substitution à représenta-
tion multiple s’appelle un un chiffre homophonique. Il a été très utilisé pour les échanges
diplomatiques à partir de la Renaissance.
chiffre de Hill
Ici, chacune des 26 lettres de l’alphabet française est représenté par un nombre entier
∗
compris entre 0 et 25 selon un codage désordonné tenu secret. P = E = Zm
26 (m ∈ N ). L’es-
pace des clé est l’ensemble GLm (Z26 ) des matrices inversibles d’ordre m à coefficients dans
Z26 . Soit k ∈ K, on alors Ek (x1 , ..., xm ) = (x1 , ..., xm )k et Dk (y1 , ..., ym ) = (y1 , ..., ym )k −1 .
4 3
Exemple 1.8.2. pour m = 2 et le texte clair cryptographe est codé numéri-
9 7
quement par ((2, 17), (24, 15), (19, 14), (6, 17), (0, 15), (7, 4)).
Le cryptogramme obtenu est ((5, 21), (23, 21), (20, 25), (21, 7), (5, 1), (12, 23)) ce qui cor-
respond à F V XV U ZV HF BM X.
Permutations
∗
P = E = Zm
26 (m ∈ N ) et K est l’ensemble des permutations de Zm . Pour k ∈ K on a
alors Ek (x1 , ..., xm ) = (xk(1) , ..., xk(m) ) et Dk (y1 , ..., ym ) = (yk−1 (1) , ..., yk−1 (m) ).
Substitutions polyalphabétiques
où désigne i mod(t).
Ce système peut s’attaquer par une méthode de type statistique.
Remarque 1.8.4. La machine Enigma, utilisée par les allemands pendant la deuxième
guerre mondiale, chiffrait par un système de Vigenère : la position initiale des rotors
déterminait la suite des permutations utlisées.
Pour chiffrer un texte de manière sûre avec le chiffre de Vigenère, vous devez :
5. écrire des textes clairs ne contenant que les lettres (sans ponctuation et sans espaces).
Le principe est le suivant : les messages clairs et chiffrés, sont une suite de caractère
de longueur n La clé k est une suite caractère de la même longueur que le clair.
c = m ⊕ k = m1 ⊕ k1 ....mn ⊕ kn .
Ce système est parfait dans le cadre d’une attaque à chiffré seul ce qui signifie que si
l’attaquant peut décrypter un (seul) message, i.e. trouver m, connaissant c, alors c’est
qu’il détient la clé k = (k1 , ...kn ). En effet, celle-ci se déduit de m et de c par :
k = m ⊕ c.
Pour la même raison, il est vulnérable aux attaques à clairs connus, ce qui implique que
la cé ne doit être utilisée qu’une seule fois.
De plus, il est impraticable, sauf pour des messages de petites longueurs : la clé doit
être envoyé sur un canal sécurisé (si le système est symétrique). Cette clé doit être aussi
longue que le message et ne doit être utiliser qu’une seule fois.
Le système du masque jetable, avec les précautions indiquées ci-dessus, est absolument
inviolable si l’on ne connaît pas la clé : il est dit à confidentialité parfaite. En effet, la
connaissance du texte crypté ne permette d’avoir aucune information sur le texte en clair.
Ils reposent sur la fabrication de clés au hasard aussi longues que le texte à chiffrer et qui
ne servent qu’une fois. La mise en œuvre de ce chiffre est lourde et délicate. La fabrication
de clés au hasard est un problème très difficile et mal résolu. Le stockage et la transmission
de ces clés posent un problème de sécurité.
Il est couramment utilisé de nos jours par les États. En effet, ceux-ci peuvent commu-
niquer les clés à leurs ambassades de manière sûre via la valise diplomatique.
Exemple 1.8.5. Considérons le texte clair cryptographie = (2, 17, 24, 15, 19, 14, 6, 17, 0, 15, 7, 8, 9)
et appliquons le chiffrement par masque jetable avec la clé algorithmique
k = (0, 11, 6, 14, 17, 8, 19, 7, 12, 8, 16, 20, 4). On obtient alors le message chiffré
(2, 2, 4, 3, 10, 22, 25, 24, 12, 23, 23, 2, 8) = (CCEDKW ZY M XXCI).
On peut procéder différemment. On se donne une clé K et pour chaque entier i, une
fonction fi (K, x1 , x2 , ..., xi−1 ) qui dépend de K et des blocs précédents xi .
La valeur Ki = fi (K, x1 , x2 , ..., xi−1 ) est la clé utilisée pour chiffre le i−ème bloc xi
∗
Exemple 1.8.6. Soit P = E = Zm m
26 (m ∈ N ). Le clé k = (k1 , ..., km ) ∈ Z26 donné par
sa première composante k1 et par une règle qui permet de calculer chaque ki (i > 1)
en fonction de ki−1 et x1 , ..., xi−1 . La portion de la clé ki servira alors à chiffrer xi ; par
exemple, on pourra poser yi = xi +ki . La suite des ki est périodique, on parle de chiffrement
en chaîne périodique et c’est une généralisation du chiffrement de Vigenère.
Le chiffrement est dit synchrone si f ne dépend pas des xi , il est dit asynchrone si f
dépend effectivement des xi .
EK : Fl2 → Fl2 .
Le premier exemple montre que, si l est trop petit, la répartition des blocs de taille l
dans les messages clairs ne suivant pas une loi uniforme, le cryptosystème est sensible à
une analyse statistique. Si l devient grand, et si EK est vraiment quelconque, le problème
est de calculer EK (m). Si l’on doit passer par le stockage en mémoire des valeurs prises
par EK (m) cela limite la taille de l (justement, on peut prendre comme définition de la
1.9 Cryptanalyse
La cryptanalyse est pratiquée depuis la plus haute antiquité. Le chiffre de César est
cryptanalysé par les lettrés arabes du 9-ième siècle tel que Al Kindi décrit la méthode de
l’analyse statistique. Tous les rois avaient leurs cryptographes-cryptanalystes (les Rossi-
gnol pour Louis XIV) et leur cabinet noir. Le chiffre de César a tenu 9 siècle, celui de
Vigenère a tenu 4 siècles, le standard DES a tenu 20 ans. le standard RSA est en passe
d’être supplanté par les codes elliptiques.
JTVIEVWELOWENLVVNOEDJJTVLTPTXYTLWTWUT SNLITTVQXTVXUJXWE-
JEWTONKKXLT.
Décryptons par analyse de fréquence
Lettre Anglais Français Lettre Anglais Français
a 8,17 8,25 n 6,75 7,25
b 1,49 1,25 o 7,51 5,75
c 2,78 3,25 p 1,93 3,75
d 4,25 3,75 q 0,10 1,25
e 12,70 17,75 r 5,99 7,25
f 2,23 1,25 s 6,33 8,25
g 2,O2 1,25 t 9,06 7,25
h 6,09 1,25 u 2,76 6,25
i 6,97 7,25 v 0,98 1,75
j 0,15 0,75 w 2,36 0,00
k 0,77 0,00 x 0,15 0,00
l 4,03 5,75 y 1,97 0,75
m 2,41 3,25 z 0,07 0,00
Le chiffrement par substitution est attaquable en examinant les fréquences d’apparition
de chaque lettre. Les fréquences moyennes relevées dans un texte après suppression des
espaces et e la ponctuation. En comparant avec les fréquences observées dans le texte
chifré, on peut retrouver sufisamment d’indices pour le décrypter. On peut aussi s’aider
des fréquences d’apparition de chaque diagramme ou trigramme (deux ou trois lettres
consécutives).
On peut estimer le niveau de confiance c ?est à dire la probabilité que l ?une ou l ?autre
situation se produise. On se restreint à la première et on considère que l ?évènement que
l ?on observe est la fréquence des succès dans n tirages de Bernoulli indépendants de
√
paramètre p = 3/4. On note σ la variance de cette distribution σ = pq, où q = 1?p.
Le théorème central limite affirme que, si Sn désigne le nombre de succès observés en n
tirages, on a :
Sn − np
pr √ < β −→ N (β)
σ n
où N (x) est la loi normale Z x
1 y2
N (β) = √ e− 2 dy
2Π −∞
On pourra finalement estimer la probabilité√ d ?erreur en fonction du seuil choisi α et de
(α − p) n
l ?échantillon disponible n par N ( ). Pour que cette probabilité ne soit pas trop
√ σ
grande, il faut que n n’excède assez significativement l ?inverse de la différence |α?p|.
0
Si x et x sont deux messages écrits dans la même langue, l’indices de coïncidence mutuelle
est proche des valeurs données par la table ci dessus. Cela est encore vrai si on applique à
0
x et x un chiffrement par décallage ou substitution utilisant la même clé. Par contre, si
on utilise deux clés de décalage distinctes, l’indices de coïncidence mutuelle prends alors
les valeurs plus basses, de 0, 031 à 0, 045 (pour les textes en anglais).
où x décrit l’espace et pri désigne la probabilité relative ‘a Di . On peut aussi utiliser leur
distance euclidienne
1
X
( |pr1 (x) − pr2 (x)|2 ) 2
x
Le carré de la distance euclidienne de la distribution des lettres dans une langue don-
née à la distribution uniforme est un invariant k qui vaut 0.0393 en français et 0.0282
en anglais. Considérons un algorithme qui effectue sur un texte d’une des langues une
suite périodique de transformations, chacune réalisant une substitution fixe de lettres,
les substitutions étant choisies indépendemment les unes des autres. Un tel algorithme
est appelé chiffrement de Vigenère et sa période t est supposée inconnue. La probabilité
n
pri2 , lorsque
P
que deux occurrences de deux lettres du cryptogramme coïncident est de
i=1
les occurrences sont à distance multiple de t et 1/n autrement. Dans ce qui précède, pri
désigne la probabilité d ?apparition (dans le clair) de la i-ème lettre et n le nombre de
lettres. La différence est exactement k et on peut ainsi retrouver la valeur secrète de t
en calculant pour t = 1, 2, ..., la probabilité que ci = ct+1 dans le texte chiffré. Un pic
apparaît pour la bonne valeur de t.
L’inconvénient des chiffrements précédents est qu’une même lettre est régulièrement
chiffrée de la même façon, car la correspondance d’un alphabet à un ou plusieurs autres
est fixée une fois pour toutes, ce qui fait qu’une attaque statistique est toujours possible.
Nous allons voir qu’en changeant la correspondance à chaque lettre, il est possible de créer
un chiffrement parfait !
L’âge de la technique garde les substitutions et les permutations et les met en œuvre
à l’aide de machines mécaniques ou électro-mécaniques.
1.11.1 Présentation
La machine Enigma est alimentée par une pile électrique et se composant de quatre
éléments tous reliés par un circuit électrique à savoir :
– un clavier permettant d’entrer le texte à chiffrer (texte clair),
– un brouilleur qui étant la pièce maîtresse d ?Enigma permet de chiffrer les lettres
du texte clair.
– un réflecteur qui renvoie le signal par un autre chemin que celui de l ?aller,
– tableau lumineux pour afficher les lettres du texte crypté.
1.11.2 Chiffrement
Le brouilleur est en réalité un tambour rotatif en matériau isolant portant sur chaque
face des contacts électriques. Chaque fois qu ?une lettre est tapée sur le clavier naît un
courant électrique qui traverse le rotor activé par la dépression de la touche et circule
à travers un réseau de fils jusqu ?au réflecteur puis au tableau lumineux où s ?éclaire la
lettre cryptée correspondante. Le parcours du courant électrique change à chaque touche
activée (donc la lettre A par exemple ne se convertit pas deux fois de la même façon)
grâce à l ?action de brouillage du rotor.
La rotation du brouilleur qui étant l’innovation majeure de Scherbius permet de com-
plexifier la rotation d’1/26ème de tour chaque fois qu’une touche est activée, ce qui induit
une régularité facile à déchiffrer pour un cryptanalyste, Scherbius ajoute un second, puis
un troisième rotor au brouilleur, chacun possédant 26 positions. Chaque fois qu’une lettre
est tapée, le premier rotor tourne d’un cran, les autres rotors restent immobiles. Une fois
que le premier rotor a effectué un tour complet, le deuxième rotor tourne d’un cran. Le
premier rotor recommence alors à tourner jusqu ?à ce que le deuxième ait effectué un tour
complet et soit revenu à sa position de départ. C’est ensuite au troisième rotor de s’amor-
cer. En multipliant le nombre de rotors, il devient possible de concevoir une machine à
crypter qui passe d’un alphabet à un autre, chaque fois différent, et d’obtenir une per-
mutation quelconque des lettres. Ainsi, avec notre alphabet de 26 lettres, ces trois rotors
procurent 26 × 26 × 26 = 17576 positions de brouillage.
C’est le positionnement des rotors qui constitue la clef du chiffrement. Afin de mieux
protéger Enigma et sa cryptographie, Scherbius s’assure que les trois rotors sont mobiles
et interchangeables, multipliant par 6 le nombre de clés possibles. Il introduit également
un tableau de connexions à 6 fiches entre le clavier et le premier brouilleur qui permet
d’intervertir 12 lettres deux à deux avant que la lettre ne pénètre dans le rotor 6 fois 2
lettres parmi les 26 lettres de l’alphabet peuvent être appareillées ainsi.
Chaque jour une nouvelle clé est définie, suivant un carnet de codes déterminés à
l’avance spécifiant l’ordre de disposition des rotors, leur orientation et le branchement des
connexions. La même clé sert à toutes les machines Enigma d’un même réseau, pour un
jour donné. Pour crypter et envoyer un message, l’expéditeur fait tourner les trois rotors
jusqu’à leur position de départ puis branche les connexions et rentre le texte clair dans la
machine, notant pour chaque lettre la correspondante chiffrée qui s’allume sur le tableau
lumineux. Il transmet ensuite le texte chiffré à son destinataire via un opérateur radio.
Le récepteur du message chiffré peut le décoder à l’aide d’une machine Enigma similaire
et du carnet de codes qui lui indique les positions du jour.
Le nombre total des clés possibles de la machine Enigma s’élève à plus de 10000000000000000,
décomposé comme suit :
– 26 × 26 × 26 (orientation des brouilleurs),
– multiplié par 6 (disposition des brouilleurs),
– multiplié par 100 391 791 500 (nombre de branchements possibles).
Sans le carnet de codes le cryptanalyste devra vérifier toutes les clés potentielles à la main.
Remarque 1.11.1. Si ce sont les connexions du tableau qui apportent le facteur multi-
plicatif le plus efficace, ce sont les rotors, leur rotation et leur disposition, qui, en tournant
continuellement, rendent le texte chiffré imperméable à l’analyse des fréquences.
Les cryptologues allemands, afin de mieux protéger leurs messages, décident de ne pas
appliquer la même clé de chiffrement à tous les messages du jour. Ils choisissent ainsi de
changer l’orientation du brouilleur à chaque message. Or, ce changement d’orientation ne
figurant pas dans le carnet de codes, ils doivent transmettre au récepteur du message la
nouvelle orientation des rotors chaque fois qu’ils envoient une information. Celle-ci est
chiffrée selon la clé du jour, tapée deux fois de suite afin que le destinataire s’assure qu’il
n’y a pas eu d’erreur. Le principe de la rotation des brouilleurs permet de dissimuler
cette répétition puisque les trois mêmes lettres tapées deux fois de suite ne donnent pas
le même résultat crypté. La clé de chiffrement du jour ne sert donc plus qu’à transmettre
la clé propre à chaque message.
1.11.3 Déchiffrement
La machine Enigma possède la propriété de déchirer facilement grâce à son réflecteur.
Ceci en appliquant la fonction inverse du chiffrement tout en respectant les configurations
de chiffrement de la machine.
la quatrième lettre.
Rejewski s’intéresse aux chaînes de lettres qui lient les lettres du premier alphabet à
celles du second. Il calcule ensuite le nombre de liens qui unissent chaque chaîne. Il fait de
même avec les liens entre les alphabets de la 2nde et la 5ème lettre, entre ceux de la 3ème
et la 6ème lettre. Ces chaînes changent tous les jours, parfois courtes, parfois longues,
fluctuant en fonction de la clé du jour. Comment alors en déduire cette fameuse clé du
jour ?
Rejewski réalise que si le tableau des connexions influe sur la composition des chaînes,
il y a un élément de la chaîne qui dépend exclusivement du brouilleur, de son réglage et de
son orientation : la longueur de la chaîne, c’est-à-dire le nombre de liens qui la composent.
En effet, malgré la permutation des lettres du tableau de connexions, le nombre de liens
reste inchangé.
Ainsi, plutôt que de chercher la clé du jour parmi les 10000000000000000 clé possibles,
Rejewski n’a plus qu’à chercher les réglages du brouilleur parmi l’ensemble des réglages (6)
et des orientations possibles (26×26×26) du brouilleur, soit 105546 dispositions possibles.
La tâche devient tout à coup moins ambitieuse. C’est donc ce qu’il fait, aidé d’une équipe
chargée de répertorier toutes les longueurs de chaînes engendrées par chaque disposition.
Au bout d’un an il obtient un répertoire exhaustif. Il peut dorénavant se référer à ce fichier
pour retrouver l’agencement et l’orientation des brouilleurs correspondant à chaque clé
du jour.
A partir de là il ne lui reste plus qu’à déterminer les branchements du tableau de
connexions. Pour cela, Rejewski règle sa machine Enigma selon l’orientation des brouilleurs
du jour et débranche les 6 câbles du tableau de connexions. Il entre ensuite le texte chiffré
dans la machine. Le texte, une fois décrypté, n’est pas totalement lisible puisqu’il manque
les branchements du tableau de connexions mais le message est tout de même déchiffrable
et les branchements se déduisent de là. En quelques années, Rejewski réussit à rendre les
communications allemandes totalement transparentes.
En parallèle il travaille à la conception de six machines électromécaniques, appelées
bombes, qui permettent d’essayer rapidement des ensembles de clé’ potentielles sur des
blocs de communication d’Enigma. Elles peuvent, pour chaque position de réglage du
brouilleur (soit 6), rechercher automatiquement son orientation. Ces bombes, conçues
pour une attaque de force brute, fonctionnent toutes en même temps, comme une mise en
série de plusieurs copies d’Enigma. Elles sont à l’origine de la mécanisation du cryptage.
Fin 1938, les Allemands renforcent la sécurité d’Enigma en ajoutant 2 rotors et 4
branchements supplémentaires au tableau de connexions. La Pologne, qui n’a plus les
moyens de construire les bombes capables de décrypter la nouvelle Enigma et qui sait
l’invasion allemande inéluctable, se tourne vers les Alliés, livrant à la France et à la
Grande-Bretagne l’ensemble de ses travaux au cours de l’été 1939. Une bien belle surprise
pour ceux qui pensaient Enigma indéchiffrable !
La machine de Turing
Les cryptanalystes anglais, réunis secrètement à Bletchley Park où est installée l’Ecole
Gouvernementale du Code et du Chiffre, perfectionnent les découvertes de Rejewski, par-
venant ainsi à décoder des informations décisives pendant la bataille d’Angleterre. Si le
Polonais s’était intéressé aux faiblesses induites par la clé répétée au début de chaque mes-
sage, Alan Turing, mathématicien de génie, se penche sur la structure type de certains
messages en fonction de l’heure d’envoi et de l’opérateur.
En étudiant les messages décryptés, il se rend compte que les messages sont réglementés
donc certains mots sont répétés. Ainsi, à 6h05, les messages envoyés contiennent presque
toujours le mot «wetter» («le temps»). À partir de ces «mots probables» (appelés «cribs»),
qui sont en réalité devinés, Turing établit une correspondance plausible entre le texte clair
supposé et le texte chiffré connu, liant les lettres en une boucle à la façon des chaînes de
Rejewski. Il saisit rapidement que grâce à ces mots il va pouvoir venir à bout d’Enigma.
Sa connaissance du fonctionnement d’Enigma et son exploitation des imprudences des
chiffreurs allemands lui permettent de déduire le réglage des machines Enigma d’un même
réseau pour un jour donné.
Turing met au point une machine à chiffrer électromécanique composée de machines
reliées électriquement entre elles qui répliquent le mouvement des rotors d’Enigma. Pour
chaque réglage possible des rotors, la bombe de Turing effectue une chaîne de déductions
logiques fondées sur les «cribs» et leurs boucles. Elle simule une correspondance entre
texte clair et texte crypté pour essayer une clé. A chaque occurrence d’une contradiction
la bombe écarte ce réglage et passe au suivant, modifiant les agencements de la machine.
Lorsque toutes les connexions correspondent et ne donnent qu’une seule réponse, la clé
est testée manuellement. La machine de Turing est capable de chercher le réglage correct
parmi les 159 milliards de milliards d’ajustements possibles (soit celles d’une machine
Enigma contenant 5 rotors et 20 connexions) en moins d’une heure, abattant par jour
le travail de 10000 cryptanalystes. Les erreurs des opérateurs allemands permettent de
réduire considérablement le nombre de clés possibles. Plus efficace que la bombe polonaise,
la bombe anglaise vient à bout du code de la machine allemande, jouant un rôle majeur
Remarque 1.11.2. Une machine de Turing universelle est un système du même type
destiné à recevoir la description de toute machine de Turing et réaliser son travail – une
"machine pouvant exécuter tout programme”, comme les ordinateurs contemporains.
Après la guerre, les percées des briseurs de code anglais et le décryptage d’Enigma
restèrent classifiés secret défense jusque dans les années 1970. Les cryptanalystes de Blet-
chley Park furent pourtant à l’origine d’une des plus grandes révolutions technologiques
de leur siècle : l’avènement de l’ordinateur programmable.
1.12 Colossus
À cause des progrès du chiffrage allemand, les bombes de conception purement mé-
canique avouaient leurs limites. Des machines à crypter de nouvelle génération (machines
de Lorentz ) utilisaient une méthodologie de chiffrage radicalement différente. La stratégie
de décryptage était radicalement modifiée. Elle reposait à l’origine sur une brillante ex-
ploitation par un jeune mathématicien (W. Tutte) d’une grossière erreur de transmission
allemande le 30 août 1941.
Bien que plus complexe qu’Enigma et se servant de chiffres plutôt que de lettres, la
machine SZ40 de Lorenz fonctionne sur le même principe. Utilisant le code international
de téléscripteur à 5 bits, elle convertit chaque lettre du message clair en un code binaire,
une suite de 0 et de 1. Chaque bit traverse ensuite deux clés de chiffrement intermédiaires,
l’une, appelée P, changeant à chaque opération, l’autre, appelée S, changeant au hasard.
La somme de la lettre originale +P + S donne la lettre chiffrée. Le chiffre de Lorenz,
trop subtile pour les bombes, doit être brisé manuellement. Il est percé à jour à la suite
d’une erreur d’un opérateur allemand qui répète le même message deux fois de suite avec
quelques étourderies en utilisant la même clé de chiffrement.
Turing recommanda ainsi la mise en chantier du projet Colossus (1943-1945) auquel il
resta lié, sans y prendre une part prépondérante. Le but de cet appareil était d’automatiser
la partie calculatoire des opérations de décryptage, ce qui n’était que la première d’une
longue suite de procédures astucieuses et élaborées.
À partir de ces deux textes chiffrés, John Tiltman trouve en janvier 1942 l ?algorithme
lui permettant de reconstituer le texte clair et son chiffrement. Afin de mécaniser cette
découverte, Max Newman met au point le premier calculateur électronique du monde,
précurseur de l’ordinateur moderne : la machine Colossus. Il s’appuie sur la machine
universelle de Turing conçue pour exécuter une suite d’opérations mathématiques données
à l’aide de bandes perforées, comme celles utiliées pour les pianos mécaniques. Contre
l ?avis de l’Etat Major de Bletchley qui cherche à enterrer le projet, car jugé irréalisable,
l’audacieux Tommy Flowers relève le défi et se lance dans la réalisation de Colossus qu’il
termine fin 1943 :
La machine Colossus, composée de 1500 valves électroniques, est bien plus rapide que
les bombes de Turing dont les communications de relais électromécaniques sont assez
lentes. Elle réalise 5000 opérations par seconde et le message crypté est en général cassé
en quelques heures. Elle permet de retrouver le texte clair à partir du texte chiffré via un
décryptage progressif sans qu’il soit nécessaire de récupérer la clé. Le Colossus est un
exemple concret de machine de Turing. Il utilise une combinaison des systèmes mécaniques
(bandes de papier perforées pour les entrées et les sorties) et électroniques (tubes à vide).
Ordinateur avant la lettre, il effectue une gamme de calculs très restreinte et spécialisée
(il est par exemple incapable de multiplier deux nombres), mais il le fait vite et bien. Ceci
est possible notamment grâce à l’absence de tout programme stocké : toute la logique est
câblée, et la programmation se fait au moyen d’interrupteurs. Lorsque Colossus travaille,
il lit les caractères à raison de 5000 par seconde. La bande de papier défile alors à 50 km/h.
Pendant les 200 ?s entre deux lectures, Colossus effectue 100 op érations logiques sur une
matrice de 5 caract ères. Aussi incroyable que cela paraisse, aucun ordinateur personnel
moderne n’égale Colossus dans les tâches bien spécifiques pour lesquelles il a été conçu.
Si Colossus, comme les découvertes de Turing, reste classifié, il ouvre cependant la
voie à une nouvelle orientation de la cryptographie qui peut dorénavant compter sur
l’efficacité et la flexibilité des ordinateurs programmables, accélérant la course au code
indéchiffrable et attisant la rivalité entre concepteurs et décrypteurs. La cryptologie rentre
ainsi dans l’ère industrielle.