Cryptanalyse informatique de quelques systèmes de chiffrement "historiques"

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche

Introduction

La cryptanalyse consiste à déduire un texte en clair d’un texte préalablement chiffré sans posséder la clé de chiffrement. Depuis des siècles, la cryptographie existe. La plus ancienne forme retrouvée date du XVIe siècle avant J.-C. Il s’agissait d’une tablette d’argile appartenant à un potier qui y avait gravé sa recette en supprimant des consonnes et en modifiant l’orthographe des mots.

Dans notre monde moderne, il existe de multiples façons de crypter un texte, toutes différentes les unes des autres et à complexités variables, certaines requérant l’usage de programmes informatiques afin de les décrypter dans des temps raisonnables. C’est pourquoi j’ai décidé d’étudier le chiffrement par substitution mono-alphabétique.


Substitution mono-alphabétique

La substitution mono-alphabétique est une dérivée améliorée du code de César. Elle consiste, comme son nom l’indique, à remplacer une lettre (ou autre) par une autre lettre (ou autre).

Fonctionnemment de la Substitution

On se retrouve alors avec un texte clair (texte de base), un texte chiffré (texte après application du cryptage) et une clé de cryptage qui recense pour toutes les lettres par laquelle chacune est cryptée.




Exemple

  • Texte clair : Bonjour tout le monde
  • Clé : A -> C, B -> F, C -> R, D -> K, E -> V, F -> T, G -> P, H -> M, I -> L, J -> Q, K -> W, L -> Z, M -> N, N -> S
  • Texte chiffré : FKMWSCUCKFJCUNYUWIXCNY






Implémentation de la substitution mono-alphabétique

Pour cette étude, j’ai donc dû réaliser plusieurs fonctions de base et établir un dictionnaire de lettres que j’utiliserais pour mes tests.

Chiffrement

Bureau-PROJET LABO-chiffrement.jpg

On récupère la phrase et la clé de cryptage , avec cette clé on crée un dictionnaire du type {A:B,B:D,C:E;...} puis on change lettre par lettre la phrase.

Déchiffrement

Dechi.jpg

On récupère la phrase et la clé de cryptage , avec cette clé on crée un dictionnaire du type {B:A,D:B,E:C;...} puis on change lettre par lettre la phrase.

La différence est que le dictionnaire pour le chiffrement est du type {lettre: clé} et le déchiffrement du type {clé: lettre}.

Création de clé aléatoire

Cle.jpg

Ici on récupère toutes les lettres de l'alphabets majuscules, et on utilise la fonction shuffle pour avoir un ordre aléatoire.

Afin d’avoir un rendu propre, j’ai aussi créé une fonction permettant de « nettoyer le texte » me permettant de toujours travailler et faire des tests sur une même base de texte ( suppression de la ponctuation, espaces, retour chariot, …).

Avant "nettoyage"
Après "nettoyage"

Nous avons donc une base, la possibilité de chiffré déchiffré un texte à l'aide d'une clé. A présent nous allons voir comment déchiffré un texte préalablement chiffré sans utilisé la clé.