Terminologie
Les slides sont déjà très clairs en soit, ce mini résumé contient une réexplication et quelques éléments cités à l'oral.
Chiffre de César
Décalage de 3 lettres de l'alphabet du message (donc de manière brute ). Au départ il n'y a donc pas de clé et ce système permet juste d'empêcher les illetrés de détecter des mots connus dans le message.
Pour déchiffrer, il suffit de faire "moins la clé":
Cet algorithme a été étendu pour que le nombre de décalage ne soit pas toujours 3 et devienne la clé. Sur 26 lettres, il peut donc y avoir au 25 décalages et donc 25 clés différentes.
Pour casser ce chiffrement, bien sûr le bruteforce fonctionne bien et il faut lire à la main les 25 possibilités pour voir laquelle fait sens...
Comment peut-on détecter automatiquement quelle phrase générée est la bonne parmi les 25 ?
Si on connait la langue utilisée dans le message, avec un simple comptage de l'occurence de chaque lettre, on arrive à comparer avec les statistiques de la langue pour trouver à coup sûr la bonne phrase. Par exemple, la lettre e revient très souvent en français.
Chiffre de Vigenère
C'est une variante du chiffrement de César. Au lieu de décaler chaque lettre du même nombre, on va appliquer différent décalages en se basant sur une clé. Si la clé est ABGE, alors les caractères seront décalé de 0 puis 1 puis 6 et finalement 4 positions. On prend 4 caractères et on "additionne" notre clé, on répète l'opération jusqu'à arriver au bout du message.
Pour déchiffrer il suffit de faire l'opération inverse, c'est à dire la soustraction de notre clé.
L'exemple ici prend une clé de longueur 4 mais la longueur n'est pas connue de l'attaquant.
Comment casser ce système ? On considère qu'il existe des algorithmes pour trouver la taille de la clé N, il nous reste donc à appliquer les mêmes statistiques que pour César pour chaque groupe parmi les N groupes de lettres décalé par la même valeur.
Masque jetable - One Time Pad
On passe en binaire maintenant. On a besoin d'une clé qui n'est utilisée qu'une seule fois et qui doit avoir la taille du message. La force de cette approche est que la clé est aléatoire et n'est pas réutilisée.
message XOR masque = résultat
et résultat XOR masque = message
En pratique c'est un peu un problème récursif, comme on doit commencer par envoyer de manière confidentielle la clé avant le message, qui est autant longue que le message. Si on envoit la clé en claire, alors autant envoyer directement le message en clair. Utilisé une fois pour le téléphone rouge durant la seconde guerre mondiale, avec une liste de clés transmise physiquement dans des valises diplomatiques.
C'est la seule technique parfaite en terme de confidentialité, mais l'intégrité doit être vérifiée. Le message chiffré est malléable, si on inverse des bits sur le message chiffrés, ces bits seront aussi inversés au même positions dans le message déchiffré. Si on sait que le message chiffré est un montant et que comme le MSB est souvent zéro, si on inverse le MSB chiffré alors on va probablement activer le 1 et donner un chiffre plus grand.
Types d'adversaires
- passif: peut juste écouter les communications -> chiffrement nécessaire pour garantir la confidentialité
- actif: qui peut tout faire au milieu de la communication (supprimer message, modifier, inverser l'ordre des paquets, ...) -> on a besoin d'authenticité et d'intégrité -> MAC en symétrique ou signature digitale en asymétrique
- black box: attaque un algo cryptographique uniquement depuis l'extérieur d'une boite noire qui ne donne que très peu d'informations hors des entrées/sorties
- grey box: capable en plus d'exploiter des informations à canaux auxiliaires (side channels attacks) sur des implémentations
- white box: capable de tout faire sur l'exécution du programme, même lire ou écrire toute la mémoire du programme !!
todo: pourquoi surtout attaquant white box ??