mythes - MD5 a été cassé

Décembre 2016


Mythe


MD5 a été cassé.
Il n'est plus sûr.
Il ne faut plus l'utiliser.

Réalité


FAUX.

Explications


Collisions


La faille trouvée dans MD5 concerne la possibilité de trouver des collisions MD5 (c'est-à-dire des blocs de données différents possédant la même MD5), ce qui n'avait jamais été réalisé auparavant.

Dans l'absolu, trouver de telles collisions nécessitait des temps de calcul hors de notre portée.
Les chercheurs sont parvenus à trouver rapidement des collisions MD5, ce qui est bien une découverte en cryptanalyse.

Cependant, il est toujours impossible de forger des données ayant une MD5 précise.
Il n'est donc pas possible pour un "ennemi" de créer un fichier ayant la même MD5 qu'un fichier existant.
On ne peut donc pas dire que MD5 a été "cassé".

(On peut seulement créer des fichiers ayant la même MD5, mais cela nécessite d'inclure un bloc de données de bourrage (appelé invariant MD5), et vous ne choisissez ni le contenu de ce bloc de bourrage (qui a un aspect aléatoire), ni la MD5 résultante.)


Il va donc falloir - à long terme - passer à d'autres algorithmes (comme SHA-256, SHA-512), mais dans l'immédiat, MD5 ne pose pas de problème de sécurité (sauf cas très particuliers).


Note: Des collisions ont également été trouvées pour SHA-1. Les mêmes remarques s'appliquent.

Rainbow-tables


On entend aussi dire qu'il ne faut plus utiliser MD5 car avec les rainbow-tables, on peut trouver le mot de passe correspondant en quelques secondes, voire quelques minutes.

Dans la pratique


Dans la pratique, ce n'est pas vraiment un problème.
  • pour contrer les risques de présence d'invariants MD5, on peut utiliser MD5 concaténé à SHA-1. Les invariants étant différents, impossible de falsifier les deux à la fois. On peut aussi utiliser SHA-256 ou SHA-512 à la place de (ou avec) MD5.
  • pour contrer les rainbow-tables, il suffit d'ajouter un salt devant: Au lieu de calculer MD5(motDePasse), on calcule MD5("n'importe quoi"+motDePasse). Ceci rend les rainbow-tables totalement inutilisables pour une attaque.



En revanche, pour les systèmes existants utilisant MD5 pur, cela peut poser problème, aussi bien pour les invariants que pour les rainbow-tables.
Ces systèmes doivent être mis à jour.

A voir également :

Ce document intitulé «  mythes - MD5 a été cassé  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.