Qu’est-ce que l’algorithme MD5 ? Comprendre les algorithmes Message Digest
L’algorithme Message Direct 5 (MD5) est un hachage cryptographique utilisé pour générer et vérifier des hachages ou des signatures numériques. Il est encore largement utilisé, bien qu’il ait été déclaré impropre à l’usage 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.
Qu’est-ce que l’algorithme MD5 ?
Publié dans la RFC 1321 il y a une trentaine d’années, l’algorithme MD5 est encore largement utilisé aujourd’hui. Il permet de créer un résultat plus compact de 128 bits à partir d’un message de longueur variable. Il s’agit d’un type de hachage cryptographique conçu pour générer des signatures numériques, en compressant des fichiers volumineux en fichiers plus petits de manière sécurisée, puis en les chiffrant à l’aide d’une clé privée (ou secrète) qui doit être associée à une clé publique.
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é.
Histoire de l’utilisation de MD5
Développé en tant qu’extension de la fonction de hachage cryptographique MD4, le hachage MD5 a été créé en 1991 par Ronald Rivest (collaborateur de RSA Data Security, Inc. et du MIT Laboratory for Computer Science) pour remplacer cette version antérieure jugée peu sûre. Il a été publié dans le domaine public un an plus tard. Au bout d’un an à peine, 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 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 est 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.
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.
Problèmes de sécurité liés au MD5
La sécurité de la fonction de hachage MD5 est considérée comme gravement compromise. Les collisions peuvent être identifiées en quelques secondes et utilisées à des fins malveillantes.
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 créer des collisions qui enverront alors une signature numérique qui sera acceptée par le destinataire. Même s’il ne s’agit pas de 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 ?
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.
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.
Alternatives au 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 hachages SHA-2 est généralement choisie comme alternative fiable. Cette famille de fonctions de hachage cryptographique a été publiée initialement en 2001 et comprend les hachages suivants :
- SHA-256
- SHA-224
- SHA-384
- SHA-512
- SHA-512/224
- SHA-512/256
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 les quatre algorithmes SHA-3 à longueur fixe suivants :
- SHA3-224
- SHA3-256
- SHA3-384
- SHA-512
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.
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).