Cryptographie

Introduction §

Le chiffrement César est l’un des premiers chiffrements connus et les plus simples. C’est un type de chiffrement de substitution dans lequel chaque lettre du texte en clair est « décalée » d’un certain nombre d’endroits dans l’alphabet. Par exemple, avec un décalage de 1, A serait remplacé par B, B deviendrait C, et ainsi de suite. La méthode porte le nom de Jules César, qui l’utilisait apparemment pour communiquer avec ses généraux.

Des schémas de chiffrement plus complexes tels que le chiffrement Vigenère utilisent le chiffrement Caesar comme un élément du processus de chiffrement. Le « chiffrement » ROT13 largement connu est simplement un chiffrement César avec un décalage de 13. Le chiffrement César n’offre pratiquement aucune sécurité de communication, et il sera démontré qu’il peut être facilement brisé même à la main.

Exemple §

Pour transmettre un message chiffré d’une personne à une autre, il faut d’abord que les deux parties disposent de la  » clé  » pour le chiffrement, afin que l’expéditeur puisse le chiffrer et que le récepteur puisse le déchiffrer. Pour le chiffre césar, la clé est le nombre de caractères pour décaler l’alphabet chiffré.

Voici un exemple rapide des étapes de chiffrement et de déchiffrement impliquées dans le chiffrement caesar. Le texte que nous chiffrerons est « défendre le mur est du château », avec un décalage (clé) de 1.

plaintext: defend the east wall of the castleciphertext: efgfoe uif fbtu xbmm pg uif dbtumf

Il est facile de voir comment chaque caractère du texte en clair est déplacé vers le haut de l’alphabet. Le décryptage est tout aussi simple, en utilisant un décalage de -1.

plain: abcdefghijklmnopqrstuvwxyzcipher: bcdefghijklmnopqrstuvwxyza

Évidemment, si une clé différente est utilisée, l’alphabet chiffré sera décalé d’une quantité différente.

Description mathématique §

Où k est la touche (le décalage) appliquée à chaque lettre. Après avoir appliqué cette fonction, le résultat est un nombre qui doit ensuite être traduit en une lettre. La fonction de décryptage est la suivante :

Exemple JavaScript du chiffrement Caesar §

Texte en clair

shift :

Texte chiffré

Autres implémentations §

Pour le code de chiffrement Caesar dans divers langages de programmation, voir la page Implémentations.

Pour chiffrer vos propres messages en python, vous pouvez utiliser le module pycipher. Pour l’installer, utilisez pip install pycipher. Pour chiffrer des messages avec le chiffrement Caesar (ou un autre chiffrement, voir ici pour la documentation) :

Cryptanalyse §

Voir Cryptanalyse du chiffrement Caesar pour une façon de casser automatiquement ce chiffrement.

La cryptanalyse est l’art de casser les codes et les chiffrements. Le chiffre César est probablement le plus facile de tous les chiffrements à casser. Puisque le décalage doit être un nombre compris entre 1 et 25, (0 ou 26 entraînerait un texte en clair inchangé), nous pouvons simplement essayer chaque possibilité et voir laquelle aboutit à un morceau de texte lisible. S’il vous arrive de savoir ce qu’est un morceau du texte chiffré, ou si vous pouvez deviner un morceau, cela vous permettra de trouver immédiatement la clé.

Si cela n’est pas possible, une approche plus systématique consiste à calculer la distribution de fréquence des lettres dans le texte chiffré. Cela consiste à compter combien de fois chaque lettre apparaît. Le texte anglais naturel a une distribution très distincte qui peut être utilisée pour déchiffrer les codes. Cette répartition est la suivante:

Fréquences des lettres anglaises

Cela signifie que la lettre e est la plus courante et apparaît presque 13% du temps, alors que z apparaît beaucoup moins de 1% du temps. L’application du chiffre de César ne modifie pas ces fréquences de lettres, elle les déplace simplement d’un bit (pour un décalage de 1, la lettre de texte chiffrée la plus fréquente devient f). Un cryptanalyste doit simplement trouver le décalage qui fait que les fréquences du texte chiffré correspondent étroitement aux fréquences anglaises naturelles, puis déchiffrer le texte à l’aide de ce décalage. Cette méthode peut être utilisée pour casser facilement les chiffrements César à la main.

Si vous rencontrez toujours des problèmes, essayez la section cryptanalyse de la page de chiffrement de substitution. Toutes les stratégies qui fonctionnent avec le chiffrement de substitution fonctionneront également avec le chiffrement de César (mais les méthodes qui fonctionnent sur le chiffrement de César ne fonctionnent pas nécessairement sur le chiffrement de substitution général).

Pour une méthode qui fonctionne bien sur les ordinateurs, nous avons besoin d’un moyen de déterminer lequel des 25 déchiffrements possibles ressemble le plus au texte anglais. Voir Cryptanalyse du chiffrement Caesar pour une présentation pas à pas de la façon de le casser à l’aide de statistiques de quadgrammes. La clé (ou le décalage) qui entraîne un déchiffrement avec la plus grande probabilité d’être du texte anglais est très probablement la bonne clé. Bien sûr, plus vous avez de texte chiffré, plus cela a de chances d’être vrai (c’est le cas pour toutes les mesures statistiques, y compris l’approche fréquentielle ci-dessus). La méthode utilisée consiste donc à prendre le texte chiffré, à essayer de le déchiffrer avec chaque clé, puis à voir quel déchiffrement est le meilleur. Cette méthode simpliste de cryptanalyse ne fonctionne que sur des chiffrements très simples tels que le chiffrement Caesar et le chiffrement rail fence, même des chiffrements légèrement plus complexes peuvent avoir beaucoup trop de clés pour les vérifier tous.

Références §

  • Wikipedia a une bonne description du processus de chiffrement / déchiffrement, de l’histoire et de la cryptanalyse de cet algorithme
  • Le Livre de codes de Simon Singh est une excellente introduction aux chiffrements et aux codes, et comprend une section sur les chiffrements caesar.
  • Singh, Simon (2000). Le Livre de codes: La Science du Secret de l’Egypte ancienne à la cryptographie quantique. ISBN 0-385-49532-3.



Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.