Académique Documents
Professionnel Documents
Culture Documents
Introduction:
Ethereum, le public est de plus en plus conscient des mécanismes de la cryptographie qui
assurent la sécurité de ces monnaies. Les algorithmes avec des codes cryptographiques
forts, tels que SHA-256 (utilisé par Bitcoin) et KECCAK256 (utilisé par Ethereum), qui ne
peuvent être piratés que par des ordinateurs puissants en essayant des millions de
cryptographie n'était pas encore dominée par la technologie moderne. Pour bien
majorité des codes de cryptographie classique peuvent être résolus à la main et une
catégorie principale comprend les codes de substitution, dans lesquels on retrouve les
fameux codes Caesar et les codes de substitution polygraphique (où des groupes de lettres
sont remplacés par d'autres groupes de lettres) comme les codes de Hill. J'aimerais
comparer ces deux types de codes pour explorer leurs forces et leurs faiblesses dans le
améliorer la sécurité de ces deux codes. En solidifiant mes connaissances dans les racines
de la cryptographie classique, j'ai pu ensuite poursuivre mon intérêt pour les crypto-
Le code César :
Le code César est le plus classique des codes de substitution. Pour mieux comprendre, les
● Texte en clair : Terme qui indique le texte lisible ordinaire avant qu'il ne soit chiffré
● Texte chiffré : C'est la sortie illisible d'un algorithme de cryptage qui est obtenue en
cryptographique.
message d'origine.
Le code César est un déphasage de l'alphabet, où nous remplaçons les lettres du texte en
clair par d'autres lettres de l'alphabet afin d'avoir un nouvel alphabet pour écrire le texte
chiffré. Par exemple, le code César classique souvent utilisé par Jules César lui-même était
ABCDEFGHIJKLMNOPQRSTUVWXYZ
DEFGHIJKLMNOPQRSTUVWXYZABC
Dans la première rangée, on voit l'alphabet dans son ordre naturel : c'est l'alphabet avec
lequel le texte en clair sera écrit. La deuxième ligne montre l'alphabet après un décalage de
phase de trois lettres vers la gauche ; c'est l'alphabet correspondant avec lequel le texte
chiffré sera écrit. Si, par exemple, on voulait encoder le message "HELLO", il faut
commencer par prendre la lettre de la deuxième ligne qui correspond au "H" de la première
ligne, qui est "K". En continuant, le texte chiffré complet sera alors "KHOOR". Ainsi si nous
Comment déchiffrer mathématiquement le code César ? C'est ici que nous avons dû utiliser
aux mathématiques des nombres entiers qui "cyclent" pour revenir à la valeur initiale après
L'opération modulo calcule le reste du quotient d'une division d'entiers. Pour mettre
valeur entière la plus proche sous le quotient. L'équation utilise donc la partie entière
un ≤ b<a+1
Oùun est un entier etb est un nombre réel. La valeur deun est désigné comme la partie
entière par défaut. Donc sib = 8,7 nous pouvons voir queun = 8. En bref, [8,7] = 8.
dividende x, le reste de la division x ÷ y est alors obtenu. Ce reste sera le résultat de notre
Voici un exemple d'opération modulo utilisant l'équation (1), en remplaçant x par 17 et y par
8 :
17 contre 8=17−(2∗8)
17 contre 8=1
Cela démontre que lorsque nous divisons 17 par 8, nous obtenons un quotient de 2 avec un
reste de 1. Ce reste est donc le résultat de notre opération modulo. Maintenant, pour coder
un code Caesar, nous devons d'abord convertir les lettres du texte en clair en valeurs
encoder un message.
k est une constante indiquant la clé du code, donc le nombre de lettres déplacées dans le
décalage alphabétique.
Pour tester les limites du code de Caesar, j'ai décidé d'appliquer ces deux fonctions à mon
propre post :
Clé : 6
e (4 )=(4+ 6)mod 26
e (4 )=10 contre 26
e (4 )=10−([10 ÷ 26]∗26)
e (4 )=10−(0∗26)
et ( 4)=10
Pour coder la lettre X = 23, on remplace k par 6 et x par 23 dans l'équation (2).
e (23)=(23+6) contre 26
e (23)=29 contre 26
e (23)=29−([29÷ 26]∗26)
e (23)=29−(1∗26)
e (23)=3
continuant ce processus avec chacune des lettres d'EXPLORE, nous obtenons un texte
Pour décoder la lettre K (correspondant au chiffre 10), on remplace x par 10 et k par 6 dans
l'équation (3) :
d (10)=(10−6)contre 26
d (10)=4 contre 26
d (10)=4−([4 ÷ 26]∗26)
d (10)=4−( 0∗26)
d (10)=4
processus avec chaque lettre du texte chiffré, j'ai obtenu un texte en clair de "EXPLORE",
qui confirme que les fonctions e(x) et d(x) peut être utilisé pour encoder et décoder
Lors de mon application du code de César, j'ai réalisé qu'il serait très facile de "déchiffrer" le
code sans connaître la clé en essayant simplement les 26 possibilités différentes pour le
déphasage. Après tout, le code de César n'est qu'un simple déplacement de l'alphabet. De
plus, si le texte en clair est un message de plusieurs mots, nous pouvons raccourcir le
processus en appliquant cette méthode uniquement sur les deux premiers mots et en
essayant les différents déphasages jusqu'à ce que le résultat ait un sens, puis en appliquant
entièrement la même clé au message. Voyant cela, je me suis rendu compte que pour
nombre de possibilités à essayer. Une solution que j'ai envisagée était d'ignorer l'ordre
Permutations possibles pour la réaffectation des lettres chiffrées, donc environ 4,03 × 10 !"
façon dont la clé du code va devoir être l'ensemble de l'alphabet réarrangé, car il n'y aura
pas de modèle à suivre pour créer une clé comme c'est le cas avec le déphasage
Le code de César. Cela diminuera la sécurité du code. Si le conteneur perd la clé, il serait
possible de décoder le message sans même savoir quel type de code a été utilisé. En plus
de ces problèmes, j'ai vu que toute variation du code de César où l'on remplace une lettre
de l'alphabet par une autre lettre a une faiblesse universelle. Dans la langue anglaise,
certaines lettres sont utilisées beaucoup plus fréquemment que d'autres : par exemple, la
lettre « e » ou la lettre « a ». En fait, lors d'un recensement de tous les articles sur Wikipédia
en anglais en 2008, les résultats ont montré que la lettre "e" est apparue au total 115 024
205 fois, tandis que "a", la lettre avec la deuxième fréquence la plus élevée, n'est apparue
que 67 563 628 fois . Voici un diagramme circulaire des 8 lettres qui sont apparues le plus
fréquemment :
AUTRE
Comme on peut le voir, sur les 26 lettres de l'alphabet, les 8 lettres qui apparaissent le plus
fréquemment ont déjà une fréquence supérieure à 50%. Cela montre un déséquilibre
important dans la langue française quant à l'utilisation de certaines lettres. En bref, les
lettre qui apparaît le plus souvent dans le texte chiffré et la remplacer par un « e », puis
identifier la lettre qui apparaît la deuxième plus souvent et la remplacer par un « a ». ", et
ainsi de suite. Bien sûr, ce n'est pas une méthode infaillible, mais elle est certainement très
efficace, et dans le domaine de la cryptographie classique, on parle d'analyse fréquentielle.
Comment résoudre cette faiblesse dans la sécurité des codes de substitution tels que le
code Caesar sans compromettre la sécurité du code ? La réponse est le code Hill.
Le code Colline :
Le code Hill a été inventé par Lester S. Hill en 1929, et c'est un code de substitution
polygraphique, c'est-à-dire un code où des groupes de lettres peuvent être remplacés par
d'autres groupes, plutôt que de simplement substituer une seule lettre à une autre comme
c'est le cas. cas avec le code de César. Cela augmente la sécurité du code, car il est moins
facile de trouver les fréquences des groupes de lettres. De plus, le code Hill est un peu
spécial ; son utilisation est liée au domaine de l'algèbre linéaire. Travailler avec un code de
Hill nécessite une certaine connaissance des matrices, qui sont des "tables de nombres
utilisées pour interpréter la théorie des résultats de l'algèbre linéaire". Dans les matrices, les
nombres sont organisés en lignes et en colonnes. Quand on dit qu'une matrice a des
dimensions,un B signifie que la matrice aun rangées etb Colonnes. Par exemple, voici une
Il faut aussi savoir multiplier des matrices. La matrice de multiplication ne peut se faire
qu'avec deux matrices, et le résultat est toujours une seule matrice. Si nous voulons
multiplier une matrice a×b et une matrice b×c, le produit matriciel aura des dimensions a×c.
première matrice est le même que le nombre de colonnes de l'autre. Lorsque nous
travaillons avec le code Hill, nous ne multiplierons que des matrices avec un nombre égal de
lignes et de colonnes (également appelées matrices carrées) par des matrices avec une
Voici comment multiplier une matrice 2x2 par un vecteur colonne de 2×1 :
(Équation 4)
Ces règles algébriques déterminent que pour multiplier ces deux matrices il faut multiplier
chaque ligne de la première matrice par la colonne entière du vecteur, et additionner les
valeurs. Après cette multiplication, on obtient une matrice de dimensions 2 × 1. Ces règles
(Équation 5)
En plus de la multiplication matricielle, il faut aussi savoir trouver l'inverse des matrices pour
pouvoir décoder un code de Hill. La méthode pour trouver l'inverse d'une matrice est
généralement la suivante :
−1 −1
C =d ∗adj(C) (équation 6)
Dans cette équation (6), C correspond à la matrice qui est la clé du code, C-1 est la matrice
● Déterminant: une valeur qui peut être calculée à partir des éléments d'une matrice
multiplie une valeur x par son inverse 1/x, l'inverse modulaire est une valeur qui,
multiplie une valeur x par son inverse 1/x , la matrice inverse est une matrice qui,
● Co-matrice : la co-matrice d'une matrice carrée « est une matrice introduite par une
Pour encoder un code Hill, vous devez d'abord créer une matrice de clés, l'élément qui
permettra au destinataire de décoder le message. Cette matrice clé doit avoir un inverse
pour que le décodage soit possible. Le message, converti en vecteurs colonnes avec le
même nombre de lignes que la matrice clé, sera codé en multipliant chaque vecteur colonne
par la matrice clé. Ensuite, nous appliquons l'opération modulo au résultat pour nous
assurer que les valeurs résultantes restent inférieures à 26, afin de pouvoir convertir les
nombres en lettres. Pour illustrer ce processus, j'ai créé ma propre clé (à partir d'une matrice
Ma clé sera HILL. Convertissez ceci en une matrice carrée 2 × 2 pour avoir une clé de
travail, donc :
Ensuite, ces lettres doivent être converties en chiffres (où A = 0, B = 1, C = 2, etc.) pour
La matrice carrée résultante sera ma clé. Maintenant, je dois vérifier si cette matrice est
réversible. Pour ce faire, je dois trouver le déterminant de la matrice. Voici une méthode
(Équation 7)
Notez que la notation a changé : les parenthèses sont remplacées par des tirets, puisque
Comme nous ne voulons travailler qu'avec des valeurs comprises entre 0 et 25 pour pouvoir
11 :
Le déterminant de cette matrice clé est donc 15. Les règles indiquent que pour être
inversible, le déterminant de la matrice ne peut pas être nul, et ne peut pas avoir de facteur
commun avec le nombre avec lequel on opère l'opération modulo (donc 26 dans ce cas ).
Heureusement, puisque 15 remplit ces deux critères, nous pouvons voir que notre matrice
numériques :
Puisqu'il y a un nombre impair de lettres dans le message, la convention dit que nous
devons remplir la case vide avec un X. Après cela, j'ai multiplié chaque vecteur colonne par
Le processus de décodage d'un code de Hill est beaucoup plus difficile, car nous devions
trouver l'inverse de la matrice clé. Pour comprendre ce concept, on peut prendre l'analogie
de l'arithmétique classique : lorsque l'on multiplie un produit par l'inverse (inverse) de l'un
des facteurs d'origine, on obtient l'autre facteur, puisque l'inverse fonctionne comme une
division. Il en est de même avec l'inverse de la matrice clé : en multipliant celle-ci par les
produits, qui sont les vecteurs colonnes du texte chiffré, on obtient les vecteurs colonnes du
texte en clair. Considérons d'abord la méthode générale pour trouver l'inverse d'une matrice
Pour trouver l'inverse modulaire, il faut trouver la valeur (par essais et erreurs) qui, multipliée
15∗7=105=1 contre 26
−1
d =7
Ensuite, nous devons trouver la co-matrice de la matrice clé. Voici la méthode générale pour
(Équation 9)
25 :
Notre matrice clé inverse est donc ZWBX. J'ai ensuite multiplié la matrice de clé inverse par
les vecteurs colonnes du texte chiffré pour obtenir ceux du texte en clair en suivant la
L'opération modulo est appliquée pour pouvoir convertir les vecteurs colonnes en lettres :
Le texte en clair obtenu est donc BONJOURX ! Nous avons pu encoder et décoder un
Après avoir testé moi-même le code Hill, j'ai trouvé que c'était assez simple à calculer et à
classique très robuste, mais très efficace. Cependant, le code Hill présente encore certaines
des dimensions des matrices clés, il devient considérablement plus difficile de trouver la
matrice clé par la méthode que j'ai décrite ci-dessus car le processus en général devient
beaucoup plus difficile. plus complexe. Lorsque j'ai essayé d'encoder et de décoder le texte
en clair CHERRY avec une matrice de clé ALPHABETA, j'ai eu beaucoup plus de difficultés.
augmenté les dimensions que de 1 - imaginez la complexité d'un code Hill avec une matrice
clé de 4 × 4 ou 6 × 6.
Conclusion:
En conclusion, nous pouvons voir que le code Caesar et le code Hill ont tous deux leurs
propres forces et faiblesses, qui peuvent être ciblées de manières très différentes. Chacun,
classique. J'ai réalisé que la cryptographie est une science qui fait une intersection
importante entre la théorie mathématique et l'application de la vie réelle; par exemple, même
centré, le processus de "craquage" d'un code peut être très imaginatif et logique. La
cryptographie classique peut certes paraître très simple maintenant que l'on peut faire appel
mais ce domaine a joué un très grand rôle dans l'histoire, qu'il s'agisse de la responsabilité
de sécuriser les messages privés de Jules César, ou de la invention d'Enigma, une machine
domaine que nous pourrions envisager le potentiel de la crypto dans le futur de la sécurité
de l'information. Maintenant que j'en sais plus sur les fondements de la cryptographie, je
Bibliographie:
<https://www.techtarget.com/searchsecurity/definition/plaintext>
<https://economictimes.indiatimes.com/definition/ciphertext>