Académique Documents
Professionnel Documents
Culture Documents
CRYPTOGRAPHY
Prof. Yassine Maleh
Introduction
L'internet que nous avons créé est souvent indigne de confiance et plein de
risques. Cela est dû en partie au manque de sécurité intégré dans les services
et les protocoles que nous utilisons. Au 21e siècle, par exemple, nous ne
pouvons toujours pas savoir si le courrier électronique que nous avons reçu
provient réellement de la personne qui le dit et si personne n'a lu notre
courrier en cours de route. En fait, nous ne pouvons même pas savoir si le
courrier électronique a été falsifié. La prochaine génération de l'internet et de
ses services doit être construite de manière fiable, et c'est la cryptographie
qui fournit les techniques de base permettant de garder les choses secrètes,
d'identifier les choses et de valider la fiabilité. Malheureusement, il n'existe
pas de technique unique permettant d'obtenir tous ces éléments, et nous
devons souvent entrelacer les méthodes afin de créer des systèmes fiables.
Ainsi, nous verrons que nous utilisons souvent le chiffrement à clé secrète
pour protéger le contenu d'un message, et le chiffrement à clé publique pour
prouver l'identité de l'expéditeur et du destinataire. Nous utilisons ensuite des
méthodes de hachage pour assurer la validité des messages, et des signatures
de messages pour prouver l'identité de l'expéditeur et le contenu des
messages. Malheureusement, nous sommes encore loin de construire un
monde où nous utiliserons les signatures numériques de la même manière
que nous signons notre nom, mais avec l'impact toujours croissant des
piratages de données et de la cybercriminalité, il ne peut y avoir qu'une seule
voie à suivre.
1
Support de Cours : Cryptographie
1
Ciphers et principes de base
1.1 Introduction
L'avenir de l'internet, notamment en ce qui concerne l'élargissement de la
gamme d'applications, implique une compréhension beaucoup plus
approfondie de la confidentialité, de la vérification de l'intégrité et de
l'authentification. Sans cela, l'internet ne peut pas se développer correctement
et être fiable dans sa fourniture de services. L'un des meilleurs moyens de
préserver la vie privée, de vérifier l'intégrité et de prouver l'identité est le
cryptage des données, connu sous le nom de science de la cryptographie.
Dans le cadre du cryptage, on définit souvent le concept de Bob et Alice,
qui sont impliqués dans les communications, et Eve, qui pourrait écouter ou
même modifier leurs communications, ou qui pourrait même se faire passer
pour eux. Bob et Alice communiquent donc sur un canal de communication
et auquel Eve est susceptible d'avoir accès. Dans un environnement sécurisé,
Bob et Alice doivent pouvoir communiquer librement, et s'identifier l'un à
l'autre, sans qu'Eve ne puisse jamais révéler aucun des messages impliqués,
ni se faire passer pour eux (figure 1.1). Le processus consiste généralement
à prendre un texte en clair, à le convertir en texte chiffré, qu'Eve ne doit pas
pouvoir interpréter, puis à le reconvertir en texte en clair. Normalement, la
conversion d'un texte en clair en texte chiffré est appelée cryptage, et l'inverse
est appelé décryptage.
Afin de garder le secret, les deux principales méthodes que Bob et Alice
peuvent utiliser sont les suivantes :
• Un algorithme unique. Il s'agit d'un algorithme que Bob et Alice
connaissent, mais qu'ils ne disent pas à Eve. L'algorithme de codage et
de décodage est donc tenu secret.
• Utiliser un algorithme bien connu. Dans cette méthode, Eve connaît
l'algorithme, mais où Bob et Alice utilisent une clé électronique spéciale
pour définir de manière unique la façon dont le message est converti en
texte chiffré, puis à nouveau.
2
Support de Cours : Cryptographie
3
Figure 1.1 Bob, Alice et Eve.
Nous pouvons ensuite en faire une chaîne de caractères avec un "x" entre les
caractères :
6
Nous pouvons maintenant utiliser des correspondances à trois caractères pour
les reconvertir en texte :
et où se trouve la cartographie :
Nous pouvons alors utiliser cette correspondance (par exemple, A est défini
comme ' ', B comme '..-' et C comme '..x'. Ensuite, nous pouvons les
reconvertir avec :
AGTCDHOTQODTCJ
1.2.2 Pigpen
Dans le cadre du chiffrement, il est utile que Bob et Alice puissent créer un
mappage de chiffrement facile à mémoriser. L'une des meilleures méthodes
consiste à utiliser une méthode graphique, car l'œil humain trouve souvent
plus facile de représenter des caractères graphiques que des caractères
alphabétiques. Le chiffrement Pigpen en est un bon exemple et utilise une
méthode de substitution mono-alphabétique.
Pour le chiffrement Pigpen, nous avons d'abord créé quatre grilles en
forme de carré et de diagonale, avec un point placé dans la deuxième version
de la grille (figure 1.3). Ensuite, les caractères de l'alphabet sont disposés en
séquence dans les grilles. Figure
1.4 décrit le mappage de la chaîne en clair de "biométrique".
Le problème avec Pigpen est qu'une fois le mappage connu, il est difficile
de garder le message secret. Bob pourrait cependant l'intégrer dans un
graphique d'apparence valide et l'envoyer à Alice. Eve, alors, pourrait ne pas
être en mesure de voir les symboles Pigpen intégrés, mais où Alice sait où
regarder.
7
Figure 1.3 Cartographie des codes.
8
Comme nous avons maintenant beaucoup plus de correspondances possibles,
le code devient plus sûr, car il est probable qu'Eve doive chercher dans de
nombreuses correspondances jusqu'à ce qu'elle trouve la bonne. Ce type
d'approche est connu sous le nom de méthode de force brute, Eve essayant
toutes les correspondances de code possibles jusqu'à ce qu'elle trouve une
solution. Dans le pire des cas, elle cherchera toutes les correspondances
possibles, mais elle peut aussi trouver la solution du premier coup. En
moyenne, cependant, elle cherchera à travers la moitié des mappings
possibles pour trouver la bonne solution.
Pour calculer le temps qu'il lui faudra, nous pouvons supposer qu'en
moyenne, il cherchera dans la moitié des mappings de code. Donc, si elle
prend une seconde pour vérifier chaque correspondance, le temps pris, en
moyenne, sera le suivant :
qui est d'environ 6,4 ×1018 ans (plus de 6 400 000 000 000 000 000 d'années).
Le code alphabétique brouillé semble donc sûr du point de vue de la force
brute. Malheureusement, il peut être craqué assez rapidement en utilisant
l'analyse de fréquence. Pour le code de la figure 1.7, nous pouvons voir que
le "A" apparaît le plus souvent dans le chiffrement, et comme le "e" est la
lettre anglaise la plus populaire, il est probable qu'il corresponde à un "e" en
clair. Ensuite, nous pouvons voir que "Q" apparaît quatre fois, et qu'il est
donc plus probable qu'il corresponde à un "t", qui est la lettre suivante la plus
probable dans l'alphabet anglais.
Une analyse plus formelle des probabilités est présentée dans le tableau
1.2, où l'on constate que la lettre "e" est la plus probable, suivie du "t", puis
du "o", et ainsi de suite. Outre l'analyse des occurrences d'une seule lettre, il
est également possible d'examiner les occurrences de deux lettres
(digrammes), voire de trois lettres (trigrammes). Nous pouvons également
analyser les occurrences des mots (séparés par des espaces), et où "le" est le
mot le plus courant.
Un schéma de chiffrement à alphabet brouillé est facile à mettre en
œuvre, mais, malheureusement, une fois qu'il a été "craqué", il est facile de
déchiffrer les données chiffrées. Normalement, pour améliorer le processus
de chiffrement, le chiffrement comporte des paramètres supplémentaires qui
modifient la correspondance. Il peut s'agir de modifier la correspondance
dans le temps, par exemple pour l'heure du jour ou la date. De cette façon, Bob
et Alice connaissent les correspondances du code pour une heure et/ou une
date donnée, par exemple en ayant une correspondance différente pour
chaque jour de la semaine. La machine Enigma a été utilisée pendant la
9
guerre, où les opérateurs reconfiguraient les machines chaque jour à l'aide
d'un livre de codes (ou feuille de clés).
10
V 1.00 EA 0.64 CON 0.45 HAVE 0.55
K 0.42 VE 0.64 RCE 0.43 VOUS 0.55
X 0.30 CO 0.59 TOUT 0.44 POURQ 0.53
ES UOI
J 0.23 DE 0.55 EVE 0.44 SONT 0.50
Q 0.14 RA 0.55 ITH 0.44 ON 0.47
Z 0.09 RO 0.55 TED 0.44 OU 0.45
11
donne un indice sur la taille de la clé. Par exemple, si nous avons un message
de "theywillnotkeeptheburningdeck" et ensuite avec une clé de "abc", nous
obtenons :
theywillnotkeeptheburningdeck
abcabcabcabcabcabcabcabcabcab
TIGYXKLMPOUMEFRTIGBVTNJPGEGCL
On peut donc penser que la taille de la clé pourrait être de trois. Normalement,
cependant, nous avons besoin d'une quantité considérable de texte chiffré
pour deviner avec précision la taille de la clé. Nous pouvons alors utiliser une
méthode d'analyse de fréquence pour obtenir une liste restreinte des valeurs
de clé possibles.
Pour améliorer la sécurité, plus la taille du mot de code est grande, plus le
nombre de lignes pouvant être incluses dans le processus de chiffrement est
important. On est également à l'abri de l'analyse des occurrences courantes
de deux ou trois lettres, si la taille de la clé est relativement longue. Par
exemple, "ee" peut être chiffré avec "KV" (pour GR), "VI" (pour RE), "II"
(pour EE), "IR" (pour EN) et "RK" (pour NG).
12
Si l'on veut un code inviolable, il faut utiliser un tampon à usage unique,
c'est-à-dire un code de chiffrement qui n'est utilisé qu'une seule fois. Le
mappage à un temps est
Tableau 1.3 Codage
est ensuite partagé entre Bob et Alice, et est utilisé une fois pour envoyer un
message, et où un autre pad est créé pour un autre message (figure 1.8).
Par exemple, on peut d'abord créer un livre de codes, que seuls Bob et
Alice connaissent :
13
Dans ce cas, il y a 25 caractères sur chaque ligne du tampon à usage unique,
et nous allons donc de [0] à [24] sur la première ligne, puis de [25] à [49] sur
la deuxième ligne, et ainsi de suite. Ensuite, si Bob veut envoyer un message,
il choisira une clé en fonction de la position des lettres :
[5][92 ][ 4][2 32 ][ 20 3][7 0][2 25][ 19 5]
14
1.3 Encodage Méthodes
Sur un système informatique, le code et les données sont représentés sous
forme binaire, mais l'homme a du mal à traiter les formats binaires, c'est
pourquoi d'autres formats sont utilisés pour représenter les valeurs binaires.
Deux formats typiques utilisés pour représenter les caractères sont l'ASCII et
l'UTF-16. Avec l'ASCII, nous avons des valeurs de 8 bits et il peut donc
supporter jusqu'à 256 caractères différents (28 ). L'UTF-16 étend les
caractères à des valeurs de 16 bits, ce qui donne un total de 65 536 caractères
(216 ). Dans le codage ASCII, les caractères imprimables, tels que "a" et "b",
sont associés à des valeurs décimales, binaires et hexadécimales :
15
Figure 1.9 Conversion du binaire en hexadécimal ou en base 64.
Le format le plus courant pour représenter les caractères anglais standard est
l'ASCII. Dans sa forme standard, il utilise un code binaire de 7 bits pour
représenter les caractères (lettres, avec une plage de 0 à 127), mais sa portée
est plutôt limitée car il ne prend pas en charge les symboles tels que les lettres
grecques. Pour augmenter le nombre de symboles pouvant être représentés,
on utilise l'ASCII étendu, dont le code est de 16 bits. L'annexe A présente le
jeu de caractères ASCII standard (en binaire, décimal, hexadécimal et
également sous forme de caractère).
Certains caractères ASCII non imprimables importants sont : Nouvelle
ligne (0x13) ; Carriage Return (0x10) ; Tab (0x07) ; et Backspace (0x08),
tandis que l'espace est représenté par 0x20. Les représentations de 'A' et 'B'
sont les suivantes :
Char Décimal UTC-16 ASCII Hexa Oct HTML
16
qui sont représentés par des valeurs de quatre bits allant de 0000 à 1111. Pour
la base 64, nous prenons six bits à la fois. Par exemple, si nous prenons
l'exemple de "fred", nous obtenons :
ASCII f r e d
Binaire 01100110 01110010 01100101 01100100
Avec la base 64, nous créons des groupes de quatre caractères de base 64, et
nous remplissons les valeurs de six bits avec des zéros, puis nous utilisons le
caractère "=" pour remplir les groupes de quatre caractères de base 64 :
17
Figure 1.10 Conversion en hexagone.
Pour la base 58, nous convertissons les caractères ASCII en binaire, puis nous
continuons à diviser par 58 et convertissons le reste en un caractère de la base
58. L'alphabet devient :
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz".
18
Si nous prenons l'exemple de 'e', où e a une valeur décimale de 101, nous
divisons par 58 pour obtenir :
1 reste 43
0 reste 1
123456789 ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
et ensuite obtenir :
2k
Si nous prenons maintenant 'ef', nous obtenons×958 (102 + 101 256), où nous
déplaçons chaque caractère d'un octet. En fait, nous prenons la valeur binaire
de la chaîne, puis nous la divisons par 58 et nous prenons le reste. Donc 'ef'
est '01100101 01100110'.
19
La formule pour cela est la suivante :
n!
=
nCk
k !(n - k) !
Où ! est l'opérateur factoriel, n est le total à choisir, et k est le nombre
d'options à choisir. Par exemple, 5 ! correspond à 5 ×3×2×1. Donc, pour notre
exemple, nous obtenons :
4! 4×3×2×1
4 C3 = = = 4
3!(4 − 3)! 3×2×1
Avec les permutations, nous examinons toutes les options, y compris leur
ordre. Par exemple, le nombre de permutations pour trois pays avec notre
exemple est :
{UK, France, Allemagne}, {UK, France, Irlande}, {UK, Allemagne, France},
{UK, Allemagne, Irlande}, {UK, Irlande, France}, {UK, Irlande, Allemagne},
... {France, Allemagne, Irlande}]
La formule pour cela est la suivante :
n!
P = ( n − k )!
n k
20
1.4.2 Probabilité Théorie
Avec la théorie des probabilités, nous déterminons la probabilité qu'un
événement se produise, généralement en comprenant les chances
d'interaction de chacun des éléments impliqués dans un événement, et la
probabilité qu'ils se produisent. Dans le cas d'un dé, chacun des chiffres du
dé a la même probabilité, ainsi la probabilité que nous obtenions une valeur
spécifique de n est :
1
P(n) = 0,167
6 ≈
Si nous avons deux événements (A et B) qui sont indépendants, la
probabilité que les deux se produisent est :
P(A et B) = P(A). P(B)
Si les événements sont mutuellement exclusifs, par exemple, si nous lançons
une pièce de monnaie, et si elle est face, elle ne peut pas être aussi pile. Donc,
pour les événements exclusifs par mutualité :
P(A et B) = 0
21
En général, pour deux événements dépendants (A et B), on a :
1.4.4 Logarithmes
Il existe certaines méthodes de cryptographie qui se basent sur les
logarithmes. Ils ont été découverts par John Napier, qui a été le premier à
proposer que nous puissions multiplier deux nombres ensemble (a, b), en
trouvant le logarithme de a et en l'ajoutant au logarithme de b. Nous pouvons
ensuite prendre le logarithme inverse pour déterminer le résultat. Cela a
changé la face des calculs, puisque nous pouvions multiplier de grands
nombres ensemble, simplement en consultant une table pour la valeur du
logarithme, et en additionnant les résultats, puis appliquer l'inverse à travers
une table de consultation. Pour multiplier, on obtient :
a × b = Inverse Log (Log (a)+ Log (b))
La base du logarithme est importante pour le calcul. Pour notre système
décimal, nous utilisons une base de 10 (log10 (x) et 10x ), mais pour de
nombreuses opérations mathématiques, nous utilisons une base
logarithmique naturelle (Loge (x) ou ex , où e a une valeur d'environ 2,718).
22
La base de e est utilisée dans de nombreux changements naturels, comme
dans les circuits électriques. Les règles sont donc les suivantes :
g = a.b
log(g) = log(a)+log(b)
g = Inverse Log (log(a)+log(b))
g = a/b
log(g) = log(a)-log(b)
g = Inverse Log (log(a)-log(b))
g = ax
log(g) = x.log(a)
g = Inverse Log (x.log(a))
Par exemple :
g= 103
log10 (g) = 3.log10
(10) g= 10(3×1) =
1,000
Une autre amélioration que nous pouvons apporter est que les nombres
premiers (à l'exception de 2 et 3) entrent dans l'équation de :
6k ± 1
24
résultat. C'est cette caractéristique qui rend difficile la détermination d'une
valeur secrète (dans ce cas, le secret est x). En Python, Java et C#, l'opérateur
mod est "%".
Le nombre de bits utilisés pour définir un nombre entier est souvent défini
par la taille des registres utilisés dans le processeur. Dans la plupart des cas,
la taille maximale est de 64 bits - et est représentée par une valeur longue non
signée (ulong). En cryptographie, nous avons souvent des valeurs bien plus
grandes que cela et nos valeurs entières peuvent avoir 2 048 bits ou plus.
Ainsi, les types de données entières normaux ne supporteront pas ces
opérateurs, et il peut y avoir un débordement dans les opérations. Nous
utilisons donc des Big Integers pour effectuer les opérations, et qui stockent
leurs valeurs comme des entités de type chaîne de caractères, et non comme
des valeurs numériques. Cela peut donc supporter presque tous les nombres
que nous devons générer. Lorsque les valeurs sont traitées, les chaînes sont
converties en format numérique, les opérations sont effectuées et le résultat
est replacé dans un format de chaîne.
Une mise en œuvre populaire des grands nombres entiers est la bibliothèque
Bouncy Castle, où, en C#, la suite calcule 2 à la puissance d'un nombre donné
(i) :
BigInteger b = new BigInteger(''2'');
BigInteger c = b.Pow(i);
Les valeurs sont ensuite déclarées en tant qu'objets Big Integers et peuvent
être affichées en les convertissant en chaîne de caractères. Par exemple, si
nous voulons calculer :
A = gx mod (n)
B = gy mod (n)
k1 = Bx mod (n)
k2 = Ay mod (n)
nous pouvons mettre en œuvre ce qui suit (où x et y sont des valeurs
aléatoires comprises entre 0 et 90, et g et n sont des valeurs constantes) :
26
int x = Global.random(90);
int y = Global.random(90);
BigInteger g = new BigInteger("153d5d6172adb4cb9a428cc", 16);
BigInteger n = new BigInteger("9494fec095f3b8ca98cdf3b", 16);
BigInteger A = g.Pow(x).Mod(n);
BigInteger B = g.Pow(y).Mod(n);
BigInteger k1=B.Pow(x).Mod(n);
BigInteger k2=A.Pow(y).Mod(n);
String k1value = g.ToString();
String k2value = n.ToString();
Le tableau suivant définit la valeur maximale qui peut être représentée pour
différentes tailles de bits entiers :
Taille Int Nombre de valeurs
16 65,536
32 4,294,967,296
48 281,474,976,710,656
64 18,446,744,073,709,551,616
80 1,208,925,819,614,629,174,706,176
96 79,228,162,514,264,337,593,543,950,336
112 5,192,296,858,534,827,628,530,496,329,220,096
128 340,282,366,920,938,463,463,374,607,431,768,211,456
144 22,300,745,198,530,623,141,535,718,272,648,361,505,980,416
160 1,461,501,637,330,902,918,203,684,832,716,283,019,655,932,542,97 6
176 95,780,971,304,118,053,647,396,689,196,894,323,976,171,195,136,4 75,136
192 6,277,101,735,386,680,763,835,789,423,207,666,416,102,355,444,46 4,034,512,896
208 411,376,139,330,301,510,538,742,295,639,337,626,245,683,966,408, 394,965,837,152,256
224 26,959,946,667,150,639,794,667,015,087,019,630,673,637,144,422,5 40,572,481,103,610,249,216
240 1,766,847,064,778,384,329,583,297,500,742,918,515,827,483,896,87 5,618,958,121,606,201,292,
619,776
1.8.4 X- OU
Avec les opérateurs de décalage, un autre opérateur important est l'opération X-
OR au sens des bits (!). Sa fonction de base est la suivante :
27
1 0 1
0 1 1
1 1 0
Voici un exemple d'opération avec un X-OR de 0101 0101 pour chaque octet :
0+0=0 1+1=0
0+1=1 1+0=1
Elle effectue l'opération équivalente à une fonction OU exclusif (XOR). Pour
l'arithmétique modulo-2, la soustraction est la même opération que l'addition:
0-0=0 1-1=0
0-1=1 1-0=1
La multiplication s'effectue de la manière suivante :
0×0=0 0×1=0
1×0=0 1×1=1
qui est une opération équivalente à une opération logique ET.
La représentation numérique binaire, telle que 101110, est souvent
difficile à utiliser lors de la multiplication et de la division. Une
représentation typique consiste donc à manipuler la valeur binaire comme un
polynôme de puissances de bits. Cette technique représente chaque bit
comme un x à la puissance de la position du bit, puis additionne chacun des
bits, par exemple :
10111 x4 +x2 +x+1
1000 0001 x7 + 1
1111 1111 1111 1111 x11 +x10 +x9 +x8 +x7 +x6 +x5 +x4 +x3 +x2 +x+1
29
10101010 x7 +x5 +x3 +x
L'addition des bits est traitée comme une addition modulo-2, où deux
variables ayant les mêmes puissances sont égales à zéro (1+1=0). Par
exemple :
x4 + x4 + x2 + 1 + 1
est égal à x2 car x4 +x4 est égal à zéro et 1+1 est égal à 0 (en modulo-2). Un
exemple qui le montre est la multiplication de 10101 par 01100.
Ainsi, la division modulo-2 de 101101 par 100 est donc 1011 reste 1. Comme
pour la multiplication, cette division modulo-2 peut également être
représentée par des valeurs polynomiales.
30
1.10 GCD
Le PGCD est connu sous le nom de plus grand diviseur commun ou plus
grand facteur commun (GCD). Il s'agit du plus grand nombre entier positif
qui se divise en deux nombres sans reste. Il s'agit du plus grand nombre entier
positif qui divise deux nombres sans reste. Par exemple, le PGCD de 9 et de
15 est 3. C'est une opération qui est utilisée dans de nombreux algorithmes
de cryptage, et voici un exemple de code permettant de calculer le PGCD
pour deux valeurs (a et b) :
static int GCD(int a, int b)
{
int Remainder;
while( b != 0 )
{
Remainder = a % b;
a = b;
b = Remainder;
}
return a;
}
31
Normalement, les applications de simulation et de modélisation utilisent des
PRNG, afin que les valeurs générées puissent être répétées pour différentes
exécutions, tandis que la cryptographie, les loteries, les jeux d'argent et les
jeux utilisent des TRNG, car chaque valeur ne doit pas se répéter ou être
prévisible. Si la génération de la clé était déterministe, Eve pourrait
éventuellement deviner la clé créée. Ainsi, lors de la génération de clés de
chiffrement pour le chiffrement à clé publique, il est souvent demandé aux
utilisateurs de générer une activité aléatoire, et un nombre aléatoire est
ensuite généré sur la base de cette activité. Ce nombre aléatoire est ensuite
utilisé pour générer les clés de cryptage.
Cependant, les programmes informatiques ont souvent du mal à générer
des nombres véritablement aléatoires. C'est pourquoi des générateurs
matériels sont souvent utilisés dans des applications hautement sécurisées.
Une méthode consiste à générer un nombre aléatoire basé sur des signaux de
bruit de bas niveau, statistiquement aléatoires. Cela inclut des éléments tels
que le bruit thermique et l'effet photoélectrique.
66 17 88 79 90 21 72 43 34 45 76 27 98 89 0 31 82 53
!𝑥 ! + 𝑦 !
Si cette valeur est inférieure ou égale à un, on se place dans le cercle (de
rayon 1), sinon on sort du cercle. L'estimation de PI est alors égale à quatre
fois le nombre de points dans le cercle (M) divisé par le nombre total de
points (N). Dans la figure 1.14, les points bleus sont à l'extérieur du cercle et
les points jaunes sont à l'intérieur.
Figure 1.14 Analyse du texte chiffré par rapport aux probabilités normales.
33
1.11 Analyse de la fréquence
Enfin, nous ferons un peu d'analyse de fréquence, car elle est souvent utilisée
dans le décryptage des codes, notamment pour repérer les variations dans les
codes probables. La meilleure façon de l'illustrer est de prendre un exemple.
Si notre texte chiffré est :
34
LQ A EAOONM WC A CNI UNHAUNZ OKN IWMRU KAZ HKAQDNU CMWE AQ
LQUSZOMLAR ADN LQOW AQ LQCWMEAOLWQ ADN. LO LZ WQN IKLHK,
SQRLPN NAMRLNM ADNZ, NQHATZSRAONZ FLMOSARRB OKN IKWRN IWMRU.
LO LZ ARZW WQN IKLHK ARRWIZ OKN QNI LQUSZOMLNZ OW XN XAZNU
LQ AQB RWHAOLWQ ILOKWSO MNVSLMLQD AQB QAOSMAR MNZWSMHNZ,
WM OW XN LQ AQB AHOSAR TKBZLHAR RWHAOLWQZ. OBTLHARRB ARR OKAO
LZ MNVSLMNU LZ A MNRLAXRN QNOIWMP HWQQNHOLWQ. WSM IWMRU LZ
HKAQDLQD XB OKN UAB, AZ OMAULOLWQAR CWMEZ WC XSZLQNZZ AMN
XNLQD MNTRAHNU, LQ EAQB HAZNZ, XB EWMN MNRLAXRN AQU CAZONM
IABZ WC WTNMAOLQD. WSM TWZOAR ZBZONE, IKLRN ZOLRR SZNU
CWM EAQB SZNCSR ATTRLHAOLWQZ, KAZ XNNQ RAMDNRB MNTRAHNU XB
NRNHOMWQLH EALR. ILOK FWOLQD, OKN ZRWI AQU HSEXNMZWEN OAZP WC
EAMPLQD FWOLQD TA-TNMZ ILOK OKN TMNCNMMNU HAQULUAON, LZ
QWI XNLQD MNTRAHNU XB NRNHOMWQLH FWOLQD. OKN OMAULOLWQAR
ZBZONEZ,OKWSDK, KAFN XNNQ AMWSQU CWM KSQUMNUZ LC QWO
OKWSZAQUZ WC BNAMZ, AQU OBTLHARRB SZN INRR OMLNU-AQU-ONZONU
ENHKAQLZEZ. CWM OKN EWZO TAMO, CWM NJAETRN, IN OMSZO
A TATNM-XAZNU FWOLQD ZBZONE, NFNQ OKWSDK LO LZ INRR PQWIQ
OKAO A HWSQO WC OKN FWONZ ILOKLQ AQ NRNHOLWQ ILRR WCONQ
TMWUSHN ULCCNMNQO MNZSROZ NAHK OLEN OKAO OKN FWON LZ HWSQONU,
AQU OKNQ MNHWSQONU. AQ NRNHOMWQLH ENOKWU ILRR, WQ OKN
WOKNM KAQU, EWZO RLPNRB KAFN A ZSHHNZZ MAON WC 100%.
a b c d e f g h i j k l m
90 23 22 18 21 10 0 37 24 1 43 75 61
[8.5%] [2.2%] [2.1%] [1.7%] [2.0%] [0.9%] [0.0%] [3.5%] [2.3%] [0.1%] [4.1%] [7.1%] [5.8%]
n o p q r s t u v w x y z
119 90 6 76 59 31 19 38 2 73 16 0 67
[11.2%] [8.5%] [0.6%] [7.2%] [5.6%] [2.9%] [1.8%] [3.6%] [0.2%] [6.9%] [1.5%] [0.0%] [6.3%]
e t a o i n s h r d l c u
N O A Q L W Z M R K U H S
m w f g y p b v k x j q z
I B C E T D X F P V J G Y
35
Figure 1.15 Analyse du texte chiffré par rapport aux probabilités normales.
Un Deux lettres (Most pop.) Trois lettres (Most Pop : le, et,
lettre de, à, dans, il, est, être, pour, sont, mais, pas, vous, tout,
(Most comme, à, n'importe, peut, avait, elle, était, un,
pop : donc, nous, il, par, ou, notre, out, jour, obtenir, a, lui, son,
a, I) sur, faire, comment, homme, nouveau,
si, moi, mon, up, an, go, maintenant, vieux, voir, deux, façon,
non, nous, am) qui, garçon, fait, son, laisser, mettre,
dire, elle, aussi, utiliser)
a [90] lq [20] wc [8] aq [20] lo cni [1] okn [13] kaz [2] adn [3] wqn
[9] lz [9] ow [3] xn [7] [2] qni [1] aqb [5] arr [5] wsm [3]
wm [12] xb [4] az [8] lc amn [1] aqu [8] cwm [6] qwi [2] qwo
[2] dans [3] wq [15] [1] szn [3]
36
La meilleure hypothèse est probablement qu'un "A" est un "a", et nous
pouvons localiser "the" avec "OKN", qui est le plus populaire pour les mots
de trois lettres. Ainsi, nous avons "O" associé à "t", "K" à "h". Si nous avons
mis en correspondance "T" avec "a", alors "AQU" semble être "et", et nous
donne donc "Q" en correspondance avec "n" et "U" en correspondance avec
"d". Ce qui donne :
Ln a EatteM WC a CeI deHadeZ the IWMRd haZ HhanDed CMWE an
LndSZtMLaR aDe LntW an LnCWMEatLWn aDe. Lt LZ Wne IhLHh,
SnRLPe eaMRLeM aDeZ, enHaTZSRateZ FLMtSaRRB the IhWRe
IWMRd. Lt LZ aRZW Wne IhLHh aRRWIZ the neI LndSZtMLeZ tW Xe
XaZed Ln anB RWHatLWn ILthWSt MeVSLMLnD anB natSMaR MeZWSMHeZ,
WM tW Xe Ln anB aHtSaR ThBZLHaR RWHatLWnZ. tBTLHaRRB aRR that
LZ MeVSLMed LZ a MeRLaXRe netIWMP HWnneHtLWn. WSM IWMRd LZ
HhanDLnD XB the daB, aZ tMadLtLWnaR CWMEZ WC XSZLneZZ aMe
XeLnD MeTRaHed, Ln EanB HaZeZ, XB EWMe MeRLaXRe and CaZteM
IaBZ WC WTeMatLnD. WSM TWZtaR ZBZteE, IhLRe ZtLRR SZed CWM
EanB SZeCSR aTTRLHatLWnZ, haZ Xeen RaMDeRB MeTRaHed XB
eReHtMWnLH EaLR. ILth FWtLnD, the ZRWI and HSEXeMZWEe taZP
WC EaMPLnD FWtLnD Ta-TeMZ ILth the TMeCeMMed HandLdate, LZ
nWI XeLnD MeTRaHed XB eReHtMWnLH FWtLnD. the tMadLtLWnaR
ZBZteEZ, thWSDh, haFe Xeen aMWSnd CWM hSndMedZ LC nWt
thWSZandZ WC BeaMZ, and tBTLHaRRB SZe IeRR tMLed-and-teZted
EeHhanLZEZ. CWM the EWZt TaMt, CWM eJaETRe, Ie tMSZt a
TaTeM-XaZed FWtLnD ZBZteE, eFen thWSDh Lt LZ IeRR PnWIn
that a HWSnt WC the FWteZ ILthLn an eReHtLWn ILRR WCten
TMWdSHe dLCCeMent MeZSRtZ eaHh tLEe that the FWte LZ
HWSnted, and then MeHWSnted. an eReHtMWnLH EethWd ILRR,
Wn the WtheM hand, EWZt RLPeRB haFe a ZSHHeZZ Mate WC 100%.
37
"feI" correspond alors à "peu", "worRd" à "monde", "indSZtriaR" à
"industriel" pour donner
in a matter of a few deHades the world has HhanDed from an
industrial aDe into an information aDe. it is one whiHh,
unliPe earlier aDes, enHaTsulates FirtuallB the whole world.
1.12 Laboratoire/tutorial
38