Attaque cryptographique « Bit Flip »
L’attaque Bit flip cible les cryptosystèmes de chiffrement
par flot comme RC4, AES mode CTR ou A5/1. Dans ce modèle de chiffrement, un
générateur produit une « suite chiffrante » continue appelée
keystream.
Le keystream opère un XOR (ou exclusif) sur les données. Il
s’agit d’un addition modulo 2.
L’opération de déchiffrement consiste à procéder à la même opération entre le chiffré et le keystream pour obtenir le clair.
L’opération de déchiffrement consiste à procéder à la même opération entre le chiffré et le keystream pour obtenir le clair.
Soit P (plaintext), C (ciphertext) et K (keystream), on a
les relations suivantes
C = K XOR P
P = K XOR C
mais aussi la relation particulière (pour info)
K = C XOR P
mais aussi la relation particulière (pour info)
K = C XOR P
Les propriétés du XOR utilisé dans les chiffrements par flot
permettent d’agir sur le contenu en clair en modifiant des bits du cryptogramme
(ciphertext).
Exemple d’un chiffrement et déchiffrement RC4 d’une chaîne de
caractère « uid=1000 » avec une clef de 128-bit 0x00112233445566778899AABBCCDDEEFF.
$ echo -n uid=1000 |openssl enc -rc4 -K
00112233445566778899AABBCCDDEEFF | xxd -p
f032c86aa31751b5
$ echo -n f032c86aa31751b5 | xxd -r -p | openssl enc -rc4 -d -K
00112233445566778899AABBCCDDEEFF; echo
uid=1000
Le cryptogramme f032c86aa31751b5
correspond au texte en clair uid=1000.
u
i d = 1
0 0 0
f0 32 c8 6a a3 17 51 b5
Si l’attaquant opère une attaque Bit Flip, il peut changer
la valeur de certains octets sans que le déchiffrement soit invalide.
Bit flit
Le mode opératoire proposé est de modifier le cryptogramme à l'aveugle. La partie simulant la boite noire ou le serveur attaqué est représentée par la commande openssl déchiffrant le cryptogramme. La commande xxd convertit la chaîne héxadimale ASCII en une suite binaire d'octets avant traitement par openssl.
$ echo -n f032c86aa21751b5
| xxd -r -p | openssl enc -rc4 -d -K 00112233445566778899AABBCCDDEEFF; echo
uid=0000
autre exemple :
$ echo -n
f032c86aa21751b4 | xxd -r -p | openssl enc -rc4 -d -K
00112233445566778899AABBCCDDEEFF; echo
uid=0001
Conlusion
Cette attaque est simple et puissante. Lorsqu’un cryptogramme n'est pas protégé par une intégrité cryptographique et qu'un chiffrement par flot est
employé, il est facile de modifier la valeur du clair à l'aveugle. Parfois,
certains paramètres d’authentification sont chiffrés de la sorte par les applications Web. Le pentesteur peut alors agir sur la valeur du paramètre
(cookie, token, …) pour obtenir des comportements interessants.
Aucun commentaire:
Enregistrer un commentaire