MD5 vs SHA : Quel Algorithme de Hachage Utiliser ?
Le choix du bon algorithme de hachage dépend de votre cas d'usage. Ce guide compare les options courantes et vous aide à faire le bon choix.
Comparaison de Sécurité
MD5 est considéré comme cryptographiquement cassé depuis 2004, lorsque les chercheurs ont démontré des attaques de collision pratiques. Un attaquant peut créer deux entrées différentes qui produisent le même hash MD5. C'est dévastateur pour les applications de sécurité - les certificats falsifiés peuvent être créés et l'intégrité des fichiers peut être falsifiée. SHA-1 a été officiellement cassé en 2017 lorsque Google a démontré une collision entre deux fichiers PDF différents. L'attaque a nécessité un effort de calcul énorme (6 500 ans de temps CPU), mais devient de plus en plus pratique. La plupart des navigateurs et autorités de certification n'acceptent plus les certificats SHA-1. SHA-256 reste sûr sans attaques pratiques. En tant que partie de la famille SHA-2, conçu par la NSA et publié par le NIST, il a été soumis à un examen public depuis 2001 sans faiblesses significatives. C'est le standard actuel pour la plupart des applications cryptographiques. SHA-512 offre une marge de sécurité plus grande que SHA-256. Bien que les deux soient actuellement sûrs, SHA-512 offre un tampon supplémentaire contre les avancées cryptanalytiques futures. Certains protocoles l'exigent spécifiquement.
Différences de Performance
MD5 est le plus rapide des algorithmes de hachage courants. Sa sortie de 128 bits nécessite moins de calcul. Pour les cas d'usage non sécuritaires comme les sommes de contrôle ou les tables de hachage, cette vitesse peut être pertinente. SHA-1 est légèrement plus lent que MD5, mais toujours rapide. Le digest de 160 bits nécessite des tours de calcul supplémentaires. Dans la plupart des applications, la différence de performance est négligeable. SHA-256 nécessite plus de calculs que MD5 ou SHA-1. Cependant, les CPU modernes le traitent toujours à plusieurs centaines de mégaoctets par seconde. Pour la grande majorité des applications, la performance n'est pas un problème. SHA-512 peut être étonnamment plus rapide que SHA-256 sur les processeurs 64 bits. Sa conception utilise des opérations 64 bits, tandis que SHA-256 est optimisé pour 32 bits. Sur les systèmes 64 bits, SHA-512 surpasse souvent SHA-256. En pratique, tous ces algorithmes sont assez rapides pour les cas d'usage typiques. Choisissez en fonction des exigences de sécurité, pas de la performance, sauf si vous traitez d'énormes quantités de données.
Recommandations par Cas d'Usage
Pour le stockage de mots de passe, n'utilisez aucun d'entre eux directement. Utilisez bcrypt, scrypt ou Argon2, qui sont spécifiquement conçus pour le stockage de mots de passe avec une lenteur intentionnelle et un salage intégré. Ces algorithmes rendent les attaques par force brute impraticables. Pour l'intégrité des fichiers, utilisez SHA-256. Vérifiez les téléchargements contre les sommes de contrôle SHA-256 publiées. SHA-256 offre une forte garantie que le fichier n'a pas été altéré ou corrompu. Pour les signatures numériques, utilisez SHA-256 ou SHA-512. Les standards de signature modernes requièrent des algorithmes de la famille SHA-2. Les signatures plus anciennes avec MD5 ou SHA-1 devraient être migrées. Pour les commits Git et identifiants non critiques, SHA-1 est acceptable. Git migre vers SHA-256, mais pour les identifiants de commit où les collisions seraient remarquées, SHA-1 est pratiquement sûr. Pour les sommes de contrôle et la déduplication où la sécurité n'est pas critique, même MD5 est acceptable. Si vous comparez des fichiers connus et bénins pour les doublons, la vitesse et la courte longueur de hash de MD5 sont pratiques. Pour tout le reste, SHA-256 est le choix par défaut sûr. Il est universellement supporté, prouvé sûr et assez efficace pour toute application.
Essayer l'Outil
Générateur de Hash