MD5 et SHA1 sont souvent utilisés un peu au hasard par les développeurs débutants, mais ils sont pourtant bien différents.
Étant moi-même développeur web de profession, je vais vous expliquer dans cet article les différences entre ces deux méthodes de chiffrage, et leur limites.
MD5 et SHA1 sont deux algorithmes de hachage utilisés pour générer des clés uniques protégeant les fichiers de données.
SHA1 est un peu plus complexe et difficile à déchiffrer que MD5 d’un point de vue sécurité.
Les fonctions essentielles d’un algorithme de chiffrage sont les suivantes :
- La clé générée (qu’on appelle souvent « digest » ou « hash »), doit avoir une longueur prédéfinie et constante.
- Il ne doit pas être possible d’effectuer l’opération inverse pour déchiffrer le hash.
- Le processus de cryptage sera principalement utilisé pour les textes ou les fichiers de données.
Lisez aussi : La différence entre KDE et GNOME
La différence entre Mac et Apple
La différence entre Ubuntu et Debian
MD5
Définition
MD5 est l’abréviation anglaise de « Message Digest 5 ».
Il s’agit d’un algorithme utilisé afin de protéger les données lorsque des fichiers sont transférés par des canaux non sécurisés.
La fonction peut aussi permettre de vérifier l’intégralité des données transférées.
Si le fichier transféré a été altéré, alors le résultat de l’algorithme ne sera pas le même sur le fichier avant transfert et après.
Exemple
Imaginons par exemple que Paul reçoit un couple de message et de clé de la part d’Alice.
Pour vérifier la transparence et l’intégrité des données reçues, Paul va lancer l’algorithme MD5 sur le message reçu afin d’obtenir la clé (ou hash) correspondante.
Si le code généré est identique à celui fourni par Alice, alors il a la preuve que le fichier est une copie conforme de celui qui lui a été transmis à l’origine.
Plus concrètement, cela est très souvent utilisé pour le téléchargement de gros fichiers (comme les images de système d’exploitation Linux par exemple).
Règles
Pour faire une analogie avec la biométrie, imaginez le message et le hash comme l’équivalent d’une salle sécurisée et d’une empreinte digitale permettant d’y accéder.
La seule différence est que l’on peut envoyer les deux données dans le cas de l’utilisation de MD5, contrairement à mon analogie avec les empreintes digitales 🙂
De manière résumée:
- Le hash ne doit pas être altéré pendant le transfert
- La fonction cryptographique n’est idéalement pas utilisable dans les deux sens.
La fonction MD5 prendre certaines données en entrée, et génère une empreinte, un hash ou digest de longueur fixe qui sera utilisée pour vérifier l’intégrité des données.
Pour illustrer un peu plus comment marche cette fonction, vous pouvez imaginer comment MD5 est utilisé pour vérifier l’intégrité en divisant un message en blocs de 512 bits pour créer une clé de 32 caractères hexadécimaux (128-bit digest).
Sécurité
MD5 cependant, n’est plus du tout fiable pour garantir la confidentialité des données.
Comme cela a été démontré par de nombreuses recherches, le système peut être court-circuité en générant des collisions, même sur des ordinateurs de bureau standards.
On appelle « collision » le fait que deux messages différents puissent générer le même hash MD5.
Video
Si vous avez besoin d’un support visuel pour mieux comprendre tout cela, voici une courte vidéo sur le sujet :
SHA1
Définition
SHA1 est une autre fonction cryptographique créée pour garantir la sécurité des données.
En général, on le définit comme un algorithme de hachage, et il fonctionne en transformant un message via une fonction de hachage.
Ces fonctions sont des algorithmes intégrant des fonctions de compression, d’opérations bit-à-bit et d’additions modulaires.
Pour faire simple, ces algorithmes sont conçus pour être utilisable uniquement dans un sens, afin de convertir une donnée source en une chaine de taille définie, et différente de la donnée d’origine.
La famille « Secure Hash Algorithm » (ou SHA) inclue SHA1, SHA2 et SHA3, tous trois développés et améliorés suivant les activités des hackers.
Par exemple, SHA0, la toute première génération de ces algorithmes, est maintenant complètement obsolète à cause de nombreuses vulnérabilités découvertes depuis.
Comment ça marche ?
Dans cet article, on se concentre sur SHA1 (qui est l’abbréviation de « Secure Hash Algorithm 1 »). Il s’agit d’un algorithme de cryptage informatique développé par l’US Security Agency en 1995. Il a suivi SHA0, qui lui avait été créé en 1993.
SHA1 fait partie de la norme DSS (Digital Signature Standard) et DSA (Digital Signature Algorithm).
SHA1 génère un hash de 160-bits depuis n’importe quelle donnée source qui doit être chiffrée.
Le digest généré est très semblable à celui de l’algorithme MD5. Le process complet est constitué de 80 opérations cryptographiques afin de sécuriser au maximum la conversion.
Voici quelques protocoles utilisés dans SHA1:
- Pretty Good privacy (PGP)
- Transport Layer Security (TLS)
- Internet Protocol Security (IPS)
- Secure Shell (SH)
- Multipurpose Internet Mail Extensions (MIME)
- Secure Sockets Layer (SSL)
En pratique
SHA1 est normalement utilisé là où il y a un besoin important d’intégrité des données, ou dans les environnement « hostiles ».
Il est également possible d’utiliser cette technologie pour tester les erreurs checksum et la corruption des données lors d’un transfert.
Différences entre MD5 et SHA-1
SHA1 et MD5 sont deux algorithmes de cryptages et partagent donc de nombreux point communs. La fonction de base de ces deux algorithmes étant de générer un hash (ou digest) depuis n’importe quelle donnée entrée.
En résumé
MD5 est plus efficace en termes de vitesse de cryptage, tandis que SHA1 est un peu plus sécurisé que MD5.
La définition fondamentale de ces deux fonctions inclue :
- Il ne peut jamais y avoir deux hashs similaires sur un set de données uniques.
- La taille du message transmis en entrée ne doit pas avoir d’impact sur la taille du hash généré.
- Une fois exécutée, ces deux fonctions ne sont ni annulables, ni réversibles.
Tableau de comparaison
Les algorithmes sont conçus principalement pour vérifier les fichiers transférés, plutôt que pour le cryptage sécurisé :
MD5 | SHA1 |
---|---|
MD5 est l’abbréviation de « Message Digest 5 » | SHA1 est la première version de « Secure Hash Algorithm » |
MD5 est plus rapide et fiable que SHA1 niveau vitesse d’utilisation | SHA1 est plutôt lent comparé à MD5 |
Le hash généré fait 168 bits de longueur | Le hash généré fait 160 bits maximum |
MD5 est simple | SHA1 est un peu plus complexe que MD5 |
Un attaquant aura besoin de 2^64 operations pour trouver si deux messages d’origine ont le même hash | Pour SHA1 ce chiffre montera à 2^80, le rendant légèrement plus intéressant à ce niveau la |
MD5 propose une sécurité très limitée | SHA1 offre un sécurité légèrement meilleure |
Sécurité
MD5 est exprimé sous la forme d’un nombre hexadécimal de 32 caractères, qui est « cassé » d’un point de vue cryptographique et inclue des collisions possibles.
Malgré sa popularité (il s’agit de la fonction de hachage la plus utilisée dans le monde), il n’est pas conseillé de l’utiliser comme base pour la sécurité d’un système.
D’un autre côté, SHA passe souvent vu comme une amélioration de MD5 d’un point de vue sécurité.
Il prend un grand nombre de bits en entrée et génère un message plus courts et plus sécurisé en sortie.
Actuellement, il existe des versions bien meilleures que SHA1 dans lesquelles la plupart des vulnérabilités ont été éliminées. Par exemple SHA-256 ou SHA-512.
Le suffixe indique la puissance de l’algorithme utilisé lors de la génération du digest.
Conclusion
La différence principale entre MD5 et SHA1 est que MD5 a été développé en premier et inclue de ce fait de nombreuses vulnérabilités exploitables par des attaquants. L’existence de collisions est notamment un problème important pour ce type de fonction.
SHA1 était donc une amélioration de MD5 à ce niveau-là, mais n’est pas parfait pour autant. De nombreuses vulnérabilités existent également dans SHA1, il est donc conseillé de partir directement sur un cryptage plus important avec SHA-256 ou SHA-512 par exemple.