Cryptanalyse informatique de quelques systèmes de chiffrement "historiques"
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).
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
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
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
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, …).
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é.