Chiffrement Cesar/Vigenere
Presentation
Objectif principal : Implementer les algorithmes de chiffrement classiques : Cesar (decalage fixe) et Vigenere (decalage variable avec une cle). Plus un mode pour casser le chiffrement Cesar automatiquement.
Technologies utilisees : Python pur, pas de librairie externe. Les maths c'est juste du modulo 26. Pour casser Cesar, j'utilise l'analyse frequentielle des lettres.
Fonctionnalites cles : Chiffrer/dechiffrer avec Cesar, chiffrer/dechiffrer avec Vigenere, bruteforce Cesar (tester les 26 cles), attaque frequentielle pour trouver la cle automatiquement.
Livrables attendus : Un script CLI avec des commandes pour chaque operation. Gere les majuscules/minuscules et garde les caracteres speciaux intacts.
Calendrier previsionnel : Une semaine. L'algo c'est simple, l'analyse frequentielle a demande un peu de recherche.
Parties prenantes & criteres de succes : TP pour le cours de securite. Fallait implementer les algos et comprendre pourquoi ils sont pas surs.
Le Defi
L'attaque frequentielle. En francais, le E est la lettre la plus frequente (environ 15%). Si dans le texte chiffre c'est le G qui est le plus frequent, on peut deviner que le decalage est de 2. Mais ca marche que sur des textes longs.
La Solution
Je compte la frequence de chaque lettre dans le texte chiffre. Je compare avec la frequence theorique du francais. Le decalage qui minimise l'ecart c'est probablement le bon. Pour les textes courts, je propose les 3 decalages les plus probables.
Architecture Technique
Fonction caesar_cipher(text, shift) qui decale chaque lettre. Fonction vigenere_cipher(text, key) qui applique un decalage different pour chaque lettre selon la cle. Fonction frequency_analysis(text) qui retourne les frequences. Fonction crack_caesar(text) qui trouve le decalage.
Points Cles
- Implementation Cesar et Vigenere
- Attaque par analyse frequentielle
- Support francais et anglais
Apercu
Resultats & Apprentissages
L'attaque frequentielle marche bien sur des textes de plus de 100 caracteres. J'ai compris pourquoi ces chiffrements sont obsoletes : trop faciles a casser avec un ordi. Ca m'a donne envie d'en apprendre plus sur la crypto moderne.
Evolutions Futures
Ajouter d'autres algorithmes classiques (substitution, Enigma simplifie). Implementer AES pour voir la difference avec la crypto moderne. Une interface web pour jouer avec les chiffrements.