Analyse fréquentielle
L'analyse fréquentielle ou analyse de fréquence est un procédé de décompte du nombre de lettres qui se base sur le fait que les lettres ont une fréquence d'apparition qui varie et qui est propre à chaque langue. En cryptanalyse, l'analyse fréquentielle est utilisée pour déchiffrer un chiffrement par substitution.
Il est possible de reproduire les calculs de fréquence détaillés dans cet article en utilisant cet outil d'analyse fréquentielle que j'ai dévéloppé et mis en ligne.
Fréquences d'apparition des lettres
Pour illustrer le concept de fréquence d'apparition de lettres, prenons le poème L'amour du mensonge de Baudelaire :
Quand je te vois passer, ô ma chère indolente,
Au chant des instruments qui se brise au plafond
Suspendant ton allure harmonieuse et lente,
Et promenant l'ennui de ton regard profond ;
Quand je contemple, aux feux du gaz qui le colore,
Ton front pâle, embelli par un morbide attrait,
Où les torches du soir allument une aurore,
Et tes yeux attirants comme ceux d'un portrait,
Je me dis : Qu'elle est belle ! et bizarrement fraîche !
Le souvenir massif, royale et lourde tour,
La couronne, et son coeur, meurtri comme une pêche,
Est mûr, comme son corps, pour le savant amour.
Es-tu le fruit d'automne aux saveurs souveraines ?
Es-tu vase funèbre attendant quelques pleurs,
Parfum qui fait rêver aux oasis lointaines,
Oreiller caressant, ou corbeille de fleurs ?
Je sais qu'il est des yeux, des plus mélancoliques
Qui ne recèlent point de secrets précieux ;
Beaux écrins sans joyaux, médaillons sans reliques,
Plus vides, plus profonds que vous-mêmes, ô Cieux !
Mais ne suffit-il pas que tu sois l'apparence,
Pour réjouir un coeur qui fuit la vérité ?
Qu'importe ta bêtise ou ton indifférence ?
Masque ou décor, salut ! J'adore ta beauté.
Si l'on compte le nombre de fois que chaque lettre apparait dans le texte on obtient le tableau suivant :
-
Lettre Compte Fréquence a 64 7.18% b 10 1.12% c 26 2.92% d 27 3.03% e 139 15.6% f 17 1.91% g 2 0.22% h 6 0.67% i 52 5.84% j 7 0.79% l 47 5.27% m 29 3.25% -
Lettre Compte Fréquence n 58 6.51% o 61 6.85% p 25 2.81% q 17 1.91% r 66 7.41% s 71 7.97% t 61 6.85% u 79 8.87% v 10 1.12% x 11 1.23% y 4 0.45% z 2 0.22%
On peut noter que certaines caractères comme le e
, le u
, le s
, le r
et le a
constituent près de la moitié des lettres du texte. À l'inverse g
, h
, v
, x
, y
et z
représentent moins de 4% des lettres du texte et la lettre w
n'apparait pas.
Cette fréquence d'apparition de certains caractères plutôt que d'autres est ce qui défini la base de l'analyse fréquentielle. Il est cependant important de noter qu'il n'y a pas de fréquence exacte d'apparition des lettres car la fréquence d'un texte varie en fonction d'un grand nombre de facteurs :
- la langue du texte : chaque langue à une fréquence d'apparition des lettres différente
- la longueur du texte : plus le texte est long et plus la fréquence d'apparition des lettres est représentative
- le style du texte : soutenu, courant, familier
- la date à laquelle le texte a été écrit : un texte du 18ème siècle utilisera un champ lexical différent d'un texte moderne
- le sujet du texte : un texte médical pourra contenir un grand nombre de mot latin
- l'auteur : chaque auteur a un corpus de vocabulaire et un style différent, ce qui fait varier les lettres utilisées
Un exemple classique est le roman La Disparition de Georges Perec qui a été écrit dans son intégralité sans utiliser la lettre
e
, alors même que celle-ci est la plus utilisée dans la langue française.
Analyse multi-caractères
De la même manière que chaque lettre a une fréquence d'apparition propre, chaque groupe de lettre en a également une. On parle ainsi de n-gramme pour désigner l'analyse de caractères par groupe de taille .
Les fréquences d'apparition de ces groupes peuvent être utilisées pour trouver des récurrences dans des messages chiffrés.
Digrammes
Si l'on reprend le poème de Baudelaire précédent et qu'on analyse les digrammes présent en utilisant une fenêtre glissante (pour un texte ABCDE
on aura AB
, BC
, CD
et DE
), sur les 212 digrammes présent, les 10 suivants représentent 17.4% des apparitions :
Digramme | Compte | Fréquence |
---|---|---|
es | 25 | 2.81% |
re | 19 | 2.13% |
le | 19 | 2.13% |
qu | 17 | 1.91% |
nt | 17 | 1.91% |
et | 15 | 1.69% |
ur | 15 | 1.69% |
on | 15 | 1.69% |
eu | 14 | 1.57% |
ou | 14 | 1.57% |
Coupler avec la fréquence des lettres, les digrammes peuvent permettre de déchiffrer automatiquement un texte chiffré par subsitution puisque si certaines lettres ont une fréquence d'apparition proche entre elles, les digrammes permettent de trancher entre quelle lettre utiliser puisque certains ont de forte chances d'apparaitre là où d'autre sont très rarement présent.
Par exemple si l'on a un extrait d'un texte chiffré qui vaut
xy
et que l'on sait quey
représente unn
en texte clair mais que l'on hésite pour la valeur dex
entre uno
ou unu
, on peut déterminer que :
- le digramme
on
a environ 1.5% de chance d'être présent- le digramme
un
a environ 0.6% de chance d'être présentLe digramme a donc plus de chance d'être un
on
et l'on peut émettre l'hypothèse que le caractère chiffréx
correspond à uno
en texte clair.
Déterminer une fréquence standard
La question qui se pose pour pouvoir utiliser l'analyse fréquentielle à des fins de cryptographie est donc de savoir quelle fréquence d'apparition des lettres utiliser. Comme vu précédemment, la fréquence d'apparition des lettres dépend de nombreux facteurs et de fait il n'est pas possible d'en avoir une qui soit universelle.
Une pratique courante est d'utiliser une quantité de texte importante issue de différente sources et auteurs pour établir une fréquence la plus représentative possible. C'est notamment ce qu'à fait L'université de Toulouse en 2008 en mesurant la fréquence d'apparition des lettres de l'ensemble des articles en français de wikipédia.
Une autre solution est de constituer son propre corpus de texte et d'analyse la fréquence des caractères et des n-grammes présents. Ici nous allons utiliser les ouvrages suivant disponible au format texte sur le site du projet Gutenberg et sur Internet Archive :
- L'Étranger d'Albert Camus
- Du côté de chez Swann de Marcel Proust
- Les trois Mousquetaires d'Alexandre Dumas
- L'Écume des jours de Boris Vian
- Le dernier jour d'un condamné de Victor Hugo
- Tour du monde en 80 jours de Jules Verne
Sur un total de 2 650 118 lettres différentes on a la répartition de fréquence suivante :
- Pour les lettres séparées :
-
Lettre Compte Fréquence e 442077 16.68% a 235788 8.9% s 202690 7.65% i 201250 7.59% t 193694 7.31% n 182364 6.88% r 172533 6.51% u 171809 6.48% l 143673 5.42% o 142839 5.39% d 97372 3.67% m 83227 3.14% c 82578 3.12% -
Lettre Compte Fréquence p 71750 2.71% v 49221 1.86% q 35029 1.32% f 26800 1.01% g 25462 0.96% h 25309 0.96% b 22134 0.84% j 16545 0.62% x 10117 0.38% y 7561 0.29% z 6000 0.23% w 1220 0.05% k 1076 0.04%
- Pour les digrammes principaux :
-
Digramme Compte Fréquence es 65595 2.48% re 56235 2.12% en 53992 2.04% le 53387 2.01% ai 52622 1.99% de 47578 1.80% et 43015 1.62% ou 41988 1.58% it 41320 1.56% te 40089 1.51% nt 39970 1.51% er 37643 1.42% -
Digramme Compte Fréquence on 36867 1.39% se 35487 1.34% qu 34747 1.31% el 32866 1.24% an 32156 1.21% la 32010 1.21% is 29383 1.11% ne 28783 1.09% me 28148 1.06% ur 27820 1.05% ta 26644 1.01% em 26452 1.00%
- Pour les trigrammes :
Trigramme | Compte | Fréquence |
---|---|---|
ait | 23614 | 0.89% |
ent | 20315 | 0.77% |
que | 19210 | 0.72% |
les | 13841 | 0.52% |
lle | 12839 | 0.48% |
ede | 12171 | 0.46% |
ais | 12065 | 0.46% |
tre | 11287 | 0.43% |
ant | 10822 | 0.41% |
ous | 10797 | 0.41% |
des | 10371 | 0.39% |
res | 10344 | 0.39% |
Exemple de déchiffrement par analyse de fréquence
Prenons le texte suivant :
GVRMEHZMEWLTMCHLKDKEHGVBZECVUVHITWWEAVHKMJBKEPPTMJGVHBZVUEAHLVAWCKEHKBZKCPVCTEKMBKIKCVWDVCWLVGVUKAGKEGVHWKCWEAVHGVIVMCCVVWGMLKUITAYMEOMWKUTEWEVOCTEGIEVAZVMCVMJLKPPTANVKEPVHLKUIVHHTMHPKWKIPVDVCWVLVBTAWVURPKEPVHHMLVWHWCVHAKEOHGVPKWKREHHVCEVVWBVOMWKGTCKIPVYMKAGPKOEPPVKMJWVWTAHVATCUVHKMJQVMJDEOHBVPPVPKBVAVHWRKHMAIKEHVCYMEPVRVMCVCEVMHVUKRRTCWKGVHWKCWEAVHGVIVMCCVGMLKUITAWEVGVGKAHMARPKWBTPTCEVGMLKUITACTHVVWIPKABRKCOMUVGMAVNTMHHVGKEPVWUVURPEWPKBZTRVEUUVAHVKDVBHKUTMHHVYMVGTCKEWMACKQTAGVHTPVEPKCCEVCV
Si l'on regarde son indice de coïncidence on peut voir que celui-ci vaut 0.0721
, ce qui est très proche de celui du Français (0.0778
). On peut donc déduire que ce texte est donc très probablement chiffré par substitution mono-alphabétique.
Si on effectue son analyse fréquentielle on obtient le tableau suivant :
-
Lettre Compte Fréquence v 80 16.16% k 49 9.9% h 39 7.88% e 35 7.07% m 33 6.67% c 32 6.46% w 31 6.26% p 27 5.45% t 25 5.05% a 25 5.05% g 22 4.44% u 17 3.43% -
Lettre Compte Fréquence b 13 2.63% i 13 2.63% r 11 2.22% l 11 2.22% o 7 1.41% z 6 1.21% j 6 1.21% d 5 1.01% y 4 0.81% n 2 0.4% q 2 0.4%
Pour les digrammes principaux on a :
-
Digramme Compte Fréquence vh 14 2.83% gv 11 2.23% ke 10 2.02% pv 10 2.02% pk 9 1.82% cv 8 1.62% vg 8 1.62% hv 8 1.62% ep 7 1.42% -
Digramme Compte Fréquence vc 7 1.42% vw 7 1.42% wk 7 1.42% vm 7 1.42% ta 7 1.42% ev 7 1.42% lk 6 1.21% vu 6 1.21% mj 6 1.21%
Pour les trigrammes on a :
-
Trigramme Compte Fréquence hgv 4 0.81% avh 4 0.81% kep 4 0.81% gvh 4 0.81% vmc 4 0.81% lku 4 0.81% kui 4 0.81% epv 4 0.81% cev 4 0.81% keh 3 0.61% wea 3 0.61% eav 3 0.61% kmj 3 0.61% -
Trigramme Compte Fréquence vhw 3 0.61% vvw 3 0.61% gml 3 0.61% mlk 3 0.61% uit 3 0.61% ita 3 0.61% tmh 3 0.61% pkw 3 0.61% hhv 3 0.61% vgm 3 0.61% hlk 2 0.41% uvh 2 0.41% vhk 2 0.41%
Dans un premier temps les éléments suivants peuvent être déduit de ces résultats :
- dans le texte chiffré la lettre
V
correspond sans doute à la lettreE
puisque c'est la plus fréquente - le digramme
GV
correspondrait alors àDE
et le trigrammeGVH
àDES
K
correspond sans doute à la lettreA
Si l'on applique ces déductions au texte on obtient :
DERMISZMIWLTMCSLADAISDEBZICEUESITWWIAESAMJBAIPPTMJDESBZEUIASLEAWCAISABZACPECTIAMBAIACEWDECWLEDEUAADAIDESWACWIAESDEIEMCCEEWDMLAUITAYMIOMWAUTIWIEOCTIDIIEAZEMCEMJLAPPTANEAIPESLAUIESSTMSPAWAIPEDECWELEBTAWEURPAIPESSMLEWSWCESAAIOSDEPAWARISSECIEEWBEOMWADTCAIPEYMAADPAOIPPEAMJWEWTASEATCUESAMJQEMJDIOSBEPPEPABEAESWRASMAIAISECYMIPEREMCECIEMSEUARRTCWADESWACWIAESDEIEMCCEDMLAUITAWIEDEDAASMARPAWBTPTCIEDMLAUITACTSEEWIPAABRACOMUEDMAENTMSSEDAIPEWUEURPIWPABZTREIUUEASEADEBSAUTMSSEYMEDTCAIWMACAQTADESTPEIPACCIECE
Si l'on regarde la fin de ce texte, on peut voir que l'on a l'enchainement de lettre suivant : E_E
. En français la plupart des lettres encadrées par des E
sont T
, R
et S
. La lettres S
ayant déjà été identifiée, si l'on essaye de remplacer la lettre C
par R
, on obtient :
DERMISZMIWLTMRSLADAISDEBZIREUESITWWIAESAMJBAIPPTMJDESBZEUIASLEAWRAISABZARPERTIAMBAIAREWDERWLEDEUAADAIDESWARWIAESDEIEMRREEWDMLAUITAYMIOMWAUTIWIEORTIDIIEAZEMREMJLAPPTANEAIPESLAUIESSTMSPAWAIPEDERWELEBTAWEURPAIPESSMLEWSWRESAAIOSDEPAWARISSERIEEWBEOMWADTRAIPEYMAADPAOIPPEAMJWEWTASEATRUESAMJQEMJDIOSBEPPEPABEAESWRASMAIAISERYMIPEREMRERIEMSEUARRTRWADESWARWIAESDEIEMRREDMLAUITAWIEDEDAASMARPAWBTPTRIEDMLAUITARTSEEWIPAABRAROMUEDMAENTMSSEDAIPEWUEURPIWPABZTREIUUEASEADEBSAUTMSSEYMEDTRAIWMARAQTADESTPEIPARRIERE
On peut voir que les dernières lettres du texte forme un mot correcte ; ARRIERE
, nos suppositions étaient donc probablement correctes.
On peut ensuite voir qu'il y a plusieurs digrammes de la lettre P
à plusieurs endroits dans le texte. En supposant que ces lettres ne soient pas collées entre elles suite à la suppression des espaces du texte d'origine on peut en déduire que c'est probablement un L
(les digrammes composées de la même lettre les plus fréquents étant de loin SS
, EE
et LL
et on a déjà les lettres S
et E
)
On obtient alors :
DERMISZMIWLTMRSLADAISDEBZIREUESITWWIAESAMJBAILLTMJDESBZEUIASLEAWRAISABZARLERTIAMBAIAREWDERWLEDEUAADAIDESWARWIAESDEIEMRREEWDMLAUITAYMIOMWAUTIWIEORTIDIIEAZEMREMJLALLTANEAILESLAUIESSTMSLAWAILEDERWELEBTAWEURLAILESSMLEWSWRESAAIOSDELAWARISSERIEEWBEOMWADTRAILEYMAADLAOILLEAMJWEWTASEATRUESAMJQEMJDIOSBELLELABEAESWRASMAIAISERYMILEREMRERIEMSEUARRTRWADESWARWIAESDEIEMRREDMLAUITAWIEDEDAASMARLAWBTLTRIEDMLAUITARTSEEWILAABRAROMUEDMAENTMSSEDAILEWUEURLIWLABZTREIUUEASEADEBSAUTMSSEYMEDTRAIWMARAQTADESTLEILARRIERE
Le texte est assez déchiffré pour pouvoir trouver des candidats uniques pour les lettres restantes :
- on voir à fin du texte l'enchainement de lettre STLEIL ; on peut déduire que
T
correspond à unO
- on a le digramme
WW
, qui est probalementTT
- on trouve alors l'enchainement BOLORIE ou
B
est sans doute unC
- CAILLOMJ est
CAILLOUX
- et ainsi de suite jusqu'à pouvoir remplacer toutes les lettres :
DEPUISHUITJOURSJAVAISDECHIREMESBOTTINESAUJCAILLOUJDESCHEMINSJENTRAISACHARLEROIAUCABARETVERTJEDEMANDAIDESTARTINESDEBEURREETDUJAMBONQUIFUTAMOITIEFROIDBIENHEUREUJJALLONGEAILESJAMBESSOUSLATABLEVERTEJECONTEMPLAILESSUJETSTRESNAIFSDELATAPISSERIEETCEFUTADORABLEQUANDLAFILLEAUJTETONSENORMESAUJYEUJVIFSCELLELACENESTPASUNBAISERQUILEPEURERIEUSEMAPPORTADESTARTINESDEBEURREDUJAMBONTIEDEDANSUNPLATCOLORIEDUJAMBONROSEETBLANCPARFUMEDUNEGOUSSEDAILETMEMPLITLACHOPEIMMENSEAVECSAMOUSSEQUEDORAITUNRAYONDESOLEILARRIERE
En rajoutant les espaces, accent et la ponctuation manquantes on retrouve le poème Au Cabaret Vert d'Arthur Rimbaud :
Depuis huit jours, j'avais déchiré mes bottines
Aux cailloux des chemins. J'entrais à Charleroi.
- Au Cabaret-Vert : je demandai des tartines
De beurre et du jambon qui fût à moitié froid.
Bienheureux, j'allongeai les jambes sous la table
Verte : je contemplai les sujets très naïfs
De la tapisserie. - Et ce fut adorable,
Quand la fille aux tétons énormes, aux yeux vifs,
- Celle-là, ce n'est pas un baiser qui l'épeure ! -
Rieuse, m'apporta des tartines de beurre,
Du jambon tiède, dans un plat colorié,
Du jambon rose et blanc parfumé d'une gousse
D'ail, - et m'emplit la chope immense, avec sa mousse
Que dorait un rayon de soleil arriéré.
Conclusion
Comme vu ci-dessus, l'analyse fréquentielle peut permettre de déchiffrer n'importe quel texte chiffré par substitution mono-alphabétique dès lors que celui-ci est suffisament long. Aujourd'hui ce type de chiffrement n'est de fait plus sécurisé et l'on préfèrera utiliser des algorithmes comme AES.