L’algorithme de hachage MD5 est une fonction cryptographique unidirectionnelle qui accepte un message de n’importe quelle longueur en entrée et renvoie en sortie une valeur de résumé de longueur fixe à utiliser pour authentifier le message d’origine.
La fonction de hachage MD5 a été conçue à l’origine pour être utilisée comme algorithme de hachage cryptographique sécurisé pour authentifier les signatures numériques. MD5 a été obsolète pour des utilisations autres que comme somme de contrôle non cryptographique pour vérifier l’intégrité des données et détecter la corruption involontaire des données.
Bien que conçu à l’origine comme un algorithme de code d’authentification de message cryptographique pour une utilisation sur Internet, le hachage MD5 n’est plus considéré comme fiable pour une utilisation en tant que somme de contrôle cryptographique car les chercheurs ont démontré des techniques capables de générer facilement des collisions MD5 sur des ordinateurs commerciaux prêts à l’emploi.
Ronald Rivest, fondateur de RSA Data Security et professeur d’institut au MIT, a conçu MD5 comme une amélioration d’un algorithme de synthèse de messages antérieur, MD4. Il l’a décrit dans Internet Engineering Task Force RFC 1321, « L’algorithme MD5 Message-Digest », a-t-il écrit:
L’algorithme prend en entrée un message de longueur arbitraire et produit en sortie une « empreinte digitale » ou un « résumé de message » de 128 bits de l’entrée. On suppose qu’il est impossible sur le plan informatique de produire deux messages ayant le même condensé de message, ou de produire n’importe quel message ayant un condensé de message cible pré-spécifié donné. L’algorithme MD5 est destiné aux applications de signature numérique, où un fichier volumineux doit être « compressé » de manière sécurisée avant d’être chiffré avec une clé privée (secrète) sous un cryptosystème à clé publique tel que RSA.
L’IETF suggère que le hachage MD5 peut toujours être utilisé pour la protection de l’intégrité, notant « Lorsque la somme de contrôle MD5 est utilisée en ligne avec le protocole uniquement pour se protéger contre les erreurs, une somme de contrôle MD5 est toujours une utilisation acceptable. »Cependant, il a ajouté que « toute application et protocole qui utilise MD5 à quelque fin que ce soit doit indiquer clairement les services de sécurité attendus de leur utilisation de MD5. »
Caractéristiques de l’algorithme de résumé de message
Les résumés de messages, également appelés fonctions de hachage, sont des fonctions unidirectionnelles ; ils acceptent un message de n’importe quelle taille en entrée, et produire en sortie un résumé de message de longueur fixe.
MD5 est le troisième algorithme de résumé de message créé par Rivest. Tous les trois (les autres sont MD2 et MD4) ont des structures similaires, mais MD2 a été optimisé pour les machines 8 bits, en comparaison avec les deux formules ultérieures, qui sont optimisées pour les machines 32 bits. L’algorithme MD5 est une extension de MD4, que l’examen critique a trouvé rapide, mais peut-être pas absolument sécurisé. En comparaison, MD5 n’est pas aussi rapide que l’algorithme MD4, mais offre beaucoup plus d’assurance de la sécurité des données.
Fonctionnement du MD5
L’algorithme de hachage du résumé de message MD5 traite les données en blocs de 512 bits, répartis en 16 mots composés de 32 bits chacun. La sortie de MD5 est une valeur de résumé de message de 128 bits.
Le calcul de la valeur de résumé MD5 est effectué en étapes distinctes qui traitent chaque bloc de données de 512 bits avec la valeur calculée à l’étape précédente. La première étape commence par les valeurs de synthèse des messages initialisées à l’aide de valeurs numériques hexadécimales consécutives. Chaque étape comprend quatre passes de synthèse de messages qui manipulent les valeurs du bloc de données actuel et les valeurs traitées à partir du bloc précédent. La valeur finale calculée à partir du dernier bloc devient le résumé MD5 de ce bloc.
MD5 security
Le but de toute fonction de résumé de message est de produire des résumés qui semblent aléatoires. Pour être considérée comme sécurisée sur le plan cryptographique, la fonction de hachage doit répondre à deux exigences : premièrement, il est impossible pour un attaquant de générer un message correspondant à une valeur de hachage spécifique ; et deuxièmement, il est impossible pour un attaquant de créer deux messages produisant la même valeur de hachage.
Les hachages MD5 ne sont plus considérés comme sécurisés sur le plan cryptographique et ne doivent pas être utilisés pour l’authentification cryptographique.
En 2011, l’IETF a publié la RFC 6151, « Considérations de sécurité mises à jour pour le résumé des messages MD5 et les algorithmes HMAC-MD5 », qui citait un certain nombre d’attaques récentes contre les hachages MD5, en particulier une qui générait des collisions de hachage en une minute ou moins sur un ordinateur portable standard et une autre qui pouvait générer une collision en aussi peu que 10 secondes sur un système Pentium 4 à 2,66 GHz. En conséquence, l’IETF a suggéré que les nouvelles conceptions de protocole ne devraient pas du tout utiliser MD5 et que les récentes attaques de recherche contre l’algorithme « ont fourni une raison suffisante pour éliminer l’utilisation de MD5 dans les applications nécessitant une résistance aux collisions, telles que les signatures numériques. »