
Version simplifiée de l'attaque cryptographique basée sur le paradoxe des anniversaires : Sweet32 (CVE-2016-2183)
Ceci est une démonstration de l'attaque Sweet32 (CVE-2016-2183) : https://sweet32.info/
L'attaque est un exemple d'attaque par anniversaire qui exploite des algorithmes cryptographiques avec de petites tailles de blocs (64 bits) en mode CBC, comme 3DES et Blowfish. L'attaque nécessite la génération d'un grand nombre de blocs chiffrés avec un texte clair connu. Après la génération, des blocs chiffrés identiques peuvent être identifiés et utilisés pour identifier la valeur en clair des blocs dont le texte clair est inconnu.
Cette implémentation utilise 3DES (Triple DES) comme algorithme de chiffrement, qui a une taille de bloc de 64 bits (8 octets) — la même taille de bloc qui rend le 3DES réel vulnérable à l'attaque Sweet32.
Lorsque deux blocs de texte chiffré entrent en collision (c_i = c_j), nous pouvons récupérer le texte clair inconnu en utilisant :
p_i = p_j ⊕ c_{i-1} ⊕ c_{j-1}
Où :
p_i est le texte clair inconnu (par exemple, un cookie secret)p_j est le texte clair connu (par exemple, des en-têtes HTTP)c_{i-1} et c_{j-1} sont les blocs de texte chiffré précédentsCela fonctionne car en mode CBC, une collision signifie que les entrées du chiffrement par blocs étaient égales, ce qui permet une récupération par XOR sans connaître la clé de chiffrement.
Exécutez la démo avec une collision garantie :
# Étape 1 : Générer un paquet chiffré avec un cookie secret
python generate_rigged_packets.py rigged_demo.bin
# Étape 2 : Exécuter l'attaque pour récupérer le cookie
python sweet32.py --block-size 8 rigged_demo.bin
L'attaque affichera la valeur du COOKIE SECRET, puis la récupérera en utilisant uniquement le texte chiffré !
generate_rigged_packets.pyCrée un paquet avec une collision garantie à des fins de démonstration. La valeur du cookie est conçue pour entrer en collision avec un bloc de texte clair connu.
sweet32.pyExécute l'attaque par anniversaire Sweet32 pour récupérer le cookie.
L'attaque Sweet32 exploite le paradoxe des anniversaires. Pour un chiffrement par blocs de 64 bits :
Cela rend le 3DES (et d'autres chiffrements par blocs de 64 bits) vulnérable dans les sessions HTTPS de longue durée.
Pour la véritable attaque Sweet32 sur le 3DES (blocs de 64 bits) :
| Block size | Block size | Num Packets | Data needed | Block count |
|---|---|---|---|---|
| 8 byte | 64 bits | ~785GB | ~785GB | ~2^32 blocks |
La véritable attaque nécessite environ 785 Go de données chiffrées avec la même clé, c'est pourquoi elle affecte principalement les connexions HTTPS de longue durée.