Rework MD5 collisions part
This commit is contained in:
parent
dc4a097147
commit
bdd87bcccf
1 changed files with 50 additions and 23 deletions
73
memoire.md
73
memoire.md
|
@ -161,33 +161,60 @@ parler des attaque sur les infrastructures à clé publiques.
|
|||
|
||||
#### Collision MD5
|
||||
|
||||
Le MD5 (pour Message Digest 5) est une fonction de hachage cryptographique
|
||||
permettant d'obtenir l'empreinte d'un fichier / d'une chaine de caractères.
|
||||
Le MD5 (pour Message Digest 5) est un algorithme de hachage cryptographique
|
||||
permettant d'obtenir l'empreinte d'un fichier / d'une chaine de caractères. Elle
|
||||
a été inventée par Ronald Rivets en 1991 pour succéder à MD4.
|
||||
|
||||
Une fonction de hachage - pour être robuste - est censé ne donner, pour chaque
|
||||
valeur en entrée différente, qu'une seule valeur en sortie (valeur de hashage).
|
||||
On dit d'une fonction de hachage cryptographique qu'elle est *résistante aux
|
||||
collisions* si il est difficile de trouver deux valeurs en entrée pour
|
||||
lesquelles la valeur en sortie est la même. Si le MD5 est aujourd'hui obsolète,
|
||||
c'est parce que cet algorithme n'est pas résistant aux collisions.
|
||||
Il doit être considéré comme obsolète depuis 1996, années de découverte d'une
|
||||
faille dans l'algorithme ouvrant la voie à des collisions. En 2004 une équipe de
|
||||
chercheurs chinois menés par la mathématicienne Wang Xiaoyun [démontre la
|
||||
faisabilité][l_md5_2005] d'une collision complète. Mais cette attaque n'est pas
|
||||
encore suffisamment sophistiquée pour être utilisée sur un cas concret. Wang,
|
||||
Lenstra et de Wegner feront la [démonstration de leur attaque][l_md5_2006] sur
|
||||
deux certificats X.509 différents ayant la même signature MD5 en 2006.
|
||||
|
||||
S'il est possible de produire un message pour lequel la valeur de hashage est
|
||||
la même que la valeur de hashage d'une clé privée, il n'est plus nécessaire de
|
||||
trouver la clé et il est possible, par exemple, d'usurper l'identité d'un
|
||||
certificat en présentant ce message à une autorité de certification.
|
||||
[l_md5_2005]:https://eprint.iacr.org/2004/199.pdf
|
||||
[l_md5_2006]:https://www.win.tue.nl/~bdeweger/CollidingCertificates/
|
||||
|
||||
Trouver un message produisant le même hash qu'un autre message par force brute
|
||||
n'exploite pas vraiment cette vulnérabilité. Il existe un scénario qui tire
|
||||
mieux parti de la collision :
|
||||
1. L'attaquant créé au préalable deux documents, un "légitime", qu'il demandera
|
||||
à quelqu'un de signer et un autre qui produit le même hash MD5.
|
||||
2. L'autre partie, une autorité de certification par exemple, l'accepte et signe
|
||||
son hash MD5.
|
||||
3. L'attaquant peut envoyer le deuxième document en y joignant la signature du
|
||||
premier document, prétendant qu'il a été signé par l'autorité de certification.
|
||||
##### Attaque par collision
|
||||
|
||||
Ce scénario a été utilisé, en 2008, par des chercheurs pour créer une fausse
|
||||
autorité de certification.
|
||||
Une attaque par collision est menée sur une fonction de hashage cryptographique
|
||||
afin trouver deux entrées différentes donnant lieux au même résultat. Comme la
|
||||
plupart des fonctions de signature électronique le font sur le hash d'un
|
||||
document plutôt que sur le document lui-même. Ainsi s'il est possible de
|
||||
produire deux documents avec le même hash, leurs signatures sera strictement
|
||||
la même. Il suffit alors d'envoyer à l'autorité de certification le document
|
||||
légitime et copier la signature obtenue sur le document frauduleux.
|
||||
|
||||
##### Attaque par collision avec préfixe choisi
|
||||
|
||||
Dans le cadre de certificats, les choses se compliquent un peu : c'est
|
||||
l'autorité de certification qui génère le certificat en fonction des
|
||||
informations contenues dans le CSR. L'attaquant doit alors manipuler les données
|
||||
contenues dans le CSR qu'il envoie et y intégrer des blocs de collision pour
|
||||
annuler les différences entre les hashes du certificats obtenu et celui forgé.
|
||||
Il va jouer sur le préfixe du CSR, d'où le nom de l'attaque.
|
||||
|
||||
Ce type d'attaque n'est cependant pas aisé, l'attaquant devra anticiper
|
||||
certaines informations qui seront intégrées dans le certificat produit par
|
||||
l'autorité. Certaines pourront être influencées comme le champ CN, d'autres
|
||||
récupérées sur d'autre certificats signés par la même autorité (le contenu des
|
||||
champs *issuer* par exemple) et enfin d'autres devront être
|
||||
"devinées"[^n_devinees] (numéro de série du certificat et date d'expiration)
|
||||
|
||||
[Une telle attaque a été démontrée][l_md5_2008] en décembre 2008 par une équipe
|
||||
de chercheurs menée par Sotirov et Stevens. Ils ont ainsi pu obtenir un
|
||||
certificat à même de signer n'importe quel autres certificats et reconnu par les
|
||||
principaux navigateurs de l'époque.
|
||||
|
||||
Une technique similaire a été utilisée par le malware *Flame* découvert en 2012.
|
||||
Il usurpait une signature de code Microsoft pour se propager au travers de
|
||||
Windows Update.
|
||||
|
||||
[l_md5_2008]:https://www.win.tue.nl/hashclash/rogue-ca/
|
||||
[^n_devinees]: Prédites serait plus adapté, dans l'attaque menée par Sotirov et
|
||||
Stevens, l'équipe de chercheurs a réussi prédire ces deux éléments en étudiant le
|
||||
fonctionnement de l'autorité de certification utilisée.
|
||||
|
||||
## Bibliographie
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue