No description
- Python 100%
| cesar.py | ||
| force_brute.py | ||
| freq.py | ||
| image1.png | ||
| image2.png | ||
| message.txt | ||
| readme.md | ||
| vigenere.py | ||
TD1 — Cryptographie classique
Exercices sur papier
Exercice 1 — Cesar
-
- Message chiffre (K=5) : qf wjshtyjw jxy uwjazj f qf hfkjyjwnf
-
- Message dechiffre (RGNEIDVGPEWXTRAPHHXFJT) : CRYPTOGRAPHIECLASSIQUE, cle = 15
-
- Cle trouvee : 16, debut du message clair : L ISEN EST UNE SUPER ECOLE D INGENIEUR
Exercice 2 — Substitution
-
- Message chiffre : BX CHSDFSMCH HVM LCHEUH X BX YXPHMHCZX
-
- YHVMQUVMH dechiffre : cestjuste. Peut-on le casser sans la cle ? Oui, en utilisant l'analyse fréquentielle (si le texte est assez long) ou par force brute / attaque par dictionnaire sur des mots courts.
Exercice 3 — Vigenere (papier)
-
- Message chiffre (cle POULE) : AOLPR RCHEU TSMET GSPFI PZUNE USNPV XO
-
- BAUNBEKLZLQSKQKEBGCJYHVSKR dechiffre (cle TNCY) : INSPIRINGYOURDIGITALFUTURE
Exercice 4 — Chiffrement affine
-
- Verification S → J : S correspond à n=18. On calcule x = 318 + 7 = 61. Et 61 = 226 + 9. Le numéro 9 correspond bien à la lettre J.
-
- SECRET code : JTNGTM
-
- Demonstration : Pour déchiffrer x = 3n + 7 [26], il faut isoler n. x - 7 = 3n. L'inverse de 3 modulo 26 est 9 (car 3*9 = 27 = 1 mod 26). Donc n = 9(x - 7) mod 26.
-
- KGHSX dechiffre : BRAVO
Exercice 5 — Chiffrement affine (generalisation)
-
- Demonstration (a premier avec 26) : "a" doit être premier avec 26 pour qu'il admette un inverse modulaire, ce qui garantit que chaque lettre chiffrée correspond à une unique lettre claire (bijection indispensable pour déchiffrer).
- 2a. Existence de u : D'après le théorème de Bachet-Bézout, si pgcd(a, 26) = 1, alors il existe des entiers u et v tels que au + 26v = 1, ce qui donne a*u = 1 mod 26. Donc u existe.
- 2b. Fonction de decodage : n = u * (x - b) mod 26
- 2c. ZSPS decode (cle 15;2) : FINI
Exercice 6 — Hill
- Partie A : INDICE chiffre = DVUBYO, DVUBYO dechiffre = INDICE, YOWPEE dechiffre = CERISE
- Partie B : INDICE chiffre = HTPQMK, produit MA = 17 * Identite, explication cle B = L'utilisation de la clé B ne fonctionne pas car la matrice B contient des nombres négatifs et des fractions, or notre alphabet ne va pas dans les nombres négatifs., verification C = 23M : Parce que 23 * 17 = 391 qui vaut 0 mod 26, donc les matrices s'annulent correctement.
Exercice 7 — ADFGVX
-
- ATTAQUE chiffre : DAGADFADDDDXF
-
- DFAADDGAFXDDADFA dechiffre : CYBERSECURITE
-
- Pourquoi A, D, F, G, V, X ? Ces lettres ont été choisies car elles ont des signaux très différents en code Morse, ce qui limitait les erreurs lors des transmissions radio militaires.
-
- Interet de la double etape : La substitution casse les fréquences habituelles des lettres simples, et la transposition mélange l'ordre, ce qui empêche de remonter facilement au texte par une simple analyse fréquentielle.
Exercices Python
Force brute
- Message francais : cle = 7, message clair = De memoire, Jules Cesar fut assassine le 15 mars par Brutus au senat de Rome
- Message anglais : cle = 19, message clair = cryptography is the science of keeping secrets safe from prying eyes
Analyse frequentielle
- Message francais : cle devinee = 7, correcte ? Oui
- Message anglais : cle devinee = 19, correcte ? Oui
- Observations : L'analyse a parfaitement fonctionné du premier coup car les textes fournis étaient suffisamment longs pour que la fréquence de la lettre E (la plus élevée de l'alphabet) se détache clairement et permette de trouver le décalage.
Vigenere
- Cle trouvee : PYTHON
- Methode utilisee : J'ai utilisé le Test de Kasiski (et l'indice de coïncidence) pour déduire la longueur de la clé, puis j'ai découpé le texte en colonnes pour faire une analyse fréquentielle sur chaque sous-texte.
Difficultes rencontrees
La plus grosse difficulté a été de comprendre l'inverse des matrices modulo 26 pour le chiffrement de Hill sur papier (j'ai eu du mal avec la matrice B), et de bien ré-aligner les colonnes de transposition pour ADFGVX sans me tromper.