Résumé
L’algorithme de hachage cryptographique Message-Digest Algorithm 5 (MD5) est un algorithme de hachage de 128 bits qui a été déclaré compromis sur le plan cryptographique en 2008 en raison de vulnérabilités liées aux collisions, mais il reste largement utilisé pour des tâches non liées à la sécurité, telles que les sommes de contrôle et la vérification de l’intégrité des données. Il ne doit pas être utilisé pour des applications sensibles à la sécurité telles que le hachage des mots de passe ou la génération de signatures numériques. Pour ces cas d’usage, le National Institute of Standards and Technology (NIST) recommande la famille d’algorithmes Secure Hash Algorithm 2 (SHA-2) et Secure Hash Algorithm 3 (SHA-3) comme alternatives sécurisées et résistantes aux collisions.
Qu’est-ce que l’algorithme MD5 ?
MD5 est un algorithme de hachage cryptographique largement utilisé, qui possède des applications cryptographiques et non cryptographiques. MD5 reste largement utilisé, bien qu’il ait été déclaré « compromis sur le plan cryptographique » il y a plus de dix ans.
En tant que hachage cryptographique, il présente des failles de sécurité connues, notamment un risque élevé de collisions – un phénomène qui se produit lorsque deux messages distincts se voient attribuer la même valeur de hachage générée.
Le hachage MD5 peut être utilisé de façon satisfaisante pour des fonctions non cryptographiques, notamment en tant que somme de contrôle pour vérifier l’intégrité des données en cas de corruption involontaire. Il s’agit d’un algorithme 128 bits. Malgré les problèmes de sécurité connus, il reste l’un des algorithmes de hachage les plus couramment utilisés.
Comment MD5 génère-t-il un hachage ?
Publié il y a environ 30 ans sous la forme d’une Request for Comments (RFC) 1321, l’algorithme de condensat de message MD5 reste largement utilisé aujourd’hui. En utilisant l’algorithme MD5, il est possible de créer un résultat plus compact de 128 bits à partir d’un message d’entrée de longueur variable. Il s’agit d’un type de hachage cryptographique conçu pour générer des signatures numériques, en compressant de grands fichiers en fichiers plus petits de manière sécurisée, puis en les chiffrant à l’aide d’une clé privée (ou secrète) afin qu’ils puissent être associés à une clé publique.
Quelles sont les utilisations non cryptographiques de MD5 ?
L’algorithme MD5 peut également être utilisé en ligne de commande avec des langages courants tels que Java, Perl ou C afin de détecter la corruption de fichiers ou les modifications involontaires au sein de grands ensembles de fichiers. Le MD5 peut alors être employé comme somme de contrôle pour vérifier l’intégrité des données et les signatures numériques. Le MD5 peut encore être utilisé dans d’autres fonctions non cryptographiques, par exemple pour déterminer la partition d’une clé spécifique dans une base de données partitionnée.
Le MD5 peut servir à imprimer (générer) ou vérifier (contrôler) les hachages cryptographiques 128 bits. Cependant, il présente des failles et vulnérabilités graves bien documentées. Pour cette raison, il ne doit pas être utilisé à des fins de sécurité.
Quelle est l’histoire de l’utilisation de MD5 ?
Développé comme une extension de la fonction de hachage cryptographique MD4, MD5 a été créé en 1991 par Ronald Rivest de RSA Data Security, Inc. et le Massachusetts Institute of Technology (MIT) Laboratory for Computer Science pour remplacer cette version antérieure jugée non sécurisée. Il a été publié dans le domaine public un an plus tard. Un an plus tard seulement, une « pseudo-collision » de la fonction de compression MD5 a été découverte.
Chronologie des vulnérabilités du MD5 découvertes (et exploitées) :
- En 1996, une collision complète est signalée et les cryptographes recommandent de remplacer le MD5 par une autre fonction de hachage cryptographique telle que Secure Hash Algorithm (SHA)-1.
- Au début de l’année 2004, un projet est lancé pour prouver que le MD5 est vulnérable aux attaques par le paradoxe des anniversaires en raison de la petite taille de la valeur de hachage (128 bits).
- À la mi-2004, une attaque analytique réalisée en seulement une heure permet de créer des collisions pour l’ensemble du MD5.
- En 2005, une collision concrète est démontrée en utilisant deux certificats X.509 avec des clés publiques différentes et la même valeur de hachage MD5. Quelques jours plus tard, un algorithme permettant de créer des collisions MD5 en quelques heures seulement est développé.
- Un an plus tard, en 2006, un algorithme s’appuyant sur un tunnel pour identifier une collision en moins d’une minute sur un seul ordinateur portable est publié.
- En 2008, le MD5 a été officiellement déclaré « inefficace du point de vue cryptographique», car des hachages MD5 peuvent être créés pour entrer en conflit avec des certificats X.509 de confiance émis par des autorités de certification reconnues (CA).
Malgré les vulnérabilités et problèmes de sécurité connus, le MD5 est toujours utilisé aujourd’hui, bien qu’il existe des alternatives plus sûres.
Quels sont les problèmes de sécurité liés à MD5 ?
La sécurité de la fonction de hachage MD5 est considérée comme gravement compromise. Des collisions peuvent être trouvées en quelques secondes, et elles peuvent être utilisées à des fins malveillantes.
Comment le logiciel espion Flame a-t-il exploité les collisions MD5 ?
En fait, en 2012, le spyware Flame, qui a infiltré des milliers d’ordinateurs et terminaux en Iran, a été considéré comme l’un des problèmes de sécurité les plus préoccupants de l’année. Flame utilisait des collisions de hachage MD5 pour générer de faux certificats de mise à jour Microsoft utilisés pour authentifier des systèmes critiques. Heureusement, la vulnérabilité a été découverte rapidement et une mise à jour logicielle a été publiée pour combler cette faille de sécurité. Elle consistait à passer à l’utilisation de l’algorithme SHA-1 pour les certificats Microsoft.
Une collision de hachage survient lorsque deux entrées différentes créent la même valeur (ou résultat) de hachage. La sécurité et le chiffrement d’un algorithme de hachage reposent sur la génération de valeurs de hachage uniques, et les collisions représentent des failles de sécurité susceptibles d’être exploitées.
Les cybercriminels peuvent provoquer des collisions qui transmettront ensuite une signature numérique acceptée par le ou la destinataire. Même si ce n’est pas l’expéditeur réel, la collision fournit la même valeur de hachage, de sorte que le message du cybercriminel sera vérifié et accepté comme légitime.
Quels sont les programmes qui utilisent le MD5 ?
MD5 continue d’apparaître dans différentes applications logicielles, malgré ses limites de sécurité bien connues.
Comment MD5 est-il utilisé pour le hachage des mots de passe ?
Bien qu’il présente des problèmes de sécurité connus, le MD5 est toujours utilisé pour le hachage des mots de passe dans les logiciels. Le MD5 est utilisé pour stocker les mots de passe avec un hachage à sens unique du mot de passe, mais il ne fait pas partie des hachages recommandés à cette fin. Le MD5 est courant et facile à utiliser, et les développeurs le choisissent encore souvent pour le hachage et le stockage des mots de passe.
Le MD5 est également toujours utilisé dans le domaine de la cybersécurité pour vérifier et authentifier les signatures numériques. Un utilisateur peut l’utiliser pour vérifier l’authenticité d’un fichier téléchargé, en faisant correspondre les clés publique et privée, et les valeurs de hachage. Cependant, en raison du taux élevé de collisions, le hachage MD5 n’est pas idéal pour vérifier l’intégrité des données ou des fichiers, car les cybercriminels peuvent facilement remplacer la valeur de hachage par une de leurs propres valeurs.
Comment MD5 vérifie-t-il l’intégrité des données ?
L’intégrité des données peut être vérifiée à l’aide de la fonction de somme de contrôle de MD5 afin de s’assurer qu’elles n’ont pas été accidentellement corrompues. Les fichiers peuvent produire des erreurs lorsqu’ils sont modifiés involontairement de l’une des manières suivantes :
- Erreurs dans la transmission des données
- Bugs logiciels
- Erreurs d’écriture lors de la copie ou du déplacement de fichiers
- Problèmes liés au support de stockage
L’algorithme de hachage MD5 peut être utilisé pour s’assurer que les données sont conformes aux données de départ, en vérifiant que la valeur de sortie est identique à la valeur d’entrée. Si un fichier a été modifié par inadvertance, la vérification générera une valeur de hachage différente, qui ne correspondra plus à la valeur d’entrée. Cela indique que le fichier est corrompu. Toutefois, cette méthode n’est efficace que lorsque les données ont été corrompues involontairement, et non en cas d’altération malveillante.
Quelles sont les alternatives à MD5 ?
Le MD5 ne doit pas être utilisé à des fins de sécurité ou lorsque la résistance aux collisions est essentielle. Compte tenu des failles de sécurité avérées et de la facilité avec laquelle des collisions peuvent être créées à l’aide du MD5, il est recommandé d’utiliser d’autres valeurs de hachage plus sûres.
La famille de fonctions de hachage SHA-2 est généralement choisie comme alternative valable. Cette famille de fonctions de hachage cryptographique a été publiée initialement en 2001.
Que recommande le NIST à la place de MD5 ?
Le hachage SHA-1 peut toujours être utilisé pour vérifier les anciens horodateurs et les signatures numériques, mais le NIST (National Institute of Standards and Technology) ne recommande pas l’utilisation de SHA-1 pour générer des signatures numériques ou dans les cas où la résistance aux collisions est requise.
Les hachages cryptographiques approuvés par le NIST incluent la famille d’algorithmes SHA-2 ainsi que quatre algorithmes SHA-3 à longueur fixe. Le tableau suivant compare les familles d’algorithmes SHA-2 et SHA-3 :
| Famille de fonctions de hachage | Algorithmes |
|---|---|
| SHA-2 | SHA-256, SHA-224, SHA-384, SHA-512, SHA-512/224, SHA-512/256 |
| SHA-3 | SHA3-224, SHA3-256, SHA3-384, SHA-512 |
Le tableau suivant compare MD5, SHA-1, SHA-2 et SHA-3 selon des attributs clés :
| Algorithme | Résistance aux collisions | Statut d’approbation du NIST | Cas d’usage recommandés |
|---|---|---|---|
| MD5 | Gravement compromis ; des collisions détectées en quelques secondes | Non approuvé pour un usage en matière de sécurité | Tâches non liées à la sécurité telles que les sommes de contrôle et la vérification de l’intégrité des données contre la corruption accidentelle |
| SHA-1 | Non recommandé pour la résistance aux collisions | Non recommandé par le NIST pour la génération de signatures numériques ou dans les cas où la résistance aux collisions est requise | Vérification des anciens horodatages et des signatures numériques uniquement |
| SHA-2 | Beaucoup plus résistant aux collisions | approuvé par le NIST | Applications cryptographiques sensibles à la sécurité |
| SHA-3 | Beaucoup plus résistant aux collisions | approuvé par le NIST | Applications cryptographiques sensibles à la sécurité |
Les fonctions de hachage cryptographique des familles SHA-2 et SHA-3 sont des alternatives sûres et recommandées à l’algorithme MD5. Ils sont bien plus résistants aux collisions potentielles et génèrent des valeurs de hachage réellement uniques.
Foire aux questions (FAQ)
Qu’est-ce que le Message-Digest Algorithm 5 (MD5) et à quoi sert-il ?
MD5 est un algorithme de hachage cryptographique sur 128 bits utilisé pour générer et vérifier des signatures numériques, contrôler l’intégrité des données à l’aide de sommes de contrôle et prendre en charge des fonctions non cryptographiques telles que le partitionnement de bases de données.
Pourquoi l’algorithme Message-Digest 5 (MD5) est-il considéré comme compromis sur le plan cryptographique ?
MD5 a été déclaré compromis sur le plan cryptographique en 2008, car des collisions — situations où deux entrées différentes produisent la même valeur de hachage — peuvent être trouvées en quelques secondes et exploitées par des cybercriminels pour falsifier des signatures numériques.
Peut-on encore utiliser l’algorithme Message-Digest 5 (MD5) en toute sécurité ?
MD5 peut encore être utilisé sans risque pour des tâches sans enjeu de sécurité, comme la vérification d’une corruption accidentelle de données à l’aide de sommes de contrôle, mais il ne doit pas être utilisé pour le hachage des mots de passe, la génération de signatures numériques ou toute application nécessitant une résistance aux collisions.
Quelle attaque réelle a exploité les vulnérabilités de l’algorithme Message-Digest Algorithm 5 (MD5) ?
En 2012, le logiciel espion Flame a exploité des collisions de hachage MD5 pour générer de faux certificats de mise à jour Microsoft, compromettant des milliers d’ordinateurs avant que la vulnérabilité ne soit corrigée par le passage au SHA-1.
Quelles sont les alternatives recommandées à l’algorithme Message-Digest 5 (MD5) ?
Le NIST recommande la famille Secure Hash Algorithm 2 (SHA-2), qui inclut SHA-256, SHA-384 et SHA-512, ainsi que quatre algorithmes SHA-3, comme alternatives sécurisées et résistantes aux collisions à MD5 pour les applications cryptographiques.
Quelle est la différence entre le Message-Digest Algorithm 5 (MD5) et le Secure Hash Algorithm 2 (SHA-2) ?
Contrairement à MD5, qui est vulnérable aux attaques par collision rapides, la famille de fonctions de hachage cryptographique SHA-2 est approuvée par le NIST, bien plus résistante aux collisions et génère des valeurs de hachage réellement uniques, adaptées aux applications sensibles à la sécurité.
Références
The MD5 Message-Digest Algorithm. Avril 1992. Network Working Group Internet Engineering Task Force (IETF).
RSA. 2022. RSA Security, LLC.
MIT CSAIL. MIT CSAIL.
MD5 Is Really Seriously Broken This Time. Décembre 2008.Security Musings.
Flame's MD5 Collision Is the Most Worrisome Security Discover of 2012. (juin 2012). Forbes.
NIST Policy on Hash Functions. Août 2015. National Institute of Standards and Technology (NIST).
Hash Functions. Juin 2020. National Institute of Standards and Technology (NIST).