TP en Python (notebooks Jupyter). Chaque dossier contient l'énoncé et la correction.
| TP | Sujet | Contenu |
|---|---|---|
| TP1 | Cryptographie artisanale | César (force brute, analyse statistique), substitution mono-alphabétique, homophone, Polybe, Vigenère (Kasiski, indice de coïncidence), Hill |
| TP2 | Chiffrement par flux | LFSR, période, attaque à clair connu, générateur de Geffe, comparaison LFSR / Trivium / Salsa20 / ChaCha20 |
| TP3 | Padding oracle (AES-CBC) | Attaque octet par octet sans la clé, questions de réflexion |
| TP4 | Cryptographie asymétrique | Euclide étendu, restes chinois, RSA et RSA-CRT, Pollard rho, baby-step giant-step, ElGamal et réutilisation de l'aléa |
Les énoncés : TP1, TP2, TP3, TP4.
Bibliothèques : pip install pycryptodome numpy
TP3 : le bloc intercepté donné dans l'énoncé ne se déchiffre pas avec un padding valide sous la clé du serveur. Le notebook vérifie donc aussi l'attaque sur un message qu'on chiffre soi-même.